除了实时计算的直接光源,我们一般还要提前离线烘焙光照作为环境光照来实时采样,这种方式可以有效地捕捉环境的全局光照和氛围,使物体更好地融入其环境。
属性 | 作用 |
---|---|
Source | 指定漫反射来源是 Background 还是 Solid Color ,默认来源 Background 。Background 表示使用烘焙得到的球谐参数作为漫反射颜色; Solid Color 表示使用纯色作为漫反射颜色 |
Intensity | 漫反射强度 |
属性 | 作用 |
---|---|
Source | 指定镜面反射来源是 Background 还是 Custom ,默认来源 Background 。Background 表示使用根据背景烘焙得到的预滤波环境贴图作为镜面反射; Custom 表示可以单独烘焙一张 HDR 贴图作为环境反射。 |
Intensity | 镜面反射强度 |
通过烘焙教程拿到烘焙产物的 url 后,通过引擎的 EnvLoader 进行加载解析:
engine.resourceManager
.load<AmbientLight>({
type: AssetType.Env,
url: "https://gw.alipayobjects.com/os/bmw-prod/89c54544-1184-45a1-b0f5-c0b17e5c3e68.bin"
})
.then((ambientLight) => {
scene.ambientLight = ambientLight;
// 可以调节漫反射、镜面反射强度,默认为1
// ambientLight.diffuseIntensity = 1;
// ambientLight.specularIntensity = 1;
// 预滤波环境贴图(ambientLight.specularTexture)还可以作为场景的背景
// skyMaterial.texture = ambientLight.specularTexture;
// 由于烘焙产物的颜色编码方式是 RGBM,因此作为背景时需要将解码设置为 textureDecodeRGBM
// skyMaterial.textureDecodeRGBM = true;
});