Init
This commit is contained in:
206
03-UnrealEngine/Rendering/Lighting/Ue4照明技术引导视频笔记.md
Normal file
206
03-UnrealEngine/Rendering/Lighting/Ue4照明技术引导视频笔记.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# Ue4照明技术引导视频笔记(静态光照部分)
|
||||
https://www.youtube.com/watch?v=jCsrWzt9F28&list=WL&index=7&t=0s
|
||||
https://forums.unrealengine.com/unreal-engine/events/107078-training-livestream-lighting-techniques-and-guides-jan-24-live-from-epic-hq?134388=
|
||||
https://cdn2.unrealengine.com/CommunityTab%2FEnglish%2F2017%2FJan+23%2FLiveStream_Lighting-11f85d1762b463154b5f53f7468e135f65955bed.zip
|
||||
https://wiki.unrealengine.com/LightingTroubleshootingGuide
|
||||
|
||||
## Volume
|
||||
### Lightmass Importance Volume
|
||||
用于提高指定区域内的LightMap烘焙效果(主要是间接照明),区域外的默认为低质量效果。
|
||||
### LightMass Character Indirect Detail Volume
|
||||
提高区域内的间接光照缓存的密度(缓存点会更加密集)。
|
||||
## 间接光照缓存
|
||||
### 模型中光照选项
|
||||
|
||||
|
||||
## LightMass设置
|
||||
### 解决LightMass漏光问题
|
||||
1、提高间接光照的质量WorldSetting-》Indirect Lighting Quality<br>
|
||||
2、降低WorldSetting-》Indirect Lighting Smoothness的值(但是构建时间会增加)
|
||||
3、尽量使用整块模型
|
||||
|
||||
## 地形阴影
|
||||
### 远距离阴影(Far Shadow)
|
||||
一般是方向光作用在地形上的阴影,使用的是Cascaded Shadow Maps。<br>
|
||||
相关选项有:
|
||||
方向光源-》Cascaded Shadow Maps-》 Far Shadow Cascade Count(阴影精细程度)与Far ShadowDistance(显示距离)
|
||||
|
||||
可以通过show=》advanced=》ShadowFrustums显示阴影调试(只对方向光有效)。以此可以观察Cascaded的级数切换距离。
|
||||
|
||||
地形是默认开启Far Shadow的,Actor需要手动开启。
|
||||
|
||||
## 自发光物体
|
||||
后处理空间中除了设置GI倍率还可以自定义GI的颜色。
|
||||
|
||||
讲了自发光材质的GI,这里有了个取巧的方式,通过PostProcessVolume绑定自发光物体来调整Gi,好尴尬
|
||||
|
||||
2017年的版本还是通过LPV来实现的GI。
|
||||
|
||||
## LightMass Debug
|
||||
在构建选项里有一个Use Error Coloring选项,可以用来标记UV不合格的物题,但在产品级质量构建中则不会显示这些Debug标记。
|
||||
|
||||
## Lighting Info(位于构建按钮菜单中)
|
||||
里面可以调整LightMap渲染密度选项、空间占用大小以及分辨率调整。
|
||||
|
||||
# Ue4照明技术引导视频笔记(动态光照部分)
|
||||
https://www.youtube.com/watch?v=nm1slxtF_qA
|
||||
|
||||
https://forums.unrealengine.com/unreal-engine/events/113380-training-livestream-lighting-techniques-and-guides-2-dynamic-light-april-4-live-from-epic-hq?140547=
|
||||
## 距离场光线追踪技术
|
||||
首先需要开启距离场生成,在项目设置——渲染——灯光——勾选 生成模型距离场 选项。
|
||||
|
||||
级联阴影在显示远阴影时为了效果会增加阴影级数这样会增加消耗,而距离场阴影的消耗相对较小,所以会采样近距离级联远距离距离场阴影的配合方式。同时它可以解决因为屏幕空间渲染技术而导致的阴影失真的问题。另一个主要用处就是距离场AO了。或者可以使用距离场来写Shader。
|
||||
|
||||
模型距离场(在模型Asset设置中有个分辨率缩放选项)的分辨率会影响阴影效果(投射到别的物题上的阴影与自阴影)。从视频可以看出阴影缺少了很多细节而且并不正确。此时勾选Show——Visualize——MeshDistanceField,查看模型距离场,从而选择合适的分辨率对debug阴影有很大帮助。
|
||||
### 如何开启
|
||||
需要在灯光处勾选“Ray Tracing Distance Field Shadow”选项开启。
|
||||
|
||||
### 较为的使用场景
|
||||
渲染树木植被等高面数、复杂物体的阴影。
|
||||
### 植被渲染注意
|
||||
对于树叶等需要双面渲染的物体,需要在模型设置中勾选Two-Sided Distance Field Generation,以生成正确的距离场。
|
||||
### 级联阴影切换
|
||||
可以对灯光中的Cascaded Shadow Maps——Dynamic Shadow Distance MoveableLight进行设置,来达到级联阴影与软阴影的切换(靠近物体会切换成级联阴影)
|
||||
|
||||
### 几个调试用命令
|
||||
r.Shadow.MaxResolution 可选参数256~2048默认2048
|
||||
r.Shadow.MinResolution 可选参数16~128默认32
|
||||
r.Shadow.FadeResolution 可选参数64~2048默认64
|
||||
r.Shadow.DistanceScale 可选参数0.5~2默认1
|
||||
r.Shadow.RadiusThreshold 可选参数0.01~0.5默认0.03
|
||||
r.Shadow.CSM.MaxCascades 可选参数1~16默认3
|
||||
r.Shadow.CSM.TransitionScale可选参数0~2默认1
|
||||
r.ShadowQuality 可选参数1~5默认5
|
||||
r.LightFunctionQuality 可选参数0~2默认2
|
||||
r.DistanceFieldShadowing True~False默认True
|
||||
r.DistanceFieldAO True~False默认True
|
||||
r.ParticleLightQuality 可选参数0~2默认1
|
||||
### 其他注意事项
|
||||
光源中的SourceRadius会对软阴影产生影响(学过光追的人都知道为什么)
|
||||
|
||||
## 胶囊阴影
|
||||
因为也是一种软阴影方案,所以光源的LightSourceAngle选项也会对此产生影响。
|
||||
### 如何启用
|
||||
1. 在角色Asset中指定ShaowPhysicsAsset。
|
||||
2. 在角色Asset的Lighting选项卡中勾选Capsule Direct Shadow或者Capsule Indirect Shadow
|
||||
|
||||
## 接触阴影(Contact Shadows)
|
||||
ContactShadowLength参数大于0时就会开启,默认是关闭的。(视频使用值为0.02)
|
||||
### 原理
|
||||
将接触阴影的长度设为大于零的值后,渲染器将通过场景的深度缓存从像素的位置到光源进行光线追踪。举一个典型的例子来说,将接触阴影长度的最大值设为 1,此处的 1 则代表光线遍历整个屏幕。而将接触阴影长度的值设为 0.5 则意味着光线遍历半个屏幕。注意:场景深度缓存中的获得的采样将保持不变,意味着增加接触阴影的长度时将出现更多噪点(穿帮)。长度为 0.75 的接触阴影比长度为 0.1 的接触阴影生成的噪点更多。
|
||||
### 应用场景
|
||||
1. 当前平台只支持一个光源,且需要使用Marching实现的视差Shader。
|
||||
2. 角色细节阴影与墙面植物(爬山虎)阴影。
|
||||
|
||||
## 级联阴影
|
||||
级联阴影分为近阴影与远阴影。两者皆可以设置数量、过度距离以及过度参数(在光源中设置)。
|
||||
|
||||
当然想要真正显示远阴影则需要勾选物体中的Far Shadow选项。
|
||||
## 其他技巧
|
||||
### 天光(SkyLight)
|
||||
天光也有距离场AO的选项,在调试时需要关闭别的光源进行调试。
|
||||
|
||||
### HDRI Backdrop
|
||||
https://docs.unrealengine.com/en-US/Engine/Rendering/LightingAndShadows/HDRIBackdrop/index.html
|
||||
|
||||
4.23处的新功能,对于CAD产品展示有很大帮助。
|
||||
# Wiki笔记
|
||||
部分条目的解释有配图,我懒得贴了,所以推荐直接看原文。
|
||||
## 问题解答
|
||||
### 静态部分
|
||||
#### 为什么我的阴影死黑?
|
||||
在光照条件下,深黑色阴影通常意味着没有填充光。这种情况经常发生在室外环境中,一个方向的光代表太阳。UE4有一个内置的方法来提供一个影响填充光的世界,我们把它称为天光。
|
||||
|
||||
#### 不想生成光照贴图
|
||||
1. Rendering——Lighting——AllowStaticLighting确保引擎不会生成光照贴图。(项目级)
|
||||
2. 打开世界设置——Lightmass——Force No Precomputed Lighting。(关卡级)
|
||||
|
||||
#### 双面渲染物体的阴影问题
|
||||
1. 在StaticMesh——Lighting——LightMassSetting中勾选UseTwoSidedLighting。(仅对静态光照)
|
||||
2. 在物体的材质选项中勾选TwoSided
|
||||
|
||||
#### 灯光上出现X标记
|
||||
因为有超过4个光源重叠在一起,这样会严重影响性能。动态光在该重叠区域会强制设为一个动态光源,而静态光源会在烘焙光照时弹出重叠提示。
|
||||
### 动态部分
|
||||
#### 阴影不正确
|
||||
##### 方向光
|
||||
###### Dynamic Shadow Distance Movable
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
|
||||
###### Dynamic Shadow Distance Stationary
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
###### Num Dynamic Shadow Cascades
|
||||
view frustum被分割成的级联的数量。更多的级联将导致更好的阴影分辨率,但会显著增加渲染成本。
|
||||
###### Cascade Distribution Exponent
|
||||
控制级联的分布,是离相机更近(高值)还是更远(低值)。值1表示转换将与分辨率成正比。
|
||||
###### Cascade Transition Exponent
|
||||
级联之间的过度参数,较低的数值产生会较生硬的过度,而较高的数值会产生较平缓的过度。
|
||||
###### Shadow Distance Fadeout Fraction
|
||||
阴影淡出参数。较高的值会使阴影显得较淡一些,而较低的值会使阴影显得较深一些。
|
||||
###### Far Shadow
|
||||
级联阴影的远阴影开关,可以解决当摄像机处于较远距离时,物体的阴影会消失的问题。
|
||||
|
||||
#### 调整级联阴影以得到更好的效果
|
||||
通过调整上述设置,可以很好地调整阴影的出血值和精度。下一节将尝试调整到最佳成都,以获得更好的精度与阴影。找到一种适合任何特定游戏的平衡将需要耗费时间、精力来进行大量测试。
|
||||
|
||||
以下是默认设置下会出现的问题。
|
||||

|
||||
|
||||
调整后的结果
|
||||

|
||||
##### 对于所有的动态光源
|
||||
###### Shadow Bias
|
||||
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
|
||||
###### Shadow Filter Sharpness
|
||||
控制阴影边缘的锐化程度。
|
||||
|
||||
##### 为什么可移动光源在较远时其遮挡关系会出错
|
||||

|
||||

|
||||
|
||||
为了解释这一点,我们首先需要了解Ue4的渲染优化方法。引擎根据场景深度来判断场景中Mesh的可见性(首先物体需要处于摄像机矩阵中),如果Mesh过于远离摄像机,Mesh将不会被渲染或是被遮挡。所以就会出现图中的现象。
|
||||
|
||||
你可能会注意到,当选择物体时,灯光恢复正常。这是预料之中的,因为它处于焦点状态。
|
||||
|
||||
解决方法是:在Mesh属性界面,调整Bounds Scale选项的大小。默认值设置为1.0。建议的调整范围为1.1、1.2左右,调整的量不宜过大,会影响性能与阴影质量。
|
||||
|
||||
可以viewport > Show > Advanced > Bounds 开启包围盒显示进行debug。
|
||||
|
||||
另一个解决思路就是使用聚光灯或者使用静态光烘焙光照贴图。
|
||||
### 静态部分
|
||||
你可以在世界设置中的LightMass调整以下参数以获得更好的效果:
|
||||
Indirect Lighting Quality设置成2或者更高。
|
||||
Indirect Lighting Smoothness通常被设置为0.65~0.7之间。数值越低噪点会越多。
|
||||
#### 如何控制静态照明的全局照明效果?以及光线反弹的美妙之处
|
||||
默认情况下,LightMass的光线反弹次数为3,我们可以在Settings > World Settings > LightMass
|
||||
中修改反弹次数以获得更好的效果。
|
||||
|
||||
光线的第一次反弹所需的计算时间是最长的。之后的反弹对实际构建时间的影响较小,但对视觉效果的影响也要小得多。
|
||||
#### 解决阴影“脏”的问题
|
||||
首先,这种现象的原因与GI中的间接光照有关。
|
||||
|
||||
以下使用默认场景来创建2个测试用的关卡,其中Mesh的光照贴图分辨率设为256,后期空间开启人眼自适应。
|
||||

