我想知道是否可以通过对glutSolidCube(GLDouble size)进行某种形式的转换来构建3D方形视锥。我猜想其中涉及某种剪切矩阵,据我所知,它不是一个内置的转换。

请注意,我根本不关心查看视锥(您可能会想象,它使所有Google搜索都出现了偏差)。我只是想在场景中添加一个3D方形的平截头体。关于如何从一个立方体生产一个的任何想法将不胜感激!

最佳答案

它不是剪切矩阵,而是用于透视投影的投影矩阵。将单位立方体顶点的坐标乘以逆投影矩阵,即可得出平截头体顶点的坐标。要获得世界空间中的平截头体坐标,您还需要将顶点乘以逆相机矩阵( View 矩阵)。

在这里查看详细的公式:http://www.songho.ca/opengl/gl_projectionmatrix.html

要使立方体变形,最好是使用所需的顶点创建VBO,或者只渲染多个变形的四边形,如果要使用固定功能管线进行一些快速的处理。

附言

有一段代码可以计算平截头体的角:http://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/

关于c++ - 通过对多维数据集应用变换来创建3D方形视锥?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12762809/

10-16 04:24