Почему не устанавливается Light_manager MlabSceneModel?

StackOverflow https://stackoverflow.com//questions/20034515

  •  21-12-2019
  •  | 
  •  

Вопрос

Я использую Mayavi для 3D-визуализации с помощью TraitsUI.А scene — это признак типа MlabSceneModel.Я хочу изменить освещение и пытаюсь получить доступ scene.light_manager в функции, вызываемой activated событие.Однако, scene.light_manager всегда None.

С использованием mlab.figure() создать сцену с менеджером освещения, но поскольку я хочу, чтобы сцена была интегрирована в пользовательский интерфейс, а не в дополнительное окно, для меня это не вариант.

Это было полезно?

Решение

Хороший вопрос, который поначалу поставил меня в замешательство.

Если посмотреть на источник 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top