金子邦彦研究室3次元,地図Panda3d (Python で動く3次元のゲームエンジン)Panda3d サンプルプログラム

Panda3d サンプルプログラム

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

本学3年生 T.O.氏, Y.S.氏, T.H.氏 3名の共同制作. アイデア出し,制作の時間合計で 1時間以内. 制作物に手を加えずに,そのまま公開.

Panda3d の基本機能:3次元モデルデータの読み込みと描画、キーボードイベント、マウスイベント、イベントハンドラ、オブジェクトの移動や拡大縮小を試すもの

サイト内の関連資料:

[image]
from direct.showbase.ShowBase import ShowBase
from direct.showbase.Loader import Loader
from panda3d.core import Quat
 
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.cube = self.loader.loadModel("models/misc/rgbCube")
        self.cube.reparentTo(self.render)
        self.cube.setScale(1, 1, 1)
        self.cube.setPos(0, 20, 0)
        self.cube.setQuat( Quat( 0, 1, 1, 1 ) )

        self.accept( "a", self.a_key ) 
        self.accept( "s", self.s_key ) 
        self.accept( "d", self.d_key )  
        self.accept( "f", self.f_key )  
        self.accept( "g", self.g_key )  
 
        self.accept( "arrow_up", self.up_key )    
        self.accept( "arrow_down", self.down_key )    
        self.accept( "arrow_right", self.right_key )    
        self.accept( "arrow_left", self.left_key )    

        self.accept( "mouse1", self.mouse1 )
        self.accept( "mouse2", self.mouse2 )
        self.accept( "mouse3", self.mouse3 )


    def a_key(self): 
        self.cube.setScale(0.25)
    def s_key(self): 
        self.cube.setScale(0.5)
    def d_key(self): 
        self.cube.setScale(1)
    def f_key(self): 
        self.cube.setScale(2)
    def g_key(self): 
        self.cube.setScale(4)

    def up_key(self): 
        self.cube.setZ( self.cube.getZ() + 1 )
    def down_key(self): 
        self.cube.setZ( self.cube.getZ() - 1 )
    def right_key(self): 
        self.cube.setX( self.cube.getX() + 1 )
    def left_key(self): 
        self.cube.setX( self.cube.getX() - 1 )

    def mouse1(self):
        self.panda = self.loader.loadModel("models/panda-model")
        self.panda.reparentTo(self.render)
        self.panda.setScale(0.01, 0.01, 0.01)
        self.panda.setPos(20, 20, 0)
        self.panda.setQuat( Quat( 0, 0, 0, 0 ) )
    def mouse2(self):
        self.box = self.loader.loadModel("models/box")
        self.box.reparentTo(self.render)
        self.box.setScale(1, 1, 1)
        self.box.setPos(30, 20, 0)
        self.box.setQuat( Quat( 0, 0, 0, 0 ) )
    def mouse3(self):
        self.f = self.loader.loadModel("models/jack")
        self.f.reparentTo(self.render)
        self.f.setScale(1, 1, 1)
        self.f.setPos(40, 20, 0)
        self.f.setQuat( Quat( 0, 0, 0, 0 ) )

app = HelloWorld()
app.run()