アニメーション事始め (3)
~第3回「手で物を握るポーズ」
今回からいよいよ操作説明から脱却して、基礎的な内容の解説となっていきます。
第2回の解説で間違いがありましたので、ここで訂正です。
「ローカルにすることで、ボーンのモーションとしての回転を加えても、必ず進行方向がXYZ軸のどれかになります。」は、T-poseのときに、腕や足などのようにX軸やY軸、Z軸に水平に配置された場合のみ、という条件付きでした。
あごや指先のボーンのように、はじめから斜めに配置している場合はこれに当てはまりませんね。
お詫びして訂正いたします。
さて、さっそく前回の予告からは外れてしまいますが一つ大事な説明が抜けてました。
今回の解説ではポージング時の試行錯誤にちょうどいい難易度のポーズがあるのでそれを。「握る」という動作です。
握るポーズをするときのルール
手で物を握る場合は、親指とそれ以外は役割が異なります。
親指とそれ以外で挟むような感じ、その際に親指のボーンが作る姿勢は少し複雑になります。
ポージングの場合は参考資料をネットで探すのもいいですが、自身の体で目的のポージングをして確認してみましょう。
可動する範囲とかどう曲げればよいのか、などが手っ取り早く確認できると思います。
さて、ここで親指に注目します。
親指は他の指と違って、曲がる軸の垂直方向が真上ではなくて傾いている姿勢になってます。
では、上記の写真から親指を人差し指と同じ高さに水平に近づけて、人差し指にぴたっとつけるようにすればどういった姿勢になるでしょうか。
人差し指がZ軸を中心とした回転になるのに対して、親指はY軸を中心とした回転で曲がります。親指とそれ以外は進行方向は同じ真横向きですが、進行方向を軸として90度傾いているのが初期姿勢ということになりそうですね。
ここから握る姿勢に持っていくときに、親指は手首から少し指寄りを中心軸にして下側に回転し、それから指の関節を指先に向けて順番に曲げていってます。
最終的なポーズありきで単純に指のボーンを曲げていっただけでは、本来は曲がらない方向に曲げてしまったりで手を開いたり閉じたりするアニメーション時に後々破たんすることが起きてしまうことがあります。
このあたりを考慮して順番に曲げていきましょう。
ボーンを調整する際は、ジョイントモードにし、マニピュレータ座標系は「ローカル」にして操作するようにしてください。
親指の付け根(ボーン名をbone_RightHandThumb1としてます)を選択し、Y軸を中心に少し回転させ親指を広げます。
その後、他の4本指より下になるようにX軸を中心に回転させます。
親指の第一関節(bone_RightHandThumb2/bone_RightHandThumb3)は、「Y軸」を中心に回転させます。
これで親指はそれらしく曲がりました。
その他の4本指は単純にZ軸を中心に回転させることで、つかむためのポーズに持っていきます。
親指の付け根(bone_RightHandThumb1)の回転を再調整し、掴むポーズは完成になります。
このときの注意点として、指の第一関節/第二関節は1つの軸以外は曲がりません。親指はY軸のみ使用、その他はZ軸のみ使用。
現実の指もそのように可動しますので、実際にいろいろポーズを作って確認してみてください。
このあたりのルールを当てはめれば、よりポージングの効率化につながるかと思います。
物を握る
今まではグーのポーズになっていて何も持たないと寂しいですので、何か持たせてみましょう。
ミノタウロスのコンテンツ内に斧を用意してますのでそれを使ってもいいですが、今回はマーケットプレイスにある「中世の武器セット」を使ってみます。
これは、持つものの太さや重さによってどのように指のポーズを決めればよいか、ということの模索のためでもあります。
「中世の武器セット」には、shield/claymore/axe/morning_star/stand/hammerの形状ごとに武器が入っています。
このうちをいくつかミノタウロスに持たせてみることにします。
ポージングやアニメーションで扱いやすくするために、武器1つ1つをshdファイルに分けてボーンを仕込みます。
回転の中心が(0, 0, 0)になるようにして、2つのボーンを配置、スキンを割り当てておきます。
(もしくは1つのボーンを(0, 0, 0)に配置して、その中に武器のポリゴンメッシュを入れる)
ジョイントモードでこの武器のボーンを移動/回転させることで、キャラクタの手に持たせることになりますね。
これを、ミノタウロスのシーンにインポートします。
インポート時に生成されるパートは不要ですので削除して、ルートパートの子として直接武器のポリゴンメッシュとボーンを配置しておきます。
先にキャラクタのほうを武器を持っているポーズにします。
手は適度に緩くグーにしておきます。
ジョイントモードで剣のボーンのオフセット/回転を調整し、右手に合うように持っていきます。
後は指を曲げていき、手が剣にフィットするようにします。
これで握る動作は完成になります。
同じように、今度は剣よりも太めの斧を持たせてみます。
剣のときよりも取っ手の太さがありますので、少し開く感じにフィットさせています。
一度グーのポーズをさせておけば、後はつかむ動作については流用できそうですね。
他のキャラクタで同じポーズをさせる
ミノタウロスの場合は、剣は少し細すぎて手で握りずらそう、やっぱり斧向きな感じではあります。
では、小柄なキャラクタを用意してそれに剣を持たせてみましょう。
マーケットプレイスに「骸骨(がいこつ)」という無料コンテンツを用意してますので、これにポーズを移植してみましょう。
Shade 3Dでのモーションのキーフレームを再利用する手段としては、以下の3つがあります。
・形状名の先頭に「|」をつけて、ポーズデータとしてエクスポート
・モーションウィンドウでキーフレームを選択して、コピー&ペースト
・モーションウィンドウでキーフレームを選択して、モーション設定ファイルとして保存/読込
ジョイント名で判断してコピー&ペーストするには、1つめの形状名の先頭に「 | 」をつけてポーズデータとしてエクスポート、しか手段はありません。残り2つは、ジョイント構造がまったく同じ場合にモーション情報を順番にジョイント名に関係なく流し込む動作をするようです。
ミノタウロスの場合は尻尾や角を可動させるボーンをHumanIKのボーン構造から追加してます。そのため、下2つの方法は(ボーン構造が変わる移行となるため)使えません。
1つめの「 | 」を追加する方法も手間ではあります。
そこで、指定のボーンのモーション情報を保持し、これを指定のジョイントのキーフレームとして貼り付ける「Motion Keyframe Tools - Copy」というスクリプトを作りました。
Shade 3D ver.14以降のBasic/Standard/Professonalのいずれでも動作します。
スクリプトは「widgets_Motion_Keyframe_Tools_Copy.zip」よりダウンロードできます。
これを解凍し、「Motion_Keyframe_Tools_Copy」フォルダをShade 3Dのドキュメントディレクトリのwidgets内にコピーします。
Windows環境の場合は「C:\Users\ユーザ名\Documents\Shade 3D ver.15\widgets」、Mac環境の場合は「/Users/ユーザ名/Documents/Shade 3D ver.15/widgets」内に配置します。
その後、Shade 3Dを起動してください。
ポーズを記録する (Motion Keyframe Tools - Copy スクリプト使用)
Shade 3Dのメインメニューの「スクリプト」-「Motion Keyframe Tools - Copy」を選択すると、操作用のウィンドウが表示されます。
先ほどのミノタウロスがポージングされた状態で、ボーンのルート(ここではbone_Hips)をブラウザから選択します。
「Motion Keyframe Tools - Copy」ウィンドウで任意のボーン名を指定後、「ポーズを記録」ボタンを押します。
これで、ウィンドウ左のリストボックスにポーズ情報が記録されました。複数登録でき、Shade 3Dを一度終了させて再度開いても、記録されたポーズ情報は継続して使用できます。
ポーズを反映する (Motion Keyframe Tools - Copy スクリプト使用)
次に、別シーンにある「骸骨(がいこつ)」を開きます。
骸骨でのルートボーン(ここではbone_Hips)を選択し、「Motion Keyframe Tools - Copy」ウィンドウで割り当てたいポーズをリストボックスより選択し「ポーズを貼り付け」ボタンを押します。
すると、カレントのシーケンス位置にミノタウロスのときのポーズが反映されました。
同一ボーンでのポーズを反映させるスクリプトとなります。
後は、これに対して剣を持たせてみます。
手の指はミノタウロスとは異なるため、少しだけフィットするようにモーションとしてのボーンの回転調整が必要となります。
ミノタウロスだと剣もそんなに大きく感じなかったのですが、骸骨だと相対的に大きく見えますね。
このスクリプトを使うと、後はほんのちょっとの修正だけで同じポーズに持ってくることができるようになりますので、よろしければお使いくださいませ。
オフセットについては、例えばミノタウロスがしゃがんだ動作でボーンルートが移動した場合、その移動量がそのまま骸骨に反映されることになります。そうすると、身長は骸骨のほうが低いですので地面にのめり込むことになります。
オフセットを割り当てた場合は、キャラクタの場合はルートボーンだけになると思いますが微調整するようにしてください。
今回はポーズの反映ですが、アニメーションの歩いたり走ったりする動作そのものを再利用する、についてはそれらの説明の際にスクリプトを紹介するようにします。
また、ミノタウロスのポーズ(というよりもモーション)が割り当てられているデータは、マーケットプレイスの「ミノタウロス」内に入ってますので、これを利用していろんなポーズを骸骨に移植してみてください。
これで、「ポーズデータだけ用意してアセット化(再利用のためのリソースにする)」ができるようになりますね。
さて、今回はここまでです。
次回は、今度こそ、今度こそは、モーションに入っていく予定です。
文:ft-lab
この記事へのご意見・ご感想などはこちらで受け付けております。