首先要明白,顶点发线存在的原因:确定灯光照射到物体表面的角度。所以一提到顶点发线,肯定要进行与灯光相关的运算了。
下面是顶点发线的计算方式
假如 A、B、C三个顶点构成一个三角形,它们对应的顶点发线分别是 n_A、n_B、n_C。
从三角形中计算出两个向量(注意是有方向的):
u = B - A v = C- A
那么对应的面发线(向量的叉乘运算) n = u x v
如果直接用面发线表示顶点发线的话,那么 n_A = n_B = n_C = n
但是对于一些曲面物体,直接用面发线表示顶点发线,显然是不合适的(不够平滑),为了达到更好的效果,我们可以用共享该顶点的所有三角形的面发线的平均值来表示该顶点的顶点发线(有点绕,哈哈哈)。
我们知道,3D建模的时候,物体一般都是由三角形构成的,所以,正常情况一个顶点是被3个三角形共享的。
假如共享某个顶点的三个三角形的面发线分别为 n1, n2,n3,
那么按照法则,该顶点的顶点发线(n)可以表示为 n = (n1 + n2 + n3) / 3
原文:https://www.cnblogs.com/luguoshuai/p/10464851.html