簡體   English   中英

Python - VTK boxwidget 旋轉處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM