为什么MlabSceneModel的light_manager没有设置?

时间:2013-11-17 18:29:18

标签: python mayavi

我使用Mayavi进行TraitsUI的3D可视化。 scene是MlabSceneModel类型的特征。我想更改灯光并尝试在scene.light_manager事件中调用的函数中访问activated。但是,scene.light_manager始终为None

使用mlab.figure()创建一个具有灯光管理器的场景,但由于我希望场景集成在UI中而不是在其他窗口中,因此我无法选择。

1 个答案:

答案 0 :(得分:1)

这个问题最初引起了我的反响。

查看tvtk源,当生成交互器时,灯光管理器将添加到场景中,这在场景激活后发生。此外,我尝试的第一件事就是听'scene:light_manager'无效,因为灯光管理器是Property特征,不会直接改变。也就是说,如果您监听属性引用的对象本身,它将触发创建通知。换句话说,这样做:

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