[3D基础]3D游戏中的各种旋转与基变换(2)
2008-12-08 16:52:16 来源:WEB开发网终于开始着手写[3D基础]系列的第二篇文章了,这篇文章所将的内容相信对于很多人而言都是相当重要的,因为涉及到相机坐标系变换,BILLBOARD实现原理,凹凸映射切空间变换等课题。按以前的习惯,重要内容用红色字体标出,对于最基本的线性代数理论不作证明,使用DX左手坐标系。
第一个问题:UVN相机坐标变换形式与原理。
我们知道3D世界空间到相机空间坐标的转换是通过UVN矩阵来实现,运算格式如下:
| Ux, Vx, Nx |
U V N 分别为相机的右、上、前向量,且已规格化。现在我们来理解下这个向量矩阵乘法的几何意义。对运算进行分解如下:
| x, y, z | * | Uy, Vy, Ny |
| Uz, Vz, Nz |
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!
- ››各种SmartPhone上的跨平台开源框架的总结
- ››基础推广如何完成网站的优化升级(一)
- ››游戏定位成牵引Android发展的火车头
- ››游戏场景烘焙贴图制作
- ››各种进程保护方法的比较
- ››游戏植物大战僵尸 iPhone 版9天销售额超100万美元...
- ››游戏开发包 iPhone cocos2d 初体验
- ››各种数据库连接java的驱动名和语句
- ››游戏三维怪物施法特效教程
- ››游戏人生Silverlight(2) - 趣味钢琴[Silverlight ...
- ››游戏人生Silverlight(3) - 打苍蝇[Silverlight 2....
- ››游戏人生Silverlight(4) - 连连看[Silverlight 2....
更多精彩
赞助商链接