第11章 XNA三维设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
11.3.4 复杂3D模型的绘制 3D模型(3D Model) .x文件 .fbx文件 例11-1 加载和旋转3D模型 11.5 第一人称摄像机和第三人称摄像机 11.5 第一人称摄像机和第三人称摄像机 11.5.1 旋转和移动摄像机 11.5.2 制作第一人称摄像机 11.5.3 制作第三人称摄像机 11.5 第1人称摄像机和第3人称摄像机 基本知识 第一人称摄像机就是玩家“我”自己拿着摄像机,屏幕上显示的场景可以认为是摄像机拍摄的场景。大部分第一人称摄像机的游戏都是将摄像机固定在玩家“我”的肩上。 第三人称摄像机是指场景是“他”拍摄的,而我是玩家,我能否在场景中看到自己,就看“他”如何拍摄了。 大部分情况下,我们使用单一的摄像机来实现第一人称或者第三人称,有时也用多个摄像机在单一的窗口中切换视角,比如从第一人称切换到第三人称视角(游戏中屡见不鲜),而“画中画”将会同时展现第一人称和第三人称(或者第三人称与第三人称),也就是说同时存在不同的观察点,这是靠多窗口多摄像机分别进行渲染来实现的。 如何旋转和移动摄像机 一个摄像机的位置和方向,可以通过设置摄像机的视图矩阵(View Matrix)来控制。 用一个Vector3确定摄像机的世界坐标。 用另一个Vector3确定旋转摄像机所需的观察点,一般是 (0, 0, 1)或(0, 0, ?1)。例如: Vector3 cameraReference = new Vector3(0, 0, 1); 创建一个旋转矩阵来描述摄像机绕那个轴旋转,例如表示沿Y轴旋转的旋转矩阵应该通过 CreateRotationY 来创建(参数avatarYaw表示选转角度)。 Matrix rotationMatrix = Matrix.CreateRotationY(avatarYaw); 如何旋转和移动摄像机 通过Transform对观察点进行旋转变换。 Vector3 transformedReference =Vector3.Transform( cameraReference, rotationMatrix); 将摄像机的当前位置调整到经过旋转变换的方向,使被观察的对象正对摄像机。 Vector3 cameraLookat = cameraPosition + transformedReference; 通过CreateLookAt创建视图矩阵(将世界坐标转换为摄像机的坐标)。其中第3个参数表示摄像机的上方位置,一般用(0, 1, 0)表示。 view = Matrix.CreateLookAt(cameraPosition, cameraLookat, new Vector3(0.0f, 1.0f, 0.0f)); 如何制作第一人称摄像机 用“如何旋转和移动摄像机”中讲述的方法创建摄像机坐标。 用CreatePerspectiveFieldOfView创建投影矩阵,其中第1个参数是视图的投影角度(弧度),一般用PI/4,表示45度角;第2个参数是投影平面的宽高比。第3个和第4个参数指定可视区域的最近与最远距离。 proj = Matrix.CreatePerspectiveFieldOfView(viewAngle, aspectRatio, nearClip, farClip); 通过控制“模型(Model)”循环绘制世界坐标中的每个对象。 void DrawModel(Model model, Matrix world, Texture2D texture) { foreach (ModelMesh mesh in model.Meshes){ foreach (BasicEffect be in mesh.Effects) { be.Projection = proj; be.View = view; be.World = world; be.Texture = texture; be.TextureEnabled = true; } mesh.Draw(); } } * 第11章 XNA三维设计 11.1 三维设计基本概念 11.2 简单3D图形的绘制 11.3 3D模型与3D特效 11.4 第一人称摄像机和第三人称摄像机 11.5 3D环境下的鼠标与键盘操作 11.6 3D图形的序列化与反序列化 11.1三维设计基本概念 11.1 三维基本概念 包括: 3D坐标系 世界矩阵(World Matrix) 视图矩阵(View Matrix) 投影矩阵(Projection Matrix) 前剪裁面与后剪裁面,或者叫近平面与远平面 可视区域(Viewing Frustum) 11.1 基本概念

文档评论(0)

精品报告 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档