チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第44回:目のリグ作成・希望の改良編
- Maya
- アニメーション
- ゲーム
- コラム
- チュートリアル
- 中級者
- 学生・初心者
- 教育
- 映画・TV
キャラクタのアニメーションといえばなんといっても目。目を見れば性格が分かる、目に心が現れる、というどこかで聞いたような話をまるまる信じこんでいた学生時代の私は、とにかく良い「目のアニメーション」をつけようと試行錯誤しました。でもどれだけやっても良いアニメーションになりません。うまく動いているかなと思っても、さっぱり感情が伝わって来ません。作っている本人は伝わっている気になっているのですが。
目のアニメーションをつけると言うと、本当に目だけアニメーションさせてしまいがちですが、実際には頭のアニメーションと連動します。目と頭の両方の動きで「感情」が表現されるのです。感情表現というとフェイシャルアニメーションに注目しがちですが、実際は頭のアニメーションの影響がとても大きいのです。
目と頭による感情表現について話すのも面白いのですが、今回はちょっと横に置いておきます。まずは目のアニメーションについて失敗談を紹介します。特にリグに注目して話をして行きたいと思います。
目を効率的にアニメーションさせたい!
とあるゲーム開発のプロジェクトに入り、キャラクタをアニメーションさせることになりました。とにかく目のアニメーションにこだわりたい!ということでキャラクタの動きに合わせて細かく目のアニメーションをつけることにしました。
目は左右にあります。二つ眼球を何度もアニメーションさせるのは意外と大変です。まず選択が大変です。細かい選択が必要になるので、いかに素早く正確に選択をできるかが効率化の鍵となります。そこでセレクションハンドルを使いました。目がどうやって作られているかによりますが、次の手順でセレクションハンドルを表示できます。
1. 目のメッシュオブジェクトか、目をスキニングしているジョイントを選択します。
2. ディスプレイ > トランスフォーム ディスプレイ > セレクション ハンドル(Display > Transform Display > Selection Handles)を選択します。
3. セレクションハンドル(小さな十字)が表示されます。
セレクションハンドルはジョイントやメッシュよりも選択が優先されます。次の図のように顔の近辺を矩形選択すると、セレクションハンドルが表示されている目が優先的に選択されます。両目を一つ一つクリックして選択しなくても大雑把な矩形選択で簡単に選択できるわけです。ミスも減りますし、作業スピードも上がります。ちなみにセレクションハンドルがないと、一番右の図のように他のジョイントが選択されてしまいます。
セレクションハンドルをより使いやすくするために、顔の中に埋まっているセレクションハンドルを顔の前に移動して見やすくしましょう。
1. 目のオブジェクトかジョイントを選択します。
2. F8キーを押してコンポーネントモードに入ります。
3. セレクションハンドルを選択できるように次のアイコンをクリックして、セレクションハンドルを選択できるようにします。
4.移動ツールでセレクションハンドルを選択し、顔の前に移動します。
これでセレクションハンドルが見えやすくなり、選択しやすくなりました。
☆ セレクションハンドルは属しているレイヤーの色などに影響を受けます。デフォルトでは黒です。
セレクションハンドルからリグへ進化させよう
セレクションハンドルのおかげで選択しやすくなりました。「これは生産性が上がったぞ、さすがMayaだ」と感嘆しながら数日作業します。実際これで十分といえば十分です。しかししばらくすると気づきます。どっちのセレクションハンドルがどっちの目か分からない…。
これは困った問題です。しかも作業しているうちに、セレクションハンドルが腕や体のリグと混ざってどこにあるか分からなくなります。なぜ見失うかというと、目の位置と関係ないところにセレクションハンドルがあるからです。もし目と同じ場所にセレクションハンドルが出ていれば、どちらの目のハンドルかすぐにわかるはずです。でもそれだと選択しにくいんですよね。
というわけでもう一工夫必要です。これこそリグの出番ではないかと、いろいろなリグを考案しました。
目を回転させてアニメーションさせると、どこを実際に見ているか注視点がわかりません。見るところを指定できるようにすれば目とコントローラーの関係もわかりやすくなりますし、正しく物を見るようになるので見た目のクオリティも上がるのでは?と思い、Aimコンストレインを使うことにしました。次のようなリグです。
Aimコンストレインで左右の目がそれぞれのロケーターに向くようになっています。実際にアニメーションさせるのはeyeCenterと名付けた真ん中のロケーターです。一つのロケーターを動かせば、両目が動くわけです。これなら選択回数も減りますし、キーフレーム数も減ります。
更にeyeCenterには「width」という名前でダイナミックアトリビュートを追加しました。値を変えるとエクスプレッションを介して左右のロケーターの間隔が変更されます。
これでコミカルな目も作れますね!作ることがあるかどうかわからないですが。(→のちのち目の間隔が重要なことだと知ることに。)
効率を上げるには、同じ結果を得るのに「少ない選択回数」「少ないキーフレーム数」を達成することが大切です。この様子なら見事達成できたと言えますね!
まとめ
注視させたいところにeyeCenterロケーターを持っていけば、3D上で座標を指定して正しく注視するようになりました。だから目が正しくアニメーションしているはずです。これでアニメーションのクオリティがまた一歩上がっちゃう、どうしよう、なんて思いながらこのリグを数日使うと、現実を知ることになりました…。
次回は3DCGの落とし穴「3Dだから正しいはず」という考えが、必ずしも見た目に正しいわけではないという問題を見ていきたいと思います。