一、坐标系
U3D中有四种坐标系:模型坐标系,世界坐标系,摄像机视坐标系,屏幕投影坐标系。并采用左手坐标系。首先将模型坐标系通过计算变换(即矩阵运算)为世界坐标系,再变换成摄像机坐标系,最后计算出屏幕投影坐标系,生成game窗口的图像。
3D max采用的是右手坐标系,将3Dmax模型导入U3D之后,会绕X轴旋转了-90°。
二、投影
相机投影有两种方式,分为:正交投影与透视投影。正交投影,与原来的模型等同,没有纵深,不会随着你的视角的距离变大而缩小。透视投影则有纵深,会给人一种在2D平面上上看出3D的效果,即近大远小的变化,原理就是小孔成像。
三、向量运算
基于向量V1(v1,v2),V2(v3,v4),数域内n:
向量数乘:
V3 = n*V1 作用:向量规范化,即量除以自身的模长.规范化之后,V1规范化之后,V1*1.0/sqrt(v1*v1,v2*v2)
向量点积:
Dot(V1,V2) = V1*V2 = v1*v3 + v2*v4 作用:点积的结果是一个标量值。 几何意义:Dot(V1,V2) = ||V1||*||V2||*COS(a),则COS(a) = Dot(V1,V2)/( ||V1||*||V2||).
若cos(a) < 0时,V1与V2的夹角 大于90度;若cos(a)= 0时,V1与V2的夹角等于90度,即正交,若1>cos(a) > 0时,V1与V2的夹角 小于于90度。若cos(a) =1时,V1与V2的夹角 等于0度。
当将V1,V2单位化之后,即将V1,V2的模长为1,此时cos(a) = Dot ( V1 , V2 ),所以二者的夹角 a = arc(Dot ( V1 , V2 )) .
向量投影:
向量V2 在V1上的投影为||V2||.cos(a) = Dot(V1,V2)/ ||V1||.
投影的目的,是将向量分解为,平行和垂直于其他向量的两个分量.
向量叉积:
(1)两个向量叉积,V3 =Cross(V1,V2) ,则V3垂直于V1,V2.也就是,即V3是V1,V2所在平面的法向量。
叉积的顺序会影响法向量的方向。如:V1 = (1,0,0),V2(0,1,0)。Cross(V1,V2) = (0,0,1),法向量为正方向,若Cross(V2,V1) = (0,0,-1),则法向量为负方向。
当法向量为正方向时,则渲染器显示V1,V2所在的平面。当法向量为负方向时,则渲染器V1,V2所在平面不显示。法向量为负方向时,这说明该模型面背对着窗口,因此不显示。
(2)||Cross(V1,V2)|| = ||V1||*||V2||.sin(a),得到的数值是以向量V1,向量V2为两边的平行于四边形的面积.
(3)如果向量V1,V2平行或任意一个为0,则 Cross(V1,V2) = 零向量。即它平行于任意其它的向量
参考连接:http://blog.csdn.net/leaf6094189/article/details/18554549