[3D基础]3D游戏中的各种旋转与基变换(2)

终于开始着手写[3D基础]系列的第二篇文章了,这篇文章所将的内容相信对于很多人而言都是相当重要的,因为涉及到相机坐标系变换,BILLBOARD实现原理,凹凸映射切空间变换等课题。按以前的习惯,重要内容用红色字体标出,对于最基本的线性代数理论不作证明,使用DX左手坐标系。

第一个问题:UVN相机坐标变换形式与原理。

我们知道3D世界空间到相机空间坐标的转换是通过UVN矩阵来实现,运算格式如下:
                 | Ux, Vx, Nx |
| x, y, z | * | Uy, Vy, Ny |
                 | Uz, Vz, Nz |
U V N 分别为相机的右、上、前向量,且已规格化。现在我们来理解下这个向量矩阵乘法的几何意义。对运算进行分解如下:
X0 = | x, y, z | Dot | Ux, Uy, Uz |
Y0 = | x, y, z | Dot | Vx, Vy, Vz |
Z0 = | x, y, z | Dot | Nx, Ny, Nz |
是不是有点眉目了,几何上,一个向量V1与另外一个规格化向量V2的点积,结果是V1在V2向量上的带符号投影长度。因此,这里X0、Y0、Z0便是向量| x,y,z |在U、V、N 向量上的投影长度,在相机坐标空间中,相机的右向量U将被用作X坐标轴,V将被用作Y坐标轴,N被用作Z坐标轴,所以变换后新的向量为| X0, Y0, Z0 |。

一个很重要的矩阵性质:正交矩阵的逆矩阵等于其转置矩阵。

第二个问题:相机平面对齐公告板的旋转。

其实公告板实现分两步,第一步先将公告板旋转到与相机平面平行,第二步将旋转后的定点平移到指定的空间位置。
我们只说第一步的原理,所谓与视平面对齐,其实就是一个矩形经旋转后位于XY平面上,已知旋转后的结果,求旋转前四边形的的坐标,用旋转后的结果乘UVN矩阵逆矩阵就OK了。如:
                 | Ux, Uy, Uz |
| 2, 0, 0 | * | Vx, Vy, Vz |                          〔U V N矩阵为正交矩阵〕
                 | Nx, Ny, Nz |

第三个问题:凹凸映射切空间的变换。
原理与问题1和2一模一样,需要切空间,利用切空间向量组成的矩阵将光线向量转换到切空间中,然后计算光照,OVER!

原文地址:https://www.cnblogs.com/effulgent/p/1072459.html