我有一个立方体定义为:
float vertices[] = {
//Vertices according to faces
-1.0f, -1.0f, 1.0f, //Vertex 0
1.0f, -1.0f, 1.0f, //v1
-1.0f, 1.0f, 1.0f, //v2
1.0f, 1.0f, 1.0f, //v3
1.0f, -1.0f, 1.0f, //...
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
};
Run Code Online (Sandbox Code Playgroud)
这个立方体的法线是什么?我需要法线的实际值.
我们需要6或12个法线吗?由于OpenGL ES只使用三角形,这意味着我们需要12个法线,但我可能错了.
rya*_*anm 15
每个顶点指定法线,并且因为共享每个顶点的三个面的法线是正交的,所以通过指定仅具有8个顶点的立方体并对三个面法线求平均以获得顶点法线,您将获得一些非常难看的结果.它将被遮蔽为一个球体,但形状像一个立方体.
您将需要指定24个顶点,因此绘制多维数据集的每个面而不与任何其他顶点共享顶点.
至于价值观,'很容易死.如果我们假设x向右增加,y随着我们的上升而增加,z随着我们向前移动而增加,右边的法线是(1,0,0),左边是(-1,0, 0),顶边是(0,1,0)等
总结一下:不要绘制一个立方体,绘制恰好具有重合顶点的6个四边形
表面的法线只是方向向量。由于共面的两个曲面的法线相同,因此只需要6个曲面法线。然而,通常情况下,它是法线预计要定义的情况下,每个顶点,在这种情况下就需要36(一个立方体的每个面每个三角形的每个顶点)。
要计算法线,只需使用以下计算:http : //www.opengl.org/wiki/Calculating_a_Surface_Normal
| 归档时间: |
|
| 查看次数: |
12983 次 |
| 最近记录: |