Math Opengl垂直于向量

Math Opengl垂直于向量,math,geometry,Math,Geometry,我有很多三角形的坐标如下。我想得到每个顶点的法线,这样我就可以用它来计算光线 我有一个立方体法线的代码,并且理解这一点,但是我真的不知道如何将它们转换(计算)为法线。我只是想知道从这里往哪里走 //TRIANGLE 1 0.0f, -0.774f, 0.49f, //6 0.0f, -1.0f, 0.51f, //7 0.156f, -0.982f, 0.47f, //8 可以使用来计算法线。取两个向量,叉积得到法向量 这两个向量可以通过获取三角形

我有很多三角形的坐标如下。我想得到每个顶点的法线,这样我就可以用它来计算光线

我有一个立方体法线的代码,并且理解这一点,但是我真的不知道如何将它们转换(计算)为法线。我只是想知道从这里往哪里走

//TRIANGLE 1
    0.0f, -0.774f, 0.49f,     //6
    0.0f, -1.0f, 0.51f,     //7
   0.156f, -0.982f, 0.47f,     //8

可以使用来计算法线。取两个向量,叉积得到法向量

这两个向量可以通过获取三角形的坐标,然后从其他两个顶点减去一个顶点坐标来获得

即:

vec0=顶点2-顶点0

vec1=vert1-vert0

应相互减去哪些顶点取决于法线应指向的方向


请参阅维基百科关于如何计算叉积的文章。在本节底部,您将看到一个矩阵,它显示了如何计算法向量的每个分量。

此方法的可能重复项是否仍适用于三角形之间共享的顶点?我假设您在这里指的是计算平滑法向量。你做两件事中的一件。或者分别计算每个三角形的法线,并将所有顶点分别存储在几何体缓冲区中。如果模型具有共享顶点,这将强制您始终为每个三角形在相同位置创建单独的顶点。另一种方法是,首先分别计算每个三角形的法线,然后为每个顶点确定顶点所属的三角形,(续)并将所有这些向量相加。对结果进行归一化将得到平滑的法向量。在这种情况下,您应该能够重用共享顶点,因为现在所有这些顶点都具有相同的法向量。但请注意:这也将平滑锐利边缘上的法线,这在某些模型上可能看起来非常糟糕。