opengl - 计算四边形的顶点法线

标签 opengl graphics normals

可以说我有以下数组:

float QuadVertices[4 * 2];
float QuadNormals[4 * 2];

我这样填写:
//Fill vertices for a 2d quad
Renderer->FillVertices(QuadVertices,GL_QUADS,x,y,width,height);

现在一切都好了,我可以渲染一个四边形,纹理它,拉伸(stretch)它等等。

但现在我想计算四边形的法线:
for (int i = 0; i < 8;i++)
{
    QuadNormals[i] = ??
}

但是我无法弄清楚我到底应该如何计算一个简单的二维顶点数组的法线,该数组包含 GL_QUADS 的 4 个顶点或 GL_TRIANGLES 的 6 个顶点......

最佳答案

如果你有这个 -

   v1        v2
    +---------+
    |         | 
    |         |
    +---------+
    v3        v4

其中 v1..v4 是四边形的顶点,然后要计算 v1 处的法线,您应该计算沿它所在的两条边的向量,然后计算这些顶点的叉积。

所以,v1 的法线是
CrossProduct((v2-v1), (v3-v1))

您可以对每个顶点重复此操作,但如果四边形是“平坦的”,它们都将相同

如果您有其他四边形连接到这个四边形,您可能需要计算每个四边形的法线,然后将所有连接的四边形的平均值指定为该顶点的法线

关于opengl - 计算四边形的顶点法线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806630/

相关文章:

c++ - gluLookAt() 没有按预期工作

linux - 将在 Linux 上运行的最短 OpenGL 几何着色器示例?

OpenGL : Suggestion on handling collision detection and vertex data?

java - 使用 Java 绘制由圆圈组成的分形图案

javascript - 在 Vanilla wegl 中向变换立方体添加定向光

c++ - 使用 PCL 进行点云下采样和法线估计

c++ - OGLFT 在使用 GLStipple 时绘制文本

c - OpenGL 在 OS X 上包含指令

glsl - 在着色器中旋转法线

Java - 在菜单中选择形状并在 JPanel 中绘制