Unity之ShaderGraph如何实现靠近显示溶解效果

news2024/11/18 15:49:33

前言

今天我们来实现一个我再B站看到的一个使用LeapMotion实现的用手部触摸就可以显示的溶解效果。
效果如下图所示:
在这里插入图片描述

主要节点

Position:提供对网格顶点或片段的Position 的访问,具体取决于节点所属图形部分的有效着色器阶段。使用Space下拉参数选择输出值的坐标空间。
在这里插入图片描述

Remap:基于输入 In 值在输入In Min Max的 x 和 y 分量之间的线性插值,返回输入Out Min Max的 x 和 y 分量之间的值
在这里插入图片描述

SimpleNoise:根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。
在这里插入图片描述

OneMinuts:返回输入In减去 1的结果。
在这里插入图片描述

原理

首先我们知道Alpha Clip Trreshold可以控制物体的溶解,我们暴露一个属性Vector3,以他作为目标位置,然后我们计算这个目标位置距离沃恩要溶解的模型的顶点坐标的距离,当距离小于一定半径,我们就设置物体显示,否则就消除物体。然后我们可以使用SimpleNoise噪波图对结果进行一个相乘,这样就可以实现一个溶解的效果了。

最终连线

在这里插入图片描述

实时控制TargetPos的位置

我们创建一个球体或者一个任意手部模型,然后通过Update实时更新Shader的TargetPos的位置,就可以实现开始B站的LeapMotion视频的效果

using UnityEngine;

[ExecuteInEditMode]
public class ShaderPositionBinder : MonoBehaviour
{
    public Transform m_Target;

    private Renderer m_Renderer;
    private Vector4 m_Value;
    private static readonly int Position = Shader.PropertyToID("_Position");
    // private static readonly int Radius = Shader.PropertyToID("_Radius");

    void Start()
    {
        m_Renderer = gameObject.GetComponent<Renderer>();
    }

    void Update()
    {
        var position = m_Target.position;
        m_Value.Set(position.x, position.y, position.z, 1);
        m_Renderer.material.SetVector(Position, m_Value);
        // m_Renderer.material.SetFloat(Radius, m_Target.localScale.x);
    }
}

然后我们把需要操作的球体或者手部模型拖拽到Target的位置,可以可以看到如下效果。

效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1117407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无痕视频去水印方法分享-这些软件你值得拥有

怎么无痕视频去水印&#xff1f;喜欢剪视频的你是不是经常碰到这种烦人的事&#xff1f;就是每次在网上找到好看的视频素材&#xff0c;下载下来却总是带着各种各样的水印&#xff0c;这些水印不仅影响美观&#xff0c;还挡住了视频里重要的内容&#xff0c;如果你也遇到这种情…

JAVA基础-方法(5)

目录 1、方法介绍<br />2、方法的重载&#xff08;在同一个类中&#xff0c;方法名相同&#xff0c;列表参数不同&#xff08;数量不同&#xff0c;类型不同&#xff0c;顺序&#xff09;&#xff09;3、方法的重写&#xff08;方法的覆盖-参数类别相同&#xff0c;返回值…

java项目容器化(docker)部署注意点

cgroup 支持 从 jdk 8u121 开始支持&#xff0c;即低于这个版本无法使用容器特性 https://bugs.java.com/bugdatabase/view_bug.do?bug_id8170888 https://bugs.openjdk.org/browse/JDK-8170888 https://bugs.java.com/bugdatabase/view_bug.do?bug_id8175898 https://b…

EPLAN_008#3D布局图

一、新建页 多线原理图纸画好以后 打开布局空间导航器——右键——新建 二、插入箱柜 菜单栏——插入——箱柜 三、显示安装板 然后调整视角 四、插入线槽 菜单栏——插入——线槽——选择合适的线槽——确定 按A键可以切换线槽方向&#xff0c;如果位置不对&#xff0c;可以再…

redis的cluster

1.我们的哨兵模式中&#xff0c;当主节点挂掉以后&#xff0c;此时哨兵会重新进行选举&#xff0c;选举出新的主节点去对外提供写服务 在选举的过程中,他redis整个集群是不提供写服务的 &#xff08;因为此时我们哨兵对外提供写服务的只有Master&#xff09; 2.我们单节点的red…

NRK3301语音芯片在智能窗帘上的应用

窗帘是人们日常生活中所经常使用的家居产品&#xff0c;传统的窗帘大多都需要手动拉动窗帘使用&#xff1b;存在着拉拽费劲&#xff0c;挂钩容易掉落等问题。随着数字化转型的升级&#xff0c;推进了窗帘市场的高质量发展。智能窗帘也“适时出现”出现了&#xff0c;一款带有语…

CV计算机视觉每日开源代码Paper with code速览-2023.10.20

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【目标检测】Click on Mask: A Labor-efficient Annotati…

Microsoft Edge中使用开源的ChatGPT