|
||||
<center>直接光照与一次反弹的间接光照</center>
|
||||
|
||||

|
||||
<center>只有一次反弹的间接光照</center>
|
||||
一个较为暴力的手法就是提高光照贴图分辨率,但这不是最好的方法。因为这样做会增大内存消耗。
|
||||
|
||||

|
||||
<center>光照贴图分辨率为1024的结果</center>
|
||||
|
||||
在WorldSettings——LightMass中,可以对以下参数进行设置:
|
||||
##### Indirect Lighting Quality
|
||||
控制间接光照的质量,以获得更佳的效果。
|
||||
##### Indirect Lighting Smoothness
|
||||
控制光照贴图中细节的平滑度。
|
||||
##### Num Indirect Lighting Bounces
|
||||
间接光照光线的反弹次数。
|
||||
|
||||
在对这些参数进行调整后,即使是光照贴图分辨率为512,其效果也比1024的好了。
|
||||

|
||||
<center>光照贴图分辨率为512</center>
|
||||
|
||||

|
||||
<center>光照贴图分辨率为1024</center>
|
7
03-UnrealEngine/Rendering/Lighting/VirualShadowMap.md
Normal file
7
03-UnrealEngine/Rendering/Lighting/VirualShadowMap.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: VirualShadowMap
|
||||
date: 2023-03-18 09:27:10
|
||||
excerpt:
|
||||
tags:
|
||||
rating: ⭐
|
||||
---
|
244
03-UnrealEngine/Rendering/Lighting/正确的打光流程.md
Normal file
244
03-UnrealEngine/Rendering/Lighting/正确的打光流程.md
Normal file
@@ -0,0 +1,244 @@
|
||||
本文为《Lighting with Unreal Engine Masterclass》视频的学习笔记,地址为:https://youtu.be/ihg4uirMcec。
|
||||
|
||||
其中有关LightMass的笔记
|
||||
http://www.tomlooman.com/lighting-with-unreal-engine-jerome/
|
||||
翻译版
|
||||
https://mp.weixin.qq.com/s/CUVJ57s_qsCNzdVHw5OhNQ
|
||||
### 首先确定你的材质是物理正确的
|
||||
几个常见的错误:
|
||||
BaseColor:太暗或者太亮
|
||||
Metallic:应该为0或者1。(黑色或者白色Mask)
|
||||
Specular:应该为0~1范围的浮点数。不应该为颜色值。(它会导致反射亮度不一致)
|
||||
|
||||
常见材质的BaseColor数值都可以网上查询到,我记得《全局光照技术》中有说。世界中没有物体是纯白、纯黑的(即RGB为0或者1)。
|
||||
|
||||
PS.关于“Metallic应该为0或者1”,演讲者的意思是纯材质,排除混合材质情况。
|
||||
|
||||
~~因为迪士尼的渲染模型也是基于微表面的,如果在金属上的一个块微表面区域有40%的区域覆盖着 3D扫描用喷漆(表面完全哑光材质),那这块微表面的光照该如何计算呢?~~
|
||||
|
||||
~~而迪士尼的渲染模型里Metallic就有插值效果(0-1)。如果有问题,那为什么不在Shader里直接判断材质属于金属还是绝缘体。~~
|
||||
|
||||
### 如何实现一个良好的关照场景
|
||||
#### 关闭后处理空间中干扰项
|
||||
以下操作都在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。
|
||||
|
||||
#### 设置测试用球(与色卡
|
||||
视频使用了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拖到场景中即可。
|
||||
|
||||
## 动态实时灯光VS静态烘焙灯光
|
||||
### 静态烘焙灯光优缺点
|
||||
优点:
|
||||
- 拥有GI效果
|
||||
- 消耗较少的软阴影效果
|
||||
- 低GPU性能消耗较小
|
||||
|
||||
缺点:
|
||||
- 迭代效率低
|
||||
- 光照效果是静止的
|
||||
- 当地图较大时,会占用大量显存。
|
||||
|
||||
### 动态实时灯光优缺点
|
||||
优点:
|
||||
- 所见即所得
|
||||
- 光照效果是动态的
|
||||
|
||||
缺点:
|
||||
- 没有GI效果
|
||||
- GPU性能消耗较大
|
||||
|
||||
### 静态烘焙灯光
|
||||
#### 场景流程
|
||||
1. 放入方向光(stationary)
|
||||
2. LightMass烘焙(GI)
|
||||
3. 放入天光(static)
|
||||
|
||||
PS.因为新版本的改动,天光已经可以进行多次反弹,并且可以发射光子了。所以我认为应该第四部,再次烘焙灯光。
|
||||
#### Min LightMap Resolution(静态模型Detials)
|
||||
控制UV块之间Padding值。良好的Padding值可以减少像素浪费以及、提高阴影效果(在固定LightMap分辨率下)。Min LightMap Resolution应该被设置为小于或者等于LightMap Resolution的值。(作者一般直接设为与LightMap Resolution相等的值)
|
||||

|
||||
#### Num Indirect Lighting Bounce(世界设置)
|
||||
许多用户喜欢把这个值提高到 100 次,不过好在这个对烘焙时长影响不大,但同时对光照质量影响也不大。实际使用这个值设置为 3 - 5 次就足够了。
|
||||
|
||||
下面是对比数据:
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Static Lighting Level Scale(世界设置)
|
||||
改变lightmass的级别。默认值为 1,越小细节越多,最终我们使用 0.1。
|
||||
|
||||
其原理是增加单位的区域的采样点的量。但这样会产生大量噪点。
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Indirect Lighting Smoothness(世界设置)
|
||||
该值大于1是会对LightMap进行平滑处理(反之会进行锐化),过高的数值会导致漏光现象。对于这个属性作者建议设置为0.7~1。
|
||||
|
||||
#### Indirect Lighting Quality(世界设置)
|
||||
增加进行final gathering运算时的采样光线量。提高数值可以减少间接照明时的噪点,但代价是极大地增加构建时间。
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Lighting Build Quality(在构建下拉按钮中)
|
||||
调整LightMass烘焙质量的总开关。用于整体调整烘焙质量,对烘焙时长影响很大。
|
||||
- Preview(耗时 2 分 16 秒)预览级
|
||||
- Medium(耗时 7 分 48 秒)中级
|
||||
- High(耗时 13 分 58 秒)高级
|
||||
- Production(耗时 30 分 22 秒)产品级
|
||||
|
||||
作者的习惯:大部分的工作时间都使用预览级,有时会切换到中级进行效果预览。在周末可能会切换到高级或者产品级进行烘焙来查看效果。
|
||||
|
||||
#### Lighting Level Scale与Indirect Lighting Quality的设置技巧
|
||||
保持Static Lighting Level Scale × Indirect Lighting Quality = 1。你就可以得到一个噪点较少的场景。
|
||||
|
||||
#### Volume Light Sample Scale
|
||||
减少Static Lighting Level Scale会增加这些空间采样样本(密度)。
|
||||
|
||||
#### 添加LightMass Portal提高室内场景光照质量
|
||||
给室内场景中的窗户添加LightMass Portal,以此可以减少噪点。
|
||||
|
||||
其原理是模拟天光效果,向室内发射光子。但也因此会在增加发射光子阶段(渲染过程中)的时间。
|
||||
|
||||
## Lighting Scenarios
|
||||
在游戏制作过程中,有时会存在同一场景使用多套Lightmap的情况,如:模拟天气系统,以及一天中不同时段的光照等。在Unreal 4引擎中,可以利用Lighting Scenarios功能达到此效果。使用Lighting Scenarios时,首先需要创建不同的光照Level,然后在Level设置页面将其设置为Lighting Scenario类型,如下图所示:
|
||||

|
||||
|
||||
另外,设置Level的加载方式为使用Blueprint加载:
|
||||

|
||||
|
||||
接着,对不同Level设置不同的光照进行烘焙。烘焙结束后,在Persistent Level Blueprint中,添加Load Stream Level节点对Level进行加载,并设置要加载的Level名称Day,如下图所示:
|
||||

|
||||
|
||||
### 动态实时灯光
|
||||
#### 场景流程
|
||||
1. 放入方向光(moveable)
|
||||
2. 放入天光(moveable)
|
||||
3. 开启DistanceFieldAO
|
||||
4. 开启SSAO
|
||||
|
||||
#### 距离场技术
|
||||
距离场因为存储了空间信息,可以解决屏幕空间渲染技术的缺陷。比如SSAO。距离阴影可以产生与级联阴影不同的软阴影效果。同时你可以在材质编辑器获取距离场数值以制作一些特殊效果。
|
||||
|
||||
需要注意的:
|
||||
- 只有静态物体可以使用距离场
|
||||
- 避免非规整缩放
|
||||
- 巨大物体的距离场分辨率会很低(这里建议把大物体进行拆分)
|
||||
- 距离场AO的更新会分布在多个帧中,所以你没有办法得到真正的实时AO。但这个通常不会引起玩家注意。
|
||||
- 你可以通过提高距离场分辨率来修复一些距离场技术渲染不正确的情况。
|
||||
- 距离场AO是可以着色的,你可以使用它来模拟一些光线反弹效果。
|
||||
|
||||
#### Shadow Map
|
||||
##### Shadow Bias
|
||||
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
|
||||
|
||||
但是在渲染角色时,需要适当权衡这个值,以求在效果正确的基础上对性能消耗最小。
|
||||
##### 级联阴影
|
||||
当在一个较大表面上投射阴影时,一个贴图的分辨率可能是不够的,而且会有大量的像素损失。于是就出现使用多个贴图拼在一起显示阴影的技术。
|
||||
|
||||
Lighting condition EV100
|
||||
Daylight
|
||||
Light sand or snow in full or slightly hazy sunlight (distinct shadows)a 16
|
||||
Typical scene in full or slightly hazy sunlight (distinct shadows)a, b 15
|
||||
Typical scene in hazy sunlight (soft shadows) 14
|
||||
Typical scene, cloudy bright (no shadows) 13
|
||||
Typical scene, heavy overcast 12
|
||||
Areas in open shade, clear sunlight 12
|
||||
Outdoor, natural light
|
||||
Rainbows
|
||||
Clear sky background 15
|
||||
Cloudy sky background 14
|
||||
Sunsets and skylines
|
||||
Just before sunset 12–14
|
||||
At sunset 12
|
||||
Just after sunset 9–11
|
||||
The Moon,c altitude > 40°
|
||||
Full 15
|
||||
Gibbous 14
|
||||
Quarter 13
|
||||
Crescent 12
|
||||
Blood 0 to 3[6]
|
||||
Moonlight, Moon altitude > 40°
|
||||
Full −3 to −2
|
||||
Gibbous −4
|
||||
Quarter −6
|
||||
Aurora borealis and australis
|
||||
Bright −4 to −3
|
||||
Medium −6 to −5
|
||||
Milky Way galactic center −11 to −9
|
||||
Outdoor, artificial light
|
||||
Neon and other bright signs 9–10
|
||||
Night sports 9
|
||||
Fires and burning buildings 9
|
||||
Bright street scenes 8
|
||||
Night street scenes and window displays 7–8
|
||||
Night vehicle traffic 5
|
||||
Fairs and amusement parks 7
|
||||
Christmas tree lights 4–5
|
||||
Floodlit buildings, monuments, and fountains 3–5
|
||||
Distant views of lighted buildings 2
|
||||
Indoor, artificial light
|
||||
Galleries 8–11
|
||||
Sports events, stage shows, and the like 8–9
|
||||
Circuses, floodlit 8
|
||||
Ice shows, floodlit 9
|
||||
Offices and work areas 7–8
|
||||
Home interiors 5–7
|
||||
Christmas tree lights 4–5
|
||||
|
||||
https://youtu.be/t_tT7pwO_j8
|
||||
对于曝光的建议是:在调整最大最小值后与偏移后(最暗与最亮处的效果匹配),把切换速度调成最高。
|
||||
|
||||
该视频的流程:
|
||||
CubeMap=》Skylight=>LightMaps=>Lightmass Protals=》LightMass Setting=》LightMass Important Volume=》Post Process=》Turn off AO=》Reflection probes
|
||||
|
||||
#### 帕拉共
|
||||
帕拉共因为考虑多平台(部分平台可能不支持自适应),所以曝光的范围比较小(旧版本0.35~0.45)
|
||||
|
||||
#### 曝光与灯光强度
|
||||
根据Daedalus51的测试及一些数据,方向光强度可以达到125000Lux然后天光5000cd/m²配合16EV值那个只是为了测试场景的数值。
|
||||
|
||||
Daedalus51的灯光学院系列视频:
|
||||
https://www.youtube.com/user/51Daedalus/videos
|
||||
|
||||
当然这些视频也已经搬运到国内了:
|
||||
https://www.bilibili.com/av59548243/
|
||||
|
||||
物理灯光文档
|
||||
https://docs.unrealengine.com/zh-CN/Engine/Rendering/LightingAndShadows/PhysicalLightUnits/index.html
|
||||
|
||||
### 天光问题
|
||||
有人提出了一个问题,大多数HDR文件,你是不知道他用了什么曝光标准,以及拍摄时的光照强度
|
||||
|
||||
天光转换,ev100 0=》16 1=》2^16
|
||||
|
||||
#### 使用天空来实现天光效果
|
||||
添加一个自发光材质给球(可以使用EditorSkySphere),缩放到Sky Distance Threshold大小后,LightMass就会把这个球当做是天空球,用以烘焙天光。
|
||||
https://zhuanlan.zhihu.com/p/70288801
|
||||
|
||||
SkySphere的问题 解决方案在材质里乘以 39808
|
||||
|
||||
室内保证打光均匀。
|
||||
|
||||
选择合理的曝光数值
|
||||
#### 黑夜曝光方案
|
||||
min brightness of 0.1 and a max brightness of 1,适当增加天光的亮度。
|
@@ -0,0 +1,132 @@
|
||||
## 前言
|
||||
本文是对于《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”,演讲者的意思是纯材质,排除混合材质情况。
|
||||

