Python 为什么MlabSceneModel的灯光管理器没有设置?
我正在使用Mayavi与TraitsUI进行三维可视化。Python 为什么MlabSceneModel的灯光管理器没有设置?,python,mayavi,Python,Mayavi,我正在使用Mayavi与TraitsUI进行三维可视化。场景是MlabSceneModel类型的一个特征。我想更改照明并尝试在激活的事件中调用的功能中访问场景.light\u manager。但是,scene.light\u manager始终为None 使用mlab.figure()创建一个具有灯光管理器的场景,但由于我希望将场景集成到UI中,而不是其他窗口中,这对我来说是没有选择的。这是一个很好的问题,一开始让我感到困惑 查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激
场景
是MlabSceneModel类型的一个特征。我想更改照明并尝试在激活的事件中调用的功能中访问场景.light\u manager
。但是,scene.light\u manager
始终为None
使用mlab.figure()
创建一个具有灯光管理器的场景,但由于我希望将场景集成到UI中,而不是其他窗口中,这对我来说是没有选择的。这是一个很好的问题,一开始让我感到困惑
查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激活之后。此外,我尝试的第一件事是听“场景:灯光管理器”
不起作用,因为灯光管理器是一个不会直接改变的属性。也就是说,如果您监听对象本身(属性引用该对象),它将在创建时触发通知。换句话说,请执行以下操作:
class Application(HasTraits):
scene=Instance(MlabSceneModel,())
...
@on_trait_change('scene:scene_editor:light_manager')
def muck_with_the_lights(self):
print self.scene.light_manager
这是一个好问题,一开始让我大吃一惊
查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激活之后。此外,我尝试的第一件事是听“场景:灯光管理器”
不起作用,因为灯光管理器是一个不会直接改变的属性。也就是说,如果您监听对象本身(属性引用该对象),它将在创建时触发通知。换句话说,请执行以下操作:
class Application(HasTraits):
scene=Instance(MlabSceneModel,())
...
@on_trait_change('scene:scene_editor:light_manager')
def muck_with_the_lights(self):
print self.scene.light_manager
顺便说一句,既然您提到了mlab.figure
,那么mlab.figure
所做的就是设置当前的图形。如果没有,这会创建一个新的场景,但是可以设置图形a lafig=mlab.figure(figure=self.scene.mayavi_scene,bgcolor='yellow')
或者类似的东西。这与当前的问题无关。顺便说一句,既然您提到了mlab.figure
,那么mlab.figure
所做的就是设置当前的图形。如果没有,这会创建一个新的场景,但是可以设置图形a lafig=mlab.figure(figure=self.scene.mayavi_scene,bgcolor='yellow'))
或类似的东西。这与眼前的问题无关。