使用 XNA 创建游戏/3D 开发/天空盒
天空盒给游戏一个周围的环境和基础。无论是赛车、第一人称射击游戏还是太空模拟,天空盒都让游戏感觉更真实。在最原始的版本中,它只是将 6 张图像投影到无穷远处一个假想立方体的各个侧面。在这里,我们将向你展示如何轻松地创建简单的天空盒。但天空盒也可以更复杂。它们可以是圆顶形状的,可以模拟日落和黎明,以及升起的太阳。另外还提供了如何创建这些天空盒的示例。
首先你需要为每个立方体面创建六张图像。有多种方法可以实现这一点。然而,这取决于你想要在场景中呈现什么。因此你可以拍摄一些数码照片并从中生成天空盒。另一种可能性是使用其他人创建的天空盒(公有领域)。当然,如果你从头开始创建一切,你将拥有最大的自由。这就是我们要做的事情。在下面的示例中,我们将使用 Terragen 2(非商业版本)。
我的重点是为你带来快速的结果,而不是深入的信息。如果你想更深入地研究,请查看我为我的指南提供的教程。
启动 Terragen 后,你会看到默认场景,包括一个带有大气层的扁平星球。第一步是将这个扁平空间改造成更有趣的地形。
你可以使用 高度场 和 过程生成 在 Terragen 2 中生成地形。
- 点击“立即生成”按钮,等待进程完成。3D 预览现在显示了新的地形。
- 放大右上角 Terragen 窗口的“导航面板”
- 它将变为完整的导航控制
- 你可以使用这些控件在场景中导航。点击“立即生成”按钮,使用这些参数进行试验,以了解它们如何影响地形。
- 然后找到一个你喜欢的点,例如山顶或山丘。
- 在 3D 预览部分下面的工具栏中找到“复制到当前相机”按钮。点击它将改变渲染相机到你当前的视角。执行此操作。
- 点击顶部工具栏中的“打开渲染视图”(R)按钮,然后按下“渲染”按钮。
等待渲染器完成,欣赏你的第一个渲染视图。现在使用“导航控件”移动到地面上方的位置,这样你就可以看到地平线。你会注意到仍然有很多平坦的表面。这是因为高度场的限制。现在,我们可能想要使用过程生成来改变这一点。
- 首先通过选择“高度场着色器”并取消选中“启用”复选框来禁用它。
- 现在表面将再次变得平坦。
- 点击“添加地形”,然后选择“动力分形”。
- 节点列表中将出现一个新的“动力分形”节点。你可能想要给它一个好名字,并将其重命名为“山脉”。
- 注意整个地形是如何改变的。到处都是山脉!
- 现在再次使用“导航控件”选择一个合适的视角点。选择一个具有良好海拔高度组合的点,例如被山脉环绕的谷底。
- 然后再次点击 3D 预览部分下面的工具栏中的“复制到当前相机”按钮。
- 点击顶部工具栏中的“打开渲染视图”(R)按钮,然后按下“渲染”按钮。
现在我们将使用着色器添加更鲜明的颜色和纹理。
- 点击节点列表上方的“添加层”按钮,然后从下拉菜单中选择“表面层”。节点列表中将出现一个新的着色器节点。
- 现在转到新添加的着色器的“颜色选项卡”,并使用“颜色选择器”选择绿色/黄色色调。
- 你可能想要将其重命名为“草”,因为我们将使用这个着色器来为世界添加草。
- 转到“海拔高度约束”选项卡,并选中“限制最大海拔高度”复选框。
- 将“最大海拔高度”设置为 400-500 之间的值。
- 将“最大海拔高度模糊区域”更改为约 100 的值(海拔高度约束处的截止点的锐利程度)。
- 转到“坡度约束”选项卡,并选中“限制最大坡度”复选框。
- 将“最大坡度角”设置为约 30 的值。
- 将“最大坡度模糊区域”更改为约 15 的值。
你可能想要花一些时间调整上面提到的所有参数,以便将所有东西都按照你想要的方式塑造。渲染以查看调整的效果。
- 转到覆盖和分解选项卡。覆盖控制此图层将覆盖的底层表面的数量。分形分解控制图层的分布。
- 将覆盖设置为 0.7,将分形分解设置为 1 以获得良好的效果,但可以根据需要进行调整。
如您所见,Terragen2 是一个强大的工具,但这仅仅是开始。您可以继续添加雪山、快速山谷和水,然后整合大气和闪电。我们现在将其留待处理,并开始构建我们的天空盒。
现在,您必须决定您想在项目的天空盒中呈现哪个视角。继续并使用导航控件找到一个好位置。
切换到相机布局在这里,您将看到新相机的列表以及默认的渲染相机。我们将使用这六个相机来渲染天空盒所需的所有视图。但首先,我们必须配置它们。
- 选择第一个相机,并将其重命名为北。三个位置字段描述了您的实际位置,并将与我的不同。
- 将旋转字段的三个值设置为 0。
- 选择透视单选按钮,然后选择使用水平视野单选按钮。将值更改为 90 度。
按以下表格编辑其他相机
相机 01 | 相机 02 | 相机 03 | 相机 04 | 相机 05 | 相机 06 | |
---|---|---|---|---|---|---|
名称 | 北 | 东 | 南 | 西 | 上 | 下 |
位置 | a/b/c | a/b/c | a/b/c | a/b/c | a/b/c | a/b/c |
旋转 | 0/0/0 | 0/90/0 | 0/180/0 | 0/270/0 | 90/0/0 | 270/0/0 |
透视 | 已选中 | 已选中 | 已选中 | 已选中 | 已选中 | 已选中 |
水平 FOV | 已选中 | 已选中 | 已选中 | 已选中 | 已选中 | 已选中 |
值 | 90 | 90 | 90 | 90 | 90 | 90 |
注意:a/b/c 是您的位置值的占位符。找到要用于天空盒的相机位置后,您只需将相同的值复制到所有六个相机即可。
- 选择快速渲染,并使用渲染器详细信息视图中的添加将六个相机中的一个分配给它。
- 单击渲染图像以查看其低质量渲染。
- 您可能想要重复此操作以检查所有相机。
Terragen 2 中有两个预配置的渲染器。完整渲染旨在生成高质量的输出。因此,您只会在想要测试项目真实外观或想要渲染和导出时使用它。这取决于您的设置,但预计此渲染器将花费一些时间。快速渲染旨在让您快速了解,因此渲染时间很短。当然,您可以根据需要配置它们,或创建其他渲染器。
现在,我们将配置完整渲染器,然后为天空盒创建所有图像。
- 选择完整渲染,并将图像宽度和图像高度更改为 512。
- 使用添加按钮选择一个相机,并将其分配给渲染器。
- 在质量选项卡中,将细节参数设置为 1。
- 现在,从相机下拉列表中选择第一个相机,然后按渲染图像按钮。
- 等待渲染器完成。
- 单击保存按钮将图像保存到磁盘。由于我们将与 XNA 一起使用,您可能需要将其保存为 Windows 位图 (.bmp)
- 然后渲染其他相机。
关于在场景中使用 GI 的说明
您可能想要通过将GI 相对细节、GI 样本质量和GI 模糊半径设置为零来关闭 GI(全局照明)。
这是因为 GI 会导致天空盒中出现可见的边缘。您可能需要调整照明配置以照亮场景。
渲染完所有相机后,您可能想要在您喜欢的图像编辑程序中对齐图像,并检查它们是如何拼凑在一起的。
将天空盒添加到 XNA 项目的一种方法是生成立方体贴图文件,您可以稍后轻松加载它。一个快速简便的方法是使用 ATI 的名为CubeMapGen 的工具。
在 CupeMapGen 中
- 选择D3D 立方体作为导出图像布局。
- 在显示部分选择天空盒复选框。
- 现在,您可以将天空盒图像应用到立方体面,方法是从下拉菜单中选择立方体面,然后加载相应的图像,并单击加载立方体贴图面按钮。
根据之前创建的天空盒图像的对齐方式,轴映射如下
东 | 西 | 上 | 下 | 北 | 南 |
---|---|---|---|---|---|
X+ | X- | Y+ | Y- | Z+ | Z- |
完成时,通过单击保存立方体贴图 (.dds) 按钮将立方体贴图保存为 DDS 文件。
与天空盒相同的概念,但使用的是球体而不是立方体。可用于模拟大气和太阳运动(黎明、黄昏)。
请参阅有关如何创建这些的教程。
http://www.planetside.co.uk/wiki/index.php/Terragen_2_Tutorials#360.C2.BA_Panoramas_.2F_SkyBoxes
http://www.planetside.co.uk/wiki/index.php/Main_Page
http://en.wikipedia.org/wiki/Skybox_(video_games)
http://wiki.delphigl.com/index.php/Skybox
http://wiki.delphigl.com/index.php/Skybox
http://www.stromcode.com/2008/03/30/building-an-xna-skybox-with-blender/
http://rbwhitaker.wikidot.com/skyboxes-1
http://wiki.delphigl.com/index.php/Tutorial_Skyboxen
准备好的可免费使用的天空盒(公有领域)
http://rbwhitaker.wikidot.com/texture-library
http://wiki.delphigl.com/index.php/Skydome
http://www.xnamag.de/article.php?aid=40
http://www.flipcode.com/archives/Sky_Domes.shtml
https://wikibooks.cn/wiki/Blender_3D:_Noob_to_Pro/Build_a_skybox
http://en.wikipedia.org/wiki/Cube_mapping
http://www.planetside.co.uk/docs/tg2/first-scene.pdf
http://www.outpt.co.uk/how-to-create-a-terragen-2-skybox/
arie