3次元ゲームエンジン Panda3D 1.11 SDK (dev 版) のインストール(Ubuntu 上)

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

このページでは、Ubuntu での 3次元ゲームエンジン Panda3D 1.11 SDK (dev 版) のインストールについて説明する.dev 版(開発版)は、リリース前の機能を試すときに使うものであり、動作が不安定な場合がある。安定した動作が必要な場合は安定版(1.10.16)を使う。

目次

  1. 前準備
  2. Panda3D 1.11 SDK (dev 版) のインストール
  3. 安定版 (1.10.16) のサンプルプログラムをダウンロードし、実行してみる
  4. Panda3D の主要機能
  5. art-gallery.zip の中の .egg 形式ファイル
  6. 3次元モデルデータの表示プログラム

サイト内の関連ページ

キーワード: Panda3d, Wavefront OBJ 形式ファイルの表示, Python

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

C/C++ コンパイラと Make とビルドツールのインストール

ソフトウェアをソースコードからビルドするには、C/C++コンパイラ (通常はGCC) や make ユーティリティといった開発ツールが必要である。Ubuntuでは、これらのツールは build-essential パッケージにまとめられている。インストールするには,端末で,次のコマンドを実行する。

sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config

libtool, texinfo, dpkg-dev, pkg-config は、より複雑なビルドやパッケージ管理の際に用いる開発関連ツールである。

curl, unzip のインストール(Ubuntu 上)

インストールするには, 端末で,次のコマンドを実行する.

sudo apt -y install curl unzip

Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)

Python のインストールは行わない(Ubuntu のシステム Python を用いる.)

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明

Python3 開発用ファイル,pip, setuptools, venv のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential

Panda3D 1.11 SDK (dev 版) のインストール(Ubuntu 上)

公式のダウンロードページ(開発版) https://www.panda3d.org/download.php?version=devel&branch=master に記載の手順で行う.Panda3D の開発版は、公式の配布サーバ https://archive.panda3d.org/ を追加の参照先に指定して pip でインストールする.

Ubuntu 23.04 以降では、システム Python のディレクトリへの pip インストールが既定で禁止されている(PEP 668)。そのため、次のいずれかの方法を用いる。
  1. pip の確認

    Ubuntu の端末で,次のコマンドを実行

    * Ubuntu システムの中のどの Python に Panda3D がインストールされるかを事前に確認しておくため。

    sudo pip3 --version
    
  2. Panda3D の dev 版のインストール

    Ubuntu の端末で,次のコマンドを実行

    sudo pip3 install -U --pre --extra-index-url https://archive.panda3d.org/ panda3d
    

    * --pre はリリース前のバージョンを対象に含めるオプションである。

  3. バージョンの確認
    pip3 show panda3d
    

    * sudo pip3 でインストールした場合、pview などの付属コマンドは /usr/local/bin に置かれる。venv でインストールした場合は、venv の bin ディレクトリに置かれるため、venv を有効化した状態で実行する。

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

pip でインストールした場合、サンプルプログラムは同封されない。 安定版 (1.10.16) のサンプルプログラムをダウンロードして実行する.

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

    Ubuntu の端末で,次のコマンドを実行

    cd /tmp
    curl -O https://www.panda3d.org/download/panda3d-1.10.16/panda3d-1.10.16-samples.zip
    cd /usr/local
    sudo unzip /tmp/panda3d-1.10.16-samples.zip
    sudo chown -R $USER panda3d-1.10.16
    

    (以下省略)
  2. ball-in-maze を実行してみる

    Ubuntu の端末で,次のコマンドを実行

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python
    python3 /usr/local/panda3d-1.10.16/samples/ball-in-maze/main.py
    
  3. ゲーム画面が開けば,インストールと実行の確認は完了である.

    画面が開かない場合には、pip3 show panda3d でインストール先の Python を確認し、そのPython(python3 または venv 内の python)でプログラムを実行する。ModuleNotFoundError: No module named 'panda3d' と表示される場合は、別の Python で実行している。

    ボールをゴールまで運ぶ操作ができる。 このゲームは,「玉」と「壁」の衝突判定のデモである。

