C++ VTKActor在渲染后不可见,但在摄影机上可见->;resetview()

C++ VTKActor在渲染后不可见,但在摄影机上可见->;resetview(),c++,qt,vtk,qvtkwidget,C++,Qt,Vtk,Qvtkwidget,我正在从事qt vtk项目。我们有一个画线的功能。在两个鼠标单击位置之间创建直线的位置。但一旦创建了actor,它就不可见了。我刚刚在添加演员之后调用了render函数。但它不起作用。但如果我这样做的话,camera->resetview()线条会变得可见,但整个透视图都会改变。我哪里做错了 谢谢 Rwik我认为如果没有看到代码,这有点难以帮助,但是您是否尝试过使用 ui->qvtkwidget->update(); ,其中ui是从QMainWindow派生的类的实例?我认为如果没

我正在从事qt vtk项目。我们有一个画线的功能。在两个鼠标单击位置之间创建直线的位置。但一旦创建了actor,它就不可见了。我刚刚在添加演员之后调用了render函数。但它不起作用。但如果我这样做的话,camera->resetview()线条会变得可见,但整个透视图都会改变。我哪里做错了

谢谢
Rwik

我认为如果没有看到代码,这有点难以帮助,但是您是否尝试过使用

ui->qvtkwidget->update();

,其中ui是从QMainWindow派生的类的实例?

我认为如果没有看到代码,这有点难以帮助,但是您是否尝试过使用

ui->qvtkwidget->update();

,其中ui是从QMainWindow派生的类的实例?

这可能与您无关,但我遇到了完全相同的问题(在ActiViz[managed VTK]中),并与之争论了一周,因此我希望这对其他人有所帮助。结果是我们想在画布上画的线的位置有问题;它们离摄影机太远(在Z轴上),因此不可见

对于我们来说,我们试图在用户单击的任何位置的查看区域上画一个十字。数据点就在那里,演员和诸如此类的人也在那里,但只有在调用resetCamera()并因此更改摄影机的配置时,数据点才会在场景中可见。 最初,我将默认的交互者吞下鼠标事件(预期行为)归咎于我们必须添加到cirvumvent的自定义交互者。调查显示,这似乎不太可能

在这之后,我把责任推到了摄像机上,因为我怀疑重置调用可能是调用了某种我不知道的更新方法。我调用了resetCamera(),然后将摄影机值还原为最初的值。 当这项工作成功完成后,当摄像机缩小时,十字架会出现,然后当它被放回原位时又会消失。就在这时,我意识到这与场景有关

在这一点上,我检查了我们用来在3D中检索鼠标位置的方法,并意识到z值是巨大的,它将点放置得太远,这是VTK将控件上的2D位置转换为场景中的3D位置的方法的副产品,反之亦然

因此,在所有这些之后,一个非常普通且可以避免的错误起源于renderer.DisplayToWorld()和WorldToDisplay()方法。
这可能不是每个人的问题,但我希望我已经节省了一个星期的时间来摆弄VTK。

这可能与您无关,但我也遇到了同样的问题(在ActiViz[managed VTK]),并与之争论了一个星期,所以我希望这能帮助其他人。结果是我们想在画布上画的线的位置有问题;它们离摄影机太远(在Z轴上),因此不可见

对于我们来说,我们试图在用户单击的任何位置的查看区域上画一个十字。数据点就在那里,演员和诸如此类的人也在那里,但只有在调用resetCamera()并因此更改摄影机的配置时,数据点才会在场景中可见。 最初,我将默认的交互者吞下鼠标事件(预期行为)归咎于我们必须添加到cirvumvent的自定义交互者。调查显示,这似乎不太可能

在这之后,我把责任推到了摄像机上,因为我怀疑重置调用可能是调用了某种我不知道的更新方法。我调用了resetCamera(),然后将摄影机值还原为最初的值。 当这项工作成功完成后,当摄像机缩小时,十字架会出现,然后当它被放回原位时又会消失。就在这时,我意识到这与场景有关

在这一点上,我检查了我们用来在3D中检索鼠标位置的方法,并意识到z值是巨大的,它将点放置得太远,这是VTK将控件上的2D位置转换为场景中的3D位置的方法的副产品,反之亦然

因此,在所有这些之后,一个非常普通且可以避免的错误起源于renderer.DisplayToWorld()和WorldToDisplay()方法。
这可能不是每个人的问题,但我希望我已经节省了某人一周的时间来摆弄VTK。

我尝试了更新和渲染。但只有重置相机才能工作。但是重置会改变透视图。我尝试了更新,渲染两者。但只有重置相机才能工作。但重新设置将改变这种观点。