UE4使用屏幕后处理实现人物描边效果
思路参考B站OpSader大佬,具体的数学原理大佬在视频里讲的很清楚了,我这里就不献丑了,大家可以去看看视频。
这边主要讲一下具体的操作方式和可修改的参数。我需要的是只对特定模型描边,而不是全屏后处理描边,具体修改方式下面会详细解释。
1、首先创建材质,修改材质属性Material Domain 为 post process,声明是后处理材质。
2、下拉修改 Post Process Material 中的 Blendable Location,改为Before Tonemapping。
3、材质蓝图(小图看不清的可以右键在新标签中打开)
这四个部分是一样的,区别在左下角的参数分别是(1,0),(-1,0),(0,1),(0,-1)
然后全部加起来
4、用一个mask(RGB)来作为遮罩,lerp是为了把描边和现实效果插值到一起。
- outlinecolor:可以设置描边的颜色和亮度。
- LiveDepth: 调整深度
- power:这个乘方是通过小于1的数越乘越小,大于1的数越乘越大来区分。
5、以上是视频中实现的效果,下面谈谈我的修改。
修改1:
用一个Outline_width参数来控制四个参数值(3,4与下图同理)方便修改描边粗细。
修改2:
SceneTexture采样如果用SceneDepth的话就是全屏无差别描边(可以使用post process volume中的Infinite Extent(unbound)属性来控制是否全场景描边。)
这里改为CustomDepth进行采样,只有模型开启了CustomDepth属性才会应用描边效果。在模型的Rendering属性里有个选项叫 Render CustomDepth Pass(如下图)勾选上就可以了。