paraview web下如何实现鼠标拾取点
How to implement picking point by mouse under paraview web
我们公司希望我们的 paraview web 应用程序在用户单击鼠标左键时显示相关数据。
另一部分很简单,比如如何从选定的点提取数据。但我无法解决问题:如何在鼠标点击的同时在坐标中选取一个点?
我在 python 脚本中添加了一个回调函数来处理左键按下。然后我尝试使用 vtkPointPicker 投射光线并选择坐标中的点。但是 pv python 程序运行 python脚本,因为当单击鼠标时,服务器会崩溃(确切地说是当picker [= 30时=] pick())。在调试中我发现 VTK 代码取消引用空指针是程序崩溃的原因。但是 VTK 源代码太复杂了,无法深入研究。
这是我的回调函数:
def CustomLeftButtonPress(obj, event):
x = obj.GetEventPosition()[0]
y = obj.GetEventPosition()[1]
picker = vtkPointPicker()
obj.SetPicker(picker)
currentRenderer = obj.FindPokedRenderer(x,y)
picker.Pick(x, y, 0.0, currentRenderer)
...
picker.Pick(x, y, 0.0, currentRenderer)
导致崩溃。
我应该使用 vtkWorldPointPicker
而不是 vtkPointPicker
。
我们公司希望我们的 paraview web 应用程序在用户单击鼠标左键时显示相关数据。
另一部分很简单,比如如何从选定的点提取数据。但我无法解决问题:如何在鼠标点击的同时在坐标中选取一个点?
我在 python 脚本中添加了一个回调函数来处理左键按下。然后我尝试使用 vtkPointPicker 投射光线并选择坐标中的点。但是 pv python 程序运行 python脚本,因为当单击鼠标时,服务器会崩溃(确切地说是当picker [= 30时=] pick())。在调试中我发现 VTK 代码取消引用空指针是程序崩溃的原因。但是 VTK 源代码太复杂了,无法深入研究。
这是我的回调函数:
def CustomLeftButtonPress(obj, event):
x = obj.GetEventPosition()[0]
y = obj.GetEventPosition()[1]
picker = vtkPointPicker()
obj.SetPicker(picker)
currentRenderer = obj.FindPokedRenderer(x,y)
picker.Pick(x, y, 0.0, currentRenderer)
...
picker.Pick(x, y, 0.0, currentRenderer)
导致崩溃。
我应该使用 vtkWorldPointPicker
而不是 vtkPointPicker
。