【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下也是如此。
运行这个程序
继续运行程序。你应该看看这个:
岩石和树木似乎在盘旋。摄像机略低于地面,背面剔除使地面对我们来说是不可见的。如果我们重新调整相机的位置,地形看起来会更好。
推荐阅读