清华大学DirectX游戏编程第13章(全20章).ppt

清华大学DirectX游戏编程第13章(全20章).ppt

ID:51587989

大小:701.00 KB

页数:14页

时间:2020-03-24

清华大学DirectX游戏编程第13章(全20章).ppt_第1页
清华大学DirectX游戏编程第13章(全20章).ppt_第2页
清华大学DirectX游戏编程第13章(全20章).ppt_第3页
清华大学DirectX游戏编程第13章(全20章).ppt_第4页
清华大学DirectX游戏编程第13章(全20章).ppt_第5页
资源描述:

《清华大学DirectX游戏编程第13章(全20章).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第13章构建一个灵活的摄像机类在本章将展示如何实现一个摄像机类,相对于直接用D3DXMatrixLookAtLH函数来说,它能更好地对摄像机进行控制,这个摄像机类适用于飞行模拟游戏及第一人称视角的游戏。主要目标:学习构建一个灵活的摄像机类,能用于飞行模拟游戏及第一人称视角的游戏。213.1设计摄像机如图13.1中所示,我们用4个摄像机向量:right、up、look和position来定义摄像机在世界坐标系中的位置和方位。通过描述摄像机的这4个向量,摄像机能完成下面6个操作:绕right向量旋转(俯仰,pitch)。绕up向量

2、旋转(偏转,yaw)。绕look向量旋转(翻滚,roll)。沿着right向量左右平移。沿着up向量上下移动。沿着look向量前后移动。313.1设计摄像机下面Camera类的声明反映了上面所说的摄像机的数据和想要实现的方法:参见教材P196目前Camera类能实现两种摄像机模式:LANDOBJECT模式和AIRCRAFT模式。AIRCRAFT模式允许在空间中自由地移动摄像机,也就是说能进行6个方向的移动;然而,在一些游戏中,比如第一人称视角射击游戏,玩家控制的主角是无法飞翔的,所以必须限制特定的轴上的移动,LANDOBJEC

3、T模式就可以实现这种限制,在下一节中就能看到具体的实现细节。413.2摄像机类的实现细节13.2.1计算视图矩阵在图13.2中,从世界坐标系变换到视图坐标系。摄像机的位置位于世界坐标系的原点,并望向Z轴的负方向。注意世界空间中的所有物体的位置也会随着摄像机的变化而变化,这样才能让摄像机对世界的观察与转换前保持一致。513.2.1计算视图矩阵我们把计算这个所需矩阵的工作分两步进行:1.第一步:平移2.第二步:旋转3.以上两个步骤的综合Camera::getViewMatrix方法就是用于计算这个矩阵的,其代码如下:参见教材P19

4、9每次调用这个函数的时候,就需要重新根据look向量计算up和right向量以确保它们的正交性。通过look向量与right向量的叉乘来计算出新的正交向量up,然后再通过up向量和look向量的叉乘来计算出新的正交向量right。613.2.2绕任意轴的旋转摄像机类必须要实现绕任意轴的旋转,如图13.3所示。D3DX库提供的下列函数可以完成这项功能:D3DXMATRIX*D3DXMatrixRotationAxis(D3DXMATRIX*pOut,//返回旋转矩阵CONSTD3DXVECTOR3*pV,//旋转轴FLOATAn

5、gle//旋转角度,以弧度为单位);713.2.3俯仰、偏转和翻滚图13.4~13.6,分别描述了摄像机俯仰、偏转和翻滚的情况。813.2.3俯仰、偏转和翻滚当摄像机进行俯仰操作时,是把up和look向量绕right向量旋转一定的角度。同样的,进行偏转操作时,是把right和look向量绕up向量旋转一定的角度。而翻滚则是把right和up向量绕look向量旋转一定的角度。俯仰、偏转和翻滚方法的具体实现如下:参见教材P202913.2.4行走、平移和飞行行走,指的是摄像机沿所看的方向移动(也就是沿着look向量移动)。平移,指

6、的是面向所看的方向左右移动,也就是沿right向量移动。最后,飞行指的是沿up向量移动。如果需要沿这几个轴移动,只需要在摄像机的位置向量上加上一个与移动方向相同的向量(见图13.7)。1013.2.4行走、平移和飞行例如,LANDOBJECT不能在弹跳的时候飞起来、不能在仰视前进和身子翻滚平移的时候飞离地面。所以,必须把移动范围限制到XZ平面内。然而,考虑到在LANDOBJECT模式下的摄像机也已经能随着地形的高度改变自身的位置,如上楼梯或爬山,所以提供了Camera::setPosition方法,使用户可以手动调整摄像机所处

7、的高度和位置。行走、平移和飞行方法的实现如下:参见教材P2031113.3示例:摄像机本章的示例程序创建和渲染了如图13.8所示的一个场景。通过键盘的输入可以自由地在场景里穿梭。具体的按键作用如下:W/S——前进/后退。A/D——向左平移/向右平移。R/F——向上/向下飞行。Up/Downarrowkeys——俯仰。Left/Rightarrowkeys——偏转。N/M——翻滚。1213.3示例:摄像机Display函数的定义如下:参见教材P205一开始,传入一个合法的IDirect3DDevice9指针来建立整个场景,因此,

8、建议在Setup函数内调用这个函数。如果要清除整个场景,那么在Cleanup函数内调用这个函数,不过传入的第一个参数为null。注意,该函数调用了desert.bmp作为它的纹理。这个文件同样也可以在同一文件夹中找到。1313.4小结在世界坐标系中,通常用4个向量来描述摄像机

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。