找回密码
 立即注册
查看: 467|回复: 1

使用Unity VFX与Shader Graph制作人物触电效果

[复制链接]
发表于 2021-12-24 15:26 | 显示全部楼层 |阅读模式



上面2个gif展示包含了:
一、模型表面电流效果shader
二、基于模型Vertex的粒子产生
三、人物随触电时间长度逐渐变成炭黑

一、模型表面电流效果shader


1、让两个 Simple noise 交错运动,相加后通过 Remap 和 Rectangle 作出伪电流效果。

Remap函数:


Remap将原图进行了重映射,将一个A范围重映射到另一个范围,用来控制减弱or加强图像的输出范围。

Rectangle函数:根据输入的UV生成一个指定大小/宽度的矩形,感觉原理上有点类似于截止滤波?




2、给 Rectangle 的输出乘以一个边缘羽化效果,使电流带有边缘渐隐效果。
这里既可以用下面这段连线做Procedural羽化,也可以引入一张贴图,都一样的效果。



3、给电流一个颜色,使用上面最右端的Multiply再与一个HDR Color Multiply。这里还可以给颜色加一个随时间变化的色相,让电流带彩虹色,而不是单调的蓝色。
最后将结果连到Emission节点上,再在Albedo上加一张贴图即可。



4、完整节点图:



二、基于模型Vertex的粒子产生
Unity HDRP VFX内包含了一个让粒子围绕一个模型的顶点生成的功能,比如球、胶囊、自选模型之类的。


但是不支持动态的蒙皮模型动画,所以需要暴露出一个Mesh选项,做一个脚本让这个粒子系统不停地读取当前蒙皮动画模型的状态,来更新目前的粒子发生位置。



using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;//使用VFX接口

public class Skin2PartMesh : MonoBehaviour
{
    public SkinnedMeshRenderer skinnedMesh; //蒙皮的模型动画
    public VisualEffect VFXGraph; //VFX名称
    public float refreshRate; //更新频率


    public
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine (UpdateVFXGraph());
    }
   
    IEnumerator UpdateVFXGraph()//迭代VFX的Mesh
{
    while(gameObject.activeSelf)
    {
        Mesh m = new Mesh();
        skinnedMesh.BakeMesh(m);
        Vector3[] vertices = m.vertices;
        Mesh m2 = new Mesh();
        m2.vertices = vertices;

        VFXGraph.SetMesh("Mesh",m2);

        yield return new WaitForSeconds (refreshRate);
    }
}
   
}

把脚本挂到人物动画的大组里,再把粒子动画作为大组的子对象


这样一来粒子就会基于动态模型的Vertex更新了,可以在它上面做一些SmokeSprite、火焰、流光拖尾之类的粒子,玩法还是挺多的。



三、人物随触电时间长度逐渐变成炭黑(待补充更新)
再另写一个脚本控制上面shader里Albedo贴图的亮度可以实现这个效果。

参考资料:
1、Rectangle Node | Shader Graph | 8.3.1
2、Shader Forge
3、http://linxinfa.blog.csdn.net/article/details/108049048
4、http://www.youtube.com/watch?v=ePbeaYuMNK4   (CHARACTER EFFECTS in Unity VFX Graph)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-12-24 15:28 | 显示全部楼层
大佬一本正经做的效果,为何看起来很喜感
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 23:39 , Processed in 0.091842 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表