我正在使用
worldview_inverse * (projection_inverse * vector)
将屏幕空间坐标转换为世界空间坐标。 我以为
(x,y,1,1)
会转换到远平面上的某个点,而
(x,y,-1,1)
转换到近平面上的点,并且连接线我可以查询与该线相交的视锥体中的所有对象。 在转换之后,我将得到的点除以它们各自的.w分量。 这适用于远平面,但近平面上的点以某种方式转变为世界空间原点。
我认为这与我投入逆投影的w分量有关,因为通常在投影之前是1,而不是之后,我正在进行反投影。我做错了什么?
答案 0 :(得分: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