金子邦彦研究室3次元,地図3次元コンピュータグラフィックスのゲームエンジンPanda3D SDK のインストール,サンプルプログラムの実行(3次元のゲームエンジン)(Python を使用)(Windows 上)

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 64 ビット版のインストール,pip と setuptools の更新

Windows での Python 3.10 のインストール,pip と setuptools の更新: 別ページ »で説明している.

Python の公式ページ: https://www.python.org/

Panda3D 1.11 SDK (devel 版) のインストール

https://www.panda3d.org/download.php?platform=windows&version=devel&sdk の手順で行う.

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. 使用する Python のバージョンの確認
    python --version
    

    [image]
  3. Panda3d 最新版のインストール
    python -m pip install --pre --extra-index-url https://archive.panda3d.org/ panda3d
    

    [image]

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

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

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

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

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

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

    python .\panda3d-1.10.9\samples\ball-in-maze\main.py
    

    [image]
  3. ゲーム画面が開けば OK.

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

    [image]

Panda 3D の主要機能

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

光源と影

  1. Windowsコマンドプロンプトで,次のコマンドを実行
    python .\panda3d-1.10.9\samples\shadows\basic.py
    

    [image]
  2. スポットライト,陰影,影が表現できていることを確認する.(見て楽しむ)

    [image]
  3. もともとのプログラムで,光源を指定している部分は次の通り

    [image]

テクスチャ

  1. Windowsコマンドプロンプトで,次のコマンドを実行
    python .\panda3d-1.10.9\samples\bump-mapping\main.py
    

    [image]
  2. 模様やでこぼこが表現できている.(見て楽しむ). マウス操作で回転できる.ESC キーで終了.

    [image]

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

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

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

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

    [image]
  2. サブディレクトリの下に,ファイル名の末尾が「-egg.zip」のファイルがあるので,展開(解凍)する.

    [image]
  3. 展開すると,拡張子 .egg のファイルや画像ファイルなどができることを確認

    [image]

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

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

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

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

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

    pview <ファイル名>
    

    実行例

    [image]

    [image]

    ※ マウス操作

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()
    

    [image]
  3. テキストファイルを,保存する.

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

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

    Python プログラムの実行: 別ページ »で説明

    Python のまとめ: 別ページ »にまとめ

    [image]

    実行結果例

    [image]

    ※ マウス操作

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

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

  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()
    

    [image]
  2. テキストファイルを,保存する.

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

  3. Python プログラムを実行する

    Python プログラムの実行: 別ページ »で説明

    Python のまとめ: 別ページ »にまとめ

    実行結果例

    [image]

    ※ マウス操作

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

    [image]