206 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			206 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# 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>
							 |