[英]Python - VTK boxwidget rotation-handlers
到目前為止我所看到的是,有一個小部件顯示了一個帶有 6 個手柄的 3D 邊界框。 Python Boxwidget 示例程序
我想通過單擊 [cntrl]+拖動手柄來平移框,並通過單擊 [shift]+拖動手柄僅圍繞 y 軸旋轉...
每個交互都應該只發生在場景中的盒子上,而不是其他任何東西。
我是否必須覆蓋 box-widget 功能? 或者我應該修改哪個確切的功能。 我應該添加一個交互觀察者嗎?
不知何故 - 在前 2 或 3 次交互中,手柄的尺寸越來越大,有人遇到過同樣的問題嗎?
編輯:
那是我當前的代碼:
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。
您必須根據您的要求設置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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.