1
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Panda3Dでの3Dゲーム開発の始め方

Last updated at Posted at 2023-03-18

Panda3Dとは

Panda3Dとは、Pythonで3Dゲーム開発をする為のライブラリ。
日本語の公式チュートリアルが無く、Qiitaや他のサイト上にもあまり情報が見つからない。日本国内での利用者は少なめなのかも?
元々はディズニーのVRアトラクションを作る為のエンジンで、その後オープンソース化されたらしいです。
Pythonの勉強をしつつ、3Dゲームの開発をしてみたいという私みたいな人には丁度良いライブラリかも、という事で学びながら何かゲームを作っていこうと思います。
(基本はPC用の開発。Android用には公式でビルド可能なようだけど、iOSにはまだ未対応?)

インストール

  • Pyhonのインストール
    Download Python | Python.org
    (記事投稿時のリリースverは3.11.2)

  • Panda3Dのインストール
    pip3 install panda3d
    (記事投稿時のリリースverは1.10.13)

  • エディタのインストール
    各自使い慣れてるエディタでコードを書いていってください。
    今回はVisual Studio CodeにPython関連の拡張機能を入れて使用しています。

サンプルコード

sample.py
# Panda3Dライブラリのインポート
from direct.showbase.ShowBase import ShowBase
from panda3d.core import *

# 3D描画ウィンドウの内容
class App(ShowBase):
    # コンストラクタ
    def __init__(self):
        # 3D描画ウィンドウの初期化
        ShowBase.__init__(self)

        # デフォルトで準備されてるキューブモデルを読み込み
        self.cube = self.loader.loadModel('models/misc/rgbCube')
        # キューブのサイズ設定
        self.cube.setScale(2, 2, 2)
        # キューブの回転
        self.cube.setQuat(Quat(0, 1, 1, 1))
        # キューブの位置調整
        # (y軸に+値を設定しないと、カメラ位置がモデルの中心かモデルより前になってしまって何も表示されないので注意)
        self.cube.setPos(0, 20, 0)
        # キューブの描画
        self.cube.reparentTo(self.render)

# 3D描画ウィンドウの表示
app = App()
app.run()

実行

py sample.py
01_sample.png
画面に色分けされたキューブが表示されました。

  • マウスでのカメラ操作方法
    画面上でマウスを左クリックしながらドラッグ = 視点の平行移動
    画面上でマウスを右クリックしながらドラッグ = 視点の前後移動
    画面上でマウスを中央クリックしながらドラッグ = 視点の回転
    (デフォルトだと並行移動の感度が高すぎてすぐにキューブが行方不明になります)

参考

Pythonでマイクラを作る ①Panda3Dの基礎|creativival|note

1
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?