第3章 Direct3D世界的基本元素.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 Direct3D世界的基本元素

* * * * * * 三维坐标系、点、向量 按坐标轴之间的相互关系划分,三维坐标系可分为左手坐标系和右手坐标系,如右图 所示: 在左手坐标系中,坐标轴的定义 符合左手法则:左手四个手指的 旋转方向从 X 轴到Y 轴,大拇指 的指向就是 Z 轴。 右手坐标系依次类推。 Direct3D 使用左手坐标系, 其中 X轴表示左右,Y轴表示上下, Z 轴表示远近(深度) 。 * 三维坐标系、点、向量 取定坐标系后,空间中的任意一点可以用一组坐标值(x,y,z)来表示。矢量是空间中的一条有向线段,Direct3D用它来标识空间方向。矢量的表示方法与点坐标类似,也是用 {x,y,z} ,不过它表示的是从原点指向点(x,y,z)的有向线段。矢量和起点无关,只要两个矢量同向(平行)且等长,就认为它们相等。在 Direct3D 中,点和矢量通常使用同一个结构 D3DXVECTOR3 保存。 矢量的计算公式很简单:假设矢量的起点为 M(x1,y1,z1) ,终点为 N(x2,y2,z2) , 则矢量MN ={x2-x1,y2-y1,z2-z1} 。 * * 三角形、平面法线、顶点法线 在 Direct3D 中,三角形是构成实体的基本单位,因为一个三角形正好是一个平面,以三角形面为单位进行渲染效率最高。 大量的三角形组合在一起, 构成复杂的多边形或者曲面。下图是一个球面的例子。 * 三角形、平面法线、顶点法线 一个三角形由三个点构成,习惯上把这些点称为顶点(Vertex) 。三角形平面有正、反面之分,由顶点的排列顺序决定:顶点按顺时针排列的表面是正面,如图所示。其中与三角形平面垂直、且指向正面的矢量称为该平面的法线(Normal) 。在 Direct3D中,为了提高渲染效率,缺省条件下只有正面可见,不过可以通过 IDirect3DDevice9::SetRenderState 来改变设置,其对应的渲染状态常数为 D3DRS_CULLMODE,具体用法请参阅 SDK文档。 * 三角形、平面法线、顶点法线 顶点法线(Vertex Normal)是过顶点的一个矢量,用于在高洛德着色(Gouraud Shading)中计算光照和纹理效果。在生成曲面时,通常令顶点法线和相邻平面的法线保持等角,如图1所示,这样进行渲染时,会在平面接缝处产生一种平滑过渡的效果。如果是多边形,则令顶点法线等于该点所属平面(三角形)的法线,如图2所示,以便在接缝处产生突出的边缘。 * 三角形、平面法线、顶点法线 图1 图2 * 顶点和像素处理 变换引擎(transformation engine) 把几何数据送入固定渲染管线(fixed)进行渲染。它定位模型和摄像机在3D世界中的位置、投影顶点,以便于在屏幕上显示,然后把顶点剪切到视口。变换引擎同样进行光照计算,以决定每个顶点的慢反射光和镜面反射光。 * 顶点和像素处理 几何渲染管线把顶点作为输入,通过变换引擎进行3种变换: 世界变换、摄像机变换和投影变换,这些变换作用到顶点,然后剪切结果,并传送到光栅化器。如下图: * 坐标变换_世界变换 我们在建立三维实体的数学模型时,通常以实体的某一点为坐标原点,比如一个球体,很自然就用球心做原点,这样构成的坐标系称为本地坐标系(Local Coordinates) 。实体总是位于某个场景(World Space)中,而场景采用世界坐标系(World Coordinates) ,如图所示,因此需要把实体的本地坐标变换成世界坐标,这个变换被称为世界变换(World Transformation) 。 * 坐标变换_世界变换 在 Direct3D 中,坐标变换通过一个 4x4 矩阵来实现,对于世界变换,只要给出实体在场景中的位置信息,就可以借助 Direct3D函数得到变换矩阵,具体的计算步骤如下: 首先把实体放置在世界坐标系原点,使两个坐标系重合; 在世界空间中,TT 可由函数D3DXMatrixTranslation 求得; 把平移后的实体沿自身的 Z 轴旋转一个对实体进行平行移动,其对应的平移变换阵 角度(角度大于 0,表示从 Z 轴的正向朝原点看去,旋转方向为顺时针;反之为逆时针,下同) ,对应的旋转变换阵 TZ 用 D3DXMatrixRotationZ 计算; * 坐标变换_世界变换 把实体沿自身的 Y轴旋转一个角度,用 D3DXMatrixRotationY求出变换阵 TY; 把实体沿自身的 X轴旋转一个角度,用 D3DXMatrixRotationX求出变换阵 TX; 最后对实体进行缩放,假设三个轴的缩放系数分别为 sx、sy、sz,该操作对应的变换阵 TS可由函数 D3DXMatrixScaling 求得;

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档