unity shaderGraph实例-可交互草地

news2024/11/24 13:48:22

效果展示

请添加图片描述

整体结构

请添加图片描述

各区域内容

区域1

在这里插入图片描述
计算交互用的cube和草各个顶点的距离
此处可以理解为,从cube的中心到草的顶点的距离,其距离是一个从0到整数的过程,如下图
在这里插入图片描述

区域2

在这里插入图片描述
将距离除以某个值,这个值是交互范围,相当于将白条范围向右移动
在这里插入图片描述
然后使用saturate节点将值限制到0-1之内

区域3

在这里插入图片描述
首先上一步已经将值限制到0-1,这一步取反,直观解释就是将黑白条对调,越靠近cube的部分越白,也就代表了对草的顶点shader的影响越强。
在这里插入图片描述

区域4

在这里插入图片描述
为了移动草的顶点向量,我们需要知道移动方法,用草的顶点位置减去cube的世界坐标即可获得两者的方向

然后和区域3中计算出的影响力度相乘,即可得到越靠近,顶点偏移越大的效果。

区域5

在这里插入图片描述
这一步看似复杂,其实做的事很简单,将区域4中获得顶点偏移量加到草原本的顶点坐标上去,由于草不需要再y轴移动,所以只加x轴和z轴即可。

区域6

在这里插入图片描述

在草移动时,我们不需要草的根部移动,所以我们使用了顶点颜色,即在制作草的模型的时候,在根部的顶点处添加了顶点颜色(注意不是贴图的颜色)为黑色,可交互部分为白色,这样可以通过一个Lerp,在不需要移动的区域和需要移动的区域里平滑过渡,当然这里也可以用顶点坐标计算。

区域7

最后我们需要给一张贴图
在这里插入图片描述

材质本身需要设置成透明的

在这里插入图片描述

最后需要编写一个脚本,告诉材质cube在哪

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TrackPosition : MonoBehaviour
{
    public Material grassMat;
    private void Update()
    {
        grassMat.SetVector("_TrackerPosition_v3", transform.position);
    }
}

然后挂到cube上,将材质球拖到属性里即可

工程下载gitee地址

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

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

相关文章

OpenAI暂停新的ChatGPT Plus注册 | OpenAI 的 GPT Builder 创建您的 GPTs

OpenAI DevDay 才过去仅仅一周时间,伴随着开发者大会上发布的一系列重磅升级和新特性,无疑这样的进化速度让广大网友炸锅了,其火热程度可见一斑。 就在四个小时前,OpenAI的CEO Sam Altma突然宣布,ChatGPT Plus账号暂停…

如何搭建属于自己的AI数字人直播SAAS系统?

随着人工智能技术的不断发展,AI数字人直播正成为互联网行业的新宠。面向未来的AI数字人直播系统无疑是直播领域的新风口。虽然拥有众多优势,但从0到1搭建这个系统可能存在着资源、技术和时间的挑战。那么,如何可以快速搭建属于自己的AI数字人…

周赛370(模拟、树形DP(正难则反)、树状数组优化DP)

