我想知道是否可以通过对glutSolidCube(GLDouble size)
应用某种转换来构建3D方形截头体。我猜测涉及某种剪切矩阵,从我所知道的 - 它不是内置的转换。
请注意,我根本不关心观看视锥体(正如您可能想象的那样,它会使任何谷歌搜索出现偏差)。我只想在我的场景中使用3D方形截头体。任何关于如何从立方体生产一个的想法都将不胜感激!
答案 0 :(得分:2)
它不是剪切矩阵,它是透视投影的投影矩阵。您将单位立方体顶点的坐标乘以反投影矩阵,以获得平截头体顶点的坐标。要在世界空间中获得视锥体的坐标,您还需要通过逆相机矩阵(视图矩阵)来多个顶点。
在此处查看详细公式:http://www.songho.ca/opengl/gl_projectionmatrix.html
要变形立方体,最好使用所需的顶点创建VBO,或者只是渲染一些变形的四边形,如果你想使用固定功能管道进行一些quick'n'dirty实现。
P.S。
有一个代码提取来计算平截头体的角落:http://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/
答案 1 :(得分:0)
是的,在给定非常投影矩阵的情况下,可以将立方体转换为平截头体。首先定义焦距d,其是平截头体边缘会聚的点。然后用这个矩阵乘以你体积的所有角落:
P = [ 1 0 0 0
0 1 0 0
0 1 1/d 0
0 0 1 0 ]