執筆者:本部
アニメーターとしてモノリスソフトへ入社後、現在はテクニカルアーティストを務める。 好きな動物はねこ。
TECH BLOG
こんにちは。モノリスソフト テクニカルアーティストの本部です。
今回は「初級編」として、スクリプトを使用したリグコントローラーの位置合わせの方法をご紹介します。
リグコントローラーの位置・回転をワールド座標で取得・設定することで、GraphEditorやChannelControlでの値のコピーではできないことができるようになります。
ここでは今回使用するスクリプトの概要の紹介と、Mayaで実際に使えるようにするための準備について説明します。
今回使用するスクリプトは2つあり、「ワールド座標を記憶する機能」を持つスクリプトと、「ワールド座標を設定する機能」を持つスクリプトがあります。
また、使用するスクリプトはMELではなくPythonスクリプトです。
# 選択したリグのワールドマトリックスを記憶(最初に選択した一つのみ) temp_matrix = pm.selected(type='transform')[0].getMatrix(worldSpace=True)
#選択したリグにワールドマトリックス設定(最初に選択した一つのみ) pm.selected(type='transform')[0].setMatrix(temp_matrix , worldSpace=True)
ホットキーやマーキングメニューに登録するなどいろいろな方法がありますが、今回は一番簡単なシェルフへ登録してみます。
注意
シェルフへの登録は、「ワールド座標を記憶するスクリプト」「ワールド座標を設定するスクリプト」に分けて登録してください。
纏めて一つの機能として登録してしまうと、ワールド座標の記憶と設定の処理が同時に実行されてしまうため上手く動きません。
まずは、ワールド座標を記憶するスクリプトの登録を行います。以下の手順でシェルフへ登録してみてください。
こちらも、ワールド座標を記憶するスクリプトの登録と同様の手順で登録します。
最終的に、シェルフにボタンが2つ登録されていれば成功!
ここまでの手順で、2つのPythonスクリプトをシェルフに登録し、使用する準備ができました。
では実際に使用してみましょう!
アニメーションを制作していくと、あるリグコントローラに、違うリグコントローラの位置や回転を合わせる必要が出てくると思います。
「手の武器マウント用のリグに、武器を合わせたい!」などのケースです。
一時的に位置合わせをしたいだけなのに、ペアレントコンストレインを作成して位置合わせ、その後削除をしているアニメーターさんをよく見かけます。
こちらの機能を使用すれば、2ステップで位置を合わせることができます。
また、歩きアニメーションなどを作る際に「ワールド座標で足の位置を合わせたい」という時にも使用できます。
以下はキャラクターのルートモーションによる足の滑りを補正する例です。
回転順序(RotateOrder)を変更した際の回転姿勢のズレも、このスクリプトで変更前の姿勢を記憶しておくことで補正することができます。
今回はPythonスクリプトでマトリックスを扱った、リグコントローラの位置を合わせる方法を紹介しました。
簡単なスクリプトですが、今回紹介した以外にもいろいろな使い方があると思います。
是非、ご自身なりの便利な使い方を試してみてください。
執筆者:本部
アニメーターとしてモノリスソフトへ入社後、現在はテクニカルアーティストを務める。 好きな動物はねこ。