文章目录 周赛370[2923. 找到冠军 I](https://leetcode.cn/problems/find-champion-i/)模拟 [2924. 找到冠军 II](https://leetcode.cn/problems/find-champion-ii/)统计入度 [2925. 在树上执行操作以后得到的最大分数](https://leetcode.cn/problems/maximum-score-after-appl…

用友NC及NC Cloud mxservlet反序列化漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC及N…

小红书x-s、x-s-common算法研究与分析(仅供学习)

文章目录 1. 写在前面2. 参数分析2.1. x-s、x-t、x-s-common 1. 写在前面 最近花时间分析了一下xhs,研究的不深,也参考了网上许多开源出来的案例。简单记录一下,感兴趣的将就看一下吧! 之前也研究过一段时间的某音,下…

VUE基础的一些总结

首先推荐观看VUE官方文档 目录 创建一个 Vue 应用 要创建一个 Vue 应用,你需要按照以下步骤操作: 步骤 1:安装 Node.js 和 npm 确保你的计算机上已经安装了 Node.js。你可以在 Node.js 官网 上下载并安装它。安装完成后,npm&…

io+day8

#ifndef __SEM2 #define __SEM3 4 //声明一个创>5 int init_sem(6 7 //声明一个p操8 int P(int sem9 10 //声明一个v操11 int W(int sem12 13 //声明一个删>14 int del_sem(i15 16 #endif 1 #include <myhead.h> …

【Python 千题 —— 基础篇】列表的最大值与最小值(for 循环版)

题目描述 题目描述 输出列表的最大值与最小值。题中有一个包含数字的列表 [11, 39, 100, 48, 392, 10, 9]&#xff0c;使用 for 循环输出这个列表的最大值与最小值。 输入描述 无输入。 输出描述 输出列表的最大值与最小值。 示例 示例 ① 输出&#xff1a; 列表的最…

【GitLab】-HTTP 500 curl 22 The requested URL returned error: 500~SSH解决

写在前面 本文主要介绍通过SSH的方式拉取GitLab代码。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.生成秘钥3.GitLab添加秘钥4.验证SSH方式4.更改原有HTTP方式为SSH 三、参考资料写在后面系列文章 一、场景描述 之前笔者是通过 HTTP Personal access token 的方式拉取…

Redis 配置文件信息中文翻译版

前言 Redis 配置文件信息中文翻译版&#xff0c;方便大家阅读和理解对应参数信息及配置参数信息 # Redis configuration file example# Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k 5GB 4M and so forth: # 注意:当…

Django模型层

模型层 与数据库相关的&#xff0c;用于定义数据模型和数据库表结构。 在Django应用程序中&#xff0c;模型层是数据库和应用程序之间的接口&#xff0c;它负责处理所有与数据库相关的操作&#xff0c;例如创建、读取、更新和删除记录。Django的模型层还提供了一些高级功能 首…

Mars3d的timeline与locationBar样式重合问题处理方案

前置代码&#xff1a;配置了map的mapOptions &#xff0c;增加了默认的时间轴与下侧状态栏控件 export const mapOptions function (option) { option.control { timeline: { zoom: false, enabled: false }, // 方式1&#xff1a;options中添加控件 ; zoom - 禁止缩放 anim…

浏览器存储(localStorage和sessionStorage)

我们知道 js 写的效果&#xff0c;每次刷新都是从新执行&#xff0c;是不存在记录操作的&#xff0c;主要是大部分的效果不需要这样的处理 (一个 tab 切换&#xff0c;焦点图肯定不需要记住运行到哪里&#xff0c;刷新从新开始就好了)&#xff01; 在 html5 之前&#xff0c;前…

Oracle-动态sql学习笔记,由易至难讲解七个例子

本文章的内容来源于对oracle课堂上讲的内容做出的笔记 静态sql和动态sql 静态sql&#xff1a; 静态 SQL 是在编译时写死的 SQL 语句&#xff0c;即在程序编写阶段&#xff0c;SQL 语句已经被固定下来。 特点&#xff1a; 1.预编译&#xff1a; SQL 语句在程序编译时就会被…

【刷题专栏—突破思维】142. 环形链表 II

前言&#xff1a;本篇博客将讲解三个OJ题&#xff0c;前两个作为铺垫&#xff0c;最后完成环形链表的节点的寻找 文章目录 一、160. 相交链表二、141. 环形链表三、142. 环形链表II 一、160. 相交链表 题目链接&#xff1a;LeetCode—相交链表 题目描述&#xff1a; 给你两个单…

【VSCode】Visual Studio Code 配置简体中文环境教程

介绍 Visual Studio Code&#xff08;简称 VS Code&#xff09;是一款轻量级的代码编辑器&#xff0c;它支持多种编程语言&#xff0c;并且具有丰富的功能和插件扩展。如果你更喜欢使用简体中文界面&#xff0c;那么本教程将向你展示如何在 VS Code 中配置简体中文环境。 步骤…

如何调整图片尺寸:简单实用的教程分享

报名事业编考试的时候&#xff0c;会发现上传照片时会提示图片大小尺寸应该为多少&#xff0c;如果不符合规定就无法提交报名&#xff0c;那么怎么才能修改图片大小呢&#xff1f;最简单的方法就是利用调整照片大小工具来对图片尺寸修改&#xff0c;本文分享一个在线图片处理工…

如何提高领导力?

提升领导力的关键一方面要有正确的自我认知&#xff0c;另一方面就是坚持去实践&#xff0c;没有速成可言&#xff0c;没人那个人天生就具备领导力&#xff0c;有些人我们看起来是具有领导力的&#xff0c;但这些表象的背后可能是家庭环境的潜移默化&#xff0c;也有可能是个人…

智能导诊系统:基于机器学习和自然语言处理技术,可快速推荐合适的科室和医生

智能导诊系统是一种基于人工智能技术的新型系统&#xff0c;它能够为医院提供患者服务和管理&#xff0c;提高医院的管理效率和服务水平。 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 以下是智能导诊系统的应用场景和功能特点&#xff1a; 应用场景 1.患…

一个项目进行测试的一些最基本环境

在一个项目开发到发布的整个过程中&#xff0c;会使用到很多个环境进行测试和运行项目。最基本的开发环境、测试环境、准生产环境、生成环境 一、开发环境 开发环境顾名思义就是我们程序猿自己把项目放到自己的电脑上&#xff0c;配置好以后&#xff0c;跑起来项目&#xff0…