摘要: 2.14 编写自定义内容导入器 问题 你想通过内容管道将一个自定义格式的文件导入到XNA项目中。因为你的文件的扩展名和/或结构与XNA支持的文件格式不同,默认XNA内容管道无法知道如何导入并处理你的文件。 解决方案 你需要编写一个自定义内容导入器,它可以从磁盘中读取文件,将有用的数据格式化为一个对象,做好被内容处理器处理的准备。因此,这个教程假设你知道如何创建自己的内容处理器,可以参见教程... 阅读全文
posted @ 2010-10-23 10:19 AlexCheng 阅读(202) 评论(0) 推荐(0)
摘要: 2.13 创建一个模糊(Blur),(发光)Glow Post-Processing Effect 问题 你想在最终图像上添加模糊效果,或给场景中的物体添加光泽。 解决方案 这两个effect都是post-processing effect。可参见前面的教程学习如何建立一个post-processing框架。 你可以通过计算每个像素和一些周围像素的颜色值平均值并用这些值替换像素的原始颜色... 阅读全文
posted @ 2010-10-23 10:14 AlexCheng 阅读(497) 评论(0) 推荐(0)
摘要: 2.12 创建一个Post-Processing Framework 问题 你想在最终的图像上添加一个2D post-processing effect,诸如模糊,扭曲,摇晃,变焦,边缘检测等。 解决方案 首先将2D或3D场景绘制到屏幕,在Draw过程的最后,在后备缓冲的内容还没有发送到屏幕前,你需要将这个后备缓冲的内容存储在一张2D图像中,解释请见教程3-8。 然后,将这张2D图像绘制... 阅读全文
posted @ 2010-10-23 10:04 AlexCheng 阅读(458) 评论(0) 推荐(0)
摘要: 2.11 创建一个ROAM地形 问题 虽然你可以使用前一个教程的四叉树技术让XNA只绘制在相机视野中的地形小块,这个方法还不是最好的。那些远离相机的方块仍会以离相机很近的方块的同样细节进行绘制,而有些三角形在屏幕上的绘制大小不超过一个像素。 因此,你想使用Lecvel-Of-Detail(LOD)方法让远离相机的方块以低细节绘制,当使用不同的细节层次绘制地形时,你会发现在边界上会出现破裂。 ... 阅读全文
posted @ 2010-10-23 09:56 AlexCheng 阅读(366) 评论(0) 推荐(0)
摘要: 2.10 使用四叉树隐藏不在视野中的部分网格 问题 地形绘制是游戏中的一个重要组成部分。但是,使用教程5-8中的方法,当绘制一个很大的地形时会导致帧数下降。 解决方案 你可以使用一个四叉树简化绘制大地形的工作流程,四叉树类似于八叉树,因为你要将地形分割成更小的方块直到这些方块不大于指定的大小。 这个处理过程如图2-13左图所示。一个16 × 16大小的方块被分割成四个方块,每个小方块再被... 阅读全文
posted @ 2010-10-23 09:42 AlexCheng 阅读(410) 评论(0) 推荐(0)
摘要: 2.9 只绘制在相机视野中的物体:八叉树 问题 如果你使用教程2-5的方法检查相机视野中的每个模型,那么由于网格太多会极大地拖慢程序。你需要一个可扩展的方法决定场景的哪些部分需要被绘制。 解决方案 定义一个很大的立方体包含整个3D世界和所有模型。如果这个立方体包含太多模型,那么把这个立方体分割成小的子立方体。如果这些小的子立方体包含太多模型,那么再把这些立方体分割成更小的子立方体,直到立方... 阅读全文
posted @ 2010-10-23 09:35 AlexCheng 阅读(314) 评论(0) 推荐(0)
摘要: 2.8 天空盒 问题 你想在游戏中中添加一个场景,而不是单一颜色的背景。 解决方案 你用不着将物体充满场景的每个部分,只需简单地绘制一个很大的立方体,在立方体内部的六个面上贴上风景或房子内部的纹理,然后把相机放在立方体内部。 工作原理 有几种方法可以将一个天空盒放置在场景中,最简单的方法是导入一个模型文件,这个文件拥有自己的纹理和effect。如果你想获得完全控制权,你也可以自己定义一... 阅读全文
posted @ 2010-10-23 09:28 AlexCheng 阅读(673) 评论(0) 推荐(0)
摘要: 2.7 创建一个相机飞入效果 问题 你想平滑地将相机从一个位置移动到另一个位置,当然你也让相机的观察目标也能平滑地移动。 具体的的说,你想要一个功能让相机能沿着一条平滑的曲线从开始位置到结束位置。这个移动过程应该是平滑的,在过程结束后,你想让相机回到常规状态,将它作为一个第一人称相机。 解决方案 这个过程需要一个时间变量,当相机在开始位置时这个变量为0,到达结束位置时为1。 通过指定第... 阅读全文
posted @ 2010-10-23 09:26 AlexCheng 阅读(444) 评论(0) 推荐(0)
摘要: 2.6 检测相机与模型,墙或地形的碰撞 问题 你想检测相机是否已近靠近物体防止它穿过这个物体。 解决方案 要进行相机和模型的碰撞检测,你应将相机表示为一个包围球,使用这个包围球检查与模型的包围球或包围盒的碰撞。对应用户自定义的网格,诸如墙或地形,你必须首先找到墙或地形上的三角形任意位置的精确3D坐标。 工作原理 相机碰撞可分为与模型的碰撞和与已知顶点高度的三角形网格的碰撞。 相机与模... 阅读全文
posted @ 2010-10-23 09:17 AlexCheng 阅读(406) 评论(0) 推荐(0)