Panda3D SDK のインストール,サンプルプログラムの実行(3次元のゲームエンジン)(Python を使用)(Windows 上)

Panda3D は,オープンソースのソフトウェア,3次元ゲーム,可視化,シミュレーションの機能を持つ.

このページでは、3次元のゲームエンジン Panda3D 1.11 SDK (devel 版) のインストールについて説明する.「devel 版」とある通り、リリース前のものを事前に試したいときに使う.

目次

  1. Panda3D のダウンロードとインストール
  2. サンプルプログラムを実行してみる
  3. Panda 3D の主要機能
  4. art-gallery.zip の中の .egg 形式ファイル
  5. 3次元モデルデータの表示プログラムの例

サイト内の関連ページ

先人に感謝.

関連する外部ページhttp://www.panda3d.org/download.php?sdk&version=devel

前準備

Python 3.12 のインストール(Windows 上) [クリックして展開]

以下のいずれかの方法で Python 3.12 をインストールする。Python がインストール済みの場合、この手順は不要である。

方法1:winget によるインストール

管理者権限コマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。

winget install --scope machine --id Python.Python.3.12 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_pip=1 Include_test=0 Include_launcher=1 InstallLauncherAllUsers=1"

--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。

方法2:インストーラーによるインストール

  1. Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
  2. ダウンロードしたインストーラーを実行する。
  3. 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから python コマンドを実行できない。
  4. 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。

インストールの確認

コマンドプロンプトで以下を実行する。

python --version

バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。

AIエディタ Windsurf のインストール(Windows 上) [クリックして展開]

Pythonプログラムの編集・実行には、AIエディタの利用を推奨する。ここでは、Windsurfのインストールを説明する。Windsurf がインストール済みの場合、この手順は不要である。

管理者権限コマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。

winget install --scope machine --id Codeium.Windsurf -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/SP- /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS /DIR=""C:\Program Files\Windsurf"" /MERGETASKS=!runcode,addtopath,associatewithfiles,!desktopicon"
powershell -Command "$env:Path=[System.Environment]::GetEnvironmentVariable('Path','Machine')+';'+[System.Environment]::GetEnvironmentVariable('Path','User'); windsurf --install-extension MS-CEINTL.vscode-language-pack-ja --force; windsurf --install-extension ms-python.python --force; windsurf --install-extension Codeium.windsurfPyright --force"

--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。

関連する外部ページ

Windsurf の公式ページ: https://windsurf.com/

Panda3D 1.11 SDK のインストール

  1. 以下の手順を管理者権限コマンドプロンプトで実行する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
  2. 使用する Python のバージョンの確認
    python --version
    
  3. Panda3d 最新版のインストール
    python -m pip install panda3d
    

公式版 (1.10.15) のサンプルプログラムをダウンロードし、実行してみる

devel 版なので、サンプルプログラムが同封されていません. 公式版 (1.10.15) のサンプルプログラムをダウンロードし、インストールしてみる.

  1. 公式版 (1.10.15) のサンプルプログラムをダウンロードし,展開(解凍)する.

    https://www.panda3d.org/download/panda3d-1.10.15/panda3d-1.10.15-samples.zip

  2. ball-in-maze を実行してみる

    Windowsコマンドプロンプトで,次のコマンドを実行

    python .\panda3d-1.10.15\samples\ball-in-maze\main.py
    
  3. ゲーム画面が開けば OK.

    ボールをゴールまでもっていくなど,遊んでみよう. このゲームは,「玉」と「壁」の衝突に関するデモである

Panda 3D の主要機能

上で準備したサンプルプログラムを使い,次の機能を試してみる

光源と影

  1. Windowsコマンドプロンプトで,次のコマンドを実行
    python .\panda3d-1.10.15\samples\shadows\basic.py
    
  2. スポットライト,陰影,影が表現できていることを確認する.(見て楽しむ)
  3. もともとのプログラムで,光源を指定している部分は次の通り

テクスチャ

  1. Windowsコマンドプロンプトで,次のコマンドを実行
    python .\panda3d-1.10.15\samples\bump-mapping\main.py
    
  2. 模様やでこぼこが表現できている.(見て楽しむ). マウス操作で回転できる.ESC キーで終了.

art-gallery.zip の中の .egg 形式ファイル

  1. ダウンロードと展開(解凍)

    次のファイルをダウンロードし,展開(解凍)する.

    https://www.panda3d.org/download/noversion/art-gallery.zip

  2. サブディレクトリの下に,ファイル名の末尾が「-egg.zip」のファイルがあるので,展開(解凍)する.
  3. 展開すると,拡張子 .egg のファイルや画像ファイルなどができることを確認

    拡張子 .egg のファイルは 3次元モデルデータ のファイルである.

    3次元モデル:形のデータ.拡大,縮小,移動,変形できるから「モデル」

  4. pview コマンドで,3次元モデルデータの表示ができることを確認する.

    pview コマンドは,Panda 3D に付属している,3次元モデルデータの表示プログラム.

    * .eeg ファイルによっては「灰色」の表示しか出ない場合がある

    pview <ファイル名>
    

    実行例

    * マウス操作

    • 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点移動(前後)

