今回、撮影されたアクターの動きに合わせてマッチムーブされたCGキャラの表面に複数のオブジェクトを固定する必要がでてきた。
表面上への固定なので、キャラの動きに合わせてくっついて動き回ることになる。
コンストレインにサーフェイスコンストレインというのがあれば良いのだが、なぜか存在しない。
Mayaヘアーを使えばFollicleで、簡単にできることだが、Follicleの位置情報はUVに依存するのでなかなか思う位置へFollicleをPaintすることが出来ない場合がある。
(いちもFolliclePaintで行っているので....。)
使ったことはないが、Highend3DにはFollicleを簡単に利用できるスクリプトがあるようだ。
(Highend3D: djRivet.mel 1.5.5)
しかし、今回はFollicleを使わない簡単な方法がないかと思いさがしてみることにした。
思い出したのが、まだCG学校を卒業した直後にインターンをやっていたときのことだ。
馬車をリグするためにポリゴンオブジェクトのある頂点座標を得て、それを別のオブジェクトのトランスレート座標の入力にするエクスプレッションを使ったことがあった。
実は数日前にもどうやって頂点座標を得たのか思い出そうとしたが無理だったのだが、今回その疑問を解決し、サーフェイスコンストレインを楽に行える方法を見つけることができた。
Terry Stoeger氏のサイトで、Tipsのページにある「Object too Surface Constraints in Maya」というのがそれだ。
しかも3種類の方法が書かれている。
今回は一番簡単な方法と、スクリプトを使う方法の二つを試すことにした。
--------------------
まず第一の方法、これはスクリプトを使わずに行える一番簡単な方法だ。
1)オブジェクトを固定した位置に一番近いエッジを選択する。
2)Edit Curves->Duplicate Surface Curves でそのエッジをカーブに変換。
作られたカーブのヒストリを維持しておけばこのカーブはそのエッジにくっついたままになる。
3)ロケ-ターのトランスフォームがゼロであることを確認する。
4)まずロケ-ターを選択し、そして先ほどのエッジカーブを選択
5)アニメーションメニューから、Animate->Motion Path->Attach to Motion Path でオプション画面を開く。
6)Time Range 「Start」、Start Time「1」、Follow「off」に設定し「Attach」をクリック。
これでロケータはその表面にくっついて動くようになる。
このままでは位置情報だけなので、表面角度情報を得るためには「Noramlコンストレイン」を行う必要がある。
恥ずかしながら、これを読むまで「Normalコンストレイン」というものの存在を知らなかった。
6年もMayaを使っていてコンストレインも知ったつもりになっていたが、気にも掛けなかったが、ちゃんとコンストレインのメニューの中に存在していた。
そしてこれを使うことでオブジェクトのノーマル情報をアタッチしたオブジェクトの回転に変えてくれる。
こんな便利なものがあるとは知らなかった。
さて、Normalコンストレインを使うときはUp方向の入力を何にするかを選択する必要がある。
対象となるオブジェクト名を入力することでそのオブジェクトのUp方向に連携させることもできる。
それにしても、先ほどのカーブとパスアニメーションを使う方法も、Normalコンストレインのことも、目から鱗だ。 GUIだけで出来てしまうとは!
今までMelかFollicleでないと出来ないと思っていた。
締め切りに追われ、力業でやることが多かったがもう少し基本の勉強が必要なことを実感した。
0 件のコメント:
コメントを投稿