3D天空盒
添加一个3D天空盒可以成为地图视觉处理的一个强大补充。3D天空盒是由地图作者在地图的游戏部分边界之外构建的额外区域。加载地图时,起源会放大3D天空盒区域中的对象,并将它们放置在天空盒 和玩家之间的当前地图边界之外。由于(默认)1:16的比例,这可以让你的地图呈现出更广阔的世界而无需损失太多性能。3D天空盒是非交互的——玩家和其他实体不能移动到3D天空盒空间。
3D天空盒可以做到与正常的几何体几乎无法分辨。正常地图几何体和3D天空盒的无缝过渡是完全可能的,并且应用在包括反恐精英:起源 在内的很多官方起源游戏的地图上。
- Image:3dSkyboxProb.png|见此处]]?] . [todo tested in
优点
标准天空盒是简单的2D图像,通过映射到一个立方体以便他们围绕整个地图。3D天空盒是完整的3D几何体,并且在玩家在地图中移动时具有合适的视差。由于它们是实时渲染的,它们与显卡的分辨率一同缩放,并且还支持2D天空盒所不支持的实时着色器效果。
使用3D天空盒的主要好处是它允许地图作者使地图看起来比标准的世界几何体大得多。没有3D天空盒的最大的地图是每边32768个单位。使用3D天空盒,地图可以扩展到16倍。
这种尺寸的地图能够存在是因为3D天空盒是在Hammer编辑器中以标准地图的1/16的比例创建的。在运行时,引擎会将其缩回以匹配地图其余部分的比例。这不仅节省了编辑器视图中的空间,而且编译和渲染也更便宜。
由于其比例,3D天空盒的光照贴图和纹理分辨率要低得多。这使得3D天空盒几何体比标准的世界几何体更便宜。
如果创建与主地图相同的低细节天空盒,则可以使用3D天空盒克服绘制距离限制。想要这样做的mod团队必须开发代码来解决地图版本之间的转换。
基本特征
3D天空盒具有以下特点:
- 在Hammer编辑器中(默认)以1:16的比例构建,然后在引擎中以16倍的尺寸渲染以匹配世界几何体。
- 支持具有着色效果的材质,如法线贴图、水、环境贴图、代理等。
- 非互动——玩家和其他世界实体不能进入3D天空盒。3D天空盒只是地图范围的视觉扩展。
- 可以用固体、位移、静态和动态道具、灯光、固体实体和点实体(如env_sprite )来构造。
- 放置在3D天空盒中的任何模型必须以1:16的比例制作。标准模型(道具 )不能在3D天空盒中正确缩放。必须使用特殊的1:16比例的版本。对于半条命2 ,这些道具可以在
models/props_skybox
目录中找到。 - 不应该包含info_player_start ,NPC或怪物。
- 由于它们创建的比例,具有较低的光照贴图和纹理分辨率。
- 必须有自己的光源,尽管非天空盒部分的light_environment 也将用于3D天空盒的照明。
- 使用sky_camera 实体来控制它们与非天空盒世界几何体的对齐方式。
- 3D天空盒有自己的雾气参数,可以在sky_camera 实体中调节。
- 3D天空盒中的几何体不像其他几何体一样被遮挡或剔除。将大量细节化的固体或模型添加到3D天空盒,尤其是使用半透明材质,会严重影响性能。
- 地图必须有一个
light_environment
,否则3D天空盒中的模型将被错误地照亮。如果light_environment
放在地图的非天空盒部分,则不需要放在3D天空盒中。
3D天空盒的制作
- 关于sky_camera 实体的注意事项:点实体不会缩小。
创建与当前地图匹配或「对接」的3D天空盒的最有效方法是使用地图中主要部分的一些几何体。创建主地图的几何体后,按照以下步骤操作:
- 在世界原点(坐标0,0,0)处添加一个sky_camera 实体,这是地图网格的中心。sky_camera 是渲染器用来将3D天空盒与地图的主要部分对齐的参考点。换句话说,它作为一个标记,告诉渲染器3D天空盒的源点和世界的源点是如何相互关联的。您可以将此过程视为与选择所有3D天空盒几何体相似,然后将该选择中的sky_camera 实体与世界原点(0,0,0)对齐。几何体被转换回到世界上的那个位置。这是天空盒在引擎中呈现时使用的相同概念。
- 选择地图的一些不同的部分,你可以为3D天空盒中的比例和位置使用红线。为此目的选择的共同元素则是一些较大的结构,以及定义地图边缘的墙壁、悬崖、丘陵等。确保你创建的sky_camera 也被选中。注意:重要的是不要选择任何模型实体,只有笔刷。模型不能用作参考几何体,因为模型不能在Hammer编辑器中缩小。
- 从编辑(Edit)菜单中选择复制(Copy),或点击CTRL-C。
- 从编辑(Edit)菜单中选择选择性粘贴(Paste Special)。将要复制的份数(Number of copies)设置为1,将所有其他值设置为0。点击确定(OK)。这将出现你选择的几何体的副本。
- 如果尚未打开,则在工具栏中打开缩放纹理锁定(Scaling Texture Lock)。它的图标类似于<tl>。这将随着几何体缩小纹理。
- 保持几何体被选中,从工具(Tools)菜单中选择变换(Transform)。选择缩放(Scale)旁边的单选按钮。为X,Y和Z键入一个.0625的值。这是相当于1:16的十进制数——3D天空盒的比例。点击确定(OK)。注意:如果你希望几何体上的纹理相应地缩放,请确保已启用缩放纹理锁定。
- 你现在拥有1:16比例版本的参考几何体。现在拖动(移动)到地图的另一个你希望建立你的3D天空盒的地方。只要没有触及主地图的几何体区域的任何部分,它在哪里都没关系。
- 删除正常的世界地图区域的sky_camera 实体。重要:应该只保留3D天空盒中的sky_camera 实体在地图中。在L4D2(或者是其他的起源游戏)中,忘记这个步骤(在地图上有多个sky_camera)会导致所有导航区域都被阻塞。
- 在参考几何体周围构建3D天空盒几何体,并将其用作指导。你可以构建无缝接触参考几何体的天空盒几何体。你可以使用笔刷和位移几何体。模型也可以放置,但由于3D天空盒的尺寸是1:16,任何模型也必须是1:16的比例。模型
hl2\models\props_skybox\coast01.mdl
是1:16比例的示例模型。尝试将3D摄像机放置在玩家的高度的附近。这会给你一个很好的想法:当3D天空盒在引擎中呈现时,它看起来会是怎样的。 - 在参考几何体周围添加一个空心立方体笔刷,并为其应用
tools\toolsskybox
材质。标准的2D立方体天空盒将出现在这些表面上。3D天空盒区域必须用这些笔刷密封。 - 完成后,删除或隐藏除sky_camera 实体以外的所有参考几何体。你可能会发现最好将参考几何体添加到其自己的可见组中,以便可以打开和关闭或重新放置参考几何体。确保在保存和编译地图之前将其关闭,否则会将其编译到3D天空盒中。
- 如果你在3D天空盒中有非参考几何体的固体,把它们全都转化为func_detail。注意:唯一的例外是置换表层。由于显而易见的原因,不要把置换表层转化为实体。
- 你的原始地图仍然需要
tools\toolsskybox
材质,无论你是否想要看到天空;但现在将显示3D天空盒以及2D天空盒(这是以前的操作)。 - 如果你希望地图的一部分仅显示2D天空盒而不显示3D天空盒几何体,请使用仅绘制2D天空盒的tools\toolsskybox2d贴图。这个纹理没有限制,它可以和普通的天空盒纹理一起使用,没有任何问题。当你只想从中看到天空,就像在一个非常高的建筑里一样时,这个功能非常有用。
测试
如果你正确密封了3D天空盒,并且地图没有泄漏 ,现在可以编译地图并在引擎中查看新的3D天空盒。
示例
- 有关3D天空盒的示例,请参阅
sdk_content\hl2\mapsrc\sdk_3d_skybox.vmf
。 - 用3D天空盒扩展绘制距离的一个例子(有注释)
- 3D天空盒视频教程
- 关于3D天空盒的水/世界的半条命2示例VMF
用3DS Max制作3D天空盒
如果你使用Wall Worm Model Tools 在3DS Max 内制作你的地图,你也可以用比传统Hammer方法更简单的方式创建3D天空盒。 Wall Worm可以让你在地图的比例下构建你的3D天空盒,免除了缩小天空盒的需要。
要做到这一点,只需使用Wall Worm附带的Anvil工具中的标签功能「标记」天空盒几何体即可。
参见
环境相关的文章 | |
---|---|
天空和环境地图 | 天空盒 (2D) • 天空盒 (3D) • HDR 天空 • 带有 Terragen 的天空盒 • 带有 Terragen 的 Skybox - 高级 • 天空列表 |
地形和置换表层制作 | 置换表层 • Creating Holes in Displacements|在置换表层中打孔 • 数字高程模型 • 使用 Worldmachine 创建自定义地形 |
环境相关的文章 | |
---|---|
天空和环境地图 | 天空盒 (2D) • 天空盒 (3D) • HDR 天空 • 带有 Terragen 的天空盒 • 带有 Terragen 的 Skybox - 高级 • 天空列表 |
地形和置换表层制作 | 置换表层 • Creating Holes in Displacements|在置换表层中打孔 • 数字高程模型 • 使用 Worldmachine 创建自定义地形 |