3次元モデルデータの表示プログラム

Wavefront OBJ 形式ファイルの表示

  1. Wavefront OBJ 形式ファイルを準備する

    説明のため Wevefront OBJ形式ファイルを使う. この資料で使用している Wevefront OBJ形式ファイル次からダウンロードできる

  2. テキストファイルの中身を次のように書く
    import direct.directbase.DirectStart
    model = loader.loadModel( "sample.obj" )
    model.reparentTo( render )
    base.cam.setPos( 0, -500, 0 )
    base.cam.lookAt( 0, 0, 0 )
    
    base.run()
    
  3. テキストファイルを,保存する.

    ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.

  4. 実行する.
  5. Python プログラムの実行
    python
    

    実行結果例

    * マウス操作

    • 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点移動(前後)

キーボードの矢印キーによる操作

今度は,キーボードの矢印キーを使うプログラム

  1. 今度は、テキストファイルの中身を次のように書く
    import direct.directbase.DirectStart
    model = loader.loadModel( "sample.obj" )
    model.reparentTo( render )
    base.cam.setPos( 0, -500, 0 )
    base.cam.lookAt( 0, 0, 0 )
    
    def forward( ):
        model.setY( model.getY( ) - 10 )
    def backward( ):
        model.setY( model.getY( ) + 10 )
    def right( ):
        model.setH( model.getH( ) - 10 )
    def left( ):
        model.setH( model.getH( ) + 10 )
    base.accept( "arrow_up",  forward )
    base.accept( "arrow_down", backward )
    base.accept( "arrow_right", right )
    base.accept( "arrow_left", left )
    
    base.run()
    
  2. テキストファイルを,保存する.

    ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.

  3. Python プログラムの実行
    python
    

    実行結果例

    * マウス操作

    • 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点移動(前後)

    * キーボードの矢印キーによる操作もできる

Wavefront OBJ 形式ファイルの読み込み

1. 前準備

  1. c:\Program Files\Python38\lib\site-packages\panda3d\models\ を開くと、「.egg.gz」のファイルがあることを確認

    これらは 3次元モデルのファイル

    「無いよ!」というときは、別のディレクトリを探す。

  2. このディレクトリに、次のファイルをダウンロードする

2. Wavefront OBJ 形式ファイルの読み込み

  1. テキストファイルの中身を次のように書く
    テキストエディタを用いてファイルを作成する.
    from direct.showbase.ShowBase import ShowBase
    from direct.showbase.Loader import Loader
    
    class HelloWorld(ShowBase):
    
        def __init__(self):
            ShowBase.__init__(self)
    
            self.scene = self.loader.loadModel("models/environment")
            self.scene.reparentTo(self.render)
            self.scene.setScale(1, 1, 1)
            self.scene.setPos(0, 0, 0)
    
            self.circle = self.loader.loadModel("models/circle.obj")
            self.circle.reparentTo(self.render)
            self.circle.setScale(1, 1, 1)
            self.circle.setPos(-6, 20, 0)
    
            self.cone = self.loader.loadModel("models/cone.obj")
            self.cone.reparentTo(self.render)
            self.cone.setScale(1, 1, 1)
            self.cone.setPos(-4, 20, 0)
    
            self.cube = self.loader.loadModel("models/cube.obj")
            self.cube.reparentTo(self.render)
            self.cube.setScale(1, 1, 1)
            self.cube.setPos(-2, 20, 0)
    
    
            self.cylinder = self.loader.loadModel("models/cylinder.obj")
            self.cylinder.reparentTo(self.render)
            self.cylinder.setScale(1, 1, 1)
            self.cylinder.setPos(0, 20, 0)
    
    
            self.plane = self.loader.loadModel("models/plane.obj")
            self.plane.reparentTo(self.render)
            self.plane.setScale(1, 1, 1)
            self.plane.setPos(2, 20, 0)
    
    
            self.sphere = self.loader.loadModel("models/sphere.obj")
            self.sphere.reparentTo(self.render)
            self.sphere.setScale(1, 1, 1)
            self.sphere.setPos(4, 20, 0)
    
    
            self.torus = self.loader.loadModel("models/torus.obj")
            self.torus.reparentTo(self.render)
            self.torus.setScale(1, 1, 1)
            self.torus.setPos(6, 20, 0)
    
    app = HelloWorld()
    app.run()
    
  2. テキストファイルを,保存する.

    ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.

  3. 実行する.
    Windowsコマンドプロンプトを使いたい場合には, 次のコマンドを実行する.
    cd <先ほど保存したディレクトリpython hoge.py
    
  4. プリミティブが表示されるので確認する.
  5. マウス操作
    • 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点移動(前後)

    結果を確認したら,右上の「x」をクリックして終了.

演習問題:上の手順で3次元モデルを表示しなさい.マウス操作も行いなさい.