3D动画2013 (4).ppt_第1页
3D动画2013 (4).ppt_第2页
3D动画2013 (4).ppt_第3页
3D动画2013 (4).ppt_第4页
3D动画2013 (4).ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3D动画 aa 向量 vector 我们说一个模型就是一个对象对象都有其位置和方向 在3D空间中由三个值定义 x y z D3D中的位置和方向都是向量 向量定义为 typedefstruct D3DVECTOR floatx x坐标floaty y坐标floatz z坐标 D3DVECTOR 矩阵 matrix 对象有了方向和位置后 要对其进行移动 放缩和旋转等处理就需要用到矩阵 矩阵在D3D中的定义如下 typedefstruct D3DMATRIX union struct float 11 12 13 14 float 21 22 23 24 float 31 32 33 34 float 41 42 43 44 floatm 4 4 D3DMATRIX 一个向量乘以一个矩阵即得到一个新的向量如果这个新的向量和原向量是平移关系该矩阵称为平移矩阵如果这个新的向量和原向量是旋转关系该矩阵称为旋转矩阵 一个向量乘以一个矩阵即得到一个新的向量 X X 11 Y 21 Z 31 41Y X 12 Y 22 Z 32 42Z X 13 Y 23 Z 33 43 用矩阵控制场景 屏幕的景象取决于3个矩阵 WORLD矩阵 控制物体的位置 大小 姿态VIEW矩阵 控制眼睛的位置 朝向PROJECTION矩阵 控制眼睛的视角宽度 景深其中WORLD矩阵最为常用 任何物体的移动 旋转 缩放都是通过改变WORLD矩阵实现 复合变换可以通过将移动矩阵 旋转矩阵 缩放矩阵相乘的方法实现 系统只有一个WORLD矩阵 每渲染一个物体必须先设置一次WORLD矩阵 才能正确显示不同物体的不同姿态 PROJECTION矩阵 控制眼睛的视角宽度 景深 在OnD3D9ResetDevice 中加代码 D3DXMATRIXmatProj 定义Projection矩阵D3DXMatrixPerspectiveFovLH 视线 3DMAX的摄像机 camera 为了能从各个方向看对象 D3D定义了视矩阵 view矩阵 来代表用户观察的角度和方向 在OnD3D9FrameRender 中加代码 D3DXVECTOR3vecEye 0 0f 0 0f 5 0f 眼睛位置D3DXVECTOR3vecAt 0 0f 0 0f 0 0f 朝哪点看D3DXVECTOR3vecUp 0 0f 1 0f 0 0f 上的方向D3DXMATRIXmatView 定义眼睛的观察矩阵D3DXMatrixLookAtLH view矩阵的变换类似于world矩阵 所不同的是它改变的是人的眼睛位置 WORLD矩阵 用于定位物体的位置和姿态的矩阵每个物体都可以在渲染前单独设置WORLD矩阵从而使每个物体有不同的位置和姿态例如 将矩阵2设置为WORLD矩阵渲染物体2 将矩阵3设置为WORLD矩阵渲染物体3 将矩阵1设置为WORLD矩阵渲染物体1 缩放物体 只要我们提供缩放矩阵 用缩放矩阵去设置WORLD矩阵 DirectX就可以自动计算物体上各点的新坐标 渲染时即可正确显示缩放后的状态 在OnD3D9FrameRender 中加代码 D3DXMATRIXmatScale 定义缩放矩阵D3DXMatrixScaling 渲染物体 旋转物体 只要我们提供旋转矩阵 用旋转矩阵去设置WORLD矩阵 DirectX就可以自动计算物体上各点的新坐标 渲染时即可正确显示旋转后的状态 在OnD3D9FrameRender 中加代码 D3DXMATRIXmatRot 定义旋转矩阵D3DXMatrixRotationX 渲染物体 平移物体 只要我们提供平移矩阵 用平移矩阵去设置WORLD矩阵 DirectX就可以自动计算物体上各点的新坐标 渲染时即可正确显示平移后的状态 在OnD3D9FrameRender 中加代码 D3DXMATRIXmatMove 定义平移矩阵D3DXMatrixTranslation 渲染物体 物体的组合运动 物体可以同时进行缩放 旋转 平移 但这些操作必须注意先后顺序才能得到预期的效果 D3DXMatrixRotationZ 渲染物体 含有旋转操作的物体 如果物体要进行旋转操作 最好物体的旋转点就是中心点才便于操作如果一个物体有部分需要旋转 例如螺旋桨 车轮等 最好将这些需要旋转的部分和机身 车身等分别用不同的mesh实现一般的操作是先将螺旋桨 车轮进行局部旋转 再乘上母体 机身 车身 的WORLD矩阵 前进方向的判断 飞机 汽车等物体的运动有方向性 将机头原来方向矢量乘以物体的变换矩阵即可得到变换后机头的方向矢量 例如飞机机头朝向Z轴正方向 机头原来方向矢量 X Y Z 即为 0 0 1 飞机将乘以变换矩阵K mat改变朝向姿态 将机头原来方向矢量 0 0 1 乘以变换矩阵即可得到变换后机头的方向矢量 X X K mat 11 Y K mat 21 Z K mat 31 K mat 41Y X K mat 12 Y K mat 22 Z K mat 32 K mat 42Z X K mat 13 Y K mat 23 Z K mat 33 K mat 43 键盘控制 键盘的输入可在MsgProc消息处理函数中判断和处理switch caseWM KEYDOWN switch wParam case37 wry 0 01 break case39 wry 0 01 break case38 wrx 0 01 break case40 wrx 0 01 break break caseWM KEYUP switch wParam case37 case39 wry 0 break case38 case40 wrx 0 break break 鼠标控制 caseWM MOUSEMOVE shortx y pxy pxy short 视线 3DMAX的摄像机 camera 为了能从各个方向看对象 D3D定义了视线来代表用户观察3D世界的角度和方向 视矩阵 view矩阵 定义了观察者在3D空间的位置和朝什么方向看pd3dDevice SetTransform D3DTS VIEW 逆矩阵 地面高度的判断 设地面每个小格宽度 1 飞机坐标取整即可确定飞机所在小矩形坐标构成地面每个小矩形的两个三角形可能处于不同平面 所以必须先确定飞机在上三角形还是下三角形中 上三角形 下三角形 3 3 6 5 3 6 已知三点求平面方程 x1 y1 z1 x2 y2 z2 x3 y3 z3 平面方程 a x x3 b y y3 c z z3 0其中 a y2 y1 z1 z3 z2 z1 y1 y3 b z2 z1 x1 x3 x2 x1 z1 z3 c x2 x1 y1 y3 y2 y1 x1 x3 y y3 a x x3 c z z3 b 地面高度 平面倾角的判断 ab 法向量c 向量a 向量b X1 Y1 Z1 X2 Y2 Z2 ijkX1Y1Z1 Y1Z2 Y2Z1 Z1X2 X1Z2 X1Y2 X2Y1 X2Y2Z2 i j k分别为空间中相互垂直的三条坐标轴的单位向量 C D3DXVec3Cross v0 v1Xv2 向量的夹角 向量a 向量b必须是单位向量 可以用D3DXVec3Normalize 规范化向量将非单位向量v0转化为单位向量COS B 向量a 向量b X1 Y1 Z1 X2 Y2 Z2 COS B D3DXVec3Dot a b 碰撞检测 子弹每一瞬间在空间的运行轨迹可看做线段 射击目标可看

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论