BlueRoseNote/03-UnrealEngine/Rendering/Lighting/灯光知识与流程学习总结(一)——建立初始场景与材质检查.md

132 lines
6.9 KiB
Markdown
Raw Normal View History

2023-06-29 11:55:02 +08:00
## 前言
本文是对于《Daedalus51的灯光学院系列视频》、《Lighting with Unreal Engine Masterclass视频》、《Ue4照明技术引导系列视频》的总结。相关网址与链接可以参看前一篇文章。
撰写本文时《Daedalus51的灯光学院系列视频》只看完第一章所以本文后续还会更改请各位读者注意。另外因为本人技术能力有限如有错误还请各位指正。
### 三个视频的观看建议
>Lighting with Unreal Engine Masterclass
从简到深地讲解了静态光照与动态光照特性对比、2种光照方案的技术点以及Epic的基本打光流程。缺点是没有很好的讲解具体的打光思路以及流程。
>Ue4照明技术引导系列视频
该系列一共2个视频主要介绍了光照技术中的各种细节与参数。是功能与参数讲解向视频。PS.个人感觉配套的Wiki比视频有用多了Wiki中讲解若干阴影问题的解决方法。本视频已经被搬运到B站中(机翻)英双字幕。https://www.bilibili.com/video/av59548243/
>Daedalus51的灯光学院系列视频
一共19个视频看完需要1~2个星期。一共4个章节每个章节都是一个案例。通过这个视频你可以大致了解到Ue4的打光流程、每步操作的意义以及部分功能背后技术的原理。让你了解如何判断场景出了哪些问题出现什么问题该如何解决什么时候该做什么。
建议的观看顺序为《Lighting with Unreal Engine Masterclass》=》
《Ue4照明技术引导系列视频》=》《Daedalus51的灯光学院系列视频》
## 灯光类型对比
以下几点都是直接翻译视频中的观点,这里我总结一下:
>动态光照的主要优点是所有效果都是实时的对于效果的迭代会非常快。主要缺点是没有GI。
>静态光照的主要优点有GI但因为效果不是实时的迭代的效率相当会相对较低。
静态光照一般会使用Stationary类型的灯光其中的Dynamic Shadow Distance参数是切换动态与静态阴影开关当为0是所有阴影都将是烘焙的当数值较大时(5000)所有近距离阴影都将是动态的。Daedalus51推荐的数值为3000~8000之间。在这个数值的距离观察时会切换为静态阴影
### 静态烘焙灯光优缺点
优点:
- 拥有GI效果
- 消耗较少的软阴影效果
- 低GPU性能消耗较小
缺点:
- 迭代效率低
- 光照效果是静止的
- 当地图较大时,会占用大量显存。
### 动态实时灯光优缺点
优点:
- 所见即所得
- 光照效果是动态的
缺点:
- 没有GI效果
- GPU性能消耗较大
### Static
烘焙直接光照与间接光照(GI)
GPU性能消耗最少
### Stationary
烘焙间接光照
高质量的直接关照与阴影(动态)
高质量与中等性能消耗
四个及以上的灯光重叠限制多出的灯会使用static方式计算
### Movable
动态光照与阴影
GPU性能消耗最多
没有间接光照
## 前置流程
以下两点主要参考于Lighting with Unreal Engine Masterclass视频部分来自于Daedalus51的视频。
### 实现没有干扰的默认光照场景
使用初始模板建立的场景。
#### 关闭后处理空间中干扰项
以下操作都在Post Process Volume中。用于去除对场景亮度的干扰。
##### 禁用自动曝光
视频中的操作是在后处理空间中将最低亮度与最高亮度设为1。
目前版本已经使用物理灯光所以第一条应该改为将Lens-Exposure
中的Min Ev100与Max Ev100设为0。
##### 禁用SSAO以及SSR空间反射
将ScreenSpaceReflection中的Intensity设为0。将Ambient Occlusion的Intensity设为0。反射球可以不用删掉()。
##### 保持默认Tone Mapping
确定Tonemapper新版本为Film中值为默认值。
##### 关闭Vignetting与Bloom效果
将Lens-Bloom中的Intensity设为0。将Lens-Image Effect中Vignette Intensity设为0。
##### 杂项
后处理的GI选项只对LightMass烘焙过的GI有效。、
不建议使用后处理的AO中的Cubemap Texture已经被天光代替
#### 确认天光与方向光为默认数值
天光亮度为1
方向光亮度为3.141593(π)
#### 设置测试用球(与色卡)
视频使用了Chrome球(BaseColor 1、Metallic 1、 Roughness 0)与Gray球 50%灰(BaseColor 0.18(Linear)、Roughness 1、Metallic 0)进行测试。使用亮度为3.141593(Pi)的方向光此时灰球的亮度为0.5。使用Color Picker、或者截图使用Photoshop查看
但其实引擎已经预制了颜色校准工具只需要在View Options中勾选Show Engine Content之后搜索ColorCalibrator将SM_ColorCalibrator拖到场景中即可。
### 确定你的材质是物理正确的
在将模型导入并赋予材质后检查场景:
《Lighting with Unreal Engine Masterclass》说
几个常见的错误:
BaseColor太暗或者太亮
Metallic应该为0或者1。黑色或者白色Mask
Specular应该为0~1范围的浮点数。不应该为颜色值。它会导致反射亮度不一致
常见材质的BaseColor数值都可以网上查询到我记得《全局光照技术》中有说。世界中没有物体是纯白、纯黑的即RGB为0或者1
PS.关于“Metallic应该为0或者1”演讲者的意思是纯材质排除混合材质情况。
![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Lighting/PbrDiffuse.png)
#### 关于BaseColor
Daedalus51提出场景中的BaseColor应该要较为平缓亮度、对比度与饱和度别太高这一点也在在Ue4的LightMass文档中的“使用LightMass获取最佳质量”章节中有提到。
特别是饱和度饱和度如果过高会让人感觉画面奇怪。1.5章节开头就在调整贴图的饱和度与亮度。
检查的方法是切换到BaseColor查看模式截图再使用Photoshop的Histogram查看颜色分布。Daedalus51使用的方法是使用PS对截图使用平均模糊滤镜之后观察图片的各个值。
但从视频中可以看出,这个步骤更多的是靠经验,所以这里还是建议各位仔细看下对应视频。
##### 在Ue4中修改贴图
一种简单修复方法就是打开TextureAsset直接修改里面的饱和度、亮度、对比度等选项。但是作者还是建议使用Photoshop修改源文件再更新Asset
## 结语
在下一篇文章中我会总结各个步骤的重要细节以及各个功能所应用的场景。但是文章只能记录操作步骤与流程不能记录使用经验所以本人依然推荐想深入学习光照的人去看一下Daedalus51的视频。
#### Daedalus51视频中的场景
第一章节:
户外傍晚:
使用纯动态光照
距离场AOSSAO好像关闭了
CubeMap天光并且自定义下半球颜色
其他为后处理
户外早晨:
使用静态光照Stationary的动态阴影不算的话
CubeMap天光并且自定义下半球颜色
第二章节:
洞穴场景(可以看成是室内)。