赞
踩
通过材质计算得到物体边缘,通过后期处理的方式对物体边缘进行描边显示
Unreal Engine 4 卡通轮廓线(Toon Outlines)教程 之 后期处理法(Post Process Outlines)_开发游戏的老王的博客-CSDN博客
首先创建一个材质,使用边缘检测的方法,利用场景中物体深度不连续性,得到场中物体边缘。
通过后期处理盒子来渲染轮廓线的效果。
通过控制物体的CustomDepth的开启与关闭动态的开启或关闭物体的轮廓线的显示。
边缘检测需要通过卷积计算实现,需要对视口逐像素进行卷积计算,将卷积核封装材质函数,通过材质函数获取中心像素以及上下左右的四个像素,作为卷积核进行运算。
材质函数命名为MF_Kernal,为函数添加五个output,分别对应中心像素,偏上像素,偏下像素,偏左像素,偏右像素。
添加FunctionInput节点,用于控制轮廓线的宽度,将输入值设置为Scalar,并设置一个浮点数作为默认输入值作为偏移量。
添加SceneTexelSize节点,获取屏幕的像素尺寸,例如1920*1080的屏幕,那么U方向上每个像素就占1/1920≈0.000521,V方向上每个像素占1/1080≈0.000926,那么SceneTexelSize的值就为(0.000521,0.000926)。
添加ScreenPosition获取ViewportUV,此处获取了Viewport内所有像素点的UV值,默认视口左上角为(0,0)右下角为(1,1),因此在U方向上加(+1)是向右移动,U方向上(-1)是向左移动,V方向上(+1)是向下移动,V方向上(-1)是向上移动。
创建两个float2,作为偏移的方向,(1,0)在U方向上偏移,(0,1)在V方向上偏移。
MF_Kernel总体蓝图
创建材质,在details面板将材质作用域设置为PostProcess,材质的Blendable Location 设置为 Before Tonemapping
添加SceneTexture节点设置为Depth,选择SceneDepth对全部场景物件进行计算,选择CustomDepth仅计算开启CustomDepth的物件。将MF_Kernel中的得到五个veiwportUV分别输入到SceneTexture中获得每个像素点对应的深度值。
SceneDepth:获取场景中所有物件的深度值
CustomDepth:获取打开CustomDepth通道的物件的深度值
添加SceneTexture节点设置为PostProcessInput0,获取场景中物件的在场景照明中的颜色。
PostProcessInput0:提供HDR的场景颜色
PostProcessInput1:提供分离透明度(Alpha通道是Mask)
PostProcessInput2 :低分辨分辨(Low Resolution)泛光输入
M_Outline总体蓝图
将刚刚创建的主材值,创建一个材质实例M_Outline_Inst,方便对于材质效果参数的调节。
在场景中添加一个后期处理盒子,在后期处理盒子Rendering Features -> Post Process Material新建一个材质插槽,将刚刚创建的材质实例添加到插槽中。
将后期处理盒子的应用范围设置为 Infinite Extent
当按下X键时,开启全部物件轮廓线,当松开X键时,关闭全部物件轮廓线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。