我使用

worldview_inverse * (projection_inverse * vector)

要变换的屏幕空间坐标转换成世界空间坐标。 我假定

(x,y,1,1)

将改变到一个点上的远平面,而

(x,y,-1,1)

转变为一个点上的近平面,和连接线I可以查询在该相交线视锥的所有对象。 改造后,我通过他们各自的.W成分划分产生点。 这适用于远飞机,但近平面点莫名其妙地被转化为世界空间原点。

我认为这与我送入逆投影的1瓦特部件做的,因为它通常是1投影之前,而不是之后,和我做反向投影。我在做什么错了?

有帮助吗?

解决方案

我知道这仅仅是一个解决办法,但你可以只用远点和观看位置推断近平面点。

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top