Python - обработчики поворотов boxwidget VTK - PullRequest
2 голосов
/ 13 января 2020

, что я видел до сих пор, это то, что есть виджет, который показывает 3D-ограничивающий прямоугольник с 6 ручками. Python Boxwidget Exampler

Я бы хотел перевести окно, нажав [cntrl] + перетаскивая ручку, и вращая только вокруг оси y, нажав [shift] + перетаскивая ручку. ..

Каждое взаимодействие должно происходить только с рамкой на сцене и ничего больше.

Нужно ли перезаписывать функции виджета с рамкой? Или какую именно функцию я должен изменить. Должен ли я добавить наблюдателя взаимодействий?

И как-то - ручки становятся больше по размеру с первыми 2 или 3 взаимодействиями, кто-то испытывал ту же проблему?

РЕДАКТИРОВАТЬ:

enter image description here

Это мой текущий код:

                self.boxWidget = vtk.vtkBoxWidget()
                self.boxWidget.SetInteractor(self.renderWindowInteractor)
                self.boxWidget.SetProp3D(self.boxes_3d_actors[obj_cls_name][0])
                self.boxWidget.SetPlaceFactor(1.0)
                self.boxWidget.PlaceWidget()

Где self.boxes_3d_actors - это массив vtk.vtkAssembly ( ), которые состоят из полилиний.

Теперь мне нужно как-то перезаписать событие взаимодействия дескрипторов. Лучше всего было бы создать унаследованный класс vtkBoxwidget с собственными функциями взаимодействия.

1 Ответ

0 голосов
/ 20 января 2020

Вы должны установить Interactor согласно вашему требованию. для обычного панорамирования и поворота ниже указан код.

#Setting Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(self.boxes_3d_actors[obj_cls_name][0])
renwin = vtk.vtkRenderWindow()
renwin.AddRenderer(renderer)

# Setting interactor
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renwin)

boxWidget = vtk.vtkBoxWidget()
boxWidget.SetInteractor(interactor)
boxWidget.SetProp3D(self.boxes_3d_actors[obj_cls_name][0])
boxWidget.SetPlaceFactor(1.0)
boxWidget.PlaceWidget()

Для настройки поворота и перемещения объекта вы можете увидеть следующие ссылки на документы: https://vtk.org/Wiki/VTK/Examples/Python/Interaction/MouseEvents https://vtk.org/doc/nightly/html/classvtkCamera.html

...