天空盒与背景
初级 设计师 程序员
**天空盒(Skybox)**是营造空间感和距离感错觉的背景。典型的天空盒背景包括天空、云彩、山脉和其他风景。由于天空盒是预渲染的,因此几乎不占用 GPU 和 CPU 资源。
你可以使用**立方体贴图(cubemap)**或 360° 全景纹理作为天空盒。你还可以用它们来照亮场景。
Note
目前,Stride 不支持天穹(skydome)或局部天空盒。
也可以显示 2D 背景,这在 2D 游戏中通常很有用。
立方体贴图
立方体贴图是一种六面纹理。当这些纹理在场景周围组装成一个立方体时,立方体贴图就能模拟出宽敞的 3D 环境。


目前,Game Studio 无法将图像文件转换为立方体贴图(.dds 文件)。请使用其他应用程序从单独的图像文件创建立方体贴图,例如:
在 Game Studio 中创建立方体贴图
你可以从场景中的某个位置捕获立方体贴图。
在场景编辑器中,将摄像机放置在要捕获立方体贴图的位置。摄像机朝向哪个方向并不重要,只有位置重要。
通常,你应该在场景中心捕获立方体贴图,以获得最佳的全方位视图。
在场景编辑器工具栏中,打开 Lighting options 菜单。

在 Cubemap 下,单击 Generate。
浏览到要保存立方体贴图的磁盘位置,指定名称,然后单击保存。
Tip
我们建议你将立方体贴图保存在项目的 Resources 文件夹中。更多信息请参阅在版本控制中组织文件。
Game Studio 会在你指定的位置创建一个立方体贴图 .dds 文件。
360° 全景纹理
除了使用立方体贴图,你还可以使用 360° 全景纹理作为 3D 背景。
| 360° 全景图 | 游戏中的外观 |
|---|---|
![]() |
![]() |
图片由 Texturify 提供
Note
请记住,后处理效果会影响天空盒的外观。如果它的效果与你的预期不符,请尝试更改后处理效果设置。
将立方体贴图或 360° 全景纹理添加到项目
添加方式与其他颜色纹理相同。
在资产视图中,单击
,选择 Textures > Color texture,然后浏览到该文件。
也可以从 Windows 资源管理器将文件拖放到资产视图中,然后选择 Color texture。

创建天空盒
要创建天空盒,请将立方体贴图或 360° 全景纹理添加到背景组件中。
Stride 默认在项目中包含一个带有背景组件的实体。一个场景中同一时间只能有一个背景处于活动状态。如果有多个背景,Stride 只会加载第一个。
你可以根据需要将背景组件添加到任意数量的实体上。你可能想要包含多个背景,例如,如果你想在运行时切换天空盒。
添加背景实体
在场景视图中,选中要添加组件的实体。
这可以是一个空实体。它在场景中的位置并不重要。
在属性网格(默认位于右侧)中,单击添加组件并选择 Background。

在 Texture 下,选择要用于天空盒的立方体贴图或 360° 全景纹理。

将天空盒用作光源
你可以使用天空盒来照亮场景。Stride 会分析天空盒纹理,并使用基于图像的光照(维基百科)生成光照。更多信息请参阅天空盒光源。
在运行时更换天空盒
以下代码更改背景中的立方体贴图:
public Texture cubemapTexture;
public void ChangeBackgroundParameters()
{
// 从实体获取背景组件
var background = directionalLight.Get<BackgroundComponent>();
// 替换现有背景
background.Texture = cubemapTexture;
// 更改背景强度
background.Intensity = 1.5f;
}
在全景图与立方体贴图之间转换
有多种工具可以在全景图与立方体贴图之间相互转换,包括:
设置 2D 背景
除了使用 3D 天空盒,你还可以将纹理显示为静态背景。这会将纹理显示为一张平面图像,无论摄像机如何移动都保持静止。这在 2D 游戏中通常很有用。
要做到这一点,请在 Background 组件属性中选择 2D background。

如果你在使用立方体贴图时启用此选项,Stride 会将立方体贴图的第一个面作为背景。
使用视频作为天空盒
详情请参阅视频 - 使用视频作为天空盒。

