UE4 Material_01:堡垒之夜砍伐树木效果
https://zhuanlan.zhihu.com/p/48684767
UE4 Material_01:堡垒之夜砍伐树木效果
喜欢炫酷效果的底层开发人员
1、视频效果,给与读者本Material最终效果的直观感受
果冻般抖动
2、材质截图,方便读者直接Copy,就是这么nice的人
构建Material Function,命名为ShakeFunc
将ShakeFunc的输出连到材质节点World Position Offset上
2.1、Material Parameters
HitPixelPosition:定义了被击打Pixel的位置,所以该Pixel的震动幅度是最大的,并且带动一定范围内的其他的Pixel一起震动。
ShakeRadius:由半径定义了一个范围,该范围内的所有Pixel都可以被带动起来,一起震动。当然了,距离被击打位置越远,振幅越小。
HitPixelOffset:定义了被击打Pixel的偏移量(Vector3向量),基于世界空间坐标系。
2.2、Material Nodes
Absolute World Position:该值表示当前渲染的Pixel位置。
2.3、Material Graph
映射:y=f(x)
以上图表完成一个映射:y=f(x)
a、x是当前被渲染的像素的坐标,即Absolute World Position。
b、y是一个Scalar,值域是[0,1],将y称作衰减因子。
通俗的说就是将所有渲染的像素分为2部分,球体内部和球体外部。
该球体以HitPixelPosition为球心,以ShakeRadius为半径,球心处的值为1,球面处为0,中间部分按比例插值,当然球体外部的也都是0。
随着渲染像素距离击打点像素的距离越来越大,这个y值(衰减因子)由1逐渐的过渡到0,完美的表示了震动幅度随距离的增长而逐渐衰减。(如果觉得线性衰减的效果不是自己想要的,读者可以将1-x节点替换成任何其他算法,只要该算法将0~1映射为1~0即可)。
y*HitPixelOffset:衰减因子乘以Offset,作为最终输出,就完成了某一特定时刻的渲染状态,将HitPixelOffset修改为基于时间的函数,就可以让渲染状态随着时间变化,也就是动了起来。(在Material里有time等函数,但可控性不好,所以放在BluePrint里做)。
3、Actor Blueprint
绿色字体是对应变量的默认值
动态材质的创建放在BeginPlay和Construction Scrip都可以
HitPixelOffset一定要按照Hit Impact Normal来计算,因为这是受力的方向
ShakeByTime定义了随着时间的流逝,波动逐渐变小,最后消失的过程
4、其他
落实到具体应用的时候,可以根据子弹等其他因素,在运行状态修改Actor中不同变量的值,就可以达到不同子弹可以打出不同的震动效果,包括幅度,波及范围之类的。
最后,麻烦看过的读者给点个赞,方便的话给个5星好评。
发布于 2018-11-06
文章被以下专栏收录
使用UE4的Material系统,实现各种酷炫效果
推荐阅读
把草踩扁:交互式植物系统
UE4植被介绍及植被交互
Rendering in UE4(Epic Game TA-Homam Bahnassi讲座个人笔记)
UE4 Material_02:堡垒之夜物体弹出效果
0、求读者点赞+5星好评麻烦所有收藏本文章的读者,收藏本专栏的读者,关注我的读者,走过路过的读者给点个赞,方便的话给个5星好评。您的点赞是我坚持下去的动力!争取点赞数过200。如果您…
12 条评论
写下你的评论...
- 哆啦帅2 个月前
从材质到蓝图整个流程讲的很透彻!Very Nice!
- 最终虚妄2 个月前
nice 打击感爱好者必备
- Weirdo2 个月前
大佬
- 异或与非2 个月前
关注了,多交流。
- 腰是王道 (作者) 2 个月前
点赞数,关注不够啊,都没有动力写了,下一篇有干货啊:不但介绍效果实现的材质,也深入节点背后的实现原理,深入到hlsl,喜欢深入浅出的,堆赞,堆评论吧
- 酔街2 个月前
外行表示貌似墙体加了乳摇效果,,
-
知乎用户2 个月前
nice!!!
- 不透露2 个月前
五星,绝对五星
- Maybank012 个月前
讲解数学原理好评
- 宝盖头和繁弱2 个月前
是顶点偏移,不是像素偏移
- 林玉伟29 天前
可惜了,只能给一赞,不能给五星
- 智通先生7 天前
不错,很Q弹...再打一下!