|
||||
|
||||
#### 关于BaseColor
|
||||
Daedalus51提出场景中的BaseColor应该要较为平缓(亮度、对比度与饱和度别太高),这一点也在在Ue4的LightMass文档中的“使用LightMass获取最佳质量”章节中有提到。
|
||||
|
||||
特别是饱和度,饱和度如果过高会让人感觉画面奇怪。1.5章节开头就在调整贴图的饱和度与亮度。
|
||||
|
||||
检查的方法是切换到BaseColor查看模式截图,再使用Photoshop的Histogram查看颜色分布。Daedalus51使用的方法是,使用PS对截图使用平均模糊滤镜,之后观察图片的各个值。
|
||||
|
||||
但从视频中可以看出,这个步骤更多的是靠经验,所以这里还是建议各位仔细看下对应视频。
|
||||
##### 在Ue4中修改贴图
|
||||
一种简单修复方法就是打开TextureAsset,直接修改里面的饱和度、亮度、对比度等选项。(但是作者还是建议使用Photoshop修改源文件再更新Asset)
|
||||
|
||||
## 结语
|
||||
在下一篇文章中,我会总结各个步骤的重要细节,以及各个功能所应用的场景。但是文章只能记录操作步骤与流程,不能记录使用经验,所以本人依然推荐想深入学习光照的人去看一下Daedalus51的视频。
|
||||
|
||||
#### Daedalus51视频中的场景
|
||||
第一章节:
|
||||
|
||||
户外傍晚:
|
||||
使用纯动态光照
|
||||
距离场AO(SSAO好像关闭了)
|
||||
CubeMap天光并且自定义下半球颜色
|
||||
|
||||
其他为后处理
|
||||
|
||||
户外早晨:
|
||||
使用静态光照(Stationary的动态阴影不算的话)
|
||||
CubeMap天光并且自定义下半球颜色
|
||||
|
||||
第二章节:
|
||||
|
||||
洞穴场景(可以看成是室内)。
|
@@ -0,0 +1,341 @@
|
||||
## 前言
|
||||
在这一章,我将会总结一些有关静态光照相关的参数、使用场景与设置技巧。
|
||||
|
||||
本文图较多,手机党请注意。本文仅作为个人笔记使用,不保证所有操作都是正确的,请各位谨慎阅读。
|
||||
### Daedalus51的流程
|
||||
首先我总结一下Daedalus51的流程,如有遗漏还请指正。以下流程仅为笔记记录使用,不一定正确。
|
||||
|
||||
个人不太推荐看第二章节后半段文档视频,因为作者一直都在调节材质(场景、粒子)。如果是建筑可视化方向的可以直接看第三章。
|
||||
#### 1.5章节的流程
|
||||
1. 去除干扰场景光照的后处理效果(本系列第一篇文章)
|
||||
2. 检查贴图的固有色是否正确并进行调整。(本系列第一篇文章)
|
||||
3. 调整天光以符合设计目标。(本系列第一篇文章)
|
||||
4. 设置曝光相关属性。
|
||||
5. 将所有灯光都是设置为Stationary类型。并开始设置方向光与其他主光源的基础属性(方向、亮度等)
|
||||
6. 设置LightMass属性,使用预览级对场景进行测试渲染。
|
||||
7. 开启LightingOnly模式对光照进行检查。
|
||||
8. 给场景中的带有反射属性的物体添加反射球并调整属性。(Daedalus51的流程中没有关闭空间反射,如果你按照我之前写的关闭空间反射,这里要记得开启)之后开启Reflections模式查看场景反射情况。
|
||||
9. 设置场景植被(有光照无关)
|
||||
10. 调整场景雾气
|
||||
11. 后处理调色
|
||||
|
||||
**测试烘焙**<br>
|
||||
注意去掉世界设置中的Force Precompute Lighting选项。
|
||||
关闭Compress LightMaps选项(压缩灯光贴图),为了追求效果;但如果游戏项目推荐打开,这样可以节约显存占用。
|
||||
|
||||
作者一般不会再一开始就开启LightMass的AO烘焙选项(世界设置中)。因为一般情况下都会(也应该)使用SkyLight,所以我们应该把LightMass的EnvironmentColor设置为0。
|
||||
|
||||
**突破材质贴图数目限制**<br>
|
||||
因为全都使用静态烘焙灯光,所以在对应材质中Usage选项卡中勾选Use With Static Lighting,这样材质中的贴图采样数数统计才会正确(因为使用LightMass会占用2张贴图)
|
||||
|
||||
材质编辑器的Texture Sampler节点的Sampler Source选项决定了一个材质所能使用贴图数量,使用Shared:Wrap选项可以突破Dx11的贴图数量限制。
|
||||
|
||||
**Stationary类型灯光阴影说明**<br>
|
||||
Station类型的灯光对于静态物体会烘焙灯光,对于动态物体会使用动态阴影。
|
||||
Dynamic Shadow Distance StationaryLight是切换开关,当为0是所有阴影都将是烘焙的,当数值较大时(5000)所有近距离阴影都将是动态的。作者推荐3000~8000之间。(在这个数值的距离观察时会切换为静态阴影)
|
||||
**有关反射球**
|
||||
反射球会影响所有物体产生影响(高反射物体如果没有反射球,渲染结果往往是错误的),你可以选择给小物体使用小反射球,之后在给所有物体一个大反射球。(小反射球的优先级高)
|
||||
|
||||
**提高空间灯光样本密度(本人加的私货)**
|
||||
树木、草地等植被因为模型比较密集,所以无法获取准确的LightVolume样本信息。可以使用Volumetric LightMap Density Volume来增加空间样本数量。
|
||||
|
||||
其他相关空间还有:<br>
|
||||
**Lightmass Importance Volume**
|
||||
用于提高指定区域内的LightMap烘焙效果(主要是间接照明),区域外的默认为低质量效果。
|
||||
|
||||
**LightMass Character Indirect Detail Volume**
|
||||
提高区域内的间接光照缓存的密度(缓存点会更加密集)。
|
||||
|
||||
#### 2.1章节的流程
|
||||
1. 删除无用灯光(因为Daedalus51在帮人改场景)并将其他灯光关闭。
|
||||
2. 这个关卡原本没有使用LightMass,可以看得出缺少AO
|
||||
可以使用距离场AO等技术补充在发现后处理空间开启了Dynamic Indirect Lighting后,查看LPV其实并没有开启。
|
||||
3. 检查场景模型UV,之后使用基础参数进行测试渲染。
|
||||
4. 在调整后屏幕空间反射质量后,使用LightingOnly查看光照烘焙效果。(洞穴墙壁太亮度,发现是因为模型没有设置为静态导致没有参与烘焙)
|
||||
5. 设置反射球,以消除错误的反射。
|
||||
6. 关闭指数雾与其他粒子雾(会影响场景亮度)并且将场景中的射灯模型的自发光材质属性降低,重置所有后处理,至此完成了场景基础修改。(这个理论上应该放到第一步中)
|
||||
7. 使用BaseColor模式查看固有色,并调整贴图的饱和度与亮度。
|
||||
8. 放置LightMass Portal,提高指定区域在LightMass烘焙中所产生的的光线量,以此来提高洞穴内的效果。
|
||||
9. 因为场景方向光没有对准洞口,所以作者选择关闭方向光,提高天光的间接照明亮度,并且在WorldSettings中将间接照明反弹提高到100。(目前版本应该设置天光反弹次数,而作者的版本没有这个选项,所以在视频中场景还是很黑)
|
||||
10. 调节曝光与人眼适应。
|
||||
11. 调整各种材质效果,与贴花效果。(设置贴花的光照模型)
|
||||
12. 逐个开启之前关闭的光源,并调整光源的颜色与范围。(调整灯光颜色以及优化Stationary重叠问题)并且把一些作用范围较小的灯光设置为动态,不产生阴影以对效果进行快速迭代。
|
||||
13. 继续调节场景中的细节(粒子、材质、灯光)
|
||||
14. 增加指数雾与使用反转法线球体制作的体积雾。
|
||||
15. 调节后处理效果。
|
||||
|
||||
**有关LPV**<br>
|
||||
Daedalus51并不推荐在室内设计中使用LPV(外部主光源不能对室内产生足够多的间接照明。因为LPV只适用于方向光,所以我们应该关闭Dynamic Indirect Lighting选项)。
|
||||
|
||||
**有关屏幕反射**
|
||||
因为默认状态下,r.sss.quality为3,所以在后处理空间中调整质量到60以上都和60是一样的。(r.sss.quality 2命令对应的最高质量为50)输入r.sss.quality 4 可以解锁100质量。
|
||||
#### 3.1章节的流程
|
||||
需要解决两个问题:
|
||||
- 场景中的窗子太小,同时室内灯光没有开启,导致室内光照不足。(可以看得出参考图的曝光度很高,连天空都看不出细节)
|
||||
- 场景中植物与材质不符合场景。
|
||||
|
||||
大致流程如下:
|
||||
1. 首先进入LightMap Density模式查看光照贴图密度情况,并调整分辨率到合适值。(保证附近模型的光照贴图密度大致相同)
|
||||
2. 检查后处理空间、天光与方向光,并重置至默认数值。(建筑可视化应该关闭屏幕空间AO,因为LightMass会烘焙效果更好的阴影)
|
||||
3. 将曝光度设置为1,让户外与室内曝光统一。(这么调整之后室内会变得很黑,此时Daedalus51认为我们不应该直接调整天光与方向光的强度与间接照明倍率,而是应该调整曝光数值来解决这个问题。)
|
||||
4. 关闭除了天光外的方向光与其他光源,并检查LightMass Portl、Lightmass Importance Volume是否设置正确。
|
||||
5. 修改LightMass选项后进行预览级质量烘焙。(提高反弹次数6=》10,设置打包灯光与阴影贴图最大大小,关闭压缩LightMap功能)
|
||||
6. 对比参考图后发现是曝光的问题,之后修改exposure bias(0=>4.6),使得场景达到合适的亮度。
|
||||
7. 删除BP_Sky_Sphere、高度雾与指数雾,添加新的使用Hdr的天空球(参照第二章节中的内容:场景捕获)后进行高级质量烘焙。
|
||||
8. 删除场景中的反射球,使用一个Box反射球作为主反射球,并将它大致放置在场景中间,之后调整Capture Offset数值来校准反射球。
|
||||
9. 关闭玻璃材质属性中的屏幕反射功能(Translucency-Screen Space Reflections),反射球效果依然有效。
|
||||
10. 检查材质是否正确,并进行调整(固有色、贴图等)
|
||||
11. 在观察到地板的不正常反射后,在后处理空间中开启了屏幕空间反射,并调节了反射质量。(r.sss.quality 4,r.sss.Temporal 0)之后发现反射噪点是材质粗糙度造成。
|
||||
12. 调节LightMass属性,Static Lighting Level Scale 1=》0.1,Indirect Lighting Quality 1=》6,Indirect Lighting Smoothness 1=》0.6,使用高级质量进行烘焙。这次烘焙花费4小时,烘焙的光照可以说相当好了,但在细微处还是有一些噪点,作者建议可以可以Indirect Lighting Quality再提高一些。
|
||||
13. 给场景带有高金属度与低粗糙度的物体添加反射球以解决物体渲染结果不对的问题。
|
||||
14. 视频3.3的时候作者的电脑突然原地爆炸了,鸽了段施加,但也因为更新了4.18版本,可喜可贺。使用Hdr+天光反弹,渲染效果变得更加自然了。作者还在场景中添加了方向光、聚光灯等主光源。修改了地板材质,并开启LightMass的AO选项(以掩盖SSR的问题)
|
||||
15. 作者展示一个骚操作,在材质编辑器中使用PreComputedAOMask节点来获取LightMass烘焙的AO信息。
|
||||
16. 作者将BP_Sky_Sphere加回来,同时把天光类型改成了使用CubeMap。
|
||||
|
||||
**使用PreComputedAOMask与澡波贴图来实现一些边角污垢效果**
|
||||