Panda3D の主要機能

上で準備したサンプルプログラムを使い,次の機能を確認する

光源と影

  1. Ubuntu の端末で,次のコマンドを実行
    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python
    python3 /usr/local/panda3d-1.10.16/samples/shadows/basic.py
    
  2. スポットライト,陰影,が表現できていることを確認する.
  3. このプログラムで,光源を指定している部分は次の通り

テクスチャ

  1. Ubuntu の端末で,次のコマンドを実行
    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python
    python3 /usr/local/panda3d-1.10.16/samples/bump-mapping/main.py
    
  2. 模様や凹凸(バンプマッピング)が表現できていることを確認する.マウス操作で回転できる.ESC キーで終了.

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

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

    Ubuntu の端末で,次のコマンドを実行

    * art-gallery.zip はファイルサイズが約 200M バイトである。

    cd /tmp
    curl -O https://www.panda3d.org/download/noversion/art-gallery.zip
    unzip art-gallery.zip
    
  2. サブディレクトリの下に,ファイル名の末尾が「-egg.zip」のファイルがあるので,展開(解凍)する.
  3. 展開すると,拡張子 .egg のファイルや画像ファイルなどができることを確認

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

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

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

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

  5. Ubuntu の端末で,pview コマンドを実行
    pview <ファイル名>
    

    実行例

    * マウス操作(Panda3D の既定の設定)

    • 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
    • 中ボタンを押しながらマウスを動かす: 視点の回転

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

Wavefront OBJ 形式ファイルの表示

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

    サンプルファイルは次のリンクからダウンロードできる

  2. テキストファイルの中身を次のように書く

    * Panda3D の起動には ShowBase クラスを用いる。かつて使われていた direct.directbase.DirectStart は Panda3D 1.9 以降で非推奨である。

    from direct.showbase.ShowBase import ShowBase
    
    class MyApp(ShowBase):
        def __init__(self):
            ShowBase.__init__(self)
            self.model = self.loader.loadModel("sample.obj")
            self.model.reparentTo(self.render)
            self.cam.setPos(0, -500, 0)
            self.cam.lookAt(0, 0, 0)
    
    app = MyApp()
    app.run()
    
  3. テキストファイルを,保存する.

    ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.sample.obj と同じディレクトリに保存する.

  4. 実行する.

    Ubuntu の端末で,次のコマンドを実行

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python
    python3 <ファイル名>
    

    実行例

    * マウス操作(Panda3D の既定の設定)

    • 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
    • 中ボタンを押しながらマウスを動かす: 視点の回転

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

次は,キーボードの矢印キーを使うプログラムである

  1. テキストファイルの中身を次のように書く
    from direct.showbase.ShowBase import ShowBase
    
    class MyApp(ShowBase):
        def __init__(self):
            ShowBase.__init__(self)
            self.model = self.loader.loadModel("sample.obj")
            self.model.reparentTo(self.render)
            self.cam.setPos(0, -500, 0)
            self.cam.lookAt(0, 0, 0)
            self.accept("arrow_up", self.forward)
            self.accept("arrow_down", self.backward)
            self.accept("arrow_right", self.right)
            self.accept("arrow_left", self.left)
    
        def forward(self):
            self.model.setY(self.model.getY() - 10)
    
        def backward(self):
            self.model.setY(self.model.getY() + 10)
    
        def right(self):
            self.model.setH(self.model.getH() - 10)
    
        def left(self):
            self.model.setH(self.model.getH() + 10)
    
    app = MyApp()
    app.run()
    

    * setY は前後方向の移動,setH は水平方向の回転(ヘディング)の指定である。accept は,キー入力とメソッドの対応づけを行う。

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

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

  3. 実行する.

    Ubuntu の端末で,次のコマンドを実行

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python
    python3 <ファイル名>
    

    実行例

    * マウス操作(Panda3D の既定の設定)

    • 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
    • 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
    • 中ボタンを押しながらマウスを動かす: 視点の回転

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