首页 > 解决方案 > Panda3d 中基础对象如何控制相机

问题描述

我正在玩弄在 Panda3d 引擎中创建自定义几何图形。下一个代码 100% 正确。

class FooBarTriangle(ShowBase):
    def __init__(self):
        super(self).__init__()

        self.disable_mouse()
        self.set_frame_rate_meter(True)

        self.accept("escape", sys.exit)
        self.accept("space", lambda: print(self.camera.get_pos()))
        self.camera.set_pos(0, 0, 10)
        self.camera.look_at(0, 0, 0)

        self._add_light()
        self._add_triangle()


    def _add_light(self):
        # Adds a point light
        pass

    def _add_triangle(self):
        # Adds a single triangle in a certain place
        pass

base.disableMouse()当我从我的代码中删除时,会发生一些神秘的事情。我希望我的相机可以移动并出现在 (0, 0, 10) 位置,看着 (0, 0, 0)。但是,相反,相机位于 (0, 0, 0) 位置,我不知道它在哪里。

为什么会这样?

标签: pythonpanda3d

解决方案


发生这种情况是因为 Panda3D 有一个默认的摄像头控件(默认摄像头驱动程序),如果你不调用disableMouse(),Panda3D 将不会通过调用来移动你的摄像头camera.set_pos(x, y, z),而只允许通过指定的控件移动,可以在这里阅读手册中。

如果您希望能够将相机放置在除(0, 0, 0)代码之外的任何位置,则必须编写自己的相机控制器,或者只需使用上面链接中指示的控件在场景中移动。


推荐阅读