mypro334 发表于 2022-10-4 21:18

Unreal 灯光照明与烘培

<hr/> 这篇是UE的灯光与烘培的学习笔记,不大全面,有问题请随时指正 这里是b站链接
<hr/>
【主要涵盖的话题】


[*]技术和艺术的讨论
[*]资产和场景的准备
[*]灯光烘培设置
[*]动态照明设置
[*]图像基础的灯光设置
[*]阴影
[*]反射
<hr/>
【一:目标媒介】


[*]考虑项目是否会定义到移动设备,或者是在一些需要高保真的媒体设备使用
[*]每个镜头都是独立的视频项目的编辑方案
[*]对于24FPS,30FPS和60FPS的项目的不同处理的方案
[*]不需要完全实时渲染的项目
[*]如果整个项目都是静态的,那么可以预先烘培
[*]开放世界的灯光无法提前烘培,所以需要light map并使用动态照明处理
[*]考虑硬件的最低规格
<hr/>
【二:Deferred Renderer和Forward Renderer】

Deferred Renderer:


[*]是UE4的默认渲染器
[*]它的工作方式就是储存所有原始数据在Screen Space Buffers(Color,Normal,Depth,...)然后将他们组合到一起成为Final Image
[*]照明灯光一起评估
[*]额外的screen space则会被用在更复杂的后处理效果与照明效果的组合
[*]支持所有的渲染功能
Forward Renderer:


[*]为了VR开发的
[*]所有的lighting和shading都在object draw time进行评估计算
[*]可以做特有的材质优化
[*]更多的抗锯齿操作
<hr/>
【三:如何给一套好的照明准备资产】


[*]确保材质是物理正确的



matRef


常见问题有:


[*]base color太亮或太暗。


[*]金属度为了确认是不是金属最好保持是1或0。


[*]specular保持0到1之间的灰度,而不是颜色。


[*]最黑的常见物是碳(rgb:0.03),最白的是雪(rgb:0.9)。永远不会是纯白或纯黑。


[*]vantablack是世界上最黑的黑(rgb:0.0045, roughness:1)




vantablack


[*]打灯前确保移除自动曝光



deactiveAutoExposure


[*]放置chrome sphere和grey sphere



chromeSphere


保证它是纯反射物

[*]设置一个3.14(pi)的 directional light,并且用color picker 查看灰度



50%Grey

<hr/>
【四:烘培灯光 VS 动态灯光】

Baked Lighting:

优势:


[*]GI
[*]cheap soft shadows,陈本低的阴影
[*]Less GPU demanding,较低的GPU需求
劣势:


[*]slower iteration,迭代变慢
[*]static lighting,是静态的,如果生成更多的资产则新资产不会对照明产生影响
[*]more maps in memory,需要储存空间来放light maps
Dynamic Lighting:

优势:


[*]what u see is what u get,所见及所得
[*]非静态的
劣势:


[*]No GI
[*]GPU demanding,对GPU有要求
<hr/>
【五:常用烘培灯光设置】

基础灯光设置:


[*]Direction Light(Stationary)
[*]Lightmass Baking(GI)
[*]Skydome(static)
什么是light map?


[*]light maps以纹理贴图的形式储存了灯光信息
[*]它是HDR tecture并且储存了灯光方向
[*]它的好处是处理起来很快,阴影柔和,但是如果文件太小则会缺少阴影的细节清晰度。



lightasset2



lightasset


[*]min lightmap resolution将定义UV islands(padding)之间的空间
[*]更小的padding会减少像素的浪费以及在相同的分辨率下得到更好的阴影效果
<hr/>
Lighting Type:


[*]当烘培灯光时,一般只会使用static light(静态光) 或者是 stationary light(固定光)
[*]emit photons:

[*]Directional light
[*]point light
[*]spot light



[*]emit no photon:

[*]sky light


<hr/>
Lightmass Setting:





lightmass


[*]static Lighting Level Scale * Indirect Lighting Quality = 1.0;




lightmass_chart


[*]间接照明质量是最影响时长的
<hr/>

[*]volume light sample scale

[*]降低static lighting level scale会增加volume lighting samples的数量



[*]lightmass Portal

[*]对门窗类型的照明十分有用



[*]lighting Scenarios

[*]只用编辑一个enviroment level
[*]照明方案会以light maps的形式分别储存
[*]一个时间使用一个照明方案(不存在过渡,不能同时拥有两种在一个场景)


<hr/>
【六:常用动态照明设置】

基础灯光设置:


[*]Direction Light(movable)
[*]SKydome(moveable)
[*]Distance Field AO
[*]Screen Space AO
什么是Distance Field:


[*]Distance Field 储存了每个点到最近表面的距离



distanceField



df_setup



dfao


[*]需要避免过多的缩放
[*]很大的物体对于distance field 的支持不理想,需要拆分成较小的部分
【七:图像基础的照明 IBL】

基础灯光设置:


[*]设置场景,确保有一个平面可以投射并接受阴影
[*]有一个back plate(需要制作跟踪)(可以理解为UE里做nuke的事情)
[*]Directional light(moveable)
[*]Skylight with HDRI(moveable)
[*]fake steps shadow



backPlate


[*]当人走向光照位置则激活阴影



IBL

<hr/>
【八:shadow maps,for Dynamic Shadowing】


[*]Depth map,判断存在阴影的部分



depthMap


[*]如果shadow map质量太低会有锯齿
[*]如果shadow map bias太高则会有漏光
[*]使用相机视锥来优化场景,近景给予更多的资源



camFrustum

<hr/>
【九:Directional Light Stationary area shadows:】


[*]激活Lightmass下的:use Area Shadows for Stationary Light



areaShadow

<hr/>
【十:capsule shadows:】





capsuleshadows


[*]使用一个类似资产的外轮廓来创建一个十分柔和的阴影
<hr/>
【十一:Raytraced contact shadows:】


[*]将contact shadow length 设置的很小来获得细节上的阴影
[*]在比例很小的物体上很有用,但是比较耗费资源
<hr/>
【十二:Reflections:】


[*]反射较为资源
[*]使用planer reflection来得到平面的反射(本质是在镜像它),平面的物体适用,但此不适用于有机形状。
本文使用 Zhihu On VSCode 创作并发布
页: [1]
查看完整版本: Unreal 灯光照明与烘培