1

我正在使用 Mayavi 进行带有 TraitsUI 的 3D 可视化。这scene是 MlabSceneModel 类型的特征。我想更改照明并尝试访问事件scene.light_manager调用的函数。activated然而,scene.light_manager总是None

mlab.figure()用于创建具有灯光管理器的场景,但由于我希望将场景集成到 UI 而不是附加窗口中,所以这对我来说是没有选择的。

4

1 回答 1

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
于 2013-11-18T20:00:59.507 回答