|
||||

|
||||
|
||||
**解决植被顶点动画模糊的问题**
|
||||
在Project Settins-Rendering-Optimizations勾选Accurate Velocities from Vertex Deformation选项,让TAA能够获取正确的速度值,即可解决。这对植被渲染十分重要。
|
||||
|
||||
#### 4.1章节的流程
|
||||
这次修改场景的要求是在保证黑暗之魂3场景风格的基础上,尽量让场景光照看起来真实。
|
||||
|
||||
Daedalus51首先检查了场景:
|
||||
场景的阳光比较强烈,但是天空却看上去很灰暗,场景的角落也比较黑,看来不真实。一些暗处的物体根本看不到细节。
|
||||
|
||||
存在问题:
|
||||
- 场景的阳光比较强烈,但是天空却看上去很灰暗,场景的角落也比较黑,看来不真实。一些暗处的物体根本看不到细节。
|
||||
- 很多材质开启曲面细分功能,但是曲面细分倍率设置的有问题。曲面细分还会导致物体再LightingOnly模式下不显示,所以Daedalus51把曲面细分关掉了。
|
||||
- 天空看来是淡黄色的,但天光却设置为蓝色(可以看得出建筑物有天光反弹的蓝色)。
|
||||
- 植被没有渲染细节阴影,但光照贴图分辨率却很高。
|
||||
|
||||
场景重置操作内容:
|
||||
- 重置方向光(去掉颜色,设置亮度为pi,设置间接光照强度为1,关闭Light Shalf Bloom
|
||||
- 重置级联阴影数值,但保留Dynamic Shadow Distance Stationary的参数)
|
||||
- 关闭材质的曲面细分功能
|
||||
- 重置世界设置中的LightMass设置。
|
||||
- 重置天光参数,亮度、颜色、间接照明强度。关闭半球固定色功能。
|
||||
- 重置后处理空间,并调整曝光数值。
|
||||
|
||||
1. 检查场景,将一些参数重置。
|
||||
2. 调整LightMass设置中的天光反弹与间接光照反弹1=》10。
|
||||
3. 删除BP_SkySphere,加入Hdr贴图制作的天空球,并通过旋转与位移将天空球与太阳匹配。
|
||||
4. 关闭大气雾。
|
||||
5. 调整场景中物体的LightMapDensity(主要是降低,因为有一些物体不需要细节阴影,你无法从一片叶子上获得更多的视觉效果,而且可以解决TextureStreamPool溢出与烘焙时间长的问题)
|
||||
6. 因为调节了所有的光照贴图密度,所以还需要调节世界设置中的Packed Light And Shadow Map Texture Size。
|
||||
7. 调整天光,关闭指数雾气,让天光重新捕获场景。调整方向光的间接照明强度从1=》1.5,让场景更加有艺术感。
|
||||
8. 使用中级质量对场景进行烘焙。
|
||||
9. 在烘焙的时候作者检查了场景的BaseColor。
|
||||
10. 烘焙完成,进入LightingOnly检查烘焙结果。可以看得出光照烘焙得不错,但场景还是挺黑的,这说明BaseColor有问题。
|
||||
11. 在修改完所有BaseColor贴图与部分材质后,再次进行烘焙。并在烘焙过程中移除fake灯光。
|
||||
12. 作者将场景中的火炬资源整合成一个Actor蓝图(灯光、粒子、模型),同时将灯光的间接照明强度从1=》1.6。并再次使用中级质量进行烘焙。
|
||||
13. 在项目设置中勾选Accurate Velocities from Vertex Deformation选项解决TAA鬼影问题。
|
||||
14. 在4.6章节作者开始分析黑魂场景,并指出一些补光错误(黄色的太阳光、背景与雾气,但部分地面上却是蓝色的)
|
||||
15. 作者并不喜欢默认的BP_Sky_Sphere,他更喜欢Hdr天空。同时他给出一种使用FlowMap让Hdr天空变得动态的方法。(GDC14 顽皮狗的演讲)之后作者分享了一篇Ue4实现方案http://kedama.works/archives/5,但很明显这个方案还有巨大的改进空间。
|
||||
于是在4.6 55min左右,作者开始展示改进过的Shader,不过还是存在一个顶部图像破裂的bug。(这个内容我放在第二篇文章里)
|
||||
|
||||
**调整前与调整后的LightMapDensity**
|
||||

|
||||
|
||||

|
||||
|
||||
**有关体积光照贴图**
|
||||
Unreal会根据场景模型分布情况分配体积采样点(对于重要的地方可以通过添加体积的方式调整采样点间距),**动态物体**会根据这些采样点进行插值着色,来实现GI效果。但LightMass只会对静态物体进行采样,而完全忽略动态物体。
|
||||
|
||||
这里作者又提到了树,因为树不适合使用LightMass烘焙光照,因为树的结构复杂会导致烘焙时间长而且效果很差,但是如果不使用LightMass就不会有GI效果。所以作者想到了设置两组树,第一组静态用于烘焙体积光照贴图,之后在场景中隐藏。另一种动态用于在场景中展示。这样就解决上面说的问题。
|
||||
|
||||
但这样做不能算是个完美的方法,所以作者希望EPIC能开发让一些特定的动态物体影响空间探针的功能。
|
||||
|
||||
**第一次烘焙完的结果**
|
||||

|
||||

|
||||
|
||||
**有关BaseColor**
|
||||
在检查BaseColor的过程中,发现地面的泥土材质的BaseColor太黑了(这个贴图的中间值为40,而达斯·维达那身黑乎乎的材质颜色Vec3(52,52,52)的中间值也至少为50)。具体的做法是调整亮度与饱和度。
|
||||
|
||||
所以作者对以下贴图进行修改:
|
||||
- 调整了泥土贴图,40=》81
|
||||
- 调整了地面的砖石贴图,70=>104
|
||||
- 调整了台阶贴图
|
||||
- 调整了柱子贴图,68=》104
|
||||
- 调整了砖墙贴图,97=》125
|
||||
- 调整了墙体贴图的金属部分,黑色=》中灰色
|
||||
- 等场景中的其他贴图
|
||||
|
||||
作者不建议固有色的中间值低于50或者高于230。
|
||||
|
||||

|
||||
|
||||
>4.5章节作者额外补充一些东西,个人强烈建议大家去看一下,虽然物理灯光因为引擎存在Bug没有讲完。
|
||||
|
||||
首先作者介绍了一下GPULightMass,可以看得出烘焙速度非常快。这次作者演示的场景比较简单,但包含了室内与室外部分,非常适合讲解新的物理灯光系统。
|
||||
|
||||
**使用物理灯光的原因**
|
||||
|
||||
之前版本中Unreal4的灯光使用的是虚幻单位,这是的之前版本的灯光没有一个物理值的衡量标准。你很可能会因为后处理空间、曝光等因素影响而无法设置出正确的亮度值。例如:你已经将一个区域的效果调整的很自然,但是别的区域就会很奇怪(bloom、阴影、光照等效果互相不匹配)。 而前人已经积累了大量的摄影知识与经验,所以我们没有必要光靠感觉来设置灯光亮度与曝光度,而需要使用摄影标准来设置灯光,从而使得场景更加真实。
|
||||
## 环境设置
|
||||
### 天光
|
||||
类型:static 关闭半球固定色
|
||||
### 方向光
|
||||
级联阴影的动态阴影距离设置为12000
|
||||
### 天空球
|
||||
引擎天空球模型+Hdr图+对应材质,具体参考第二篇文章写的内容。
|
||||
### 后处理空间
|
||||
保持默认
|
||||
### LightMass设置
|
||||
静态光照细节缩放等级0.1 光线反弹次数10 天光反弹次数10 间接照明质量4 间接照明平滑0.8 ## 视频中的操作过程 ### 使用摄像机参数来调整曝光度 所以我们能做的第一件事情就是通过sunny16原则来设置相机。 具体步骤为:在后处理空间——曝光中将模式改成手动,之后按照sunny16原则的户外晴天数值来设置Camera属性。
|
||||

|
||||
### 设置天空球亮度
|
||||
但此时画面还是黑乎乎的,这说明场景中的灯光强度太弱了。此时你直接调整天光强度是无效的,因为默认的天光是场景捕获模式。此时设置天空球亮度(设置材质),在视频中亮度提升到68000左右达到了一个不错的效果。这个时候再进行烘焙,模型的样子就不再是黑乎乎的了。 >使用像素检测器,可以检查对应像素的光照强度
|
||||

|
||||

|
||||

|
||||

|
||||
### 设置方向光
|
||||
将方向光亮度设置为75000(阴天中午),再次烘焙光照。 此时场景出了些问题,金属反射不正常(屏幕空间反射)。可能是作者用的版本对于物理灯光的支持不太好。
|
||||
### 设置室内曝光度
|
||||
按照sunny16原则的室内数值来设置Camera属性。但是通过相机参数来调整曝光度有个问题:那就是曝光度是固定死的,无法根据场景亮度进行自适应。这里作者吐槽自适应曝光不能使用物理参数(这个问题目前版本已经解决)
|
||||
|
||||

|
||||
|
||||
作者登录了一个灯光供应商的网站,网站上提供个灯光的详细参数,有亮度、色温等。 之后作者讲解了坎德拉与流明这种光照单位,这里可以参考日天大佬的文章。 之后作者展示了点光源切换坎德拉与流明,但是效果却不一样的问题。(作者使用的版本是4.19)也因为这个原因作者没有继续讲解物理灯光流程,着实可惜。
|
||||
|
||||
在4.6章节,作者推荐了这篇文章。我看了一下挺不错的,所以我会在第五篇文章中对其进行简单翻译,原文地址:
|
||||
https://80.lv/articles/setting-lighting-in-unreal-engine-4-20/
|
||||
|
||||
### LightMass Debug
|
||||
在构建选项里有一个Use Error Coloring选项,可以用来标记UV不合格的物题,但在产品级质量构建中则不会显示这些Debug标记。
|
||||
|
||||
### 静态光照流程及属性总结
|
||||
这些内容主要来自于《Lighting with Unreal Engine Masterclass》、《解密照片级表现技巧(一些关于UE4建筑表现的废话)》以及李文磊的《在UE4中实现灯光之美》
|
||||
#### Min LightMap Resolution(静态模型Detials)
|
||||
控制UV块之间Padding值。良好的Padding值可以减少像素浪费以及、提高阴影效果(在固定LightMap分辨率下)。Min LightMap Resolution应该被设置为小于或者等于LightMap Resolution的值。(作者一般直接设为与LightMap Resolution相等的值)
|
||||
|
||||

|
||||
|
||||
#### Export Resolution Scale
|
||||
缩放导出此材质属性时的分辨率。当需要细节时,这对于提高材质分辨率非常有用。
|
||||
|
||||
第一幅图像中使用了一个小光源,但是光照图的分辨率太低,无法捕捉到清晰的半透明阴影。第二幅图像中,材质导出的分辨率过低(由Export Resolution Scale控制),无法捕捉到清晰的阴影。
|
||||

|
||||

|
||||

