3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

シンプルなStretchyIK

f:id:blendcomp:20130707010909p:plain

シンプルな伸びるIKです。

作り方は、
1. joint1からjoint5までを作ります。
2. 先端と終端を選んでIKを作ります。
3. IKでまっすぐに伸ばします。
4. 伸ばした状態のをメジャーツールで測ります。今回のは20.970でした。
5. メジャーでできたロケーター(測る側)をIKにペアレントします。
6. あとは以下のExpressionを入れるだけ。

要するに長さの限界を超えたらスケールで補ってねってしてるだけです。
直線状に伸びるだけのものだったらこれで。
ただ、ワンピースのルフィみたいにぐにゃぐにゃさせて使いたいですしね。
あまり使えないかもしれません(笑)
ただ基本的なやり方として参考になればなぁ…と思います。

if(distanceDimensionShape1.distance < 20.970){
    joint1.scaleX = 1;
    joint2.scaleX = 1;
    joint3.scaleX = 1;
    joint4.scaleX = 1;
    joint5.scaleX = 1;
}else{
    joint1.scaleX = distanceDimensionShape1.distance / 20.970;
    joint2.scaleX = distanceDimensionShape1.distance / 20.970;
    joint3.scaleX = distanceDimensionShape1.distance / 20.970;
    joint4.scaleX = distanceDimensionShape1.distance / 20.970;
    joint5.scaleX = distanceDimensionShape1.distance / 20.970;
}