3次元ゲームエンジン Panda3D 1.11 SDK (dev 版) のインストール(Ubuntu 上)
このページでは、Ubuntu での 3次元ゲームエンジン Panda3D 1.11 SDK (dev 版) のインストールについて説明する.dev 版(開発版)は、リリース前の機能を試すときに使うものであり、動作が不安定な場合がある。安定した動作が必要な場合は安定版(1.10.16)を使う。
【目次】
- 前準備
- Panda3D 1.11 SDK (dev 版) のインストール
- 安定版 (1.10.16) のサンプルプログラムをダウンロードし、実行してみる
- Panda3D の主要機能
- art-gallery.zip の中の .egg 形式ファイル
- 3次元モデルデータの表示プログラム
【サイト内の関連ページ】
- Windows での Panda3D のインストール: 別ページ »で説明
- Panda3D の機能概要(説明資料)[PDF], [パワーポイント]
- 3次元のゲームエンジン Panda3D を使ってみる: 別ページ »にまとめている.
キーワード: Panda3d, Wavefront OBJ 形式ファイルの表示, Python
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
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 を用いる.)
Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.
- python3 (Ubuntu のシステム Python)
- sudo pip3 (pip 3)
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 でインストールする.
- venv(Python 仮想環境)を使う(推奨):
python3 -m venv ~/panda3d-envでつくり,source ~/panda3d-env/bin/activateで有効化してから、pip installを行う。 - システム Python に入れる:
sudo pip3 installのコマンドに--break-system-packagesを付けて実行する。
- pip の確認
Ubuntu の端末で,次のコマンドを実行
* Ubuntu システムの中のどの Python に Panda3D がインストールされるかを事前に確認しておくため。
sudo pip3 --version - Panda3D の dev 版のインストール
Ubuntu の端末で,次のコマンドを実行
sudo pip3 install -U --pre --extra-index-url https://archive.panda3d.org/ panda3d*
--preはリリース前のバージョンを対象に含めるオプションである。
- バージョンの確認
pip3 show panda3d
*
sudo pip3でインストールした場合、pview などの付属コマンドは/usr/local/binに置かれる。venv でインストールした場合は、venv のbinディレクトリに置かれるため、venv を有効化した状態で実行する。
安定版 (1.10.16) のサンプルプログラムをダウンロードし、実行してみる
pip でインストールした場合、サンプルプログラムは同封されない。 安定版 (1.10.16) のサンプルプログラムをダウンロードして実行する.
- 安定版 (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
(以下省略) - ball-in-maze を実行してみる
Ubuntu の端末で,次のコマンドを実行
python3 /usr/local/panda3d-1.10.16/samples/ball-in-maze/main.py
- ゲーム画面が開けば,インストールと実行の確認は完了である.
画面が開かない場合には、
pip3 show panda3dでインストール先の Python を確認し、そのPython(python3 または venv 内の python)でプログラムを実行する。ModuleNotFoundError: No module named 'panda3d'と表示される場合は、別の Python で実行している。ボールをゴールまで運ぶ操作ができる。 このゲームは,「玉」と「壁」の衝突判定のデモである。
Panda3D の主要機能
上で準備したサンプルプログラムを使い,次の機能を確認する
光源と影
- Ubuntu の端末で,次のコマンドを実行
python3 /usr/local/panda3d-1.10.16/samples/shadows/basic.py
- スポットライト,陰影,影が表現できていることを確認する.
- このプログラムで,光源を指定している部分は次の通り
テクスチャ
- Ubuntu の端末で,次のコマンドを実行
python3 /usr/local/panda3d-1.10.16/samples/bump-mapping/main.py
- 模様や凹凸(バンプマッピング)が表現できていることを確認する.マウス操作で回転できる.ESC キーで終了.
art-gallery.zip の中の .egg 形式ファイル
- ダウンロードと展開(解凍)
Ubuntu の端末で,次のコマンドを実行
* art-gallery.zip はファイルサイズが約 200M バイトである。
cd /tmp curl -O https://www.panda3d.org/download/noversion/art-gallery.zip unzip art-gallery.zip - サブディレクトリの下に,ファイル名の末尾が「-egg.zip」のファイルがあるので,展開(解凍)する.
- 展開すると,拡張子 .egg のファイルや画像ファイルなどができることを確認
拡張子 .egg のファイルは 3次元モデルデータ のファイルである.
3次元モデル:形のデータ.拡大,縮小,移動,変形できるから「モデル」
- pview コマンドで,3次元モデルデータの表示ができることを確認する.
pview コマンドは,Panda3D に付属している,3次元モデルデータの表示プログラムである.
- Ubuntu の端末で,pview コマンドを実行
pview <ファイル名>実行例
* マウス操作(Panda3D の既定の設定)
- 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
- 中ボタンを押しながらマウスを動かす: 視点の回転
3次元モデルデータの表示プログラム
Wavefront OBJ 形式ファイルの表示
- Wavefront OBJ 形式ファイルを準備する
サンプルファイルは次のリンクからダウンロードできる
- テキストファイルの中身を次のように書く
* 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()
- テキストファイルを,保存する.
ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.sample.obj と同じディレクトリに保存する.
- 実行する.
Ubuntu の端末で,次のコマンドを実行
python3 <ファイル名>実行例
* マウス操作(Panda3D の既定の設定)
- 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
- 中ボタンを押しながらマウスを動かす: 視点の回転
キーボードの矢印キーによる操作
次は,キーボードの矢印キーを使うプログラムである
- テキストファイルの中身を次のように書く
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は,キー入力とメソッドの対応づけを行う。
- テキストファイルを,保存する.
ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.
- 実行する.
Ubuntu の端末で,次のコマンドを実行
python3 <ファイル名>実行例
* マウス操作(Panda3D の既定の設定)
- 左ボタンを押しながらマウスを動かす: 視点の平行移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点の前後移動(ズーム)
- 中ボタンを押しながらマウスを動かす: 視点の回転
* キーボードの矢印キーによる操作もできる