スプラインIKに伸縮性を追加します。
スプラインIKコントローラー
- 設定のポイント
- SplineIKのカーブにcurveInfoノードを接続してカーブの長さを取得
- カーブの伸縮具合に応じてジョイントをX軸方向にスケールさせることで伸縮性を設定
- 伸縮に合わせてYZ軸スケールでの窄まりと膨張を設定
↓↓単純なSplineIK設定方法は、以下の記事をどうぞ
スプラインIKコントローラーの一番単純な設定方法【Mayaリギング】
↓↓持ち手用ジョイントにコントローラーを付ける方法につきましては、以下の記事をどうぞ
コントローラー設定基礎!一番単純な作り方【Mayaリギング】
↓↓通常のIK-Handle設定方法につきましては、以下の記事をどうぞ
IKハンドルの設定基礎!一番単純な作り方【Mayaリギング】
伸縮に用いた計算式について
まず、伸び縮みさせるための計算は割と単純ですが、
伸縮したカーブの長さ(curveInfoからの値)/元のカーブの長さ(非変形時の数値)=伸縮の倍率(X軸のスケールへ)
そこから、応用で窄まりと膨張の設定時に使った計算式ですが、
単純に伸びたら窄まり、縮んだら膨張すればいいので
計算式:1/x
これでもいいのですが、例えば2倍の長さになったときに細さが1/2になるので、ゴムのような表現にしてはだいぶ急な窄まりです。
そこで、以下の計算式ですが、
計算式:1/√x
累乗の計算が入るとなんだか難しそうな計算に見えるのですが、グラフを比較してもらえればわかるように、値の変化が緩やかになりました。
これぐらいの変化率の方がゴムのような表現には適しているわけです。
まとめ:カートゥーン表現でよく使う?
日本のアニメやゲームではあまり伸び縮みはないと思いますが、公式や海外の人が作ったリグを見ると大体伸び縮みできるように設定してあるように感じます。(そんなことない?w)
伸縮性設定の方法については、知ってしまえば意外と簡単なので、覚えてしまいましょう!