アニメーション制作にスクリプトを活用しよう!~初級編~

INDEX

このページで出来ること

  • リグコントローラーなどの位置合わせを簡単に行えるようになります。
    ワールド座標で取得・設定するので階層が違っても大丈夫です。

  • 回転順序を切り替えたときのポーズのズレを補正することが出来ます。

    tech_27_02.gif

はじめに

こんにちは。モノリスソフト テクニカルアーティストの本部です。

今回は「初級編」として、スクリプトを使用したリグコントローラーの位置合わせの方法をご紹介します。

リグコントローラーの位置・回転をワールド座標で取得・設定することで、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)

Mayaで使用できるようにする

ホットキーやマーキングメニューに登録するなどいろいろな方法がありますが、今回は一番簡単なシェルフへ登録してみます。

注意

シェルフへの登録は、「ワールド座標を記憶するスクリプト」「ワールド座標を設定するスクリプト」に分けて登録してください。
纏めて一つの機能として登録してしまうと、ワールド座標の記憶と設定の処理が同時に実行されてしまうため上手く動きません。

「ワールド座標を記憶するスクリプト」の登録

まずは、ワールド座標を記憶するスクリプトの登録を行います。以下の手順でシェルフへ登録してみてください。

  1. 上記のスクリプトをMayaのScriptEditorにペーストします。
  2. ペーストした部分をハイライト選択し、任意のシェルフへドラッグ&ドロップします(今回はCustomシェルフへ登録しています)。
  3. 登録するスクリプトのタイプを聞かれます。今回はPythonスクリプトなので、「Python」を選択します。

tech_27_03.gif

「ワールド座標を設定するスクリプト」の登録

こちらも、ワールド座標を記憶するスクリプトの登録と同様の手順で登録します。

tech_27_04.gif

最終的に、シェルフにボタンが2つ登録されていれば成功!

tech_27_05.png

スクリプトの使い方

ここまでの手順で、2つのPythonスクリプトをシェルフに登録し、使用する準備ができました。

では実際に使用してみましょう!

リグコントローラーなどの位置合わせ

アニメーションを制作していくと、あるリグコントローラに、違うリグコントローラの位置や回転を合わせる必要が出てくると思います。
「手の武器マウント用のリグに、武器を合わせたい!」などのケースです。

一時的に位置合わせをしたいだけなのに、ペアレントコンストレインを作成して位置合わせ、その後削除をしているアニメーターさんをよく見かけます。
こちらの機能を使用すれば、2ステップで位置を合わせることができます。

  1. 右手の武器用リグコントローラ(赤いロケータ)を選択し、シェルフに登録した「ワールド座標を記憶するスクリプト」ボタンをクリックします。

    tech_27_06.jpg

  2. 次に武器(ダガー)を選択し、今度は「ワールド座標を設定するスクリプト」ボタンをクリックします。

    tech_27_07.jpg

  3. 右手の武器用リグコントローラの位置に武器がぴったりとくっつきます。

    tech_27_08.jpg

また、歩きアニメーションなどを作る際に「ワールド座標で足の位置を合わせたい」という時にも使用できます。
以下はキャラクターのルートモーションによる足の滑りを補正する例です。

回転順序を切り替えたときのポーズのズレを補正

回転順序(RotateOrder)を変更した際の回転姿勢のズレも、このスクリプトで変更前の姿勢を記憶しておくことで補正することができます。

tech_27_02.gif

まとめ

今回はPythonスクリプトでマトリックスを扱った、リグコントローラの位置を合わせる方法を紹介しました。
簡単なスクリプトですが、今回紹介した以外にもいろいろな使い方があると思います。
是非、ご自身なりの便利な使い方を試してみてください。

執筆者:本部

アニメーターとしてモノリスソフトへ入社後、現在はテクニカルアーティストを務める。 好きな動物はねこ。

ABOUT

モノリスソフト開発スタッフが日々取り組んでいる技術研究やノウハウをご紹介

RECRUIT採用情報