|
||||
|
||||
|
||||
#### Num Indirect Lighting Bounce(世界设置)
|
||||
许多用户喜欢把这个值提高到 100 次,不过好在这个对烘焙时长影响不大,但同时对光照质量影响也不大。实际使用这个值设置为 3 - 5 次就足够了。
|
||||
|
||||
下面是对比数据:
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Static Lighting Level Scale(世界设置)
|
||||
改变lightmass的级别。默认值为 1,越小细节越多,最终我们使用 0.1。
|
||||
|
||||
其原理是增加单位的区域的采样点的量。但这样会产生大量噪点。
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Indirect Lighting Smoothness(世界设置)
|
||||
该值大于1是会对LightMap进行平滑处理(反之会进行锐化),过高的数值会导致漏光现象。对于这个属性作者建议设置为0.7~1。
|
||||
|
||||
#### Indirect Lighting Quality(世界设置)
|
||||
增加进行final gathering运算时的采样光线量。提高数值可以减少间接照明时的噪点,但代价是极大地增加构建时间。
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### Lighting Build Quality(在构建下拉按钮中)
|
||||
调整LightMass烘焙质量的总开关。用于整体调整烘焙质量,对烘焙时长影响很大。
|
||||
- Preview(耗时 2 分 16 秒)预览级
|
||||
- Medium(耗时 7 分 48 秒)中级
|
||||
- High(耗时 13 分 58 秒)高级
|
||||
- Production(耗时 30 分 22 秒)产品级
|
||||
|
||||
作者的习惯:大部分的工作时间都使用预览级,有时会切换到中级进行效果预览。在周末可能会切换到高级或者产品级进行烘焙来查看效果。
|
||||
|
||||
#### Lighting Level Scale与Indirect Lighting Quality的设置技巧
|
||||
保持Static Lighting Level Scale × Indirect Lighting Quality = 1。你就可以得到一个噪点较少的场景。
|
||||
|
||||
#### Volume Light Sample Scale
|
||||
减少Static Lighting Level Scale会增加这些空间采样样本(密度)。
|
||||
|
||||
#### 添加LightMass Portal提高室内场景光照质量
|
||||
给室内场景中的窗户添加LightMass Portal,以此可以减少噪点。
|
||||
|
||||
其原理是模拟天光效果,向室内发射光子。但也因此会在增加发射光子阶段(渲染过程中)的时间。
|
||||
|
||||
## Lighting Scenarios
|
||||
在游戏制作过程中,有时会存在同一场景使用多套Lightmap的情况,如:模拟天气系统,以及一天中不同时段的光照等。在Unreal 4引擎中,可以利用Lighting Scenarios功能达到此效果。使用Lighting Scenarios时,首先需要创建不同的光照Level,然后在Level设置页面将其设置为Lighting Scenario类型,如下图所示:
|
||||
|
||||

|
||||
|
||||
另外,设置Level的加载方式为使用Blueprint加载:
|
||||
|
||||

|
||||
|
||||
接着,对不同Level设置不同的光照进行烘焙。烘焙结束后,在Persistent Level Blueprint中,添加Load Stream Level节点对Level进行加载,并设置要加载的Level名称Day,如下图所示:
|
||||
|
||||

|
||||
## BaseLightmass.ini参数
|
||||
如果你是做室内效果,Ue4默认设置的GI可能无法满足你的需求。你可以选择修改引擎配置文件BaseLightmass.ini的参数。以下内容个人感觉给的数值过于巨大,将耗费大量时间,请大家酌情使用。
|
||||
|
||||
**NumHemisphereSample**:半球采样数,默认值16,想要更好的效果可以给128。
|
||||
**Num Irradiance Calsulation Photons**:参与照度计算光子的数量,默认是400,如果不满足效果可以给2048甚至更多。
|
||||
|
||||
结论就是数值越高,消除的BUG越多,当然花费时间越长,所以国外大神给出了一组不同阶段的测试参数,用来平衡时间与质量。
|
||||
|
||||
### 测试渲染
|
||||
- NumHemisphereSamples = 64
|
||||
- IndirectPhotonDensity = 3000
|
||||
- IndirectIrradiancePhotonDensity = 1500
|
||||
- IndirectPhotonSearchDistance = 180
|
||||
|
||||
### 进一步渲染
|
||||
- NumHemisphereSamples = 128
|
||||
- IndirectPhotonDensity = 6000
|
||||
- IndirectIrradiancePhotonDensity = 3000
|
||||
- IndirectPhotonSearchDistance = 180
|
||||
|
||||
### 最终渲染
|
||||
- NumHemisphereSamples = 256 or 512 (above 512 will have not much difference)
|
||||
- IndirectPhotonDensity = 12000 (If there are still flickers of artificial lighting, increase this value along with the parameter below)
|
||||
- IndirectIrradiancePhotonDensity = 8000
|
||||
- IndirectPhotonSearchDistance = 180 (180 - 240)
|
||||
|
||||

|
||||
默认设置
|
||||
|
||||

|
||||
|
||||
#### 使用GPULightMass
|
||||
使用LightMass烘焙光照往往比较慢,所以你可以尝试使用GPULightMass。
|
||||
|
||||
论坛中的GPULightMass主题:
|
||||
https://forums.unrealengine.com/development-discussion/rendering/1460002-luoshuang-s-gpulightmass
|
||||
|
||||
日天大佬写的简单使用说明:
|
||||
https://zhuanlan.zhihu.com/p/71584366
|
||||
|
||||
如果想要最新版本可以在UnrealEngine的github分支中找到。
|
||||
|
||||
#### 最终渲染效果提升
|
||||
这一步视项目需求与目标平台性能而定。
|
||||
##### 反射质量
|
||||
在控制台中输入r.SSR.Quality 4
|
||||
|
||||
如果电脑性能较强,可以修改引擎Shader文件夹中的ScreenSpaceReflections.usf这个文件。在最高质量4中的参数步数以及射线数都是12,12。你显卡牛逼的话都调成64。吃不消就往下调。反正你会发现你的帧数会有明显变化。没有效果,那么修改完usf文件后,退出引擎重新进一次,然后控制台输入r.SSR.Quality 4。
|
||||
|
||||
##### 抗锯齿
|
||||
在控制台中输入r.PostProcessAAQuality 6
|
154
03-UnrealEngine/Rendering/Lighting/灯光知识与流程学习总结(二)——设置天光与曝光设置.md
Normal file
154
03-UnrealEngine/Rendering/Lighting/灯光知识与流程学习总结(二)——设置天光与曝光设置.md
Normal file
@@ -0,0 +1,154 @@
|
||||
## 天光
|
||||
天光亮度一般来说还是保持为1比较好,但以天光作为主要照明是例外(夜晚场景)。
|
||||
天光有“场景捕获”与“使用CubeMap”两种使用方向。(但是本质上还是围绕着CubeMap,所以作者更加倾向于使用CubeMap。除非你实现了类似CryEngine的昼夜交替系统。)
|
||||
|
||||
Daedalus51在视频1.1最后讲解了Skylight技巧,推荐大家去看。
|
||||
### 调试方法
|
||||
往场景中放入一个Sphere与Cube模型,并赋予Chrome材质(引擎Content中)。假设你已经关闭后处理空间中的屏幕空间反射效果。这样就可以观察天光是否达到你的要求。
|
||||
|
||||
在静态光照下,LightMass会烘焙出GI效果,你可以开启LightingOnly模式查看GI效果。
|
||||
|
||||

|
||||
### 使用CubeMap
|
||||
也就是使用Hdr环境贴图,赋予Hdr后,记得修改CubeMap Resolution(贴图最长边的值,必须为2的幂)。
|
||||
|
||||
### 场景捕获
|
||||
对远景与环境球进行采样,再作为天光数据对场景进行照明。
|
||||
|
||||
如果你希望把Hdr图作为环境球在场景中渲染,那步骤如下:
|
||||
1. 往场景中加入环境球模型,想省事可以使用EngineContent中的SM_SkySphere。
|
||||
2. 使用以下材质(这里我就直接拿日天大佬的图来展示):
|
||||
|
||||

|
||||
另外材质的光照模型选择自发光,勾选双面渲染选项。
|
||||
3. 设置Sky Distance Threshold属性并调整环境球模型(默认的SM_SkySphere太小了)。
|
||||
4. 关闭模型的Cast Shadow选项。
|
||||
5. 点击SkyLight标签中Recature按钮(你可以在蓝图调用RecaptureSKy函数来进行更新)。
|
||||
|
||||
使用Exr贴图来制作天空球材质,好处在于不需要使用材质中的旋转节点,直接连入自发光节点即可。同时可以通过旋转模型来旋转天空球。
|
||||
#### 其他参数说明
|
||||
**Sky Distance Threshold**:当物体处于该数值半径外时(天光Actor为坐标为原点),天光会对该物体进行采样。
|
||||
|
||||
**Capture Emissive**:仅对自发光材质进行采样,以减少性能消耗。当使用采集每一帧(Capture Every Frame)时,建议使用此方法。
|
||||
|
||||
**更新天光**需要点击SkyLight标签中**Recature**按钮。
|
||||
### 下半球颜色控制
|
||||
在场景中使用了环境球或是默认场景蓝图天球,并且天光使用场景捕获时,我们只需要上半球的光照(照亮场景),而下半球的颜色往往会造成“天光漏光”的问题(天光不能穿过地面对物体进行照明)。此时我们就需要勾选“Lower Hemisphere Is Solid Color”选项,并且将“Lower Hemisphere Color”设置为黑色。
|
||||
|
||||
在Daedalus51的视频中,他展示了另一种使用思路。首先他的场景中是有一大片草地的,如果Lower Hemisphere Color使用黑色,其实是不正确的。于是他使用PS对开启BaseColor模式的场景进行均匀取色(均匀模糊后再取色)。再用该颜色设置Lower Hemisphere Color的值。这样效果会更加真实一些。
|
||||
|
||||
但也有例外情况,比如汽车等机械产品展示。一般来说这类项目一般会采用**影棚Hdr贴图**,此时就需要关闭“Lower Hemisphere Is Solid Color”选项。因为底部的光照效果我们也是需要的。
|
||||
### 距离场AO
|
||||
《Lighting with Unreal Engine Masterclass》视频中有提到,天光的AO也是距离场AO的重要组成部分。所以如果你要使用距离场AO,别忘记天光部分。(记得开启AO与距离场观察模式查看其质量)
|
||||
|
||||
视频偏后段展示了通过设置AO颜色来模拟GI效果,不过本人不太推荐使用。
|
||||
### 动态天光注意事项
|
||||
如果你的天光是动态类型的,那就需要开启距离场阴影相关功能,不然天光是不会投射阴影的。
|
||||
|
||||
### 天光反弹反弹(静态光照有效)
|
||||
在世界设置中可以设置天光的反弹次数,提高反弹次数以提高效果。
|
||||
|
||||
## 动态环境球效果
|
||||
在Daedalus51的4.6章节视频中,他演示一种动态环境球效果:
|
||||

|
||||
|
||||
如果在云层移动速度较慢的情况下,效果还不错。以下是材质实现:
|
||||

|
||||
|
||||
作者在其基础上进行了一定改进,但是环境球的顶部会有图像畸变bug。
|
||||

|
||||
|
||||
## 调整曝光与ToneMapping
|
||||
1.2 21min左右开始讲解有关曝光的知识,这里强烈建议看一下。不过需要注意该视频制作时,虚幻引擎还没有加入物理灯光。
|
||||
https://www.bilibili.com/video/av59548243/?p=2
|
||||
|
||||
刚发现官方已经做了曝光功能的解析视频。强烈推荐去看一下。
|
||||
https://www.youtube.com/watch?v=Q1xi8NwpIqA
|
||||
>核心思想在于:因为前人已经积累了大量的摄影知识与经验,所以我们没有必要光靠感觉来设置灯光亮度与曝光度,而需要使用摄影标准来设置灯光,从而使得场景更加真实。
|
||||
### 恶补相关知识
|
||||
这里我推荐看一下日天大佬文章与Wiki,可以恶补相关知识。<br>
|
||||
|
||||
虚幻中灯光的物理单位计算公式:
|
||||
https://zhuanlan.zhihu.com/p/69248316
|
||||
|
||||
公式推导:
|
||||
https://zhuanlan.zhihu.com/p/69348892
|
||||
只需要知道```$E=3.14\times2^{EV}$```就可以了
|
||||
|
||||
物理灯光文档
|
||||
https://docs.unrealengine.com/zh-CN/Engine/Rendering/LightingAndShadows/PhysicalLightUnits/index.html
|
||||
|
||||
曝光值
|
||||
https://en.wikipedia.org/wiki/Exposure_value
|
||||
|
||||

|
||||
|
||||
Sunny16
|
||||
https://en.wikipedia.org/wiki/Sunny_16_rule
|
||||
|
||||
EV使用推荐
|
||||
|
||||

