简介

通过材质计算得到物体边缘,通过后期处理的方式对物体边缘进行描边显示

ue4 材质描边、外发光、轮廓线_哔哩哔哩_bilibili

Unreal Engine 4 卡通轮廓线(Toon Outlines)教程 之 后期处理法(Post Process Outlines)_开发游戏的老王的博客-CSDN博客

实现思路

首先创建一个材质,使用边缘检测的方法,利用场景中物体深度不连续性,得到场中物体边缘。

通过后期处理盒子来渲染轮廓线的效果。

通过控制物体的CustomDepth的开启与关闭动态的开启或关闭物体的轮廓线的显示。

后期处理材质

材质函数 MF_Kernal

边缘检测需要通过卷积计算实现,需要对视口逐像素进行卷积计算,将卷积核封装材质函数,通过材质函数获取中心像素以及上下左右的四个像素,作为卷积核进行运算。

材质函数命名为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总体蓝图

  • Float2(方向) * Input Width(偏移量) * SceneTexelSize(屏幕像素大小) = 像素向某个方向偏移的距离。
  • 像素向某个方向偏移的距离 + ViewportUV(视口UV) = 偏移后的视口UV值
  • 最终的五个输出项
    • Center = 视口UV值
    • Right   = 视口向偏移一定宽度的UV值
    • Left     = 视口向偏移一定宽度的UV值
    • Up       = 视口向偏移一定宽度的UV值
    • Down  = 视口向偏移一定宽度的UV值

M_Outline

创建材质,在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总体蓝图

  • 添加一个标量(width),提升为参数,作为MF_Kernel的输入参数,用于控制轮廓线的偏移宽度。
  • 将MF_Kernel所得到的值,作为SceneTexture: CustomDepth的输入值,得到视口每一个像素的深度值。
  • 拉普拉斯边缘检测计算,中心值*4 减去上下左右四个像素的和,得到物体深度变化的而产生的边缘。使用clamp将值限制在0-1的范围内。
  • 将得到边缘值作为了Lerp的Alpha参数输入,在边缘的地方显示用户定义的颜色,在非边缘的地方显示场景本身颜色
  • 给颜色的输入值乘一个标量(Power)用来控制颜色的发光强度。

蓝图控制轮廓线

添加后期处理盒子

将刚刚创建的主材值,创建一个材质实例M_Outline_Inst,方便对于材质效果参数的调节。

在场景中添加一个后期处理盒子,在后期处理盒子Rendering Features -> Post Process Material新建一个材质插槽,将刚刚创建的材质实例添加到插槽中。

将后期处理盒子的应用范围设置为 Infinite Extent

创建Actor蓝图

  • 控制蓝图逻辑

当按下X键时,开启全部物件轮廓线,当松开X键时,关闭全部物件轮廓线

  • 轮廓线开启效果
  • 轮廓线关闭效果

