NO1.Getting started
安装完dmg之后,开始第一课
新建一个.py文件,然后写下下面的代码:
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
app = MyApp()
app.run()
ShowBase
ShowBase
是一个基类。它承载了大多数panda3d的模块,run()
过程是一个panda3d的主循环。它会渲染帧,执行后台任务,再渲染、再执行……循环下去。由于它不是一个正常的返回,因此必须只执行一次,并且要在程序的末尾。
这个程序生成一个黑色的框,仅此而已。
代码也可以简化成这样
import direct.directbase.DirectStart
run()
DirectStart
是一个自动实例化ShowBase的一个捷径,在快速地建立原型的时候会比较好用。
Scene Graph
Scene Graph是一个场景树,树的根节点是一个叫做render
对象,只有它最先被插入场景树的时候其他的场景树的节点才会被渲染。
将场景模型导入场景图使用reparentTo()
方法(之前要导入具体的模型文件),将父节点作为参数传入,才能正确的渲染。
最后,我们适配位置和模型的大小,在我们的场景中,环境模型略大,因此是我们偏移了一些我们的目的。setScale()
和setPos()
过程重塑了模型的大小和中心位置。
Panda3D使用3D世界坐标系的坐标位置。伸出大拇指表示x轴方向,其他手指是y方向,将大拇指指向自己,那这个坐标系就是Panda3D的坐标系统的坐标系。
loader.loadModel()
方法读取模型,返回值是一个NodePath类的实例,可以有效地指向这个模型。
代码
from di