|
||||
|
||||
### 操作过程
|
||||
#### 调整曝光
|
||||
在设置天光与其他主光源亮度前,需要确定好曝光值。在1.2节27min左右Daedalus51打开Visualize——HDR(人眼适应),通过该工具来查看亮度分布、以及亮度调整情况情况。以此来调节后处理空间中的曝光度范围。(调整曝光范围:0.03~2 => 0.4~2)
|
||||
|
||||
#### 开启ToneMappering
|
||||
1.2章节34min处,这段ToneMappering介绍这段推荐只看英文字幕。
|
||||
|
||||
Daedalus51通过命令行查看是否开启ToneMappering,输入r.TonemapperFilm,可以查看是否开启ToneMappering功能。(0为关闭,1为开启)输入r.TonemapperFilm 1就可开启ToneMapper功能。
|
||||
|
||||
Daedalus51之后调整了ToneMapping曲线(在后处理的PostProcess-Film中),不过个人不建议调整,除非对调色十分了解。
|
||||
##### 有关Console命令的技巧
|
||||
这里几个操作都与Console命令有关,所以介绍一下Daedalus51介绍的技巧:
|
||||
|
||||
**查看所有命令详细信息**:在Ue4编辑器窗口中点击Help-ConsoleVariables,就可以得到console命令表,可以查看详细说明。
|
||||
|
||||
**在项目启动时默认执行一些命令**
|
||||
在项目目录的Config文件中DefaultEngine.ini(/Script/Engine.RenderSettings)中输入命令。例如:r.SSS.Quality=4
|
||||
##### 有关其他后处理效果
|
||||
因为ToneMappering会影响到后处理中调色效果,所以Daedalus51推荐使用Lut来做后处理。
|
||||
|
||||
## 本人对于曝光的看法
|
||||
本文主要是以笔记的形式来记录在视频中所学习到东西,所以比较杂乱。因为在看完所有视频与资料后,我在此总结一下我对曝光的看法。
|
||||
|
||||
在物理灯光换算方面,日天大佬花费大量功夫整理出一张换算表,这样是效率最高的工作方法。当然我是一个嫌麻烦的人,也没有时间仔细研究这些东西,还是使用Unreal4的像素检测器直接检测亮度比较方便。
|
||||
|
||||
对于曝光,我大致有两种方案:
|
||||
### 以EV0作为基准的
|
||||
一个是以EV0作为基准来调整场景灯光的传统方法。之后再通过曝光换算公式将实际灯光亮度转化为EV0的亮度,最后再调整自动曝光范围。但这样也就是失去了物理灯光的意义了。
|
||||
|
||||
虽然“虚幻争霸”是采用这种曝光方案来布置灯光。但Unreal4马上就要推出物理大气,同时“堡垒之夜”中已经使用了日天系统(Sun And Day),可以说“物理化”是一个势在必行的趋势。
|
||||
### 以真实环境EV作为基准
|
||||
一个是根据场景的环境特征确定EV,使用真实灯光的亮度数据。因为是真实世界测量出的数据,所以你可以很容易且快速精准地做出逼真效果。相当适合于建筑室内设计等需求照片级渲染质量需求。
|
||||
|
||||
#### 解决场景HDR差距较大所产生光照问题
|
||||
以上两种方案都需要解决场景动态范围差距较大所产生的暗部亮部效果无法兼顾的“问题”。
|
||||
严格的说这不能算是一个问题,因为这就是正确的渲染结果。
|
||||
|
||||
李文磊老师在《在UE4中实现灯光之美》演讲中有说到
|
||||
>以我个人经验我觉得这个发范围超过8个档位以外的像素,大家可能需要小心点,如果是0的EV基础值,低于-5.3可能会死黑,高于3可能会爆掉,这是个人的经验。
|
||||
|
||||
我们可以通过减少HDR插件来避免这种“问题”的产生,具体可以使用以下两种方式:
|
||||
|
||||
**降低室外天光亮度**
|
||||
降低室外主光源的亮度,来匹配室内EV。避免使用高EV的环境HDR图(比如正午大晴天)。选择低EV的环境HDR图,例如早晨无云、正午多云的环境HDR图。再使用恰当的EV范围进行自动曝光,效果就比较好了。
|
||||
|
||||
如果不想让用户看到自动曝光的转换过程,可以提高自动曝光速度。
|
||||
|
||||
**提高室内灯光亮度**
|
||||
提高室内灯光的亮度,来匹配室外EV。
|
||||

|
||||
|
||||
### 动态环境球与天光捕获问题
|
||||
上文有介绍Daedalus51的动态环境球方案。那么问题来了,天光捕获的是哪一帧的环境球?我们无法确定。那么天光烘焙结果就是不确定的么?那么TrueSky之类的RayMarching材质,天光捕获是否会正确呢?
|
||||
|
||||
因为本人没有TrueSky,而且这个问题也无伤大雅,所以本人就不研究了。
|
||||
#### 个人对于动态天空的意见
|
||||
其实本人不太喜欢Daedalus51的环境球方案,因为会穿帮。个人还是倾向于改造BP_Sky_Sphere。BP_Sky_Sphere的问题主要在云与大气上。
|
||||
|
||||
云的话还是推荐做成RayMarching,计算透明度与阳光散射效果(如果是不运动的云可以预计算效果)
|
||||

|
||||
|
||||
大气效果应该不是物理的不然Unreal4也不会在4.24推出物理大气系统。
|
@@ -0,0 +1,154 @@
|
||||
## 前言
|
||||
动态光照需要使用多种照明技术协同工作,这一点与只需要LightMass的静态光照不同。所以这一章,我将会总结一些有关动态光照相关的参数、使用场景与设置技巧。
|
||||
### Daedalus51的流程
|
||||
#### 1.2章节的流程
|
||||
1. 去除干扰场景光照的后处理效果(本系列第一篇文章)
|
||||
2. 检查贴图的固有色是否正确并进行调整。(本系列第一篇文章)
|
||||
3. 调整天光以符合设计目标。(本系列第一篇文章)
|
||||
4. 分别开启Visualize Distance Field Ambient Occlusion、Visualize Mesh Distance Field检查距离场以及对应效果。
|
||||
5. 设置曝光相关属性。
|
||||
6. 设置方向光与其他主光源的基础属性(方向、亮度等)
|
||||
7. 给场景中的带有反射属性的物体添加反射球并调整属性。(Daedalus51的流程中没有关闭空间反射,如果你按照我之前写的关闭空间反射,这里要记得开启)之后开启Reflections模式查看场景反射情况。
|
||||
8. 添加补光灯光,以及伪造灯光来增加气氛
|
||||
9. 放置高度雾。(雾可以改变场景色调)
|
||||
10. 后处理调色。
|
||||
|
||||
**如何补光**<br>
|
||||
使用 关闭Cast Shadow、Min Roughness为1的点光源进行补光。这种灯光十分柔和,可以用于提亮局部死黑部分。配合Light Channel可以只对某一些物体起作用。
|
||||
|
||||
**阴影建议**<br>
|
||||
如果灯光开启了动态阴影,那么请不要使用点光源,而需要使用聚光灯。Daedalus51的理由是:点光源会向6个方向投射阴影(类似Box),对性能消耗较大。(但事实上因为Ue4光照缓存机制,所以只有第一次渲染才会有如此大的消耗)
|
||||
|
||||
当若干几个物体较黑时可以考虑使用聚光灯,并且设置Min Roughness为1,这样可以达到提亮物体的作用。
|
||||
|
||||
### 调试用命令
|
||||
- r.Shadow.MaxResolution 可选参数256~2048默认2048
|
||||
- r.Shadow.MinResolution 可选参数16~128默认32
|
||||
- r.Shadow.FadeResolution 可选参数64~2048默认64
|
||||
- r.Shadow.DistanceScale 可选参数0.5~2默认1
|
||||
- r.Shadow.RadiusThreshold 可选参数0.01~0.5默认0.03
|
||||
- r.Shadow.CSM.MaxCascades 可选参数1~16默认3
|
||||
- r.Shadow.CSM.TransitionScale可选参数0~2默认1
|
||||
- r.ShadowQuality 可选参数1~5默认5
|
||||
- r.LightFunctionQuality 可选参数0~2默认2
|
||||
- r.DistanceFieldShadowing True~False默认True
|
||||
- r.DistanceFieldAO True~False默认True
|
||||
- r.ParticleLightQuality 可选参数0~2默认1
|
||||
- r.Shadow.UnbuiltPreviewInGame
|
||||
- r.Shadow.UnbuiltNumWholeSceneDynamicShadowCascades
|
||||
- r.Shadow.MaxCSMResolution
|
||||
- r.CapsuleShadows
|
||||
|
||||
更多技巧请参考第二章的《有关Console命令的技巧》段落。
|
||||
### 级联阴影(Cascaded Shadow Maps)
|
||||
级联阴影分为近阴影与远阴影。两者皆可以设置数量、过度距离以及过度参数(在光源中设置)。
|
||||
|
||||

|
||||
|
||||
级联阴影技术介绍:https://gameinstitute.qq.com/community/detail/117522
|
||||
|
||||
下面这部分内容总结于《Lighting Troubleshooting Guide》,部分条目的解释有配图,我也懒得贴了,所以推荐直接看原文。<BR>
|
||||
https://wiki.unrealengine.com/LightingTroubleshootingGuide
|
||||
##### 方向光特有属性
|
||||
###### Dynamic Shadow Distance Movable
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
|
||||
###### Dynamic Shadow Distance Stationary
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
###### Num Dynamic Shadow Cascades
|
||||
view frustum被分割成的级联的数量。更多的级联将导致更好的阴影分辨率,但会显著增加渲染成本。
|
||||
###### Cascade Distribution Exponent
|
||||
控制级联的分布,是离相机更近(高值)还是更远(低值)。值1表示转换将与分辨率成正比。
|
||||
###### Cascade Transition Exponent
|
||||
级联之间的过度参数,较低的数值产生会较生硬的过度,而较高的数值会产生较平缓的过度。
|
||||
###### Shadow Distance Fadeout Fraction
|
||||
阴影淡出参数。较高的值会使阴影显得较淡一些,而较低的值会使阴影显得较深一些。
|
||||
##### 对于所有的动态光源
|
||||
###### Shadow Bias
|
||||
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
|
||||
###### Shadow Filter Sharpness
|
||||
控制阴影边缘的锐化程度。
|
||||
#### 调整级联阴影以得到更好的效果
|
||||
通过调整上述设置,可以很好地调整阴影的出血值和精度。下一节将尝试调整到最佳成都,以获得更好的精度与阴影。找到一种适合任何特定游戏的平衡将需要耗费时间、精力来进行大量测试。
|
||||
|
||||
以下是默认设置下会出现的问题。
|
||||

|
||||
|
||||
调整后的结果
|
||||

|
||||
|
||||
#### 远距离阴影(Far Shadow)
|
||||
一般是方向光作用在地形上的阴影,使用的是Cascaded Shadow Maps。<br>
|
||||
相关选项有:<br>
|
||||
方向光源-》Cascaded Shadow Maps-》 Far Shadow Cascade Count(阴影精细程度)与Far ShadowDistance(显示距离)
|
||||
|
||||
地形是默认开启Far Shadow的。如果想对Actor启用则需要手动开启。
|
||||
#### 级联阴影调试
|
||||
可以通过show=》advanced=》ShadowFrustums显示阴影调试(只对方向光有效)。以此可以观察Cascaded的级数切换距离。
|
||||
|
||||
### 距离场光线追踪技术
|
||||
级联阴影在显示远阴影时为了效果会增加阴影级数这样会增加消耗,而距离场阴影的消耗相对较小,所以会采样近距离级联远距离距离场阴影的配合方式。同时它可以解决因为屏幕空间渲染技术而导致的阴影失真的问题。另一个主要用处就是距离场AO了。或者可以使用距离场来写Shader。
|
||||
|
||||
注意:距离场技术只适用于Static Mesh。
|
||||
### 如何开启
|
||||
首先需要开启距离场生成,在项目设置——渲染——灯光——勾选 生成模型距离场 选项。
|
||||
|
||||
之后在需要的灯光处勾选“Ray Tracing Distance Field Shadow”选项开启。
|
||||
### 距离场检查
|
||||
距离场的构建质量将决定距离场相关技术的渲染效果。距离场分为模型距离场与全局距离场。你可以通过在Show > Visualize >中勾选Global Distance Field、Mesh Distance Field、Distance Field Ambient Occlusion来对渲染效果进行debug。尤其是AO,一下子就能找到效果不好的地方。
|
||||
|
||||
Daedalus51推荐给这些选项设置快捷键来提高效率。在编辑器设置中搜索:Visualize Global Distance Field、Visualize Mesh Distance Field、Visualize Distance Field Ambient Occlusion后设置快捷键即可。
|
||||
|
||||
如果距离场效果不佳,可以在对应StaticMesh编辑器中设置Distance Field Resoulition Scale来调高分辨率(记得按Apply Changes)
|
||||
### 距离场模型问题
|
||||
因为距离场使用体积贴图来存储空间信息,所以对于巨大物体(比如摩天大楼)应该把模型拆成小块,以减少性能损耗。
|
||||
|
||||
同理,模型的形状也不应该奇形怪状,这样会大大的影响距离场构建质量。
|
||||
|
||||

