第11章 XNA三维设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
简单3D图形的绘制( 3D图形的绘制 11.2 简单3D图形的绘制(续)
图元(Primitives) 图元(Primitives) 图元是指构成各种形状的基本图形. 图元是指构成各种形状的基本图形.有: PointList:点列.顶点序列中的每个顶点均单独绘制. ① PointList:点列.顶点序列中的每个顶点均单独绘制. LineList:线列. ② LineList:线列.绘制时顶点序列中的每两个顶点作为一组连 成一条单独的直线,序列中的每个顶点只使用一次. 成一条单独的直线,序列中的每个顶点只使用一次. LineStrip:线带.绘制时从第一个顶点开始, ③ LineStrip:线带.绘制时从第一个顶点开始,依次将顶点序 列中的各个顶点用直线连接起来. 列中的各个顶点用直线连接起来.除第一个顶点和最后一个顶 点只使用一次外,中间的其它顶点均使用两次. 点只使用一次外,中间的其它顶点均使用两次. TrangleList:三角形列. ④ TrangleList:三角形列.绘制时顶点序列中的每三个顶点作 为一组组成一个单独的三角形,序列中每个顶点只使用一次. 为一组组成一个单独的三角形,序列中每个顶点只使用一次. TrangleStrip:三角形带.绘制的结果为一系列相连的三角形, ⑤ TrangleStrip:三角形带.绘制的结果为一系列相连的三角形, 每两个相邻的三角形共享两个顶点. 每两个相邻的三角形共享两个顶点. TrangleFan:三角扇形.所有三角形共享一个顶点. ⑥ TrangleFan:三角扇形.所有三角形共享一个顶点.
14
简单3D图形的绘制( 3D图形的绘制 11.2 简单3D图形的绘制(续)
法线(Normal) 法线(Normal) 数学上的法线是指垂直于面的向量. XNA中 数学上的法线是指垂直于面的向量.在XNA中,每个顶点也都可 以有对应的法线,而且还可以设置每个顶点法线的方向. 以有对应的法线,而且还可以设置每个顶点法线的方向.顶点法 线和面法线对计算光照以及渲染模式( mode)非常重要. 线和面法线对计算光照以及渲染模式(Shading mode)非常重要. 面法线一般用于得到物体的立体感效果; 面法线一般用于得到物体的立体感效果;而顶点法线则一般用于 控制光照及纹理,使物体看起来很圆滑. 控制光照及纹理,使物体看起来很圆滑.
5
基本概念( 11.1 基本概念(续)
前剪裁面(近平面)与后剪裁面(远平面) 前剪裁面(近平面)与后剪裁面(远平面)
前剪裁面( plane): ① 前剪裁面(front clipping plane): 指摄像机能拍摄到的最近距离. 指摄像机能拍摄到的最近距离. 后剪裁面( plane) ② 后剪裁面(back clipping plane) : 指摄像机能拍摄到的最远距离. 指摄像机能拍摄到的最远距离. ③ 可视区域 Frustum): (Viewing Frustum): 位于前剪裁面与后 剪裁面之间的区域. 剪裁面之间的区域. 即摄像机能拍摄到 的区域. 的区域.
7
11.2 向量与矩阵操作
11.2 向量与矩阵操作 11.2.1 向量操作 11.2.2 矩阵操作
8
11.2 向量与矩阵操作
向量操作 Framework提供了Vector2,Vector3和Vector4类 提供了Vector2 XNA Framework提供了Vector2,Vector3和Vector4类,利 用这些类提供的属性和方法可以对向量进行各种操作. 用这些类提供的属性和方法可以对向量进行各种操作.
13
简单3D图形的绘制( 3D图形的绘制 11.2 简单3D图形的绘制(续)
索引缓冲( Buffer) 索引缓冲(Index Buffer) 用于描述顶点缓冲的呈现顺序( order), ),起 用于描述顶点缓冲的呈现顺序(rendering order),起 始位置等.比如,用索引0 来绘制一个三角形时, 始位置等.比如,用索引0,1,6来绘制一个三角形时, 会通过索引映射到相应的顶点来渲染图像. 会通过索引映射到相应的顶点来渲染图像. 使用索引缓冲的好处是对于线列, 使用索引缓冲的好处是对于线列,三角形列等结构可以大 大减少内存占用量. 大减少内存占用量.
1
第11章 XNA三维设计 11章 XNA三维设计
11.1 三维设计基本概念 简单3D 3D图形的绘制 11.2 简单3D图形的绘制 3D模型与3D特效 模型与3D 11.3 3D模型与3D特效 11.4 第一人称摄像机和第三人称摄像机 11.5 3D环境下的鼠标与键盘操作 3D环境下的鼠标与键盘操作 3D图形的序列化与反序列化 11.6 3D图形的序列化与反序列化
Texture-Mapping) 纹理映射(Texture-Mapping)
把纹理映射到三维几何体上的过程叫纹理映射. 1. 把纹理映射到三维几何体上的过程叫纹理映射. 因为纹理是二维的,所以仅需要两个坐标值: 2. 因为纹理是二维的,所以仅需要两个坐标值:u和v.u是横向 坐标值, 是纵向坐标值, 的取值应该在0 之间. 坐标值,v是纵向坐标值,u和v的取值应该在0和1之间.左 上角位置和右下角位置决定如何渲染纹理. 上角位置和右下角位置决定如何渲染纹理.纹理的左上角是 右下角是( (0,0),右下角是(1,1).
百度文库 3
基本概念( 11.1 基本概念(续)
3D坐标系 3D坐标系 DirectX用左手坐标系 XNA用右手坐标系 用左手坐标系, 用右手坐标系. DirectX用左手坐标系,XNA用右手坐标系.
4
基本概念( 11.1 基本概念(续)
世界矩阵( Matrix) 世界矩阵(World Matrix) 可以把世界坐标设想为一个无限大的三维笛卡儿坐标. 可以把世界坐标设想为一个无限大的三维笛卡儿坐标.对象可以 被放到这个"世界矩阵"的任意位置. 被放到这个"世界矩阵"的任意位置. 描述世界坐标的矩阵称为 世界矩阵. 世界矩阵. 视图矩阵( Matrix) 视图矩阵(View Matrix) 控制"摄像机"位置和方向等参数的矩阵称为视图矩阵. 控制"摄像机"位置和方向等参数的矩阵称为视图矩阵.视图矩 阵用于控制世界坐标如何转换为摄像机的坐标.例如,可以把摄 阵用于控制世界坐标如何转换为摄像机的坐标.例如, 像机悬置于某个对象的上面(摄像机位置), ),把镜头对准对象的 像机悬置于某个对象的上面(摄像机位置),把镜头对准对象的 中心(观察点).也可以指定哪面是上面,例如指定y ).也可以指定哪面是上面 中心(观察点).也可以指定哪面是上面,例如指定y轴的正方向 是上面. 是上面. 投影矩阵( Matrix) 投影矩阵(Projection Matrix) 投影矩阵可以被想象成摄像机的镜头, 投影矩阵可以被想象成摄像机的镜头,该矩阵指定了可视区域 近平面,远平面). ).投影矩阵用于控制摄像机的坐标如何转换 (近平面,远平面).投影矩阵用于控制摄像机的坐标如何转换 为屏幕坐标. 为屏幕坐标.
9
向量与矩阵操作( 11.2 向量与矩阵操作(续)
向量运算举例 ⑴ ⑵
AB + BC = AC
AB + AD + AA′ = AC + AA′ = AC ′
D' A' G D C B' M C'
A
B
10
向量与矩阵操作( 11.2 向量与矩阵操作(续)
矩阵操作 提供了Matrix类进行矩阵运算, Matrix类进行矩阵运算 XNA Framework 提供了Matrix类进行矩阵运算,该类包含 了一系列属性以及对标准矩阵操作的方法,例如加, 了一系列属性以及对标准矩阵操作的方法,例如加,减, 乘以及矩阵转置等,可以利用矩阵实现缩放,旋转等变换. 乘以及矩阵转置等,可以利用矩阵实现缩放,旋转等变换.
11
简单3D 3D图形的绘制 11.2 简单3D图形的绘制
简单3D 3D图形的绘制 11.6 简单3D图形的绘制 11.2.1 顶点缓冲与索引缓冲 11.2.2 Primitives
12
简单3D图形的绘制( 3D图形的绘制 11.2 简单3D图形的绘制(续)
可以用以下结构来描述顶点信息: 可以用以下结构来描述顶点信息: VertexPositionColor结构 包括顶点位置和颜色. 结构: ① VertexPositionColor结构:包括顶点位置和颜色. VertexPositionColorTexture结构 包括顶点位置, 结构: ② VertexPositionColorTexture结构:包括顶点位置, 颜色以及纹理. 颜色以及纹理. ③ VertexPositionNormalTexture结构:包括顶点位置, VertexPositionNormalTexture结构 包括顶点位置, 结构: 法线以及纹理. 法线以及纹理. VertexPositionTexture结构 包括顶点位置和纹理. 结构: ④ VertexPositionTexture结构:包括顶点位置和纹理. 顶点缓冲( Buffer) 顶点缓冲(Vertex Buffer) 保存一系列3D顶点信息的缓冲区. 3D顶点信息的缓冲区 保存一系列3D顶点信息的缓冲区.设计者必须先对顶点的 结构进行描述,才能将其存入顶点缓冲区进行渲染. 结构进行描述,才能将其存入顶点缓冲区进行渲染.
Vector2: 分量组成. ① Vector2:由x,y分量组成. Vector3: x,y,z分量组成 分量组成. ② Vector3:由x,y,z分量组成. Vector4: x,y,z,w分量组成 分量组成. ③ Vector4:由x,y,z,w分量组成.
Vector4坐标的含义可以理解为:实际的3D点被认为是在w 3D点被认为是在 Vector4坐标的含义可以理解为:实际的3D点被认为是在w 坐标的含义可以理解为 =1的平面上 表示形式为(x, 的平面上, w), =1的平面上,表示形式为(x, y, z, w),将点投影到这个 平面"上得到相应的实际3D 3D点 z/w). ).w=0 "平面"上得到相应的实际3D点(x/w, y/w, z/w).w=0 时表示"无限远点" 它描述了一个方向而不是一个位置. 时表示"无限远点",它描述了一个方向而不是一个位置. 另外,利用w还可以进行各种变换. 另外,利用w还可以进行各种变换.
如何用矩阵变换一个点的坐标位置 Matrix rotationMatrix = //绕 Matrix.CreateRotationY(angle); //绕Y轴旋转 Vector3 rotatedPoint = rotationMatrix);// //变换 Vector3.Transform(point, rotationMatrix);//变换
6
基本概念( 11.1 基本概念(续)
背面剔除( Culling) 背面剔除(Back Faces Culling)
所有的几何形状都可以由三角形顶点构成的面组成. ① 所有的几何形状都可以由三角形顶点构成的面组成.背 面剔除的实际含义就是如何渲染每一个由顶点按照顺时 针或逆时针方向依次连线构成的三角形面. 针或逆时针方向依次连线构成的三角形面. 程序中用CullMode属性设置剔除方式.剔除方式有三种: CullMode属性设置剔除方式 ② 程序中用CullMode属性设置剔除方式.剔除方式有三种: 一种是不剔除,即全部渲染; 一种是不剔除,即全部渲染; 第二种方式是剔除顺时针绘制的三角形面(默认); 第二种方式是剔除顺时针绘制的三角形面(默认); 第三种方式是剔除逆时针绘制的三角形面. 第三种方式是剔除逆时针绘制的三角形面. 如果不设定剔除方式,XNA默认剔除顺时针方向构成的面 默认剔除顺时针方向构成的面, ③ 如果不设定剔除方式,XNA默认剔除顺时针方向构成的面, 即只渲染按逆时针方向排列的顶点构成的三角形面. 即只渲染按逆时针方向排列的顶点构成的三角形面.
2
11.1三维设计基本概念 11.1三维设计基本概念
11.1 三维基本概念 包括: 包括:
3D坐标系 ① 3D坐标系 世界矩阵( Matrix) ② 世界矩阵(World Matrix) ③ 视图矩阵(View Matrix) 视图矩阵( Matrix) 投影矩阵( Matrix) ④ 投影矩阵(Projection Matrix) ⑤ 前剪裁面与后剪裁面,或者叫近平面与远平面 前剪裁面与后剪裁面, 可视区域( Frustum) ⑥ 可视区域(Viewing Frustum)