光照效果中,提到了一个概念:法向量。实在让人难以理解啊。
一、从概念上来说,法向量是用来决定光的反射效果的。
光的反射,理论上来说,取决于2点:物体的材质,顶点的法向量。
物体的材质比较好理解,当光照射的时候,决定反射哪些光,吸收哪些光,比如一个红色的物体,必然反射R,而吸收G,B。
那么,法向量来说,就是决定这个物体的各个顶点所接收到的光照。(估计还要决定反射的方向)
二、法向量的定义:垂直于某个表面的方向向量。
对于opengl es来说,稍微简单一些,由于组成图形的基础是三角形,三角形没有曲面,只有平面,所以一个三角形的三个顶点理论上来说是可以共享一条法线的。
三、如何确定一个法线:从各处收集的资料来看,似乎法线的计算都不一样,有各种方法都可以确定。给人一种法线可以随意指定,错了也能显示东西出来的感觉。
但是从定义来看,法线理论上是唯一固定的,面确定了,法线也就定了。
四、法线的长度必须标准化,也就是长度只能为1.
需要将x,y,z除以法线的总长度.
无法理解的是在绘制圆柱的时候,为什么如下设置:
float a1=0;float b1=y1;float c1=z1;
float ll=getVectorLength(a1,b1,c1);//法线长度
a1=a1/ll;b1=b1/ll;c1=c1/ll。
这里的a1为什么强制为0了呢?