4

我正在使用

worldview_inverse * (projection_inverse * vector)

将屏幕空间坐标转换为世界空间坐标。我以为

(x,y,1,1)

将转换为远平面上的一个点,而

(x,y,-1,1)

转换为近平面上的一个点,并连接线我可以查询与线相交的视锥体中的所有对象。转换后,我将结果点除以它们各自的 .w 分量。这适用于远平面,但近平面上的点不知何故被转换为世界空间原点。

我认为这与我输入逆投影的 1 的 w 分量有关,因为通常它在投影之前是 1,而不是之后,我正在做逆投影。我究竟做错了什么?

4

1 回答 1

4

我知道这只是一种解决方法,但是您可以仅使用远点和观察位置来推断近平面点。

near_point = view_position
           + (far_point - view_position) * (near_distance / far_distance)

至于你真正的问题。首先,别忘了除以 W!此外,根据您的投影矩阵,您是否尝试过 (x,y,0,1) 而不是 z=-1。

near_point = worldview_inverse * (projection_inverse * vector)
near_point /= near_point.W
于 2009-02-26T22:22:22.433 回答