2012-10-06 70 views
2

我想知道是否可以通过对glutSolidCube(GLDouble size)应用某种转换来构建3D平方体。我猜测涉及到某种剪切矩阵,从我所知道的来看,它不是一种内置的转换。通过向立方体应用转换创建3D平方体?

请注意,我根本不在乎收看视锥体(正如您可能想象的那样,会让所有Google搜索产生偏斜)。我只想在我的场景中有一个三维正方形的平截头体。任何想法如何从立方体产生一个将不胜感激!

A Square Frustum

+1

我的一位朋友告诉我,还有一个剪切变换,将立方体变成一个平截体。他谈论剪切矩阵内的负系数。 但现在我找不到这个矩阵。 Colud有人帮助我们? – Gabrer

回答

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/

+0

他明确要求不要进行OpenGL转换。我认为一个简单的转换是为了将立方体转换成梯形。 – linello

0

是有可能你的立方体变成给予了非常投影矩阵截锥体。首先定义一个焦点距离d,该距离是平截头体边缘会聚的点。然后用这个矩阵乘以你的音量的所有角落:

P = [ 1 0 0 0 
     0 1 0 0 
     0 1 1/d 0 
     0 0 1 0 ]