欢迎来到天天文库
浏览记录
ID:5438795
大小:535.00 KB
页数:39页
时间:2017-11-12
《第11章 xna三维设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章XNA三维设计11.1三维设计基本概念11.2简单3D图形的绘制11.33D模型与3D特效11.4第一人称摄像机和第三人称摄像机11.53D环境下的鼠标与键盘操作11.63D图形的序列化与反序列化11.1三维设计基本概念11.1三维基本概念包括:3D坐标系世界矩阵(WorldMatrix)视图矩阵(ViewMatrix)投影矩阵(ProjectionMatrix)前剪裁面与后剪裁面,或者叫近平面与远平面可视区域(ViewingFrustum)11.1基本概念(续)3D坐标系DirectX用左手坐标系,XNA用右手坐标系。11.1基本概念(续)
2、世界矩阵(WorldMatrix)可以把世界坐标设想为一个无限大的三维笛卡儿坐标。对象可以被放到这个“世界矩阵”的任意位置。描述世界坐标的矩阵称为世界矩阵。视图矩阵(ViewMatrix)控制“摄像机”位置和方向等参数的矩阵称为视图矩阵。视图矩阵用于控制世界坐标如何转换为摄像机的坐标。例如,可以把摄像机悬置于某个对象的上面(摄像机位置),把镜头对准对象的中心(观察点)。也可以指定哪面是上面,例如指定y轴的正方向是上面。投影矩阵(ProjectionMatrix)投影矩阵可以被想象成摄像机的镜头,该矩阵指定了可视区域(近平面、远平面)。投影矩阵用于控制摄
3、像机的坐标如何转换为屏幕坐标。11.1基本概念(续)前剪裁面(近平面)与后剪裁面(远平面)前剪裁面(frontclippingplane):指摄像机能拍摄到的最近距离。后剪裁面(backclippingplane):指摄像机能拍摄到的最远距离。可视区域(ViewingFrustum):位于前剪裁面与后剪裁面之间的区域。即摄像机能拍摄到的区域。11.1基本概念(续)背面剔除(BackFacesCulling)所有的几何形状都可以由三角形顶点构成的面组成。背面剔除的实际含义就是如何渲染每一个由顶点按照顺时针或逆时针方向依次连线构成的三角形面。
4、程序中用CullMode属性设置剔除方式。剔除方式有三种:一种是不剔除,即全部渲染;第二种方式是剔除顺时针绘制的三角形面(默认);第三种方式是剔除逆时针绘制的三角形面。如果不设定剔除方式,XNA默认剔除顺时针方向构成的面,即只渲染按逆时针方向排列的顶点构成的三角形面。11.2向量与矩阵操作11.2向量与矩阵操作11.2.1向量操作11.2.2矩阵操作11.2向量与矩阵操作向量操作XNAFramework提供了Vector2、Vector3和Vector4类,利用这些类提供的属性和方法可以对向量进行各种操作。Vector2:由x,y分量组成。Vec
5、tor3:由x,y,z分量组成。Vector4:由x,y,z,w分量组成。Vector4坐标的含义可以理解为:实际的3D点被认为是在w=1的平面上,表示形式为(x,y,z,w),将点投影到这个“平面”上得到相应的实际3D点(x/w,y/w,z/w)。w=0时表示“无限远点”,它描述了一个方向而不是一个位置。另外,利用w还可以进行各种变换。11.2向量与矩阵操作(续)向量运算举例⑴⑵=11.2向量与矩阵操作(续)矩阵操作XNAFramework提供了Matrix类进行矩阵运算,该类包含了一系列属性以及对标准矩阵操作的方法,例如加、减、乘以及矩阵转置等,可
6、以利用矩阵实现缩放、旋转等变换。如何用矩阵变换一个点的坐标位置MatrixrotationMatrix=Matrix.CreateRotationY(angle);//绕Y轴旋转Vector3rotatedPoint=Vector3.Transform(point,rotationMatrix);//变换11.2简单3D图形的绘制11.6简单3D图形的绘制11.2.1顶点缓冲与索引缓冲11.2.2Primitives11.2简单3D图形的绘制(续)可以用以下结构来描述顶点信息:VertexPositionColor结构:包括顶点位置和颜色。Vertex
7、PositionColorTexture结构:包括顶点位置、颜色以及纹理。VertexPositionNormalTexture结构:包括顶点位置、法线以及纹理。VertexPositionTexture结构:包括顶点位置和纹理。顶点缓冲(VertexBuffer)保存一系列3D顶点信息的缓冲区。设计者必须先对顶点的结构进行描述,才能将其存入顶点缓冲区进行渲染。11.2简单3D图形的绘制(续)索引缓冲(IndexBuffer)用于描述顶点缓冲的呈现顺序(renderingorder)、起始位置等。比如,用索引0,1,6来绘制一个三角形时,会通过索引
8、映射到相应的顶点来渲染图像。使用索引缓冲的好处是对于线列、三角形列等结构可以大大减少内存占用量
此文档下载收益归作者所有