关于VFX Graph的学习

关于VFX Graph的学习

转载自我的有道云笔记,目前内容不多,后续如果继续使用会更新。

前言

出于实习工作需要和毕设需要,我开始使用VFXGraph。

以前准备第一批作品集的时候,就简单地使用过,但是只是跟着教程一顿乱连,很多地方没有理解。

始终跟着GabrielAguiarPro这位在学,好记性不如烂笔头,记录一下遇到的问题和解决方式吧,切莫反复踩坑。

在VFX中模拟Particle System的拉伸Billboard(Stretched Billboard)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当视角和平面夹角较大,会使其在Y轴方向有拉伸。

这个效果在VFX没有自带的模块,需要用脚本传入Y轴的拉伸值,直接接入到VFX文件的SetScale的Y轴上:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本来在VFX文件中计算就好了,但是VFX只能获取Scene中的Main Camera,如此,在Scene下就看不到效果了,调试很困难,于是写一个脚本计算Y轴拉伸,再传入VFX中:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Sirenix.OdinInspector;

using UnityEngine.VFX;

 

[ExecuteAlways]

public class Camera_Angle_To_Effects_Stretch : MonoBehaviour

{

  public VisualEffect vfx;

  public Vector2 stretchRange = new Vector2(0.2f, 1f);

 

  private Camera _camera{

​    get{

​      \#if UNITY_EDITOR

​      return UnityEditor.SceneView.lastActiveSceneView.camera;

​      \#else

​      return Camera.main;

​      \#endif

​    }

  }

 

  private void Update() {

​    setValue();

  }

  public void setValue(){

​    vfx.SetFloat("Y轴拉伸", Yrotate2Strech(_camera.transform.eulerAngles.y));

  }

 

  private float Yrotate2Strech(float eulerAnglesY){

​    eulerAnglesY %= 180;

​    float strech = Mathf.Lerp(stretchRange.x, stretchRange.y, Mathf.Abs(Mathf.Sin(eulerAnglesY * Mathf.Deg2Rad)));

​    return strech;

  }

 

}

如此便能做到类似的效果。

在VFX中使用Particle System中的噪声——Turbulence、湍流

使用Turbulence(湍流)节点:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在VFX中模拟Particle System中的随距离发射

这一点在原版中很容易实现:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是VFX中需要以下操作:

\1. 在发射器中加入随距离发射

\2. 把Local空间的原点、也就是特效物体在Scene中显示的轴心位置,转换到世界空间,然后传入发射器的Position接入口。

\3. 初始化时,更改粒子的位置到本地空间的原点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

【待完善】关于粒子贴花

和URP笔记中记录的贴花很像,在制作一些需要贴地的效果、如:地裂、地面灼烧痕迹时有用,因为其可以适配地形。

在VFX中,OutPut节点类里有一种就是贴花输出节点,可以用此输出节点来制作贴花效果。

我认为目前贴花效果存在一些根本问题。如果我想制作地裂,同时地裂的上方有玩家或者怪物,那么贴花会把效果也投射到玩家或怪物身上,造成穿帮。

关于这一点,必然是有解决办法的,但是目前从组件的面板来看我没有找到,需要再学习。

……待补充

在VFX中实现Particle System中的拖尾

在原版中,拖尾有以下属性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

挑些比较重要的聊一聊:

l Mode:有粒子和丝带两种。粒子模式是常用的模式,类似一个子发射器,当父粒子运动,拖尾就会根据父粒子运动的距离产生粒子。丝带模式没有用过,感觉很混乱。粒子之间会被直线的Quad连接。

l LifeTime:拖尾粒子的生命周期,直接决定了拖尾的长度,因为如果生命短,留存的就短,看上去粒子的拖尾自然就短了。

l Minimum Vertex Distance:最小顶点距离。不是说它是子发射器吗,那么运动多远才产生新的粒子,就是由这个参数决定。如果值很大,会导致拖尾新顶点产生稀疏,在一些高频变化的场合会出现走样。但是如果值很小,又会导致产生太多拖尾粒子,造成性能开销。

l Texture Mode:纹理模式,一般来说都是用拉伸的模式。不知道底层是怎么实现的,但是可以这么理解:

