ShaderForge-旗帜飘动

来源:互联网 发布:淘宝一楼土木人创业店 编辑:程序博客网 时间:2024/05/02 02:45

ShaderForge-旗帜飘动

本系列开始进行ShaderForge实战案例分析,案例的参考来源自朧老师的ShaderForge教程。
附带教程链接地址:http://www.aboutcg.org/?s=shaderForge&post_type=course。
文末我会提供相关使用的素材。

效果预览

这里写图片描述

思路分析

首先我们需要分析,为什么模型会有波形效果,波形效果的本质是对模型点的位置进行偏移(只是看起来变了属性面板模型的位置是不会变得)。波形运动我们需要一个Sin函数,并且它需要输入一个持续增长的X变量,我们可以用时间节点代替。

开始制作

创建默认的自定义光照模式Shader,并且删除默认的节点。
首先添加一个Texture2D节点,改名为MainTex,并且选择好图片素材。
这里写图片描述
更改预览区域的默认模型,并且旋转预览区域的物体(刚开始可能是背面,看不到东西),连接节点进行预览。
现在我们要产生一个波形的移动效果,我们先尝试用时间节点和sin节点。
这里写图片描述
简单连接之后,模型反复在左下方和右上方之间移动,这是为什么。
模型的移动需要的是一个向量( 三维数据),现在我们产生的一维数据,会自动提升成三维数据(1-(1,1,1))
所以会持续进行左下角和右上角的反复运动。

这里写图片描述

如何让他进行波形运动,我们需要在自变量时间节点基础上+一个连续增长的数字。
并且我们只需要他在Y轴方向进行上下起伏(不需要其他方向的运动)。所以需要一个(0,1,0)向量。
而模型的位置节点正好符合我们的这个需求,我们连接来试一下。

这里写图片描述

现在图形沿着X方向产生了波形变化,接下来我们来控制波形的振幅频率。
这里写图片描述

我们用Frequency控制频率,用Amplitude控制振幅。调节参数查看预览效果。
这里写图片描述
我们用一个Wavelenght变量来控制波长,数值越大波长越短,数值越小波长越长。
现在我们只是X轴方向的波形运行,如何添加Z轴方向的波长运动呢?
好办我们直接复制一套相同的节点即可,但是这种办法显然有太多重复节点,是否有其他简单的办法?
当然有,我们直接从WorldPos节点重新连出XZ进行相加处理。

这里写图片描述

现在旗子可以进行飘动了,但是我们知道,旗子的一端是固定在旗杆上的,波动的效果从左到右逐渐增强。
我们需要一个渐变的数据来控制振幅。我们使用UV节点的U通道来模拟这个渐变。如果方向不对,可以试试其他通道。或者进行取反操作。

这里写图片描述

可以观察节点的预览效果,Length已经变成了一个由内到外的径向0-1变化效果。
这里写图片描述

我们在场景中观察效果,发现一动旗子的位置,波动效果就会发生漂移,这是因为我们使用的是模型顶点的世界空间位置节点。我们使用相对位置,将当前节点减去模型的位置。
这里写图片描述

当前的完整节点图,合适的效果需要自行调节设置参数。
这里写图片描述

我们还有没有其他的信息,可以代替这个模型顶点的空间位置信息呢?想一下他的特征,不论模型发生什么变化,模型的局部顶点位置信息不会发生变化。有什么其他信息也是类似这种特点呢?
我们想到了UV信息,我们来试一下。
这里写图片描述

重新调节相关参数,调整到合适效果。
完整节点连接图
这里写图片描述

相关素材

链接: https://pan.baidu.com/s/1gfLCyAn 密码: 8gae

原创粉丝点击