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