gpt4 book ai didi

c++ - VTKActor 在渲染后不可见但在相机->resetview() 上可见

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:22 26 4
gpt4 key购买 nike

我正在做一个 qt-vtk 项目。我们有画线功能。在两个鼠标单击位置之间创建直线。但是一旦创建了 Actor ,它就不可见了。我在添加 Actor 后调用渲染函数。但它没有用。但是如果我做 camera->resetview() 线条变得可见,但整个视角都会改变。我哪里做错了?

谢谢维克

最佳答案

这可能与您无关,但我遇到了完全相同的问题(在 ActiViz [托管 VTK] 中)并为此争论了一个星期,所以我希望这对那里的人有所帮助。原来是我们想在 Canvas 上画的线条位置有问题;它们离相机太远(在 Z 轴上)而看不见。

对于我们来说,我们试图在用户点击的查看区域上画一个十字。数据点在那里, Actor 和诸如此类的东西也在那里,但只有当您调用 resetCamera() 并因此更改相机的配置时,它们才会在场景中可见。最初,我将我们必须添加到 cirvumvent 的自定义交互器归咎于默认交互器吞噬 MouseUp 事件(预期行为)。调查显示这似乎不太可能。

在此之后,我怀疑重置调用可能正在调用某种我不知道的更新方法,因此我将责任推给了相机。我调用了 resetCamera() 然后将相机值恢复为最初的值。当这一步成功后,结果镜头拉远时十字会出现,镜头一缩又会消失,这时我才意识到这与场景有关。

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

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

关于c++ - VTKActor 在渲染后不可见但在相机->resetview() 上可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18097521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com