-Blenderで剛体シミュレーションをするときの手順と注意点-


4. 剛体からボーンへ

■ 多関節をセッティング

剛体シミュレーションで作った動きでボーンを動かすことができれば、(自分から動かない人形のような)手足はリアルに動くはずです。
キャラクターの揺れもの、例えば服や髪の毛、を動かすのは敷居が高いので、非常に簡単な多関節物体からボーンを構成してみます。

多関節剛体の素材としてこの様な形にしました。
(横を向かせた 8角形の Cylinder です)
角をとった形にしたのはシミュレーションの時に引っかかりにくいようにするためです。

また、回転の中心が節の中央ではなく関節部分になるように中心をはずしてあります。
ボーンの根元と先端をこの形状に合わせようとしています。
前節と同じようにx軸方向に並べて、左から順番にCylinder Cylinder.001 Cylinder.002 Cylinder.003 というように名前がつけています。

また、関節部分には Rigid Body Constraint を置くための Empty を配置しました。
前回の要領で、根元だけ動かないようにして、他の節に Rigid Body を設定します。
関節部分にあたる Empty にそれぞれ Constraint (Generic Spring 汎用ばね)を設定しました。
移動の自由度はなしにして(LowerとUpperを0に設定します)、角度を前後45度まで可動にしました。
ところで、剛体を複数のオブジェクトに順に設定していくような場合には、
剛体のメニューの中に Copy From Active (アクティブからコピー)があるのでこれを使うと手順が少なくて済みます。

■ Bone の設定

時間を0に戻して初期位置で編集します。親の Cylinder と重なるように、Boneを追加します。

Edit モードで編集して、Tail の位置を調整してx軸方向を向くようにします。
Rigid Body と重なるように、 Bone を延長して増やしていきます。

※) 厳密には、ボーンのつなぎ目が関節として配置した Empty に重なるようにします
Pose Mode にして一本一本のボーンの設定を編集します。
Bone Constraint の Child of (チャイルド)をそれぞれに設定します。
Bone は Cylinder に、Bone.001 は Cylinder.001 にというように、順番に結びつけていきます。
これだけだと動きは追随するのですが、Bone が曲がりすぎます。
これは、子供のBoneの角度が親の角度を反映するために、角度が合計されているためです。
ボーンの Releations (関係)設定で、Inherit Rotation (回転を継承) を切って、親の回転の影響を受けないようにします。
これで剛体のオブジェクトの回転だけを反映するようになります。
Bone が 物理シミュレーションに従って動きました。
Blender 2.78 以降で Bendy Bones (ベンディボーン = 曲がるボーン)が導入されています。
今回のような揺れるボーンの設定にはせっかくなので適用しておくとより柔軟な動きが表現できます。
Bendy Bone の曲がり具合は表示設定を B-Bone(B-ボーン) にしないと表示されません。
B-Boneで表示すると、ボーンがより滑らかに曲がっていることがわかります。

■ Armatureとして構築してアニメーション

Aramature を使ったアニメーションの詳細はキャラクターアニメーションの作り方の範疇になるので、ここでは詳しく触れません。
代わりにものすごい簡単な多関節キャラクターとして蛇を使ってみます。

この蛇はフリー配布素材をもとにして、ボーン(Armature)と重なるように蛇をモデリングしました。
剛体は邪魔なので非表示にして隠しています。

胴体は充分に滑らかに曲がってくれるように追加で多めに分割(Ctrl-R)しています。
蛇のモデルとArmatureに親子関係(Ctrl-P)をつけて、モデルがArmatureによって変形するように調整します。
とりあえずは今回のような単純な形状では、Automatic Weight (自動のウェイトで)で充分だと思います。

パラメータなどはここでは説明しないのですが、キャラクターアニメーションをつけるための手順に従います。
(ウェブ上にも多くの資料があると思います)
根元のオブジェクトを振って、蛇のニョロニョロアニメーションができました。
根元が動いているだけなので、あまり精気がある動きではないですが、ある程度それらしい動きができました。

(最初に静止させていた)根元の剛体を動かすときは、Passive ではなくて Active にして、Animated をオンにすることで手付のアニメーションを有効にします。
Passive なままで動いている剛体に対しては、Rigid Body Constraint の反応が正しくない(多分速度とかの情報がないから?)ようです。


この蛇を動かすときに、根元の動き始めは3フレーム目からにしています。
それ以前に動き始めると、根元とその先のパーツにずれが発生しました。
詳細は不明ですが、1フレーム目と2フレーム目の情報を利用して、速度の情報がそろうのが3フレーム目からではないかと予想しているのですが…
(もしかすると、ぜんぜん的外れかもしれません)

inserted by FC2 system