|
||||
### 植被渲染注意
|
||||
因为植被面数高、结构复杂等因为因素,不适合使用LightMass、SSAO进行渲染,但距离场AO却十分适合。
|
||||
|
||||
对于树叶等需要双面渲染的物体,需要在模型设置中勾选Two-Sided Distance Field Generation,以生成正确的距离场。
|
||||
### 级联阴影切换
|
||||
可以对灯光中的Cascaded Shadow Maps——Dynamic Shadow Distance MoveableLight进行设置,来达到级联阴影与软阴影的切换(靠近物体会切换成级联阴影)
|
||||
|
||||
取值可以参考静态光照的Dynamic Shadow Distance属性。
|
||||
### 其他注意事项
|
||||
光源中的SourceRadius、SourceLength、LightSourceAngle会对软阴影产生影响(学过光追的人都知道为什么)
|
||||
|
||||
天光也有距离场AO的选项,千万别忘记了。
|
||||
## 胶囊阴影
|
||||
这是骨骼物体的软阴影方案,所以光源的SourceRadius、SourceLength、LightSourceAngle选项也会对此产生影响。
|
||||
|
||||
- Capsule Direct Shadow:此属性将启用来自直接(可移动)光照的柔和阴影。
|
||||
- Capsule Indirect Shadow:此属性将启用来自预计算光照(光照图和天光)的柔和阴影。
|
||||
- Capsule Direct Shadow Min Visibility:调整胶囊阴影的明暗度
|
||||
### 如何启用
|
||||
1. 在角色Asset中指定ShaowPhysicsAsset。
|
||||
2. 在角色Asset的Lighting选项卡中勾选Capsule Direct Shadow或者Capsule Indirect Shadow
|
||||
|
||||
### 接触阴影(Contact Shadows)
|
||||
是一种为了弥补级联阴影的缺陷,用于补充角色细节、场景细节阴影的技术。它是一种根据深度信息进行着色的后处理渲染技术。
|
||||
|
||||
ContactShadowLength参数大于0时就会开启,默认是关闭的。。
|
||||

|
||||
|
||||
https://docs.unrealengine.com/zh-CN/Engine/Rendering/LightingAndShadows/ContactShadows/index.html
|
||||
#### 原理
|
||||
将接触阴影的长度设为大于零的值后,渲染器将通过场景的深度缓存从像素的位置到光源进行光线追踪。举一个典型的例子来说,将接触阴影长度的最大值设为 1,此处的 1 则代表光线遍历整个屏幕。而将接触阴影长度的值设为 0.5 则意味着光线遍历半个屏幕。注意:场景深度缓存中的获得的采样将保持不变,意味着增加接触阴影的长度时将出现更多噪点(穿帮)。长度为 0.75 的接触阴影比长度为 0.1 的接触阴影生成的噪点更多。
|
||||
#### 应用场景
|
||||
1. 当前平台只支持一个光源,且需要使用Marching实现的视差Shader。
|
||||
2. 角色细节阴影与墙面植物(爬山虎)阴影。
|
||||
|
||||
### Light Propagation Volumes
|
||||
|
||||
### HDRIBackdrop
|
||||
4.23的新功能,这个东西会把地面部分的HDR投射到一个平面上,这样场景中物体的阴影就可以投射到“HDR背景上”。适合于产品展示。奥秘就在这个环境球上。
|
||||
|
||||
当然Engine还提供了其他环境球可以根据需要选择。如何选择请参考文档:https://docs.unrealengine.com/4.27/en-US/BuildingWorlds/LightingAndShadows/HDRIBackdrop/
|
||||
不过使用的时候需要注意以下设置:
|
||||
- HDR贴图设置:最大纹理尺寸(Maximum Texture Size)应与已导入HDR图像的较大分辨率值匹配。
|
||||
- 应将 Mip生成设置(Mip Gen Settings)设为NoMipmaps以使用完全品质。
|
||||
- 调整Hdr Size(拍摄场景的大小)
|
||||
- 如果原始设置下,如果摄像仪偏离Projection Center点,远处的背景就会产生形变,解决的方法是勾选Use Camera Projection选项
|
43
03-UnrealEngine/Rendering/Lighting/灯关相关学习资料.md
Normal file
43
03-UnrealEngine/Rendering/Lighting/灯关相关学习资料.md
Normal file
@@ -0,0 +1,43 @@
|
||||
## 相关学习资料
|
||||
### Unreal Circle线下培训专场 2019-09-10(带翻译,新手教程)
|
||||
https://www.bilibili.com/video/av67278159/?p=9
|
||||
|
||||
**建议:除非你一点基础都没有不然不推荐学习。**
|
||||
|
||||
### Ue4照明技术引导(静态光照) 2017-1-25(视频、学习用场景、wiki、新手教程,比Unreal Circle那个稍微进阶一些)
|
||||
- https://www.youtube.com/watch?v=jCsrWzt9F28&list=WL&index=7&t=0s
|
||||
- https://forums.unrealengine.com/unreal-engine/events/107078-training-livestream-lighting-techniques-and-guides-jan-24-live-from-epic-hq?134388=
|
||||
- https://cdn2.unrealengine.com/CommunityTab%2FEnglish%2F2017%2FJan+23%2FLiveStream_Lighting-11f85d1762b463154b5f53f7468e135f65955bed.zip
|
||||
- https://wiki.unrealengine.com/LightingTroubleshootingGuide
|
||||
|
||||
**建议:讲解了一些较为有用细节问题(间接光照缓存、自发光物体烘焙、远阴影等),配套的Wiki更是总结大部分光照问题。但是4.18更新了较多内容,有一些知识已经不适用了,但依然推荐学习。**
|
||||
|
||||
### Ue4照明技术引导(动态光照)
|
||||
- https://www.youtube.com/watch?v=nm1slxtF_qA
|
||||
- https://forums.unrealengine.com/unreal-engine/events/113380-training-livestream-lighting-techniques-and-guides-2-dynamic-light-april-4-live-from-epic-hq?140547=
|
||||
**建议:讲解了级联阴影、距离场、细节阴影的相关细节与几个debug技巧,推荐学习**
|
||||
|
||||
### 解密照片级表现技巧 2016-7-27(为数不多的中文干货教程)
|
||||
此为静态光照、与LightMass使用经验教程(主要讲一些参数的经验值)。
|
||||
https://www.engineworld.cn/forum.php?mod=viewthread&tid=432&highlight=%E8%A7%A3%E5%AF%86%E7%85%A7%E7%89%87%E7%BA%A7%E8%A1%A8%E7%8E%B0%E6%8A%80%E5%B7%A7
|
||||
**建议:里面的参数已经可以使用,但本人不建议那么把数值调那么大,建议各位在逐步测试后,再使用。**
|
||||
|
||||
### 虚幻4GPU构建方式和注意事项
|
||||
https://www.bilibili.com/video/av66480934 <br>
|
||||
https://forums.unrealengine.com/development-discussion/rendering/1460002-luoshuang-s-gpulightmass
|
||||
**建议:国人开发的东西(此大神已经是EPIC员工了),效果还不错,建议大家去尝试。**
|
||||
|
||||
### 精通 UE4 Lightmass 2017-11-02(为数不多的中文干货教程)
|
||||
本质是对官方视频 https://www.youtube.com/watch?v=ihg4uirMcec
|
||||
的解读<br>
|
||||
https://mp.weixin.qq.com/s/CUVJ57s_qsCNzdVHw5OhNQ
|
||||
|
||||
### UE4 国外顶级大佬灯光系统全面讲解(机翻字幕)
|
||||
https://www.bilibili.com/video/av59548243/p1
|
||||
|
||||
### 虚幻4中的物理灯光
|
||||
https://zhuanlan.zhihu.com/p/69248316
|
||||
https://zhuanlan.zhihu.com/p/69348892
|
||||
https://zhuanlan.zhihu.com/p/70288801
|
||||
https://zhuanlan.zhihu.com/p/71515823
|
||||
https://zhuanlan.zhihu.com/p/71584366
|
@@ -0,0 +1,199 @@
|
||||
## 前言
|
||||
在这一章我将会翻译一些我个人觉得有用的文章以此来作为这个系列的结尾。
|
||||
|
||||
本文图较多,手机党请注意。本文仅作为个人笔记使用,不保证所有操作都是正确的,请各位谨慎阅读
|
||||
## 推荐学习顺序
|
||||
对于有一定基础,知道各种灯光概念却不知如何下手的读者,首先推荐观看Daedalus51的第一章节视频。因为第一章节中的知识与技巧几乎覆盖了整合视频。后续的视频虽然也还行,但是相对来说意义就没那么大,除非你相当有时间。
|
||||
|
||||
之后就是推荐看我写的《灯光总结系列》,里面总结各种操作与参数,你可以把它作为参考书进行对照。但这几篇文章因为本人能力、精力有限,没有经过仔细整理,看完会些混乱。
|
||||
|
||||
所以之后我推荐看Daedalus51推荐的流程文章与李文磊老师的《在UE4中实现灯光之美》。
|
||||
|
||||
另外推荐几个官方的视频:
|
||||
|
||||
Ue4曝光入门
|
||||
https://www.youtube.com/watch?v=Ehg4sLxOH1o
|
||||
|
||||
Ue4校色入门
|
||||
https://www.youtube.com/watch?v=0HMFczWSRig
|
||||
|
||||
Ue4后处理入门
|
||||
https://www.youtube.com/watch?v=aGsUU_bvOgw&feature=youtu.be
|
||||
|
||||
## Daedalus51推荐的流程文章
|
||||
原文地址:https://80.lv/articles/setting-lighting-in-unreal-engine-4-20/
|
||||
|
||||
**场景初步调试**
|
||||
首先清理场景,这一步包括了:调整材质、移除所有旧灯光、放置Lightmass Importance Volumes与Lightmass Portals。一开始的测试渲染会使用默认的LightMass设置。基础效果差不多后,调整到以下参数,并切换至中级效果进行烘焙,至到最终渲染。
|
||||
|
||||
体积光照贴图密度取决于环境雾精度。如果对性能没有要求可以使用更高的采样与更高的光照贴图分辨率。
|
||||
|
||||

|
||||
再光照模式下查看效果,场景只烘焙了自发光。
|
||||
|
||||

|
||||
光照贴图密度
|
||||
|
||||

|
||||
最终烘焙所用的LightMass设置参数
|
||||
|
||||
**设置主要光源**
|
||||
在设置完场景后,开始规划主要光源。首先需要一个来自外部的明亮光源来提供室内绝大多数的照明,但需要保证室内暗部
|
||||
的灯光依然可见。所以作者选择阴天正午时分的Hdr环境图来充当天光(使用场景捕获+环境球模型+环境球材质)。调整天光材质的亮度,至到其物理亮度达到阴天亮度值(使用Ue4的像素检测工具可以检测物理亮度值)。你可以使用Ue4的像素检测工具检查环境球基础关键区域(天空、亮度云层、暗部云层、太阳),但在检查时需要关闭ToneMappering并保持曝光度为0,
|
||||
以及关闭雾气等处于摄像鱼天空之间的显示效果,不然像素检测工具会给出错误的数值。
|
||||
|
||||
中午时分的天空亮度大约在400(云彩暗部)~10000(云彩亮部) `${cd/m^2}$` 。基于作者想要达到效果,曝光值(EV)定在5~7之间就比较室内渲染。对于外部的环境球可以使用EV10。注意一下HDR亮度:
|
||||

|
||||
|
||||
**自发光光源**
|
||||
作者以相同的方式来设置自发光物体。以下是室内LightingOnly模式下只烘焙自发光的效果(应该还有天光,本人并不赞同使用自发光来代替灯光,除非你的灯光形状非同一般。):
|
||||

|
||||
|
||||
因为场景中的金属物体会反射到环境球,所以下一步就应该添加反射球了。
|
||||
细节光照模式(关闭屏幕空间反射)第一张为只有环境球反射高光效果。第二张为只有反射球效果。
|
||||

|
||||

|
||||
|
||||
**灯光形状与反射捕捉**
|
||||
在几次测试烘焙后,作者开始放置实际光源与反射球。作者更加倾向于以真实环境作为参考来设置灯光属性(例如光源形状与参数)。作者会尽可能地使用Static类型的灯光,如果该灯光会作用于角色等动态物体,那就会使用Stationary类型的灯光。体积光照贴图可以弥补动态光照的不足,但这取决于你对显存与GPU运算能力的把控。
|
||||
|
||||
作者更喜欢使用色温来控制灯光颜色。毕竟大多数灯光厂家都会标注灯光色温,而且Unreal4可以直接通过色温来控制灯光颜色。以下是场景中主光源的设置参数:
|
||||

|
||||
|
||||
**后处理校色与效果打磨**
|
||||
因为本人对校色不了解,这边就直接贴原文了:
|
||||
Once I’m happy with the lighting, I move over to color grading and polishing. I adjusted some of the Base Colors to push them more in line with a “vintage” green/orange color palette too. During early color grading explorations, I tend to grade in DaVinci Resolve because of the control and scopes, but I eventually recreate the grade directly in the engine to keep it HDR-ready. Unreal lacks some of the tools available in Resolve, but you can achieve a near identical result with what Epic has provided thus far.
|
||||
|
||||
Depending on the look, you can usually get most of the way there with the Global controls, then fine tune the shadows, mid-tones, and highlights with their respective controls. Highlights and Shadows will have a threshold value that acts as the range of what is considered a highlight or shadow, and anything in between those two will then be considered mid-tones.
|
||||
|
||||
To explain my color grading a little easier, here is a screenshot of my settings. It’s worth pointing out that I avoid adjusting the tone mapper. Combined with color grading, it can get very messy to manage. It’s better to consider your tone mapper as your “film stock,” and only modify it if you want to change the overall look and not on a per shot basis. I also try to work in stages and as simple as possible. Instead of jumping around between the different controls, I go from Global to Shadows, to Midtones, to Highlights (or whatever I know is the most effective for my grade) and only use what I need. If I can achieve the look I want with one or two sliders, compared to 5 or 6 with 10% influence, I’d rather do that because it’s cleaner, easier to control, and easier to revisit later on without being completely lost.
|
||||
|
||||

