3次元ゲームエンジン Panda3D 最新版のインストール(ソースコードを使用),プログラムの例(Ubuntu 上)

Panda3D は,3次元のゲームエンジンである. このページでは,Panda3D のソースコードからのビルドとインストール、および動作確認を行う.

目次

  1. 前準備
  2. Ubuntu で Panda3D のビルドとインストール
  3. 付属のサンプルプログラムを実行してみる
  4. Panda3D の主要機能
  5. art-gallery.zip の中の .egg 形式ファイル
  6. 3次元モデルデータの表示プログラム

サイト内の関連ページ

前準備

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 は、ビルドやパッケージ生成の際に用いる開発関連ツールである。

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

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

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git 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 のインストール(ソースコードを使用)(Ubuntu 上)

https://github.com/panda3d/panda3d/blob/master/README.md の手順で行う.

  1. ビルドに必要なライブラリのインストール

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

    * Panda3D の README に記載された、Linux でのビルドに必要な依存パッケージである。

    sudo apt update
    sudo apt -y install build-essential pkg-config fakeroot python3-dev libpng-dev libjpeg-dev libtiff-dev zlib1g-dev libssl-dev libx11-dev libgl1-mesa-dev libxrandr-dev libxxf86dga-dev libxcursor-dev bison flex libfreetype6-dev libvorbis-dev libeigen3-dev libopenal-dev libode-dev libbullet-dev libgtk2.0-dev libassimp-dev libopenexr-dev
    
  2. pip3 の確認

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

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

    sudo pip3 --version
    
  3. ダウンロードとビルド

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

    * https://github.com/panda3d/panda3d/blob/master/README.md による

    cd /usr/local
    sudo rm -rf panda3d
    sudo git clone https://github.com/panda3d/panda3d.git
    sudo chown -R $USER panda3d
    cd panda3d
    python3 makepanda/makepanda.py --everything --installer --no-egl --no-gles --no-gles2 --no-opencv
    

    * --everything は利用可能な機能を有効化するオプション、--installer は .deb パッケージを生成するオプションである。--no- で始まるオプションは、対応する機能を無効化する。


    (以下省略)
  4. 結果の確認
  5. インストール

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

    * ビルドで生成された .deb パッケージをインストールする

    sudo dpkg -i panda3d*.deb
    
  6. 結果の確認

付属のサンプルプログラムを実行してみる

  1. 付属のサンプルプログラム ball-in-maze を実行してみる

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

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python

    python3 /usr/local/panda3d/samples/ball-in-maze/main.py
    
  2. ゲーム画面が表示されれば、インストールは完了している.

    このサンプルは,「玉」と「壁」の衝突判定のデモである.

Panda3D の主要機能

付属のサンプルプログラムを使い,次の機能を確認する.

光源と影

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

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python

    python3 /usr/local/panda3d/samples/shadows/basic.py
    
  2. スポットライト,陰影,が表現できていることを確認する.
  3. プログラムの中で,光源を指定している部分は次の通り

テクスチャ

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

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python

    python3 /usr/local/panda3d/samples/bump-mapping/main.py
    
  2. バンプマッピングにより、模様と凹凸が表現できていることを確認する.マウス操作で回転できる.ESC キーで終了.

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

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

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

    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 <ファイル名>
    

    実行例

    * マウス操作

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

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

Wavefront OBJ 形式ファイルの表示

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

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

  2. テキストファイルの中身を次のように書く
    from direct.showbase.ShowBase import ShowBase
    
    class App(ShowBase):
        def __init__(self):
            ShowBase.__init__(self)
            model = self.loader.loadModel("sample.obj")
            model.reparentTo(self.render)
            self.cam.setPos(0, -500, 0)
            self.cam.lookAt(0, 0, 0)
    
    app = App()
    app.run()
    
  3. テキストファイルを,保存する.

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

  4. 実行する.

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

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python

    python3 <ファイル名>
    

    実行例

    * マウス操作

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

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

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

  1. テキストファイルの中身を次のように書く
    from direct.showbase.ShowBase import ShowBase
    
    class App(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 = App()
    app.run()
    
  2. テキストファイルを,保存する.

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

  3. 実行する.

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

    Ubuntu で Anacondavirtualenvpyenv を使う場合には「python3」の代わりに「python

    python3 <ファイル名>
    

    実行例

    * マウス操作

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

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