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
- ShaderForge-旗帜飘动
- unity shader 旗帜飘动
- oepngl飘动的旗帜(正弦)
- OpenGL -- 飘动的旗帜 (java)
- OpenGL -- 飘动的旗帜 (java)
- Unity3D制作飘动旗帜代码
- NeHe OpenGL第十一课:飘动的旗帜
- Android实现飘动的旗帜效果实例
- OpenGL学习三十九:飘动的旗帜
- Nehe教程第11课飘动的旗帜
- nehe第十一课飘动的旗帜waving texture实现原理
- 【Qt OpenGL教程】11:旗帜效果(飘动的纹理)
- ShaderForge
- Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
- ShaderForge文档
- ShaderForge API
- ShaderForge-数据
- 飘动窗体
- samba
- NFS实践
- 囫囵读仙侠,懵懂看漫画
- 各大互联网企业Java面试题汇总,看我如何成功拿到百度的offer
- bzoj 3230: 相似子串 后缀数组+rmq+二分
- ShaderForge-旗帜飘动
- 博弈问题总集第四类----Multi-SG
- 完美解决MySQL Access denied for user 'root'@'IP地址' 问题
- 软件工程之《下篇》
- 用python来爬取中国天气网北京,上海,成都8-15天的天气
- 西瓜书《机器学习》课后答案——chapter16_强化学习
- Disruptor 介绍
- BZOJ 1002: [FJOI2007]轮状病毒 kevin_xcw
- 关于RDD的打印输出(来自官网)