跳到主要内容

烘焙光照贴图

简介

烘焙光照贴图也是一种为场景添加间接光照(也叫全烘焙光照)的工作流程。与 使用 全局光照探针(GIProbe) 的方法不同,烘焙光照贴图在低端PC和移动设备上运行良好,因为在运行时几乎不消耗资源。与 全局光照探针(GIProbe) 的另一个不同点是,烘焙光照贴图还能够用来保存直接光照,可以进一步提升性能。

在IdeaXR中烘焙是通过BakedLightmap节点实现的。

烘焙光照贴图与 全局光照探针(GIProbe) 不同,是完全静态的,一旦被烘焙就完全不能被修改。它也不能为场景提供反射,所以如果要达到较好的画质,在室内场景(或者是使用 Sky 的室外场景)中就需要和 反射探针 搭配使用。

因为是烘焙出来的,所以在光线渗透方面的问题就比 全局光照探针(GIProbe) 少很多,并且间接光照也会看上去更漂亮。烘焙光照贴图的缺点是烘焙所需的时间比 全局光照探针(GIProbe) 长很多,全局光照探针(GIProbe) 几秒钟就能搞定的烘焙,换成烘焙光照贴图就可能至少得花上几分钟。这会严重拖慢迭代速度,所以推荐只在确实有查看光照变化的需求时进行光照贴图的烘焙。

烘焙是将场景中的实时光效果转化为一张静态的烘焙贴图的过程,用于减少实时光的数量,节约性能。

视觉比较

以下是 烘焙光照贴图(BakedLightmap) 和 全局光照探针(GIProbe) 的一些显示效果比较。可以看到光照贴图更精确,但由于使用的是展开后的纹理,所以过渡以及分辨率可能就没有那么理想。全局光照探针(GIProbe) 看上去没有那么精确(因为是近似估算),但总体上更平滑。

Docusaurus Plushie

烘焙流程

设置

首先,关于IdeaXR中的烘焙节点,在使用前,烘焙的对象需要 UV2 图层和纹理大小。UV2 图层是一组辅助纹理坐标,可确保对象中的任何面在 UV 贴图中都有自己的位置。面与面之间不得共享纹理中的像素。

有两种方法可以确保您的对象具有唯一的 UV2 层和纹理大小,

导入模型时在光线烘焙一栏中选择

Docusaurus Plushie

选择想要参与烘焙的mesh手动展开

Docusaurus Plushie

设置场景

首先,需要在场景中添加一个 BakedLightmap 节点。添加后,场景中的所有节点(和子节点)就都可以进行光照烘焙了,甚至实例化的场景也可以。

Docusaurus Plushie

烘焙器支持同一子场景存在多个实例,它们会有各自独立的光照贴图(前提是你得遵守之前提过的关于缩放的规则):

配置边界

就像使用 GIProbe 一样, 用盒子范围覆盖场景:

Docusaurus Plushie

设置网格

如果需要让 网格(MeshInstance) 节点参与烘焙,需要启用 在烘焙光照中参与计算 属性。

Docusaurus Plushie

在场景导入时自动生成光照贴图时, 会自动启用此功能.

设置灯光

在灯光的属性中选择 烘焙模式

Docusaurus Plushie

  • 禁用: 烘焙光照贴图时 忽略灯光。注意烘焙时隐藏灯光是无效的,必须在这里设置禁用才能达到隐藏灯光节点的效果。
  • Indirect(间接): 这是默认的模式,是性能与实时友好性的折中选择。只会烘焙间接光照。直接灯光和阴影仍旧是实时的,与不使用 BakedLightmap 时一致。
  • 全部: 间接和直接光照都会被烘焙。因为静态表面可以完全跳过光照和阴影的计算,所以这个模式可以提供最佳的性能,并且实现不随距离衰减的平滑的阴影。实时灯光不会再影响烘焙的表面,但仍然可以影响动态的对象。

烘焙

开始烘焙只需在选中 BakedLightmap 节点后点击上方的 烘焙光照贴图 按钮:

Docusaurus Plushie

在烘焙光照贴图节点中可调整烘焙的质量等参数

Docusaurus Plushie

如果需要更好的烘焙质量,还可以在项目设置→渲染→CPU光照烘焙器中提高光线数量

Docusaurus Plushie

注意事项

展开UV2

现版本手动展开UV2会出现模型材质丢失的问题,最好在模型导入时就勾选”启用并为光照贴图展开第二个UV层“。如果必须手动展开,需要在展开后再手动为Mesh添加一遍材质。

光照

即使光照不可见,如果烘焙模式不是“禁用”,光照也会参与到烘焙中,注意检查以防不需要的光照参与到烘焙中。

烘焙的问题

烘焙光照贴图是完全静态的,要修改烘焙效果只能重新烘焙; 烘焙不能为场景提供反射效果,所以需要和反射探针搭配使用才能实现较好的效果。

使用场景

烘焙一般适用于静态场景,对于动态的物体可以结合性能情况考虑使用实时光。

参数调整

一般来说,IdeaXR的烘焙效果相比于实时光效果还是有差距,所以烘焙完之后还需要根据情况调整场景mesh的材质参数以达到比较好的效果,也可以适当修改烘焙节点的”能量”属性。更高的烘焙质量也会带来更大的内存占用,所以也要结合电脑的实际情况进行调整。

烘焙的消耗

引擎现有的烘焙机制是通过CPU计算,烘焙期间CPU会被占满,无法进行其他操作,建议在最后进行烘焙; 以实验室项目为例,用最高质量烘焙房间场景所需的时间为45分钟左右; 烘焙期间可能会出现黑屏等现象,可以先等待5-10分钟;

使用技巧

如何确定场景物体全部参与烘焙

在世界环境节点中(如果没有则新建一个)将天空光和环境光能量调为0,然后隐藏反射探针和不参与烘焙的灯光

Docusaurus Plushie

这时参与烘焙的节点应该变为全黑,还亮着则说明没有参与烘焙:

Docusaurus Plushie

一些参数调整

一般先用低质量烘焙查看整体效果,没有问题后用最高质量烘焙最终的结果,以下为一些需要注意的参数:

(1)项目设置里的究极质量光照数量一般调为2048(默认1024):

Docusaurus Plushie

(2)烘焙节点属性中的”环境“→”模式“一般勾选为”场景“,Min Light调整为稍暗的灰色

Docusaurus Plushie

(3)其余参数调至上限即可