Lightmap 烘培注意事项

UVs

通常烘培 Lightmap 需要用到 UV 2 通道作为采样 Lightmap 的坐标。如果没有 UV 2 则将使用 UV 1,但使用 UV 1 通常得到不正确的光照信息。

让 Lightmap 使用 UV 2

为了得到正确的光照信息,需要将采样 lightmap 的坐标展开到 UV 2 中。操作方式有两种:

  • 手动在3D软件中展开到 UV 2 中。需要注意几点是,坐标必须在 [0,1] 之间,UV 不要重叠,碎片之间要留足间隙,这也是使用 UV 1 导致不正确的原因
  • 使用 Unity 生成 UV 2,在 Import 面板中勾选 ‘Generate Lightmap Uvs’。

下面两图展示了未使用 UV 2 (左图6个面的 UV 重叠在一起) 与 使用 UV 2 之后的区别,在 Lightling window 中查看 UV 信息:
在这里插入图片描述

烘培后提示 Overlapping Uvs 问题

导致此问题基本上是因为 UV 碎片之间的 Padding 过小或 Lightmap 的分辨率又不够,导致采样时有重叠。烘培后提示信息如下:
在这里插入图片描述
通过 UV Overlap 视图可以看到在 Cube 的边缘产生了 overlap (红色),直接看游戏视图也会发现边缘有明显的 artefact 现象。
在这里插入图片描述
解决方法通常是调整 ‘Generate Lightmap UVs’ 的高级设置,适当增加 Pack Margin 大小,以及调整 Lightmap Resolution。这两者是产生该问题最大的原因,同时也可以考虑调整 Lightmap Padding 或取消 Compress Lightmaps。
在这里插入图片描述
调整后并重新渲染,直到 ‘Overlapping’ 的提示消失。这时查看 ‘Baked UV Charts’ 视图可以看到 UV 的间隙比之前更大,同时物体的光照也正常了。

如何加快烘培时间

官方视频 An Introduction to Lightmapping in Unity 与文档 Reducing precompute times from hours to minutes 中有详细介绍。主要几个优化办法总结如下:

  • Lightmap 烘培中太多的 Charts 会消耗大量的计算时间。想要减少烘培时间,一个关键就是减少 Charts 数量。(一个 Chart 相当于光照贴图中一个对象所占的图块,如上图中 Cube 占了6各块)
  • 将不重要的对象在 Lightmap 中缩放,避免浪费过多的 texels。
    • 表面变化少的对象,如大面积的墙体、地板。
    • 只接受间接光的对象。
    • 场景中’瘦’的对象。
  • 将一些小的、瘦的、光照要求不高的对象从 Static 对象中排除掉,并使用 Light Probe 进行光照。如,栅栏、线、管子、树等。
  • 尝试使用 Lightmap Parameters 对场景中物体的光照分辨率及保真度进行微调,减少不太重要对象的光照计算消耗。
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值