当前位置: 首页 > ai >正文

Unity | AmplifyShaderEditor插件基础(第六集:平面波动shader)

目录

一、👋🏻前言

 二、😈sinx波动的基本原理

三、😈波动起来

1.sinx节点介绍

2.vertexPosition

3.集成Vector3

a.节点Append

b.连起来

4.波动起来

a.波动的原理

b.时间节点

c.sinx的处理

四、🌊波动优化

五、🚀相关数据优化

1.希望波动密集一点

2.更改幅度


一、👋🏻前言

大家好,我是菌菌巧乐兹~本节内容主要讲一下,如何用shader来做一个sinx波动~

效果预览:

 二、😈sinx波动的基本原理

原本这是一个平面,变成一个曲面,还是改变顶点坐标

我们改变的是y的顶点坐标

要变成sinx的波动,就是根据给的x的值改y的坐标

我们学过y=sinx

三、😈波动起来

1.sinx节点介绍

2.vertexPosition

之前学过,我们的顶点坐标是有x的,我们把顶点的x给进去,这样我们就输出为y了

3.集成Vector3

我们最后给到的偏移坐标,实际上是(0,偏移y,0),那么我们需要合起来一下

a.节点Append

节点append是专门把单个的数据合起来的节点

在左边的outputType,可以选择你想拼装哪个数据

根据你选择的不同的选项,右边的节点也会有不同的接口

例:Vector2,右边就只有x和y,以此类推

InternalData下面可以填写的数据,你可以选择自己填,也可以选择在节点连

b.连起来

偏移是xyz,所以我们选Vector3,x和z不偏移,所以我们填0,y就是刚才sin连的节点,如图所示

这时候外面的图形,如下图所示(是不会动的)

 

4.波动起来

a.波动的原理

波动就是让输入进去的x的值逐渐增大,因为sinx中的x,只需要不断变大,他的y一直都在-1和1之间变动。

b.时间节点

这个节点就是当你点击运行时,就会从0开始计时,和秒表一样,一直往上加,速度是和平时的秒速是一样的。

如果你觉得时间走的太快了,你可以改scale,就是改时间的倍数

总结:这是一个不断增加的值

c.sinx的处理

只要x不断增加,就可以获得不断波动的y值,我们先让顶点x的值和time相加,如下图所示,就有了一组不断升高的x

把这个x放进sinx节点当中

d.都连接起来

你就会获得一个不断波动的plane

四、🌊波动优化

首先你会发现一个问题,我们的波纹有棱有角的,不是一个圆滑的波动plane

因为我们是控制的顶点移动,顶点和顶点中间我们是不管的,打开网格就可以看见

备注:选择这个就可以看见网格(如下图所示)

 

然后你就可以看见,只控制顶点移动,顶点和顶点之间离得挺远的,所以只能是有棱有角的波动。

总结:unity自带的plane是不够用的,没办法做到丝滑的波动,所以我们要搞一个网格比较密集的模型


模型资源绑定在文章,QQ群里均可下载,或者你自己搞一个网格密度高的模型


 换上密度高的模型后,把写的shader放上去,就会变成丝滑的模型波动

其实这里还是有点棱角的,如果你希望完全丝滑,就继续加网格密度 

五、🚀相关数据优化

1.希望波动密集一点

可以看见我们sin2x比sinx的波动要密集,所以我们只需要给输入的x加上倍数,就可以调整密集程度

如下图所示,dencity是一个float【可外部更改】,把它和上面的框相乘

从外部调整dencity,看波动效果

2.更改幅度

如果你觉得幅度太小了,那就是偏移y的数值太小了,在最后y值在的地方做个相乘

再给个特写

最后的波动结果

 

http://www.xdnf.cn/news/12996.html

相关文章:

  • 多模态大模型:AI的下一个前沿
  • ES Serverless 8.17王牌发布:向量检索「火力全开」,智能扩缩「秒级响应」!
  • 六.原型模式
  • docker nginx解决跨域请求的处理(https的也支持)
  • tomcat入门
  • 盟接之桥EDI软件:为制造业打造高效、安全的数据桥梁
  • 数据结构之队列
  • 基于SpringBoot实现的汽车资讯网站设计与实现【源码+文档】
  • CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14
  • AI重塑SEO关键词精准策略
  • Linux离线(zip方式)安装docker
  • 能源即服务:智慧移动充电桩的供给模式创新
  • 网络安全:数字时代的守护盾
  • 爬虫基础学习day2
  • 解密鸿蒙系统的隐私护城河:从权限动态管控到生物数据加密的全链路防护
  • C++编译之导入库理解与使用
  • React Hooks 的原理、常用函数及用途详解
  • crackme006
  • 抽象类和接口(全)
  • 98.错误走百度翻译API的苦98步
  • 深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
  • 从数据到价值:企业构建大数据价值链的核心战略
  • 闭合逻辑检测(保留最大连通分量)
  • 浏览器中 SignalR 连接示例及注意事项
  • 信创领域下的等保合规建设及解读
  • ava多线程实现HTTP断点续传:原理、设计与代码实现
  • 大学生职业发展与就业创业指导教学评价
  • 用 FFmpeg 实现 RTMP 推流直播
  • ArcGIS Pro裁剪栅格影像
  • 洞见未来医疗:RTC技术如何重塑智慧医疗新生态