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