所有的拖尾粒子所覆盖的区域,作为一整个Mesh片,然后Texture Mode决定这个Mesh中贴图的Tilling。

在VFX中,没有做好的模块,需要使用GPU事件来制作拖尾,基本的思路为:

生成头粒子 ——> 在头粒子的Update中添加触发器 ——> 使用该触发器输出的GPU事件发射拖尾粒子(拖尾粒子系统的类型需要为Strip、即条带,可以通过Ribbon的模板创建) ——> 使用拖尾粒子系统的context控制拖尾的性质

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Strip模板的粒子系统类似原版的拉伸的纹理模式,如果需要调整个拖尾的Tilling,可以换节点的输出节点的UV模式到Scale。

再来聊一下如何做到类似原Trail系统的更改:

l 更改拖尾粒子的密度:对应原系统的Minimum Vertex Distance参数的修改,其修改方法为:在头粒子的触发器中,更改触发率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里有随时间和随距离两种模式,估计Rate的单位是每秒或者每米(这是不合逻辑的,因为触发器在UpadateContext中,每帧执行一次)

发射粒子的频率越高,拖尾条带也越顺滑,但是性能的开销也越大。

l 调拖尾长度的逻辑和原版一样,拖尾粒子的寿命直接决定拖尾的长短。

l 例子拖尾默认并每不会连接上头粒子,因为缺少一步位置的继承:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

很多属性可以使用Inherit关键字来从头粒子获取。

由于拖尾粒子的特殊的条带渲染模式,生命周期的属性实际表现为对应到拖尾长度的表现。

如我把拖尾粒子的生命周期颜色改为前白后黑,那么表现为拖尾离头粒子近处白远处黑。这很好理解,不多赘述。直接记住这一点可以加快某些效果的分析过程。

【待完善】在VFX中实现子发射器

原版:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

子发射器很好理解,就是以父粒子为中心,开始发射一个新的子粒子系统。

有一个条件控制什么时候发射,官方的有以下几种:

……

生成Shader时,出现无法打开包的问题

Output Particle Quad’: Couldn’t open include file ‘Packages/com.unity.visualeffectgraph/Shaders/VFXCommon.hlsl’

环境:

Unity 2021.3.4f1

VFX12.1.7

这是Unity的Bug,在Player Setting中的安卓的图形API中删去OpenGLSE即可

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

采用Java语言开发的(云HIS医院系统源码+1+N模式,支撑运营,管理,决策多位一体)

采用Java语言开发的(云HIS医院系统源码1N模式,支撑运营,管理,决策多位一体) 是不是网页形式【B/S架构]才是云计算服务? 这是典型的误区! 只要符合上述描述的互联网服务都是云计算服务,并没有规定是网页…

深入了解Linux中的环境变量

在Linux系统中,环境变量(Environment Variables)是用于配置操作系统和应用程序运行环境的一种机制。它们储存在键值对中,可以控制程序的行为、路径查找和系统配置。本文将深入探讨环境变量的基本概念、常见类型、设置和管理方法&a…

OrangePi AIpro开箱测评

OrangePi AIpro(8T) 香橙派联合华为精心打造,建设人工智能新生态 章节一:引言 1.1 背景 香橙派(OrangePi)是深圳市迅龙软件有限公司旗下开源产品品牌,迅龙软件成立于2005年,是全球领先的开源硬件和开源软…

阿里云获取nginx头部

k8s 配置 可以修改kube-system/nginx-configuration configmap的方式, compute-full-forwarded-for: “true” forwarded-for-header: “X-Forwarded-For” use-forwarded-headers: “true” https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-g…

