目录:
零、准备:让草在Scene/Game视图中被看见
给PBRMaster节点,添加主贴图、法线贴图、金属贴图,并把主贴图的透明通道给PBRMaster的Alpha,且须改其Surface为Transform、勾选双面渲染TwoSided——此时能在ShaderGraph中能看到草,但在Scene/Game视图中看不到——原因是模型的Scale太小了(XYZ都是0.001),且摆位有问题,解决方法是:Scale变为1,并让其绕Y轴转180度。
效果图(如下)
一、草发生弯曲
原理
让模型顶点的X发生随机。
实现
分离出顶点的X值,给它加上一个0到1的噪点——此时,草只超正方向偏移了0到1,为了正负方向都有偏移,我们再给它减去0.5——然后我们再将顶点的XYZ组合起来,赋给模型的VertexPosition(另注意Position节点的Space,暂时定为了Object;噪点的Scale,暂时定义了成了5)。
效果
下图红圈处,我们可以看到,草发生了弯曲
二、草动起来
原理
让噪点的UV,按时间偏移
三、让草的运动符合自然规律
问题
之上动图,草的根部和顶部运动幅度一样,然而在自然中,顶部运动幅度>根部运动幅度
解决
使用Lerp插值节点,节点的a是模型原始的顶点(Position节点),b是组合后节点(Combine节点),t是模型UV的纵向(从底部的0到顶部的1)
效果
四、复制多个草窝时,产生此起彼伏、风吹麦浪的结果
问题
复制多个草窝时,它们的运动都一致——自然状态下,应该是像麦浪一样有此起彼伏的效果
解决
把“World”Space空间下的Position节点,连给Tiling And Offset的UV
效果
最高的草叶,不再平行,有了略微的差别、
五、某个草旋转后,摆动方向与其它草不一致
问题
第一个草,Y轴旋转度设为90,在左右移动,而另外的草是前后移动
原因
原始Position节点的Space是“Object”,应改为"World"——但最后PBRMaster节点的VertexPosition默认是Object,所以最后还得用Transform节点,将World转化为Object
六、对摇动频率、摇动幅度、弯曲噪点做调整
七、最终效果图
风刮的有点儿大,有种山雨欲来的感觉——个人可以将以上要点设置属性,在Inspector面板里调整