panda3d场景的主要状态

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了panda3d场景的主要状态相关的知识,希望对你有一定的参考价值。


    场景的状态包括位置、方向、缩放比例、物体朝向、颜色、可见性、透明度、相机等。

    最常改变的是位置和方向。
    panda3d的默认坐标系:X向右,Y向前,Z向上。
    对象方向使用欧拉角度坐标;由航向(Heading|Yaw)、俯仰(Pitch)、滚动(Roll)构成。

    这两句设置载入场景的位置和缩放比例;
    self.environ.setScale(0.25, 0.25, 0.25)
    self.environ.setPos(-8, 42, 0)
    缩放比例可分别设置X、Y、Z方向的;

    self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
    这句应该是每帧改变相机的位置和方向;

    spinCameraTask,这个是自己写的函数;python的语法看上去和C#和C++不同;

    taskMgr,这个应是每帧调用的一个东西;

    看一下手册;

Tasks are subroutines (functions) that you write that get called by Panda every frame or every specified amount of time. Event handlers are subroutines that you write that get called by Panda when certain special events occur. 
任务是一个你自己写的子路由函数,被Panda每帧调用,或者指定的时间到达调用。......;
Together, these two mechanisms enable you to update your Panda world between rendering steps.
这两个机制使你能更新你的Panda场景,在渲染的步骤之间。

这函数每帧被调用,改变相机的位置和方向;这样场景就在旋转;
def spinCameraTask(self, task):
        angleDegrees = task.time * 6.0
        angleRadians = angleDegrees * (pi / 180.0)
        self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3)
        self.camera.setHpr(angleDegrees, 0, 0)
        return Task.cont

setPos,改变位置;
setHpr,改变方向;
setHpr的三个参数是:Yaw,Pitch,Roll;

self是啥我还没搞懂;可能是ShowBase类的一个实例;有时间学习一下python语法;
class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

只载入场景;

载入自己的egg模型;位置、方向、缩放比例自己调整;

 

 

以上是关于panda3d场景的主要状态的主要内容,如果未能解决你的问题,请参考以下文章

panda3d 键盘移动场景

初步了解Panda3D场景管理

初步了解panda3d灯光

大疆御3classic带无头模式吗

基于磁力计和陀螺仪的北向计算

初步了解Panda3D 雾(Fog)