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]