一、双击打开浏览器 找到&#xff1a;扩展&#xff0c;打开 二、打开Microsoft Edge加载项 三、Move tab新标签 获取免费ChatGPT 四、启用Move tab。启用ChatGPT。 扩展 管理扩展 启用 五、新建标签页&#xff0c;使用GPT 六、使用举例 提问 GPT回复

不想加班的小伙伴们,请把这四个神器焊在电脑上~

今天又来给大家分享干货啦&#xff0c;如果你下载视频没渠道&#xff0c;写方案没灵感思路&#xff0c;做表格太慢&#xff0c;做海报太复杂&#xff0c;那你一点要看这一篇&#xff0c;今天分享的四个宝藏网站专门解决以上问题&#xff0c;一起来看看吧&#xff01; 一、WeDow…

中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件

中文编程开发语言工具应用案例&#xff1a;ps5体验馆计时收费管理系统软件 软件部分功能&#xff1a; 1、计时计费功能&#xff1a;只需点开始计时即可&#xff0c;时间直观显示 2、商品管理功能&#xff1a;可以管理饮料等商品 3、会员管理功能&#xff1a;支持只用手机号作…

Android---RecyclerView替代ListView

RecyclerView 简称RV&#xff0c;是作为 ListView 和 GridView 的加强版出现&#xff0c;目的是在有限的屏幕之上展示大量的内容。因此&#xff0c;RecyclerView 的复用机制的实现是它的一个核心部分。 RV 常规使用方式 // 1 RecyclerView.setLayoutManager(); // 2 Recycler…

JavaCV + FFmpeg 播放音视频

JavaCV FFmpeg 播放音视频 1、导入JavaCV库1.1 使用ffmpeg必要库1.2 简单FFmpeg命令 待续~~~~ FFmpeg documentation bytedeco/javacv - GitHub 1、导入JavaCV库 gradle下面这种会导入javacv-platform所有包&#xff0c;非常耗时&#xff1a;https://repo.maven.apache.org/…

西门子博途软件加密保护方法

一、程序块的专有技术保护 程序块的专有技术保护主要是对项目中的程序块&#xff08;OB、FB、FC、DB&#xff09;进行访问保护&#xff0c;如果没有专有技术保护密码则无法看到程序块中的具体内容&#xff0c;对于专有技术保护的 DB 块&#xff0c;如果没有密码只能读不能写。…

怎么理解函数式编程思维?

文章目录 &#xff08;2023年9.29号&#xff0c;正月十五家乡的月亮&#xff09; ​ 理解函数式编程要注重思维的转变。函数式编程聚焦于简洁的高阶函数&#xff0c;高阶函数注重封装底层运作原理来解决复杂的业务场景&#xff0c;比如 Scala、Groovy、Clojure 语言&#xff1a…

解决pip安装包后但是Pycharm检测不到

首先要知道python找包的原理&#xff1a;原理 之后把一下代码打印一下&#xff1a; import sys print(sys.executable)# /usr/bin/python2 print(sys.path)# [/usr/lib/python2.7, /usr/lib/python2.7/dist-packages, /usr/local/lib/python2.7/dist-packages] print(sys.prefi…

Leetcode—动态规划(背包问题)

1、背包基础问题&#xff1a;01背包 输入&#xff1a;背包最大重量为 4。物品重量数组weight[1,3,4]&#xff0c;对应的价值数组value[15,20,30]。 五部曲&#xff1a; 1、确定dp数组以及下标的含义 对于背包问题&#xff0c;dp采用二维数组&#xff0c;即dp[i][j]表示从下标…

第78篇:巧妙方法抓取某商用红队扫描器的4000多个漏洞利用exp

Part1 前言 大家好&#xff0c;我是ABC_123&#xff0c;本期分享一个真实案例。大约在两年前&#xff0c;有机会接触到一台红队扫描器设备&#xff08;也可以理解为渗透测试机器人&#xff09;&#xff0c;我抱着好奇的心态去那里做了一下测试&#xff0c;感觉还不错。里面大概…

jvm内存溢出溯源

1.先上神器 2.远程监控配置 JProfile是一款性能瓶颈分析工具&#xff0c;具体要干啥呢下面看 1&#xff1a;创建一个监控任务 2&#xff1a;选择tomcat版本 3&#xff1a;监控远程服务器 4&#xff1a;选择oracle 1.5.0 5&#xff1a;填写需要监控的服务器地址 6&#x…

后台交互-首页->与后台数据进行交互,wsx的使用

与后台数据进行交互wsx的使用 1.与后台数据进行交互 // index.js // 获取应用实例 const app getApp() const apirequire("../../config/app.js") const utilrequire("../../utils/util.js") Page({data: {imgSrcs:[{"img": "https://cd…

线性代数1:线性方程和系统

图片来自施泰德博物馆 Digital Collection (staedelmuseum.de) 一、前言 通过这些文章&#xff0c;我希望巩固我对这些基本概念的理解&#xff0c;同时如果可能的话&#xff0c;通过我希望成为一种基于直觉的数学学习方法为其他人提供额外的清晰度。如果有任何错误或机会需要我…