天天看点

UE4材质-流动变色

转自虚幻中国@ommonlight

UE4材质-流动变色

成品效果

一、要实现的效果从目标点开始将变色波浪蔓延全模型,最终完成换色。

二、分析实现方式1,蓝图中利用碰撞检测得到目标点坐标

2,蓝图中处理时间相关变量变化

3,选择一套曲线公式,用来完成定点变化与颜色过渡

三、对比曲线算法

UE4材质-流动变色

列举三种波形,选择合适的一种

我们使用抛物线公式 y=x²/(-2p) 【该抛物线公式为顶点在(0.0)点并且开口向下】先用网格UV中的U值来简单测试一下该曲线的形变效果

UE4材质-流动变色
创建一个TempMaterila作为测试材质
UE4材质-流动变色
公式在蓝图里的实现,此处的X在下面的编写中将被距离值替代
UE4材质-流动变色

连接测试参数

这个步骤的目的是实现如下所示的波形偏移【下图中的U值与material中的offset_U_Value作用一致】

UE4材质-流动变色
添加偏移后的一个简单举例
UE4材质-流动变色
效果强化
UE4材质-流动变色

效果修正

因为是顶点动画演示,可以直接选择空场景,并开启网格浏览模式

UE4材质-流动变色
创建测试环境
UE4材质-流动变色
打开Show Engine Content选项可以收到适合测试的Plane模型资源
UE4材质-流动变色
创建一个材质实例
UE4材质-流动变色

修改U的偏移值所带来的波形推动效果

此阶段测试 Material 网盘地址:http://pan.baidu.com/s/1nvJLokp

接上回书~~我们开启一个新场景来创建目标材质的测试环境

UE4材质-流动变色
UE4材质-流动变色

由于我把旧的删了新的也叫TempMaterial好了

UE4材质-流动变色

最终材质连线的全貌,下面开始具体分析各个部分是如何思考的

顶点动画部分

UE4材质-流动变色

碰撞检测坐标与当前参与运算的顶点坐标进行距离运算,同时减去偏移值完成波形偏移运动

UE4材质-流动变色

基础的形状处理

UE4材质-流动变色

提出指定高度的波形并优化

接下来是颜色的过度

UE4材质-流动变色

颜色过度部分的解析

创建测试载体

UE4材质-流动变色

创建一个staticMeshActor类型的蓝图作为目标

UE4材质-流动变色

这个mesh是引擎自带的,勾选显示引擎自带内容即可搜到了

UE4材质-流动变色

编写之前还需要对模型的碰撞就行一定的修改,我们需要更细致的碰撞效果先把旧的删了

UE4材质-流动变色

在菜单栏找到ConvexDecomposi,我们可以用它生成数个小型碰撞体拼接成当前模型的近似形状

UE4材质-流动变色

由于纯测试,精度和数量都给满

UE4材质-流动变色

可以更改视图模式【playerCollision】来观察目前的碰撞形状,同时我们看到总共用了12个碰撞做的组合【大部分都在地盘的形状模拟上,球型部分其实就一个网格】

UE4材质-流动变色

由于是大致模拟无法填满球型,所以姑且点开collision模式,删掉自动创建的上半部分碰撞

UE4材质-流动变色

换个球形碰撞体

UE4材质-流动变色

缩放并移动到合适的位置后player collision模式下检查一下

碰撞模型处理完再来处理一下材质对象

UE4材质-流动变色

创建一个材质实例作为实际使用对象

UE4材质-流动变色

对材质实例中的数值做一定调整,每个参数作用如名字所示,so

打开该蓝图类,进行编辑

UE4材质-流动变色

BeginPlay的时候将刚才创建的动画材质实例付给主要材质通道,同时获得该材质的引用,通过Cut Color 事件来处理蓝图到材质的参数赋值

UE4材质-流动变色

我这里是定义的5秒完成由0~1的变化

UE4材质-流动变色

将刚才做好的测试物体放在场景里

接下来是做一个射线检测功能来获取碰撞点坐标

UE4材质-流动变色

在场景蓝图创建射线检测脚本

UE4材质-流动变色

用tick每帧绘制出当前射线的触发点方便我们测试观察

UE4材质-流动变色

在下面做个按键触发的射线检测功能,同时将检测结果发送给测试物体【这里没做判断打到地面也是会触发的,不必在意】

最后测试与开篇效果一致无误~

附原始材质网盘地址: http://pan.baidu.com/s/1slVOCNF  有时间了继续更新如何将原始材质提取成【材质方法】,与如何使用【静态的材质变量类】来简化蓝图到材质的赋值。

继续阅读