gpt4 book ai didi

3d - 将 2D 屏幕坐标取消投影到 3D 坐标

转载 作者:行者123 更新时间:2023-12-02 23:42:20 25 4
gpt4 key购买 nike

我想知道如何将 2D 屏幕坐标映射到 3D 世界(特别是 xz 平面),因为我知道:

-相机位置

-屏幕平面方程

-xz 平面的方程

我想做的就是当我将鼠标悬停在 xz 平面上的土地上时,它会亮起。

非常感谢任何帮助!

谢谢!

最佳答案

如果您的世界发生旋转和移动,使得相机位于 x=y=z=0(世界坐标),则世界 z 坐标将远离查看器(进入屏幕),并且投影平面与屏幕平行且位于 z=d(世界坐标;d > 0),然后确定屏幕坐标从世界坐标这样:

xs = d * xw/zw
ys = d * yw/zw

这非常直观:物体距观察者/投影平面越远,其 zw 越大,xsys 越小,靠近 xw=yw=0zw=+infinity 的消失点,投影到投影平面的中心 xs=ys=0.

通过重新排列上述每个内容,您将得到 xwzw:

xw = xs * zw/d
zw = d * yw/ys

现在,如果您的物体(土地)是位于某个 yw 的平面,那么,yw 是已知的,因此您可以替换它并得到zw:

zw = d * yw/ys

找到 zw 后,您现在可以再次通过替换来获得 xw:

xw = xs * zw/d = xs * (d * yw/ys)/d = xs * yw/ys

因此,考虑到鼠标指针的开始坐标和屏幕坐标 xsys 中描述的设置(0,0 是屏幕/窗口中心),相机和投影平面 d 之间的距离以及陆地平面的 yw 您将获得鼠标指向的陆地点的位置:

xw = xs * yw/ys
zw = d * yw/ys

当然,这些xwzw位于旋转和移动的世界坐标中,如果您想要土地“ map ”中的原始绝对坐标,您可以取消旋转和取消移动它们。

这就是要点。

关于3d - 将 2D 屏幕坐标取消投影到 3D 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971701/

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