|
||||
|
||||
- White Balance: I warmed up the scene slightly to increase the feeling of everything being bathed in yellow/orange from the incandescent bulbs and diffused light fixtures
|
||||
- Tint: a similar concept to the White Balance, but on a green/magenta scale. I pushed it more towards green to aid in the yellowish/sickly feeling. It also helps make the orange in the Base Color pop a little more
|
||||
- Global:
|
||||
- Saturation: I adjusted the saturation overall to bring out the orange more
|
||||
- Shadows:
|
||||
- Saturation: Desaturated shadows. A common look that film stocks have along with desaturated highlights, but the ACES tone mapper does that one for you
|
||||
- Contrast: I use Contrast pretty often because it’s designed around keeping 18% gray neutral and it naturally gives you complementary colors, quickly getting you a more pleasing color palette
|
||||
- Offset: Added a little bit of blue to the shadows
|
||||
- Midtones:
|
||||
- Contrast: Same idea as the shadows. Pushed complimentary colors a tiny bit which helped with additional blues to smooth out the shadow offset
|
||||
- Gain: Works kind of like a multiplier, and I wanted to get some bleaching around the light areas
|
||||
- Highlights:
|
||||
- Gain: Mostly tinted the white spots (emissives and sky) green to push the same feeling as the overall Tint from above, but with a tiny bit of a roll-off into the higher end of the mid-tones to add to the “bleaching”
|
||||
|
||||
## 《在Ue4中实现灯光之美》中的灯光Fake技巧
|
||||
在传统的打光我们会去调整灯光的反差,比如提高对比,降低对比,比如在太阳底下我们拍摄电影我们会通过柔光板,或者遮光板去降低反差,在UE里面也可以通过一些简单的方式,通过透明物体去投影,按需求去控制影子的浓度,降低对比度。
|
||||

|
||||
|
||||
使用贴图与定制的贴花材质来区域阴影伪造。
|
||||

|
||||
|
||||
使用后处理材质,控制场景亮度、饱和度。对于使用LightMass烘焙的场景可以在调整曝光度比值与间接光照强度。
|
||||

|
||||
|
||||
一些场景的光线强度分布差距较大时,会出现只能讨好一边的情况,所以我们可以其中一边为标准调整另一边的灯光亮度。在传统的拍电影过程中也能实现,拍电影的灯光功率都非常大,为了平衡室内外的灯光,室内就是打了这么亮的灯光,当然在引擎中或者游戏中我们非常容易的就能实现。
|
||||

|
||||
|
||||
## 问题解答
|
||||
原文地址:
|
||||
https://wiki.unrealengine.com/LightingTroubleshootingGuide
|
||||
### 静态部分
|
||||
#### 为什么我的阴影死黑?
|
||||
在光照条件下,深黑色阴影通常意味着没有填充光。这种情况经常发生在室外环境中,一个方向的光代表太阳。UE4有一个内置的方法来提供一个影响填充光的世界,我们把它称为天光。
|
||||
|
||||
#### 不想生成光照贴图
|
||||
1. Rendering——Lighting——AllowStaticLighting确保引擎不会生成光照贴图。(项目级)
|
||||
2. 打开世界设置——Lightmass——Force No Precomputed Lighting。(关卡级)
|
||||
|
||||
#### 双面渲染物体的阴影问题
|
||||
1. 在StaticMesh——Lighting——LightMassSetting中勾选UseTwoSidedLighting。(仅对静态光照)
|
||||
2. 在物体的材质选项中勾选TwoSided
|
||||
|
||||
#### 灯光上出现X标记
|
||||
因为有超过4个光源重叠在一起,这样会严重影响性能。动态光在该重叠区域会强制设为一个动态光源,而静态光源会在烘焙光照时弹出重叠提示。
|
||||
### 动态部分
|
||||
#### 阴影不正确
|
||||
##### 方向光
|
||||
###### Dynamic Shadow Distance Movable
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
|
||||
###### Dynamic Shadow Distance Stationary
|
||||
以摄像机为起点的阴影覆盖距离,该值为0则代表禁用该功能。
|
||||
###### Num Dynamic Shadow Cascades
|
||||
view frustum被分割成的级联的数量。更多的级联将导致更好的阴影分辨率,但会显著增加渲染成本。
|
||||
###### Cascade Distribution Exponent
|
||||
控制级联的分布,是离相机更近(高值)还是更远(低值)。值1表示转换将与分辨率成正比。
|
||||
###### Cascade Transition Exponent
|
||||
级联之间的过度参数,较低的数值产生会较生硬的过度,而较高的数值会产生较平缓的过度。
|
||||
###### Shadow Distance Fadeout Fraction
|
||||
阴影淡出参数。较高的值会使阴影显得较淡一些,而较低的值会使阴影显得较深一些。
|
||||
###### Far Shadow
|
||||
级联阴影的远阴影开关,可以解决当摄像机处于较远距离时,物体的阴影会消失的问题。
|
||||
|
||||
#### 调整级联阴影以得到更好的效果
|
||||
通过调整上述设置,可以很好地调整阴影的出血值和精度。下一节将尝试调整到最佳程度,以获得更好的精度与阴影。找到一种适合任何特定游戏的平衡将需要耗费时间、精力来进行大量测试。
|
||||
|
||||
以下是默认设置下会出现的问题。
|
||||

|
||||
|
||||
调整后的结果
|
||||

|
||||
##### 对于所有的动态光源
|
||||
###### Shadow Bias
|
||||
控制阴影在场景中的精确程度。默认值是0.5,这是权衡了精度与性能的值。
|
||||
###### Shadow Filter Sharpness
|
||||
控制阴影边缘的锐化程度。
|
||||
|
||||
##### 为什么可移动光源在较远时其遮挡关系会出错
|
||||

|
||||

|
||||
|
||||
为了解释这一点,我们首先需要了解Ue4的渲染优化方法。引擎根据场景深度来判断场景中Mesh的可见性(首先物体需要处于摄像机矩阵中),如果Mesh过于远离摄像机,Mesh将不会被渲染或是被遮挡。所以就会出现图中的现象。
|
||||
|
||||
你可能会注意到,当选择物体时,灯光恢复正常。这是预料之中的,因为它处于焦点状态。
|
||||
|
||||
解决方法是:在Mesh属性界面,调整Bounds Scale选项的大小。默认值设置为1.0。建议的调整范围为1.1、1.2左右,调整的量不宜过大,会影响性能与阴影质量。
|
||||
|
||||
可以viewport > Show > Advanced > Bounds 开启包围盒显示进行debug。
|
||||
|
||||
另一个解决思路就是使用聚光灯或者使用静态光烘焙光照贴图。
|
||||
### 静态部分
|
||||
你可以在世界设置中的LightMass调整以下参数以获得更好的效果:
|
||||
Indirect Lighting Quality设置成2或者更高。
|
||||
Indirect Lighting Smoothness通常被设置为0.65~0.7之间。数值越低噪点会越多。
|
||||
#### 如何控制静态照明的全局照明效果?以及光线反弹的美妙之处
|
||||
默认情况下,LightMass的光线反弹次数为3,我们可以在Settings > World Settings > LightMass
|
||||
中修改反弹次数以获得更好的效果。
|
||||
|
||||
光线的第一次反弹所需的计算时间是最长的。之后的反弹对实际构建时间的影响较小,但对视觉效果的影响也要小得多。
|
||||
#### 解决阴影“脏”的问题
|
||||
首先,这种现象的原因与GI中的间接光照有关。
|
||||
|
||||
以下使用默认场景来创建2个测试用的关卡,其中Mesh的光照贴图分辨率设为256,后期空间开启人眼自适应。
|
||||

|
||||
<center>直接光照与一次反弹的间接光照</center>
|
||||
|
||||

|
||||
<center>只有一次反弹的间接光照</center>
|
||||
一个较为暴力的手法就是提高光照贴图分辨率,但这不是最好的方法。因为这样做会增大内存消耗。
|
||||
|
||||

|
||||
<center>光照贴图分辨率为1024的结果</center>
|
||||
|
||||
在WorldSettings——LightMass中,可以对以下参数进行设置:
|
||||
##### Indirect Lighting Quality
|
||||
控制间接光照的质量,以获得更佳的效果。
|
||||
##### Indirect Lighting Smoothness
|
||||
控制光照贴图中细节的平滑度。
|
||||
##### Num Indirect Lighting Bounces
|
||||
间接光照光线的反弹次数。
|
||||
|
||||
在对这些参数进行调整后,即使是光照贴图分辨率为512,其效果也比1024的好了。
|
||||

|
||||
<center>光照贴图分辨率为512</center>
|
||||
|
||||

|
||||
<center>光照贴图分辨率为1024</center>
|
16
03-UnrealEngine/Rendering/Lighting/解决UE5植被阴影出现噪点的问题.md
Normal file
16
03-UnrealEngine/Rendering/Lighting/解决UE5植被阴影出现噪点的问题.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: 解决UE5植被阴影出现噪点的问题
|
||||
date: 2022-09-26 11:04:44
|
||||
excerpt:
|
||||
tags: Lumen
|
||||
rating: ⭐
|
||||
---
|
||||
|
||||
## 调节参数
|
||||
默认为32改成4。
|
||||
>r.Lumen.ScreenProbeGather.DownsampleFactor 4
|
||||
|
||||
默认为0.02改成0.01,阴影会变亮一些,也可以减少噪点。
|
||||
>r.Lumen.ScreenProbeGather.ScreenTraces.HZBTraversal.RelativeDepthThickness = "0.01"
|
||||
|
||||
最后需要将预览质量从EPIC调整到Cinematic,草上的噪点就没有了。
|
Binary file not shown.
After Width: | Height: | Size: 7.4 MiB |
38
03-UnrealEngine/Rendering/Lighting/音乐控制DMX灯光的简单方法.md
Normal file
38
03-UnrealEngine/Rendering/Lighting/音乐控制DMX灯光的简单方法.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: 音乐控制DMX灯光的简单方法
|
||||
date: 2022-11-09 17:13:17
|
||||
excerpt: 摘要
|
||||
tags:
|
||||
rating: ⭐
|
||||
---
|
||||
## 前言
|
||||
最近公司有个活涉及到DMX打光的活,还比较急。为了减少美术同学的压力,所以我就想通过音乐分析+播放Sequence的方式来实现。
|
||||
|
||||
UE有自带基于FFT的音乐分析功能,但只能根据频率进行对应的判断,比较麻烦所以放弃了。具体操作可以参考:
|
||||
https://www.bilibili.com/video/BV1FP411c79v/
|
||||
|
||||
## AudioAnalysisTools
|
||||
这里推荐使用audio-analysis-tools,原因是免费且开源,默认带有一些预设:IsHiHat、IsBeat、IsKick、IsSnare,同时可以通过频率范围来判断节拍。但也正因为此一些功能不够完善,需要自己改一下。
|
||||
下载地址:https://www.unrealengine.com/marketplace/zh-CN/product/audio-analysis-tools
|
||||
|
||||
以下是我做的一个案例,通过音乐分析与K帧来播放对应的子Sequence(预先K好DXM动画)来实现音乐控制DMX灯光效果:
|
||||

|
||||
|
||||
IsBeatRange是根据指定频率声音的音量进行判断,这里可以根据需要来设置判断条件:
|
||||

|
||||
|
||||
因为逻辑是写在Actor中的,所以搞了按键事件来停止音乐播放。
|
||||

|
||||
|
||||
不过需要注意:启用这个插件之后导入Wav就会变成这个资产。如果想要获得SoundWave资产就必须停用插件并且再次导入。
|
||||

|
||||
## DMX移植
|
||||
只需要在新工程里启用DMX插件,之后将官方的DMX的工程迁移即可。需要注意的是Sequence里的需要使用DMX,里面设置好DMXLibrary以及补丁(这中文翻译槽点满满)即可。
|
||||
|
||||
## 后续工作
|
||||
这个方案有一些缺点:
|
||||
1. AudioAnalysisTools需要播放声音才能获取的数据。
|
||||
2. AudioAnalysisTools无法使用UE自带的Asset,同时会导致无法在导入后生成SoundWave Asset。
|
||||
3. 无法在Sequence停止播放时停下(更好的控制)或者在拖动轨道时执行正确的行为。
|
||||
|
||||
这就需要通过自定义Sequence Track以及修改插件才能完美实现。
|
Reference in New Issue
Block a user