はじめに
この記事は多関節系の無機物のリギングをしようぜ、という記事です。
コントロールリグのコントローラー1個で制御するアンブロポイズ(Pi●erのライト)を作ったのでそのログです。
バネとかあるものはボーンを入れてリギングしてしまうと自動化できて楽です。楽しいよ!
環境
・UE5.3.2
・Blender3.6
モデル
リギング
設計方針としては、
1.ライトの位置を決める
2.ライトの位置に追従したアームから他パーツの位置を決める
です。
Controlを追加する
Head:ライトのコントロールです。動かすときに使用する部分です。
UnderSingleArm_ctrl:親から解除せずUpperArmに追従するようにします。Rootとつながっていない真ん中のUnderSingleArmの位置を決めるのに使用します。
Right/Middle/Left Spring_end_Point:バネの移動しない方の端の位置に置いておきます。
Construction Event
今回はばねの伸縮のためにばねのボーンの初期の長さを保存しておく必要があります。
Get Double Spring Lengthの中身
右側のばねのボーンとそのバネの終了地点のコントロールからLengthを取って保存しています。
シングルも同じような感じです。
Forwards Solve
ライトの位置からArmを動かす
IKにはBasic FABRIKを使用します。
precisionはEffectorとの誤差になり、小さいものだとカクツキが露骨に出るので0にしておきます。
UnderSingleArmの位置をUpperArmのコントロールの位置に合わせる。
UpperArmに追従しているコントロールからTransfromを取り使用しています。
ばねの伸縮を行う
ばねの伸縮を行う部分です。現状ばねがArmに追従して浮いてしまうので固定側を押さえつけていきます。
Basic FABRIKでばねの端のコントロールをEffectorに指定してばねの位置を合わせます。
これを左右中央の3つ分行います。
続いて初期値と今のばねの長さを比較して、ばねのボーンを伸縮させていきます。
今のばねのボーンの開始地点と終了地点の距離を求める関数÷初期値で割合を出します。
こちらもすべてのバネの分行います。
完成
動くアングルポイズが完成しました。Boothに使用したモデルを置いておきますので是非遊んでみてください。
↓今回使用したモデル
https://gisulove.booth.pm/items/5916817