2

我想知道是否可以通过对glutSolidCube(GLDouble size). 我猜测涉及某种剪切矩阵,据我所知,这不是内置转换。

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

方形平截头体

4

2 回答 2

2

它不是剪切矩阵,它是透视投影的投影矩阵。您将单位立方体顶点的坐标乘以逆投影矩阵以获得平截头体顶点的坐标。要在世界空间中获得截锥体的坐标,您还需要通过逆相机矩阵(视图矩阵)对顶点进行多重处理。

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

要使立方体变形,最好创建具有​​所需顶点的 VBO,或者只渲染一些变形的四边形,如果您想使用固定功能管道进行一些快速的'n'dirty 实现。

附言

有一个代码提取来计算平截头体的角:http ://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/

于 2012-10-06T19:07:18.413 回答
0

是的,给定一个非常投影矩阵,可以将您的立方体转换为平截头体。首先定义一个焦距 d,它是平截头体边缘会聚的点。然后将体积的所有角乘以这个矩阵:

P = [ 1   0   0   0
      0   1   0   0
      0   1  1/d  0
      0   0   1   0 ]
于 2015-12-17T11:49:54.003 回答