hee*_*een 5 opengl math 3d reverseprojection picking
我在用着
worldview_inverse * (projection_inverse * vector)
Run Code Online (Sandbox Code Playgroud)
将屏幕空间坐标转换为世界空间坐标。我假设
(x,y,1,1)
Run Code Online (Sandbox Code Playgroud)
会变换为远平面上的一个点,而
(x,y,-1,1)
Run Code Online (Sandbox Code Playgroud)
变换为近平面上的点,并连接线我可以查询视锥体中与线相交的所有对象。转换后,我将结果点除以它们各自的 .w 分量。这适用于远平面,但近平面上的点以某种方式转换为世界空间原点。
我认为这与我输入逆投影的 1 的 w 分量有关,因为通常在投影之前它是 1,而不是之后,而且我正在进行逆投影。我究竟做错了什么?
我知道这只是一种解决方法,但您可以仅使用远点和观看位置来推断近平面点。
near_point = view_position
+ (far_point - view_position) * (near_distance / far_distance)
Run Code Online (Sandbox Code Playgroud)
至于你真正的问题。首先,别忘了除以 W!另外,根据您的投影矩阵,您是否尝试过 (x,y,0,1) 而不是 z=-1。
near_point = worldview_inverse * (projection_inverse * vector)
near_point /= near_point.W
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7158 次 |
| 最近记录: |