この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
存在は知っているけどコンストレイントって一体どこで使うんじゃという人や、キャラクターに道具を持たせてニメーションさせてあげたいという方に読んでほしい記事です。筆者は毎回「親と子どっち先に選択するんだっけ?」とド忘れしてしまいます。
はじめに
こんにちは。
今回は、難航しているモーション作業を楽にしてくれるかもしれない、シンプルなのに役に立つMayaのコンストレイント機能を紹介したいと思います。
10月に入ってからモーションデザイナーとして3Dアニメーションをメインにやるようになって制作経験のない動きを考え、作る機会が多くなりました。
現場では周りのデザイナーと武器に見立てた小道具を使いながらあーでもないこーでもないとかっこいい動きを考える毎日です。
やり始めていきなり苦労したのが重量のある斧を扱うキャラのモーションです。
斧の回転制御軸がコロコロ変わったり、両手で握ったり、持ちかえたり、肩に担いだり…工夫が必要な場面が多々あります。
モーション作業の面倒な場面
「物を持つ」だけではなく、「物を投げる」「物にぶら下がる」「物に乗る」などの複雑な動きをあまり時間をかけずに作るにはキャラ本体のリグだけでは当然足りません。
3Dでアニメーションを作る際、キャラクターが持つ武器はキャラクター本体の持ち手の骨(ジョイント)にアタッチされており、手の動きに追従して武器も勝手に座標が動くようにセットアップすることが多いと思います。
手を動かせばいいだけなので基本はこの構造がベターです。
しかし、持つ物やモーションによっては支点がアタッチされた手の座標とは違う場所に来る場合もあります。
例として、重量のある大きな斧で攻撃して地面に突き刺さった場合は斧の支点は地面に刺さった部分になります。
通常のリグでは手首の回転が斧の角度に大きな影響を与えてしまいます。
なので斧が地面に刺さった状態で体のアニメーションをつけたいときは手の位置と角度を全く動かさないよう注意しながら作るか、手首の回転と斧の接地面を毎フレーム確認して微調整しなくてはいけなくなります。
はっきり言って面倒で、モーション自体も汚くなりがちです。
こんな時にコンストレイントが役立ちます。
コンストレイントとは
コンストレイントとは
コンストレイントによって、1 つのオブジェクトの位置、方向、スケールを、もう 1 つのオブジェクトのトランスフォーム設定によって駆動できます。
簡単に言うとある物体のtransform、rotate、scaleを別のオブジェクトで制御できるようにする機能です。
mayaにはペアレント、ポイント、方向、スケール、エイム、極ベクトル等があります。
この中でも自分がよく使うのが、
・ペアレントコンストレイント
・ポイントコンストレイント
・方向コンストレイント
の3種類です。
ペアレントコンストレイントはデフォルトではコンストレイント対象のオブジェクトと親子関係を持ち、コンストレイントした時点での位置関係を保った状態で親のオブジェクトを中心点として回転、移動で子オブジェクトの動きを制御できます。
ポイントコンストレイントでは対象オブジェクトのピボット(中心軸)を親オブジェクトのピボット位置に常に来るように親子関係を保ちます。親が回転しても子は回転しません。
方向コンストレイントでは対象オブジェクトの回転値を位置が離れていても親オブジェクトの回転値と同じになるよう親子関係を保ちます。親が移動しても子は移動しません。
コンストレイントを使う例
先ほど挙げた、「大きな斧で攻撃して地面に刺さった状態」で柄を握ったままアイドリング動作をして数フレーム後に地面から斧を抜くという一連の流れの中でどう使えるか考えてみます。
地面に突き刺さる直前まで:斧の動きの親となるのは武器を振り回しているキャラクターの手です。
↓
突き刺さった瞬間~斧を抜き取る直前まで:地面と斧の接地点が動きの支点になり、手は常に斧の柄を握っているため逆に手が斧の柄の部分の子になると作りやすいです。
↓
斧をひっこ抜く瞬間:また斧の親が手に移ります。
・斧と地面の接地点にあたる部分
・斧の柄の部分
計2か所に親となるダミーオブジェクトが必要になります。
具体的に説明すると
刺さった瞬間のフレームで斧を、あらかじめ接地点に作ったダミーオブジェクトへのペアレントコンストレイント(コンストレイントA)に切り替え
さらに、キャラクターの手のジョイントを斧の柄の部分にペアレントしていたオブジェクトへのポイントコンストレイント(コンストレイントB)に切り替えます。
こうすることでコンストレイントAで回転制御している斧の持ち手の移動に対して常に手がコンストレイントBのおかげで追従するようになります。これで斧を握った状態でのアイドリング中は手首の回転の調整のみで済みそうです。
コンストレイントの使い方、切り替え方は以下の動画が分かりやすいです。
終わりに
このように一連のモーションの中で物体の動きの中心軸がどう遷移するか常に意識して、重ね掛けしたコンストレイントを切り替えていくことで思った動きに近づけることができます。
またキャラクターのセットアップにもコンストレイントを使うのでもう少し踏み込んで勉強すればアニメーターだけでなく、リガ―も目指せちゃいますね(3D分業の中でも特にMayaの知識が問われるのかもしれませんが)!
こういったMayaのコンストレイント機能を使った「工夫」はアニメーターによって様々であり、決まった正解のないアイデア次第の部分だと感じているのでモーション作業の魅力の一つに感じます。
ただ最初のうちはどう動くかなんてのはやってみないとわからない部分もあるので、とりあえず適当にアタッチしてそれぞれのコンストレイントの出来ること、出来ないことを理解してみると頭の中でもどこで何が使えるか設計できるかと思います。
最後まで目を通してくださりありがとうございました。