Panda3D SDK のインストール,サンプルプログラムの実行(3次元のゲームエンジン)(Python を使用)(Windows 上)
このページでは、3次元のゲームエンジン Panda3D 1.11 SDK (devel 版) のインストールについて説明する.「devel 版」とある通り、リリース前のものを事前に試したいときに使う.
【目次】
- Panda3D のダウンロードとインストール
- サンプルプログラムを実行してみる
- Panda 3D の主要機能
- art-gallery.zip の中の .egg 形式ファイル
- 3次元モデルデータの表示プログラムの例
【サイト内の関連ページ】
- Ubuntu での Panda3D のインストール: 別ページ »で説明
- Panda3D の機能概要(説明資料)[PDF], [パワーポイント]
- 3次元のゲームエンジン Panda3D を使ってみる: 別ページ »にまとめている.
先人に感謝.
【関連する外部ページ】 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:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「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 のインストール
- 以下の手順を管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。 - 使用する Python のバージョンの確認
python --version
- Panda3d 最新版のインストール
python -m pip install panda3d
公式版 (1.10.15) のサンプルプログラムをダウンロードし、実行してみる
devel 版なので、サンプルプログラムが同封されていません. 公式版 (1.10.15) のサンプルプログラムをダウンロードし、インストールしてみる.
- 公式版 (1.10.15) のサンプルプログラムをダウンロードし,展開(解凍)する.
https://www.panda3d.org/download/panda3d-1.10.15/panda3d-1.10.15-samples.zip
- ball-in-maze を実行してみる
python .\panda3d-1.10.15\samples\ball-in-maze\main.py - ゲーム画面が開けば OK.
ボールをゴールまでもっていくなど,遊んでみよう. このゲームは,「玉」と「壁」の衝突に関するデモである
Panda 3D の主要機能
上で準備したサンプルプログラムを使い,次の機能を試してみる
光源と影
- Windows のコマンドプロンプトで,次のコマンドを実行
python .\panda3d-1.10.15\samples\shadows\basic.py
- スポットライト,陰影,影が表現できていることを確認する.(見て楽しむ)
- もともとのプログラムで,光源を指定している部分は次の通り
テクスチャ
- Windows のコマンドプロンプトで,次のコマンドを実行
python .\panda3d-1.10.15\samples\bump-mapping\main.py
- 模様やでこぼこが表現できている.(見て楽しむ). マウス操作で回転できる.ESC キーで終了.
art-gallery.zip の中の .egg 形式ファイル
- ダウンロードと展開(解凍)
次のファイルをダウンロードし,展開(解凍)する.
https://www.panda3d.org/download/noversion/art-gallery.zip
- サブディレクトリの下に,ファイル名の末尾が「-egg.zip」のファイルがあるので,展開(解凍)する.
- 展開すると,拡張子 .egg のファイルや画像ファイルなどができることを確認
拡張子 .egg のファイルは 3次元モデルデータ のファイルである.
3次元モデル:形のデータ.拡大,縮小,移動,変形できるから「モデル」
- pview コマンドで,3次元モデルデータの表示ができることを確認する.
pview コマンドは,Panda 3D に付属している,3次元モデルデータの表示プログラム.
* .eeg ファイルによっては「灰色」の表示しか出ない場合がある
pview <ファイル名>実行例
* マウス操作
- 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点移動(前後)
3次元モデルデータの表示プログラム
Wavefront OBJ 形式ファイルの表示
- Wavefront OBJ 形式ファイルを準備する
説明のため Wevefront OBJ形式ファイルを使う. この資料で使用している Wevefront OBJ形式ファイル次からダウンロードできる
- テキストファイルの中身を次のように書く
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()
- テキストファイルを,保存する.
ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.
- 実行する.
- Python プログラムの実行
python
実行結果例
* マウス操作
- 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点移動(前後)
キーボードの矢印キーによる操作
今度は,キーボードの矢印キーを使うプログラム
- 今度は、テキストファイルの中身を次のように書く
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()
- テキストファイルを,保存する.
ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.
- Python プログラムの実行
python実行結果例
* マウス操作
- 左ボタンを押しながらマウスを動かす: 視点移動(上下左右)
- 右ボタンを押しながらマウスを動かす: 視点移動(前後)
* キーボードの矢印キーによる操作もできる
Wavefront OBJ 形式ファイルの読み込み
1. 前準備
- c:\Program Files\Python38\lib\site-packages\panda3d\models\ を開くと、「.egg.gz」のファイルがあることを確認
これらは 3次元モデルのファイル
「無いよ!」というときは、別のディレクトリを探す。
- このディレクトリに、次のファイルをダウンロードする
2. Wavefront OBJ 形式ファイルの読み込み
- テキストファイルの中身を次のように書く
テキストエディタを用いてファイルを作成する.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()
- テキストファイルを,保存する.
ファイル名は何でもよいが、日本語などの全角文字は避ける.拡張子は「.py」にする.
- 実行する.