keywords: Indirect Lighting Cache, Lightmass Importance Volume, Lightmass Volumes, 间接光照缓存

某台湾网站上的文章,比油管上讲Indirect Lighting的教程更直观易懂:
https://home.gamer.com.tw/creationDetail.php?sn=3315244

Indirect Lighting Cache(间接光照缓存)

官方文档:
Lightmass Importance Volume Indirect Lighting Cache

Indirect Lighting Cache是类似于Unity的LightProbe,间接光照就是当光线直射到一个物体上后,光线反弹后所得到的颜色,反弹后的光线还会再去影响到周边的物体,如同白色的桌面上摆着红色的物体,物体周围会有些微的红色。

而Indirect Lighting Cache还有一种功能就是提供动态物件能获得间接光的资讯,例如像是当角色靠近一面红色墙壁时,会有些微的红光反映在角色身上。

在UE4里面建构光照后会自动产生Indirect Lighting Cache,可以从编辑画面的Show > Visualize > volume light sample显示当前Indirect Lighting Cache的情形。

显示间接光照缓存

没有间接光照缓存的情况,角色不会受到静态灯光的颜色影响

有间接光照缓存时,角色即会受到静态灯光影响

可以从上图看到场景中那些小正方形就是间接光照缓存的颜色,周围的物件会受到靠近的间接光照颜色影响。

Lightmass Importance Volume(重要光照范围)

官方文档
http://api.unrealengine.com/INT/Engine/Rendering/LightingAndShadows/Lightmass/Basics/index.html

在建构光照贴图时,若场景中没有给予Lightmass Importance Volume,会对整个场景做间接光照的采样,产生Indirect Lighting Cache,这对大型游戏场景是相当的浪费,像是游戏角色到不了的中、远景不需要产生Indirect Lighting Cache,这时候就可以在场景中置入Lightmass Importance Volume,指定特定区域内才会产生Indirect Lighting Cache,节省不少建构光照的时间。

Modes视窗中的Volumes页签找到Lightmass Importance Volume

拖曳至场景后,调整Scale直到包覆特定区域即可

建构光照后会在Lightmass Importance Volume区域内看到产生的间接光照缓存

Lightmass Character Indirect Detail Volumes(角色细节间接光范围 )

在上述的Lightmass Importance Volume所建构出来的间接光会发现大多都只有在模型上才有,无法在浮空的地方产生间接光缓存 (像是靠近天花板的地方),主要原因是Lightmass Importance Volume是提供使用者快速建构重要范围,没有办法处理到细节的部份,因此在这种情况下会产生这种问题:

当角色跳跃至天花板附近时,受光会变亮

主因是因为靠近天花板那区没有产生间接光照缓存

这时候就需要补充细节的间接光,就必须使用Lightmass Character Indirect Detail Volumes,一样在Modes里的Volumes页签中找Lightmass Character Indirect Detail Volumes,拖曳至场景后放在需要补足间接光的地方,再建构光照贴图后即可。

Modes视窗中的Volumes页签找到Lightmass Character Indirect Detail Volumes

包覆需要间接光细节的区域

建构光照后就会在该区域生成间接光照缓存

增加了间接光后,靠近天花板会变亮的问题就解决了

Lightmass Character Indirect Detail Volumes通常会应用在垂直的地形上,像是升降梯、电梯那种,只要角色到的了的地方但却没有间接光缓存时就可以使用!


非淡泊无以明志, 非宁静无以致远。----诸葛亮《诫子书》