【UE4_001】后期处理轮廓描边效果相关推荐

  1. UE4轮廓描边【非后处理】

    轮廓是在 3D 环境中突出显示对象的绝佳工具.到目前为止,我尝试过的大多数 Unreal 解决方案都是基于后处理 (PP) 技术来实现对象轮廓的.对我来说,PP 解决方案在行为和外观方面一直是最有效的 ...

  2. unity 3d物体描边效果_从零开始的卡通渲染描边篇

    序言: 一直对卡通渲染非常感兴趣,前后翻找了不少的文档,做了一些工作.前段时间<从零开始>的手游上线了,试着渲染了一下的其中模型,觉得效果很不错.打算写一个专栏记录其中的渲染技术.在后面的 ...

  3. 文字描边_学会这种描边效果,你的PPT也能这么好看

    大家好,我是雅客. 今天给大家介绍一种PPT描边效果. 描边效果我们很少做,但其实很多海报的设计,都会用描边的效果,来增强层次感,让文字看起来更加具有设计感. 下面我们就一起来看看描边效果的应用. 字 ...

  4. Unity Shader-Command Buffer的使用(景深与描边效果重置版)

    Unity Shader-Command Buffer的使用(景深与描边效果重置版) https://blog.csdn.net/puppet_master/article/details/72669 ...

  5. [Unity]Shader利用Geometry处理实现描边效果

    1.原理 利用几何着色器,生成新的顶点,用新生成的顶点,构建描边,在用模板测试剔除原模型,如下图 灰色三角形是模型原来的一个三角面,用几何着色器,延顶点法线向外,创建出新的顶点A,B,C.已知一个面的 ...

  6. 实现游戏中的轮廓描边

    Unity3D教程:实现游戏中的轮廓描边.Unity3D游戏中常用到轮廓描边,效果就是对轮廓描边后再进行模糊处理.有两种思路可以实现: 一.在RTT中绘制单一像素,对1绘制后的RTT进行blur处理惩 ...

  7. 42. Compose1.4 如何在Jetpack Compose中为文本应用描边效果(OpenAi翻译)

    探索Jetpack Compose中文本笔画效果的DrawStyle API Jetpack Compose最近为TextStyle增加了很多新的自定义选项,TextStyle.drawStyle就是 ...

  8. Unity HilightingSystem屏幕后实现物体外发光描边效果

    Unity实现物体外发光描边效果方式有好几种,如重叠放大模型描边Pass.卷积核描边.屏幕后处理等. HIightingSytem使用了屏幕后期效果实现,效果如下: 整理出核心代码如下,主要分为4个步 ...

  9. Unity Shader - 描边效果

    原文链接:http://blog.csdn.net/puppet_master/article/details/54000951 简介 描边效果是游戏里面非常常用的一种效果,一般是为了凸显游戏中的某个 ...

最新文章

  1. Zookeeper迁移(扩容/缩容)
  2. pandas使用apply函数和lambda函数、把所有行指定的数据列进行相加(use apply and lambda to add value in dataframe rows)
  3. 自学python还是报班-Python应该自学还是报班好?
  4. Yii2 配置 Nginx 伪静态
  5. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
  6. an tu tu html5 test,Design an Accuracy Test System for Resolver-To-Digital Converter Based on PXI
  7. 全国大学生数学建模2019年C题机场的出租车问题论文与代码
  8. 【转】基于WebSocketSharp 的IM 简单实现
  9. oracle orm 实例 java_Oracle数据库的JDBC查询实例
  10. 【java】线程 ExecutorService 原理 源码 解释
  11. X3D 参数代码(一)
  12. G4L---linux系统---硬盘对拷(克隆)
  13. 电磁波中的波段划分:L波段、S波段、C波段、X波段、Ku波段、K波段、Ka波段
  14. 基于微信小程序的课堂考勤系统的设计与实现
  15. 盲盒是怎么赚钱的(拆解盲盒App背后的盈利逻辑)
  16. Git GitHub GitLab 超全面学习笔记 -- 匠心之作
  17. 如何使用腾讯云GPU云服务器完成 blender 的动画图片渲染
  18. ResNet 论文阅读笔记
  19. jh mjhmhjmh
  20. unity 双屏,多屏幕显示

热门文章

  1. Failed to create Spark client for Spark session/30041Code
  2. php的tr快捷键,cad修剪快捷键全称(cad修剪命令(快捷键tr)怎么用)
  3. Ubuntu下使用HylaFAX+AvantFAX搭建电子传真系统--安装HylaFAX(2/4)
  4. Django轻量级任务追踪管理平台开发:二
  5. index和roundup扩展数据行并实现筛选
  6. AutoCAD中不能打印图形解决一例
  7. 总有一款适合你!天猫商城x三星电视携手开启618狂欢
  8. HTML 样式- CSS
  9. 关闭QQ好友上线提醒终极方案-(2016年4月20日)
  10. 想把文字转成图片?文字转图片制作软件哪个好用?