UE4---科幻扫描线效果笔记

GIF 2021-1-5 14-44-25

思路

  1. 根据Z轴生成0-1Mask贴图
  2. 控制顶部顶点的世界位置偏移
  3. 抖动效果
  4. 屏幕空间条
  5. 菲涅尔和CameraFade
  6. 输入不透明度

根据Z轴生成0-1Mask贴图

将世界空间坐标转换为模型空间,只取Z通道,QbjectBounds返回的是模型的边界,我们除以Z通道就可以得到模型从底部到顶点0-1的Mask遮罩

image-20210105011904542

预览Divide

image-20210105012049880

控制顶部顶点的世界位置偏移

生成的Z轴Mask遮罩是用于控制WorldPositionOffset

image-20210105012235486

同样将顶点的世界空间Pos转换到模型空间,并将位置进行归一化,只取RG通道,这个RG通道其实就是顶点在XY平面移动的方向

image-20210105012625863

那么Z通道自然用于是Z轴方向上的移动

image-20210105012739210

通过在这两个方向上的位移,我们可以实现模型的压缩(激活全息)和顶部扩大(缩放半径),当激活全息为0时是压扁状态,为1则是全息状态

GIF 2021-1-5 1-30-38

抖动效果

image-20210105014109050

通过ScreenPosition的屏幕UV将V轴缩放到0-100,再Floor,分成100个不同的矩形区域,这里为了方便展示,我设置为0-10区间,再缩放回0-1区间,可以看到整个屏幕给分成了若干个矩形区域,并不是根据模型来切分。

GIF 2021-1-5 1-38-52

我们继续连接MF_FloatNoise节点,这个节点使用传入Noise种子和一个2D向量输出一个随机值,材质函数如下

image-20210105014231451

得到一直在随机变化的矩形条

GIF 2021-1-5 1-43-22

控制抖动用于开关抖动效果,为0开启,为1关闭,在世界空间上进行一定的抖动偏移

image-20210105014556245

结果如下

GIF 2021-1-5 1-47-16

屏幕空间条

同样是利用ScreenPosition的UV进行操作,但是上面可以看到,随着摄像机的距离,映射在模型上面的UV区域是不会变化的,一直是以屏幕为标准。

image-20210105015229996

这样根据摄像机与物体的距离来决定生成的UV条的数量,符合了我们的要求

GIF 2021-1-5 1-54-08

菲涅尔和CameraFade

菲涅尔用于边缘的透明,CameraFade用于靠近Mesh时透明

image-20210105143118294

输入不透明度

将基于屏幕空间的空间条与菲涅尔,CameraFade,激活全息进行相结合,输入不透明度

image-20210105143446247

用于网格的Scifi材质

网格的Scifi材质只要修改抖动,以及输入的不透明度,删除CameraFade即可

image-20210105144134572

image-20210105144144952

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2021 Opda
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信