前段时间弄3D的时候没太闹明白投影矩阵是怎么解出视锥体的,如何最快判断一个顶点是否处于视锥体之内(也就是这个顶点是否可见)?

直到看了一篇文章《Fast Extraction of Viewing Frustum Planes from the World-View-Projection Matrix》才恍然大悟。

道理其实很简单,想象一下视锥体的8个顶点经过投影之后会落在哪里?

没错,就是视口的四角,视锥体的LEFT,RIGHT,TOP,BOTTOM四个超平面投影之后实际就是视口的上下左右四条边界。

那么要判断一个顶点是否可见,只要求出投影之后的顶点是否落在这个范围之内就可以了。

有启发意义的原文如下:

After this transformation, the vertex v ‘ is in homogeneous clipping space. In this space the viewing frustum actually

is an axis-aligned box whose size is API-specific. If vertex v ‘ is inside this box, then the untransformed vertex v is

inside the ‘untransformed’ viewing frustum.

原文链接

中译文链接

Advertisements