设计模式13——桥接模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 桥接模式(Bridge&a…

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序,涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码,展示LabVIEW在快速开发和调试RFID应用中的优势,使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID(…

2024爆款神器!会声会影2024旗舰版,让你的视频制作技能暴涨,不学真的亏大了!

在数字内容创作的时代,视频编辑已经成为连接创意与现实的重要桥梁。无论是个人Vlog制作、在线教育课程、企业宣传还是专业影视制作,高效而强大的视频编辑软件成为了必不可少的工具。会声会影2024旗舰版,作为一款集先进技术与用户友好界面设计…

分享目前堪称最好用的车机桌面app,支持画中画模式!

好用的车机桌面了,支持悬浮画中画! 如果你想改变单调的车机桌面,那么这篇文章你不要错过了!支持地图悬浮、画中画的车机桌面,不要错过! 今天阿星给大家分享3款好用、好看的大屏桌面软件,重要的…

内网穿透端口映射内外网反弹 shell 回顾

内网穿透&端口映射&内外网反弹 shell 回顾 内网概念 我们常说的内网,一般指的是非公有 IPv4 地址的网络比如学校机房里的电脑一般为私有网络,家里的网络也是私有网络 私有网络的范围与划分 ipaddressareaA 类地址10.0.0.0~10.255.…

【408精华知识】指令字长、存储字长、机器字长大总结!

文章目录 一、三种字长二、三种字长之间的关系三、三种字长与部件位数之间的关系 一、三种字长 机器字长:等于字长,CPU一次能够处理的数据的位数。通常等于寄存器、ALU的位数。例子:windows 64位/32位,这里的64位和32位指的就是该…

工博科技联手伯尼纳,共谋食品包装外贸行业新市场,助力全球市场拓展!

4月11日,伯尼纳贸易(江苏)有限公司(以下简称“伯尼纳”)SAP项目正式启动,双方项目组成员在福建厦门出席本次项目启动会。伯尼纳SAP项目的启动标志着企业业财信息化建设进入了一个新的历程。 实现业财一体化…

9.4 Go语言入门(运算符)

Go语言入门(运算符) 目录三、运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 其他运算符7. 运算符优先级 目录 Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注…

【python】python商家会员数据分析可视化(源码+数据集+课程报告论文)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

markdown画时序图的时候,如何自动显示每一条时序的序号

1: 现象描述 今天画时序图的时候,发现时序上面没有显示序号,看起来不够清晰,只有单纯的说明; 如下图所示 刚测试CSDN的时序图,默认是带序号的,看起来和实际使用的markdown工具有关系; 2:解决办…

Ubuntu 20.04 上安装和配置 VNC

先决条件 请确保以具有 sudo 权限的用户身份登录。建议使用具有 sudo 权限的普通用户进行处理,而不是直接使用 root 用户。创建用户并加入 sudoers 可自行百度。 安装桌面环境 大多数服务器没有安装桌面环境,因此我们首先要安装轻量级桌面环境。 Ubu…

Slash后台管理系统源码阅读笔记 后面面板中的折线图统计卡片是怎么实现的?

之前的笔记发表在博客和公众号以后,得到了一部分同学的喜爱的认可,所以今天继续。 目前这个管理系统的代码已经处理了一小部分: 接下来,我们看看第二栏那三个折线图统计卡片是怎么实现的。 这三个卡片还是使用的 antd 一行三列…

【C语言】文件操作(超级详细)

如果没有文件,我们写的程序的数据都存储在内存中,当程序退出,内存回收,数据就丢失了,下次再运行程序,已经看不到上次运行的数据了,而为了将数据持久性的保存,就需要使用文件。 一、…

什么是Capto刀柄,一起来认识一下

大家好,今天咱们不聊齿轮,说一说一款刀柄的相关内容。目前,高速加工中心的主轴转速可以达到10,000——50,000r /min ,极大地提高了生产率。高速加工工具系统的主要作用是保证刀具在机床主轴中的精确定位,将主轴的运动和…

请把「睡一个好觉」,当成一天里最重要的事来管理

我发现许多人都有这么一种情况:明明知道睡眠很重要,但却总是有意无意地熬夜。 比如: 给自己排了太多的学习和工作量,一不小心就到了凌晨一两点; 总觉得过去的一天什么都没干,宁愿在网上闲逛,也不…

数据持久化第六课-ASP.NET运行机制

数据持久化第六课-ASP.NET运行机制 一.预习笔记 1.动态网页的工作机制通常分为以下几个阶段: 1)使用动态Web开发技术编写Web应用程序,并部署到Web服务器。 2)客户端通过在浏览器中输入地址,请求动态页面。 3&#…