Table of Contents

天空盒光源

初级 设计师 程序员

**天空盒光源(Skybox light)**是由天空盒发出的环境光。Stride 会分析天空盒纹理,并使用基于图像的光照(维基百科)生成光照。

media/SkyboxLightOverview.png

天空盒光源适用于能看到天空盒的室外场景。对于室内场景,它们的作用较小,例如在只能通过窗户看到天空盒的房间中;由于天空盒光源仍然会照亮整个房间,这会产生不自然的效果。

天空盒如何照亮场景

这些图片展示了环境光和天空盒光照在两个纯漫反射材质上的差异:

环境光照 天空盒光照
环境光照 天空盒光照

这些图片展示了天空盒光照对具有不同金属度和光泽度属性的材质的影响:

塑料材质 金属 100% 光泽度 50% 金属 100% 光泽度 100%
塑料材质 金属 100% 光泽 50% 金属 100% 光泽 100%

请注意天空盒纹理的颜色是如何被反射的。

设置天空盒光源

要将天空盒用作光源,你需要先添加一个天空盒资产,然后在光源组件中选择它。

  1. 在资产视图中,单击 添加资产

  2. 选择 Miscellaneous > Skybox。

    选择资产类型

    选择资产窗口会打开。

  3. 从项目资产中选择一个天空盒纹理,然后单击确定。

    选择纹理

    Game Studio 会使用你指定的纹理添加天空盒资产。

  4. 选中要作为天空盒光源的实体。

  5. 在属性网格(默认位于右侧)中,单击添加组件并选择 Light。

    背景组件属性

  6. 在 Light 组件属性的 Light 下,选择 Skybox。

    光源组件属性

  7. 单击 手形图标(选择资产):

    未选择天空盒资产

  8. 选择要用作光源的天空盒资产,然后单击确定。

    选择资产

光源组件会使用天空盒资产来照亮场景。

天空盒资产属性

当你将天空盒用作光源时,Stride 会同时以压缩形式(球谐函数(维基百科))和纹理形式使用它,以照亮不同种类的材质。你可以在天空盒资产属性中控制两者的细节程度。

天空盒光照属性

属性 说明
Texture 用作天空盒的纹理(如立方体贴图或全景纹理)
Specular Only 仅将天空盒用于高光光照
Diffuse SH order 用于漫反射光照(暗淡材质)的压缩天空盒的细节级别。Order5 比 Order3 更详细。
Specular Cubemap Size 用于高光光照的纹理大小。更大的纹理会包含更多细节。

天空盒光源属性

media/SkyboxLightProperties.png

属性 说明
Intensity 光源强度
Culling Mask 哪些实体组受该光源影响。默认情况下,所有组都受影响

示例代码

以下代码更换天空盒光源及其强度:

public Skybox skybox;
public void ChangeSkyboxParameters()
{
    // 从实体获取光源组件
	var light = Entity.Get<LightComponent>();

	// 从光源组件获取天空盒光源设置
	var skyboxLight = light.Type as LightSkybox;

	// 替换现有天空盒
	skyboxLight.Skybox = skybox;

	// 更改天空盒光源强度
	light.Intensity = 1.5f;
}

另请参阅