擅长:python、mysql、java
<p/><p>我发现,建立视锥体的世界空间模型并检查与它的bbox碰撞是错误的。</p>一个更简单的方法是反其道而行之,将给定bbox的每个顶点转换为屏幕空间,如果bbox的任何顶点在屏幕边界内,则将该bbox视为可见。我通过乘以摄像机矩阵得到屏幕空间位置,然后根据摄像机的视场计算透视。
<p>代码如下:</p>
<pre><code>vertexMatrix = matrix([vertex.x,vertex.y,vertex.z,1])
productMatrix = (vertexMatrix * camMatrix)
pVectSS = vector(prodMatrix[0][0],prodMatrix[0][1],prodMatrix[0][2])
pointX = ((pVectSS.x/(-pVectSS.z))/tan(radians(hFOV/2)))/2.0+.5
pointY = ((pVectSS.y/(-pVectSS.z))/tan(radians(vFOV/2)))/2.0+.5
</code></pre>
<p>密钥:</p>
^{pr2}$