金子邦彦研究室3次元,地図Panda3d (Python で動く3次元のゲームエンジン)Panda3D で Wavefront OBJ 形式ファイルを表示

Panda3D で Wavefront OBJ 形式ファイルを表示

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

サイト内の関連資料:

先人に感謝.

関連する外部ページ】http://www.panda3d.org/download.php?sdk&version=devel

1. 前準備

  1. c:\Program Files\Python38\lib\site-packages\panda3d\models\ を開くと、「.egg.gz」のファイルがあることを確認

    これらは 3次元モデルのファイル

    [image]

    「無いよ!」というときは、別のディレクトリを探す。

  2. このディレクトリに、次のファイルをダウンロードする

    [image]

2. Wavefront OBJ 形式ファイルの読み込み

  1. テキストファイルの中身を次のように書く
    テキストエディタを用いてファイルを作成する.

    ※ 参考のため,Visual Studio Code で Panda3d を使う手順を別のページで説明している.

    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()
    

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

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

  3. 実行する.

    ※ 参考のため,Visual Studio Code で Panda3d を使う手順を別のページで説明している.

    Windowsコマンドプロンプトを使いたい場合には, 次のコマンドを実行する.

    cd <先ほど保存したディレクトリpython hoge.py
    

    [image]
  4. プリミティブが表示されるので確認する.

    [image]
  5. マウス操作

    [image]

    結果を確認したら,右上の「x」をクリックして終了. 

演習問題:上の手順で3次元モデルを表示しなさい.マウス操作も行いなさい.