欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Panda3D 】一、装载草地风景

程序员文章站 2022-07-13 09:20:23
...

The Scene Graph

Panda3D包含一个叫做场景图的数据结构。场景图是一个包含所有需要渲染的对象的树。树的根是一个名为render的对象。在它第一次插入到场景图之前,什么都不会被渲染

要将草地风景模型安装到场景图中,我们使用reparentTo()方法。这将设置模型的父类,从而在场景图中给它一个位置。这样做使得模型在场景中可见。

最后,调整模型的位置和比例。在这个特殊的例子中,环境模型对于我们的目的来说有点太大了,并且有些偏移。setScale()和setPos()过程对模型进行缩放和居中。

Panda3D使用“地理”坐标系统,其中位置(- 8,42,0)表示地图坐标(8,42)和高度0。如果你习惯了OpenGL/Direct3D坐标,那么将右手放在经典位置,拇指为X,手指为Y,手掌为Z面向你;然后向后倾斜,直到你的手水平,手指指向外,手掌朝上。在Panda3D中“前进”是Y坐标的一个积极变化。

The Program

随着Panda3D的正常运行,现在可以加载一些绿色的风景。更新你的代码如下:

from direct.showbase.ShowBase import ShowBase


class MyApp(ShowBase):

    def __init__(self):
        ShowBase.__init__(self)

        # Load the environment model.
        self.scene = self.loader.loadModel("models/environment")
        # Reparent the model to render.
        self.scene.reparentTo(self.render)
        # Apply scale and position transforms on the model.
        self.scene.setScale(0.25, 0.25, 0.25)
        self.scene.setPos(-8, 42, 0)


app = MyApp()
app.run()

ShowBase过程loader.loadModel()加载指定的文件,在本例中是环境。模型文件夹中的egg文件。返回值是NodePath类的一个对象,实际上是一个指向模型的指针。请注意Panda文件名语法使用了正斜杠,即使在Windows下也是如此。

运行这个程序
继续运行程序。你应该看看这个:

【Panda3D 】一、装载草地风景

岩石和树木似乎在盘旋。摄像机略低于地面,背面剔除使地面对我们来说是不可见的。如果我们重新调整相机的位置,地形看起来会更好。