文件名称:创建灵活的摄像机类-matplotlib官方参考文档
文件大小:5.51MB
文件格式:PDF
更新时间:2024-06-23 10:58:31
DirectX 9 3D 翁云兵
第十二章 创建灵活的摄像机类 ((( ( BuildingBuildingBuilding Building aaa a FlexibleFlexibleFlexible Flexible CameraCameraCamera Camera ClassClassClass Class ))) ) 迄今,我们已经使用过D3DXMatrixLookAtLH函数来计算视图空间变换矩阵。这个函数对于在固 定位置布置和对准摄像机是非常好用的,不过它的用户接口对于要响应用户输入来实现摄像机移动就 不那么好用了。这就激发我们用我们自己的方法来解决。在这一章我们展示了怎样实现一个Camera 类,它使我们能够比D3DXMatrixLookAtLH函数更好地操作摄像机,并且可以用来作为飞行模拟摄像 机和第一人称视角摄像机。 目标目标目标 目标 学习怎样实现一个灵活的摄像机类,它可以用作飞行模拟摄像机和第一人称视角摄像机。 12.112.112.1 12.1 摄像机设计摄像机设计摄像机设计 摄像机设计 我们定义一个相对于世界坐标系的位置和摄像机的方向,这里使用四个摄像机向量:right vector , up vector, look vector 以及 position vector, 如图12.1所示。这些向量用来为摄像机定义一个坐标系来描 述在世界坐标中的对应关系。因为 right ,up 和 look 向量定义了摄像机在世界中的方向,我们有时 把它们三个向量一起称为方向向量(orientation vectors)。方向向量必须被标准化。假如彼此互相垂 直且都是单位长度,那么我们就称它们是正交标准化向量。我们做这些限制是因为等一会儿我们要将 方向向量插入到一个行矩阵中。因为行向量是正交标准化的,所以该矩阵也就是直交矩阵。回忆一下 , 直交矩阵有一个特性就是它的逆矩阵等于它的转置矩阵。这在等一下的12.2.1.2节中是很有用的。 图 12.1 有了这四个向量来描述摄像机,我们的摄像机就能够按照下面六种方式变化了: