gpt4 book ai didi

c++ - 如何通过两次调用 gluUnproject(不使用 gluUnProject)从场景坐标中获取深度值

转载 作者:行者123 更新时间:2023-11-30 03:34:24 25 4
gpt4 key购买 nike

this线。第二个答案表明:

Solution 2 call the gluUnproject two time, one with clipZ = -1 and another one with clipZ = 1, you get two point (in world space). With these two point you get a ray and you can use some raycast algorithm to compute the mouse coordinate.

但不幸的是,在建议之后并没有在那里解释。还有这个thread这说明可以通过两次调用 gluUnproject 来获得方向。获得方向对我来说很有意义,但我的问题是如何通过两次调用 gluUnProject 来获取深度信息?

最佳答案

您不会获得深度信息。你只有一个 X 和一个 Y,但要取消投影,你需要一个 Z。没有魔法可以给它。而是尝试推断它。

撤消视口(viewport)变换后,您在 NDC 中有 X、Y。什么Z?使用 z1= 1 和 X、Y。取消投影。现在你在世界坐标中有一个点 P1。重复 Unproject,但这次使用 z2= -1。你得到P2。可能您必须处理第四个“w”坐标。请记住,您可以在除以 w 后提取 3D 坐标。在齐次坐标中,w 是比例因子。

有了 P1 和 P2,也许你可以自己找到 P1P2 线和你的模型之间的交点。

z= -1, 1是NDC中最分离的坐标,所以计算结果更准确。

关于c++ - 如何通过两次调用 gluUnproject(不使用 gluUnProject)从场景坐标中获取深度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033942/

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