【问题标题】:Calculating the vertex normals of a quad计算四边形的顶点法线
【发布时间】:2012-04-06 02:10:21
【问题描述】:

假设我有以下数组:

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

我是这样填写的:

//Fill vertices for a 2d quad
Renderer->FillVertices(QuadVertices,GL_QUADS,x,y,width,height);

现在一切正常,我可以渲染一个四边形、纹理它、拉伸它等等。

但现在我想计算四边形的法线:

for (int i = 0; i < 8;i++)
{
    QuadNormals[i] = ??
}

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

【问题讨论】:

    标签: opengl graphics normals


    【解决方案1】:

    如果你有这个 -

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

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

    所以,v1 的法线是

    CrossProduct((v2-v1), (v3-v1))
    

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

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

    【讨论】:

    • 呸,只是glEnable(GL_NORMALIZE) :)
    • 谢谢!老实说,我期待一些非常困难的事情:-D
    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2011-12-16
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2019-04-22
    相关资源
    最近更新 更多