openGL中的法向量问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openGL中的法向量问题相关的知识,希望对你有一定的参考价值。

法向量是不是就是只为了光照的效果? 一个正文体,它的点法向量是怎样计算呢?

参考技术A (1)
可以自己假定。
(2)
可以用叉乘积计算,注意方向--右手螺旋。
空间平面的法线向量,可以用平面上的任两条直线的叉乘积计算。对于一个mesh角点,用两条过角点的mesh边线算出,如果这个角点有好几个mesh们,可以用它们的平均,或自己假定法线向量。
(3)
loonie自己的已知三点,计算法线子程序:
/*
-------------------------------
*
v1[],v2[],v3[]
*
-------------------------------*/
void
norm(GLfloat
v1[3],
GLfloat
v2[3],
GLfloat
v3[3],
GLfloat
*nor
)

GLfloat
vc1[3],vc2[3];
GLfloat
a,b,c;
GLdouble
r;
vc1[0]=
v2[0]
-
v1[0];
vc1[1]=
v2[1]
-
v1[1];
vc1[2]=
v2[2]
-
v1[2];
vc2[0]=
v3[0]
-
v1[0];
vc2[1]=
v3[1]
-
v1[1];
vc2[2]=
v3[2]
-
v1[2];
a
=
vc1[1]
*
vc2[2]
-
vc2[1]
*
vc1[2];
b
=
vc2[0]
*
vc1[2]
-
vc1[0]
*
vc2[2];
c
=
vc1[0]
*
vc2[1]
-
vc2[0]
*
vc1[1];
r
=
sqrt(
a
*
a
+
b*
b
+
c
*
c);
nor[0]
=
a
/
r;
nor[1]
=
b
/
r;
nor[2]
=
c
/
r;

以上是关于openGL中的法向量问题的主要内容,如果未能解决你的问题,请参考以下文章

旋转平面使其具有一定的法向量

离散点云的法向量如何计算?

Threejs 开发3D地图实践总结

Threejs 开发3D地图实践总结

Threejs 开发 3D 地图实践总结

Gbuffer的法向量的压缩