转自:http://www.52vr.com/article-868-1.html

这篇文章介绍了类似守望先锋中的帧转移模糊(Smear Frame)效果。
 
该效果由Jan Kaluza实现,本博客的介绍已获得原作者同意。
 
Github地址:传送门
 
效果
 
效果图如下,两个模型实际上都是球: 
Tessellation
 
在本质上,这个效果是使用PN Tessellation来对模型进行曲面细分,然后使用world displacement通道来进行顶点的偏移操作。Tessellation能够给模型带来更多的细节,例如盔甲上的凹痕、地形的小起伏等。
 
但是需要注意的是:Tessellation非常耗费资源,并且Unreal Engine 4在目前为止(4.12.4)也只支持Windows平台的Tessellation。所以如果需要使用Tessellation的话,需要注意性能以及多平台的处理。
 
逻辑实现
 
需要实现这个功能,首先需要获得当前物体在前一段时间的偏移量,因此这里创建了一个Component,在每次Tick的时候更新Previous Position。在使用Previous Position进行计算最后,将最后的偏移量传入Dynamic Material Instance进行计算即可。
 
完整BP如下:
材质实现
 
前提条件
 
该材质需要启用Tessellation,选中D3D11Tessellation,设定为PN Triangles,记得启用Adaptive Tessellation。
此外,由于在Vertex Shader中,无法转换到Local Transform进行计算,所以这里需要两个额外的UV通道用来传递Position信息,因此需要进行设定。
材质函数封装
 
CustomUV通道
 
在这个材质函数中,将Position的X、Y信息储存在Custom UV1中,将Z储存在Custom UV2中。
偏移量的计算
 
Smear效果的特征之一就是这个模型的后面那一块(运动反方向)会产生转移模糊的效果,因此需要将Smear的方向与VertexNormal进行点乘,大于0的顶点才进行处理。
整个材质函数便封装完毕,使用方法如下:
注意事项
 
在Component的逻辑中可以看到Smear的表现效果与帧率有比较大的相关性。在帧率很低的情况下会导致Smear过大,在帧率很高的情况下则会导致Smear过小。
 
一种可行的方法是针对于Component进行锁帧处理,让其固定在一个帧率下运行即可。
 
我进行了这一块的处理,并且已经Pull Request。
 

Unreal Engine 4 Smear Frame效果的实现与分析的更多相关文章

  1. Unreal Engine 4 RenderTarget制作Live Camera效果

    Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. ...

  2. Unreal Engine 4 系列教程 Part 7:音频教程

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  3. Unreal Engine 4 创建Destructible Mesh(可破坏网格)

    Unreal Engine 4的物理引擎用的是PhysX. 支持网格破坏.布料.物理粒子等,非常强大.曾经须要编码才干完毕的工作,在Unreal Engine 4 中仅仅须要拖拖拽拽就完毕了,非常方便 ...

  4. 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二

    AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound  ...

  5. 实例甜点 Unreal Engine 4迷你教程(4)之用C++实现添加子Widget到VerticalBox中以及ClearChildren

    前置教程: 1. 实例甜点前面的三篇教程: 2. 最好看看笔者前面的一篇关于博文(后记:本来笔者想用C++做DragAndDrop的功能,但是失败了,下面是蓝图实现的方法): http://www.c ...

  6. 实例甜点 Unreal Engine 4迷你教程(6)之三个重要基础操作SpawnActor、TArray的Add和Remove

    本小节的教程需要完成前置教程:建议阅读<实例甜点 Unreal Engine 4迷你教程(5)>,因为5里面提到了本节的工程,不过也可以在不看5的前提下直接阅读本教程. 第一步:Empty ...

  7. Unreal Engine 4 基于Kajiya-Kay的材质迭代

    转自:http://www.52vr.com/article-859-1.html 在先前的文章Unreal Engine 4 —— Kajiya-Kay Shading在UE4中的实现 中过了一遍怎 ...

  8. 实例甜点 Unreal Engine 4迷你教程(3)之用C++改变Image小部件的其它属性

    完成本迷你教程之前,请前往完成以下迷你教程: ·实例甜点 Unreal Engine 4迷你教程(2)之用C++改变Image小部件的颜色: 在上一次的迷你教程的LearnWidgets工程上进行(如 ...

  9. 实例甜点 Unreal Engine 4迷你教程(2)之用C++改变Image小部件的颜色

    完成本迷你教程之前,请前往完成以下迷你教程: ·实例甜点 Unreal Engine 4迷你教程之如何用C++将纹理绘制在UserWidget的Image小部件上: 目标:实现UMG中的此功能: 在上 ...

随机推荐

  1. Nginx:承受3万并发连接数,胜过Apache 10倍

    编者按:Nginx是目前比较重要的开源性负载均衡技术,新浪.网易.六间房等很多网站都将Nginx部署进自己的网站系统架构,并解决部分问题.本文是作者长期的实战经验,很有参考价值. 本文是我撰写的关于搭 ...

  2. mysql export query result

    1 . export by shell a.sql use dbname; SELECT id,iab_num FROM iab_list ; mysql -h host -uusername -P3 ...

  3. CSVN(SVN)命令入门及使用过程中遇到的错误问题汇总

    首先进入web管理界面新建一个版本库 新建一个文件text svn add text #如果提示错误,在后面增加–force svn ci -m 'add text' #如果提示错误,将csvn下的目 ...

  4. Distributed Phoenix Chat with PubSub PG2 adapter

    转自:https://www.poeticoding.com/distributed-phoenix-chat-with-pubsub-pg2-adapter/ In this article we’ ...

  5. Ubuntu server 运行.net core api 心得

    1.安装.net core sdk 在微软.net core 安装页面找到linux 安装,按照步骤安装好 2.安装mysql 参考 Ubuntu安装mysql 3.配置mysql 1.需要将mysq ...

  6. Centos 7 Saltstack 集群

    一. Saltstack  双master master1 -------------------master2 | minion master1 1.yum -y install  salt-mas ...

  7. checkbox复选框,如何让其勾选时触发一个事件,取消勾选时不触发

    <input type="checkbox" onclick="checkboxOnclick(this)" /> <script> f ...

  8. 关于value_count

    value_counts将会对于指定列的数据进行group,然后统计出各个出现的值的数量,并且按照从高到低的顺序进行排序 train_data = load_titanic_data("tr ...

  9. 用monit监控mongodb,崩溃后自动重启mongdb

    什么是monit Monit是一个跨平台的用来监控Unix/linux系统(比如Linux.BSD.OSX.Solaris)的工具.Monit特别易于安装,而且非常轻量级(只有500KB大小),并且不 ...

  10. 部署openresty遇到的一些坑

    最近,遇到一个问题,就是我们CMS系统制作的产品页面和产品列表页面,发布到nginx服务器上,因为业务要求,客户看到的链接必须是短链接,当前的做法就是在nginx的配置中通过rewrite的方式做的. ...