背景

天空

天空是摄像机在渲染之前绘制的一种背景类型。此类型的背景对于 3D 游戏和应用程序非常有用,因为它可以提供深度感,使环境看上去比实际大小大得多。天空本身可以包含任何对象(例如云、山脉、建筑物和其他无法触及的对象)以营造遥远三维环境的感觉。Galacean 还可以将天空用于在场景中产生真实的环境光照,详情可参考烘焙

天空模式下,开发者可以自行设置材质网格,通过 Galacean 内置的天空盒程序化天空可以一键设置期望的天空效果。

设置天空盒

在编辑器中,只需按照如下步骤即可为背景设置天空盒:

1. 创建天空盒纹理

可以在 Poly HavenBimAnt HDRI 下载免费的 HDR 贴图

天空盒纹理就是一张立方纹理,首先在准备好 HDR 后,依照路径 资产面板 -> 右键上传 -> 选择 TextureCube(.hdr) -> 选择对应 HDR 贴图 -> 立方纹理资产创建完毕 操作即可。

image.png

2. 创建天空盒材质

创建完立方纹理资产后,依照路径 资产面板 -> 右键创建 -> 选择 Material -> 选中生成的资产 -> 检查器面板 -> 点击 Base 栏的 Shader 属性 -> 选择 Sky Box -> 点击 Base 栏的 HDR -> 选择第一步创建的立方纹理 创建天空盒材质。

image.png

3. 设置天空盒

最后只需依照路径 层级面板 -> 选中 Scene -> 检查器面板 -> Background 栏 -> Mode 设置 Sky -> Material 选择第二步创建的材质 -> Mesh 设置内置的 Cuboid 可以看到场景的背景变成了天空盒。

image.png

代码设置天空盒

// 创建天空盒纹理
const textureCube = await engine.resourceManager.load<TextureCube>({
  urls: [
    "px - right 图片 url",
    "nx - left 图片 url",
    "py - top 图片 url",
    "ny - bottom 图片 url",
    "pz - front 图片 url",
    "nz - back 图片 url",
  ],
  type: AssetType.TextureCube,
});
// 创建天空盒材质
const skyMaterial = new SkyBoxMaterial(engine);
skyMaterial.texture = textureCube;
// 设置天空盒
const background = scene.background;
background.mode = BackgroundMode.Sky;
background.sky.material = skyMaterial;
background.sky.mesh = PrimitiveMesh.createCuboid(engine, 2, 2, 2);

设置程序化天空

程序化天空是编辑器在 3D 项目中的默认背景,您也可以依照路径 层级面板 -> 选中 Scene -> 检查器面板 -> Background 栏 -> Mode 设置 Sky -> Material 选择内置的 SkyMat 材质 -> Mesh 设置内置的 Sphere

image.png

代码设置程序化天空

// 创建大气散射材质
const skyMaterial = new SkyProceduralMaterial(engine);
// 设置天空盒
const background = scene.background;
background.mode = BackgroundMode.Sky;
background.sky.material = skyMaterial;
background.sky.mesh = PrimitiveMesh.createSphere(engine);

属性

在大气散射材质的 检查器面板 可以看到很多可调整的属性:

image-4

内置的大气散射材质无法随意调整属性,开发者可以自行创建并调整。

属性名称解释
exposure天空的曝光,值越大天空越亮。
sunMode天空中生成太阳所使用的方法,包含 NoneSimpleHighQuality,其中 None 不生成太阳,Simple 生成简单的太阳,而 HighQuality 生成可定义外观的太阳。
sunSize太阳的尺寸,值越大太阳越大。
sunSizeConvergence太阳的大小收敛,当且仅当太阳的生成模式为 HighQuality 时有效
atmosphereThickness大气的密度,更高的密度会吸收更多的光线
skyTint天空的颜色
groundTint地面的颜色
最后更新于 七月 11, 2024

这篇文档对您有帮助吗?