rainyeve
  • 首页
  • 编程
  • 涂鸦
  • 其他
  • 关于
2019年12月17日
编程

【Animation Rigging】Jiggle Chain实现树枝晃动+Shader动画实现花草晃动

【Animation Rigging】Jiggle Chain实现树枝晃动+Shader动画实现花草晃动
2019年12月17日
编程

实现效果

参考主要来源是Unite Copenhagen 2019关于Extending the Animation Rigging的介绍,用到里面的Jiggle Chain代码。给low poly风格的树木用MAYA加上简单的骨骼,在unity中绑上Jiggle Chain,再用动画修改Jiggle Chain参数,模拟了简单的树枝晃动。

另外沿用了以前写好的模拟衣物晃动的Shader,给场景的花草也做了晃动模拟,shader原理几乎一致。

树枝和花草晃动

Shader动画

与衣物晃动Shader同样是用噪声改顶点位置,这次是用模型的Y轴坐标控制噪声在竖直方向上的渐变,因为花草迎风摆动是越接近根部摆动幅度越小的。

花草晃动Shader

Jiggle Chain运用

尝试Damped Transform

最初尝试使用了Animation Rigging Package自带的Damped Transform,结果发现对于弹性很大的物体用Damped Transform会体现不出回弹之后的抖动。

尝试用DampedTransform做树杆带动树枝晃动

由上图可看出枝条只是延时做出“归位”动作,而没有因为回弹的残留速度造成“晃动”。

即使根部剧烈摇动,末端节点的运动也很快就消减掉

现实中树木的摇摆并不是树干带动枝条,相反地是面积较大的枝条受风力摇摆而带动树干晃动,如果用DampedTransform则是要根节点运动得比末端节点更剧烈,于是这并不适用。

Jiggle Chain特点

虽然Jiggle Chain也有Damped参数,但驱动它运作的并不必是根节点的运动,可以是外力。下图先用根节点的运动可以看出与Damped Transform的区别:

根节点仅扭动少许,末端就有较大晃动

晃动幅度是越靠近末端越被扩大,更接近“抖动”这个概念。但是实际上运用的时候并不是对根节点做动画,因为要模拟的并不是剧烈撼树效果,而是缓慢的迎风晃动。Jiggle Chain的外力参数正好派上用场。

对JiggleChain的ExternalForce参数做动画

用动画Clip来动态修改JiggleChain的外力大小或方向,即模拟的风力忽大忽小,能做出树木摇摇晃晃的效果。

Post Views: 4,753

animation shader unity3d

上一篇【Unity Shader】简单模拟热空气扭曲效果下一篇 【Unity Shader】2D火焰UV动画

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

分类目录

  • 其他 (2)
  • 旅行 (1)
  • 涂鸦 (6)
  • 编程 (28)
Email: wuch441692@163.com