MAYAで形状を変更する為にデフォーマーを追加したら、それ単体でchannelから操作できますが、もっと直感的に操作したい場合は「コントローラー」が非常に便利で、これがなくてはアニメーターは素早くアニメーションを付ける事が出来なくなりますので「コントローラー」を使って制御する事は必須項目なんです!
今回は試しに長方形のジオメトリーに「Twistデフォーマー」を追加して、ねじる動作をコントローラーとするNURBSで制御させてみたいと思います。
polycubeからheight10、Subdivisions Height10にして長方形を作り、それを選択した状態でCreate deformersからNonlinear→Twistを選択します。色々なデフォーマーについてはまた今度記事にします。
twistデフォーマーを選択して、channelboxを開くと、こんな感じのパラメーターがありますので、End Angleに数値をいれるとねじれます。今回はこの「ねじれ」を一々数値をいれないで「コントローラー」を作り著感的に操作出来るようにします。
コントローラーはNURBSで作る。
制御するコントローラーはNURBSで作ります。NURBSのメリットとしてはレンダリングしても反映されないんです。なので、NURBS primitives→Circleで円を作ります。
円のままでもいいけど、DegreeをLinerの直線的にして、Sectionsを4にして四角形を作ります。ここを調整すると三角形を作ったり多角形を作る事も出来ますよ。
ジオメトリーの真ん中よりも、上からねじってる感じなので、コントローラーを上に移動させます。
コントローラーはフリーズをゼロに!ヒストリーを絶対削除する!
とっても大切な事!!これ絶対!!
コントローラーというのは、「常にその場所にあり続ける位置に置いとかないと行けません」今回はRotateさせてtwistさせるので、Rotate以外の数値は特に問題なく見えますが、TranslateのYに数値が入ってると、このコントローラーの基準となってる場所はどこなんだ?という事になります。本当だったら5.35上に上がった場所を原点としたいので、ここを0にする必要があるんです。
多分これはやってみないと分からない部分ですかね・・・。
なので、ModifyからFreeze Transformationsで全ての数値を0にする必要があるんです。
コントローラーとデフォーマーを繋げる方法
現状あるのは、コントローラーとして作ったNURBS、twistデフォーマー、それにジオメトリーの3つがあります。
コントローラーとして作ったNURBSをY軸に回転させる事により、twistデフォーマーのEnd Angleにも数値が入り、長方形がねじれるという動作を作りたいんです。ではどうやって作るかというと、
window→Hypergraph:Connectionsを選択。
するとこんな感じで複雑に接続されてるノードが表示されます。僕はこれが大の苦手・・・。何がなんだかサッパリですよね。
しかしよく見ると、コントローラーとして先ほど作った、nurbsCircleと、twistノードがあるのが分かります。この二つをくっつけてやれば動作するようになるんです。
Hypergraph:Connectionsでの繋げ方
まずは、nurbsCircle1の文字右側にマウスをもっていくと、変わった矢印マークになります。そこで右クリックからrotate→rotateYを選び、コントローラをY軸に回転させたらどうなるかという部分を作ります。
Y軸を回転させたら、twistのendAngleに数値が入るようになりたいので、線を引っぱり、twist1の上で左クリックするとendAngleが表示されるのでそれを選択。
すると、NURBSを動かすと、長方形の形状のendAngleにも数値が入り動く様になりました。
しかし、NURBSを時計回転しても、オブジェクトは半時計回転で、思った方向に動かないのがアニメーションしづらい原因となり、とても使いづらい!!
コントローラーとは反対に動く動作をMultiply Divideで正常にする!
反対に動く動作。このままでも動かせるには動かせるが、動かしづらいのでそれを直す方法があります。
現在どうなってるかというと、
NURBSを時計回転すると、オブジェクトは半時計回転。
NURBSをマイナス方向に回転させると、twistにもマイナスの数値が入る。
しかし、それでは進行方向と逆に回転してしまうので、このtwsitがマイナス方向じゃなくプラス方向に回転すると、進行方向通りになる。マイナスをプラスにするには、マイナスを掛ければプラスになる。それが出来るのが、Multiply Divideというノードです。
先ほど表示させてた、Hypergraph:Connectionsから何も無い所で右クリック→Rendering→Create Render Node…を選択、
すると、見覚えのあるHypershadeの左側だけが表示されるので、そこから「Multiply Dvide」を選択。Multiply Dvideはかけ算や割り算をする事が出来るノード。これをコントローラーとtwistの間に挟めます。
改めて、NURBSカーブを右クリック→rotateからrotateYを選択、
Multiply Dvide上で左クリック、input1→input1Yを選択、
Multiply Dvide上で右クリック、output→outputYを選択、
全部選択したのに線が繋がってない!という時でもちゃんと動作します。線が見えてないだけです。表示させたいなら、hypergraphのGraph→input and output connectionsを選べば線が表示されます。
マイナス数時を掛けてプラスにします。
Multiply Dvideを選択して、Multiply Dvideのアトリビュートを表示、Operationはかけ算のmultiply。input2の左からX・Y・ZのY部分の真ん中の数字を-1にします。すると、input1で入って来た数字をinput2で-1を掛ける事によりプラス方向に回転させる事が出来る様になるという訳です。
Multiply Divideノードの応用
-1を掛ければ、プラスになるので、コントローラーを移動させた時に、デフォーマーで変形される数値を大きくしたい場合にもMultiply Divideは使えますよ!
たとえば、bendを設置した長方形。input2が1だとこの変形具合ですが、
ここに20をいれると同じコントローラーの移動距離なのにbendの効果を大きくする事が出来ます。これは使えるねえ!!
ちなみに現在この本を読んで勉強中ですが、リグ初心者でもとても分かりやすくておすすめの書籍。アマゾンレビューが好評価なのもうなずけます。
Mayaリギング -正しいキャラクターリグの作り方-