ポリゴン・ピクチュアズが現場で実践しているリグおよびアニメーション制作の手法を、Maya用リグ・アニメーション開発ツール「eST3」を中心に紹介していく本連載。今回からリグ編のスタートです。eST3を使った最も単純なリグのセットアップ方法を紹介します。
Information
eST3
eST3 は、リギングとアニメーションのフレームワークです。Maya で動作し、様々なツールを提供します。
動作環境:Windows 10(Maya 2020〜2024/Python 2.7, 3.7, 3.9, 3.10)、Linux(Maya 2020〜2023/Python 2.7, 3.7, 3.9)
価格:無料(※利用規約とプライバシーポリシーへの同意が必要)
est3.jp
Topic 01:環境設定
まず、eST3 の作業環境を準備します。
eST は複数人での作業を想定したツールです。作業を行う際にはいつも「プロジェクト」が設定されていますが、これによってツールのプロジェクト固有の設定ができ、データの共有がしやすくなります。
ここではチュートリアル用の環境をダウンロードして、個人用の作業領域に「CGWチュートリアル」という名前のテストプロジェクトを設定します。
1. cgwTutorial.zip をダウンロードし、ファイルを展開します。この際、作成される「cgwTutorial フォルダー」の直下に project.conf 等のファイルが展開されていることを確認してください。
2. eST メニューバーから[eST3→作業領域フォルダーを開く(Open Work Area Folder)→現在のユーザー(yourName)(Current User (yourName))...]を選択してエクスプローラーを開きます。存在しない場合は「projects」という名前のフォルダを作成し、projects フォルダを開きます。その下に、先ほど解凍してできた cgwTutorial フォルダを移動してください。
3. eST メニューバーから[eST3 →プロジェクトエディター(Project Editor)...]を選択し、「プロジェクトエディター(Project Editor)」ウィンドウを開きます。
4.ウィンドウ左に表示されるプロジェクト名リストを確認します。現在のユーザー名の階層の下に cgwTutorial が表示されていたらウィンドウを終了してください。表示されていない場合は、手順1、2での配置が正しく行われていない可能性がありますので確認してください。
5. eST メニューバー右端に表示されるプロジェクトメニューから CGW チュートリアル(CGW Tutorial)を選択してください。
これで準備ができました。
Topic 02:基本のセットアップ
まず最も単純なリグとして、シーン中に配置されるだけの眼鏡をセットアップしてみましょう。
準備:アニメーション要素の確認
まず、どの部分をアニメーションさせるのか確認しましょう。
今回作成する眼鏡リグでアニメーション可能なのは、眼鏡全体の親ノードのみです。操作できる要素は以下のとおりです。
・眼鏡全体の移動・回転・スケール
リグ全体の移動・回転・スケールは、eSTリグの基本構造であるフレームワークを作成するだけでアニメーション可能になります。
フレームワークの作成
セットアップの最初の手順として、フレームワークを作成します。以下の手順で進めます。
1. eSTメニューバーから[リグ(Rig)→ コンストラクター(Constructor)…]を選択し、ウィンドウを開きます。
2.[リグコンストラクター(Rig Constructor)]ウィンドウで[リグ→作成(Create)→ □]を指定し、[フレームワークエディター(Framework Editor)]ウィンドウを開きます。
3. [リグの構成(Rig Construction)]に[スタンダード(Standard)]を指定します。
4. [ネームスペース(Namespace)]に[無し(None)]を指定します。
5. [リグパス(Rig Path)]を指定します。ここでは「CGW チュートリアル/プロップ/眼鏡/アニメーション(CGW Tutorial/Props/Glasses/Animation)」を指定します。また、鉛筆のアイコンをクリックして、「cgwTutorial/props/glasses/anim」と直接入力して指定することもできます。
リグパスは、リグを一意に特定する文字列です。左から「プロジェクト名」「リグタイプ」「リグ名」「バリエーション」を「/」で区切って定義します。今回はあらかじめプロジェクトのリグデータベースに登録されているため、メニューから選択して指定できます。
6. [リグバージョン(Rig Version)]フィールドに「1.0」と入力します。
7. [既定のコンストレイン AnimPlugs を作成(Create default constraint animPlugs)]、[既定のデフォーマー AnimPlugs を作成(Create default deformer animPlugs)]、[既定のイレギュラー AnimPlugs を作成(Create default irregular animPlugs)]の各チェックボックスをOFFにします。
8. [レイアウトハンドル(Layout Handle)]メニューで[無し(None)]を指定します。
9. [作成して閉じる(Create and Close)]ボタンをクリックして、ウィンドウを閉じます。
作成が完了すると、リグの基本構造となるノード階層が生成されます。
アウトライナーには、以下のようなDAGが表示されます。
あわせて、以下のようなobjectSetが作成されます。layoutノードとoriginノードは、layout_animPlugsに登録されています。
ジオメトリを読み込む
セットアップ対象のジオメトリをシーンに読み込み、リグへ追加します。
1. eSTメニューバーから[ファイル(File)→ライブラリアン(Librarian)…]を選択し、[ライブラリアン(Librarian)]ウィンドウを開きます。
2. パスセレクターで「プロジェクト/CGW チュートリアル/リグ/プロップ/眼鏡/共通(Project/CGW Tutorial/Rigs/Props/Glasses/Common)」を指定し、一覧に表示される「glasses_model.ma」を選択します。
3. ウィンドウ下部の実行ボタン左端にある▼ボタンをクリックし、表示されるメニューから[ネームスペースなしでインポート(Import with No Namespace)]を選択します。その後、実行ボタンをクリックしてファイルを読み込みます。
ジオメトリを追加する
ジオメトリをリグに追加するには、以下の2つの方法があります。
①レンダージオとして追加する
1. 眼鏡ジオメトリの最上位ノードglassesを選択します。
2. [リグコンストラクター(Rig Constructor)]ウィンドウで[レンダージオ(RenderGeo)→追加(Add)→オリジン空間へ(To Origin Space)]を選択します。
3. glassesノード以下の全てのDAGノードを選択します。
4. チャンネルボックスに表示される全てのアトリビュートを選択し、右クリックメニューから[選択項目のロック / 非表示(Lock and Hide Selected)]を実行して、アトリビュートを編集できないようにします。
②originの子ノードとして追加する
1. 眼鏡ジオメトリの最上位ノードglassesをoriginノードの子にします。
2. glassesノード以下の全てのDAGノードを選択します。
3. チャンネルボックスに表示される全てのアトリビュートを選択し、右クリックメニューから[選択項目のロック / 非表示(Lock and Hide Selected)]を実行して、アトリビュートを編集できないようにします。
※origin以下の階層にあるノードのうち、アニメーションしないものは、全てアトリビュートをロックして非表示にしてください。
これで眼鏡リグをシーン内に配置できるようになりました。以上で、最も基本的なセットアップは完了です。
Topic 03:フレームワークの追加設定
より使いやすくするために、次の設定をしてみましょう。
リグアイコンを作成する
リグアイコンを作成しておくと、各種ツールでリグを識別しやすくなります。作成したアイコンは、リグビューをはじめとする様々なツールで使用されます。
1. [リグコンストラクター(Rig Constructor)]ウィンドウで[リグ(Rig)→編集(Edit)→□]を選択し、[フレームワークエディター(Framework Editor)]ウィンドウを開きます。
2. [アイコン(Icon)]フィールド右側のカメラボタンをクリックし、[キャプチャービュー(Capture View)]ウィンドウを開きます。
3. 3Dビューでカメラアングルを調整し、[レンダリング(Render)]ボタンをクリックしてアイコンをレンダリングします。
4. 表示された[イメージの確認(Confirm Image)]ウィンドウで[保存(Save)]ボタンをクリックします。
5. [編集して閉じる(Edit and Close)]ボタンをクリックして、ウィンドウを閉じます。
設定後は、[リグコンストラクター(Rig Constructor)]に表示されるリグアイコンが更新されます。
レイアウトハンドルを追加する
layoutノードを3Dビュー上で選択しやすくするため、レイアウトハンドルを追加します。
1. [リグコンストラクター(Rig Constructor)]ウィンドウで[リグ(Rig)→編集(Edit)→□]を選択し、[フレームワークエディター(Framework Editor)]ウィンドウを開きます。
2. [レイアウトハンドル(Layout Handle)]メニューで[コントローラーシェイプ(Controller Shape)]を選択します。
3. [形状(Shape)]メニューで[ジャック(Jack)]を選択します。
4. [リグ名を表示する(Show Rig Name)]チェックボックスをOFFにします。
5. [編集して閉じる(Edit and Close)]ボタンをクリックして、ウィンドウを閉じます。
設定後は、layoutノードにコントローラーシェイプが追加されます。
レイアウトハンドルのサイズを調整する
現在のハンドルはジオメトリに対して小さいため、サイズを調整します。
1. layoutノードを選択します。
2. アトリビュートエディターを開き、layoutShapeタブを表示します。
3. [ローカルスケール(localScale)]の値を「3.0, 3.0, 3.0」に設定します。
これで、ハンドルのサイズが大きくなります。
Topic 04:アニメーション要素の追加
ここからは、アニメーションする要素を追加していきましょう。
準備
■アニメーション要素の確認
ツルの根元を折りたたむアニメーションが要望された場合に、追加するアニメーション要素は以下のとおりです。
・ツルの根元節の1軸回りの回転
新たにアニメーション要素を追加するには、animPlugsを作成し、ツルの回転アトリビュートを登録する必要があります。
■事前設定
この後の手順で使用するため、あらかじめ以下の設定を行い、eSTメニューバーに[トランスフォームチャンネル設定(Transform Channel Control)]ウィジェットを表示します。
1. eSTメニューバーで[eST3→メニューバーウィジェット(Menu Bar Widget)→トランスフォームチャンネル設定(Transform Channel Control)]をONにし、eSTメニューバーにアイコンを表示します。
2. eSTメニューバーに表示させたアイコン(下図左端)をクリックし、一連のアイコンを表示します。
■アニメーションするノードをレンダージオから除外する
「ジオメトリを追加する」の手順でglassesノードをレンダージオに設定した場合、そのままでは一部のノードをアニメーションできません。アニメーション対象のノードをレンダージオから除外するため、あらかじめ以下の手順を実行します。
1. アウトライナーで、眼鏡ジオメトリのツル部分のグループノードである[glassesTemple_L]ノードを選択します。
2. eSTメニューバーのロックアイコンを選択し、表示されたロックトランスフォームチャンネル設定ウィジェットで[All]ボタンをクリックして全てのアトリビュートをOFFにします。続いて、[ロック / ロック解除(Lock/Unlock)]ボタンをクリックします。
3. glassesTemple_Lノードを、アウトライナーなどでglassesノードの子からoriginノードの直接の子へ移動します。
レンダージオとして登録されたglassesノード配下のノードは、ツールを使わずにレンダージオ階層から除外できます。一方、glassesノード自体をレンダージオから除外する場合は、ツールを使用してください。
アニメーション可能な要素を追加する
アニメーション可能なノードとアトリビュートをanimPlugsに登録します。
1. 眼鏡ジオメトリのツル部分のグループノードであるglassesTemple_Lノードを選択します。
2. eSTメニューバーからロックアイコンを選択し、表示されたロックトランスフォームチャンネル設定ウィジェットで[All]ボタンをクリックして全てのアトリビュートをONにします。続いて、RotateYのチェックをOFFにし、[ロック / ロック解除(Lock / Unlock)]ボタンをクリックします。
3. eSTメニューバーの左から3番目のアイコンを選択し、表示された表示トランスフォームチャンネル設定ウィジェットでRotateYのみチェックをONにし、[表示 / 非表示(Show / Hide)]ボタンをクリックします。
これで、glassesTemple_Lノードでは、RotateYのみがチャンネルボックスに表示されるようになります。
4. eSTメニューで[リグ(Rig)→AnimPlugs エディター(AnimPlugs Editor)…]を選択し、[AnimPlugs エディター]ウィンドウを開きます。
5.[作成(Create)→新規 AnimPlugs(New AnimPlugs)…]を選択し、[AnimPlugs を作成]ウィンドウを開きます。
6.[ノード命名式(Node Name Expression)]の各フィールドに、先頭から「glasses」「[animPlugs]」と入力します。最後のフィールドは空欄のままにします。
7.[AnimPlugs タイプ(AnimPlugs Type)]で[デフォルト(Default)]を選択し、[作成して閉じる(Create and Close)]ボタンをクリックしてウィンドウを閉じます。
8. アウトライナーでglassesTemple_Lノードを選択します。
9.[Ctrl]キーを押しながらAnimPlugsエディターでGlasses(glasses_animPlugs)を選択し、[編集→選択オブジェクトを追加(Add Selection to AnimPlugs)]を実行します。
これでglasses_animPlugsが作成され、glassesTemple_Lノードが登録されます。
animPlugsへ追加する際、キーアブル(Keyable)に設定されているアトリビュートがアニメーション可能な(アニメータブル)属性として登録されます。登録後も、プロパティエディターから変更できます。
アニメーション可能なノードを増やしたい場合は、この手順を繰り返してglasses_animPlugsへ追加してください。
コントローラーシェイプを追加する
アニメーション可能になったglassesTemple_Lノードを選択しやすくするため、コントローラーシェイプを追加します。
1. アウトライナーでglassesTemple_Lノードを選択します。
2. eSTメニューで[作成(Create)→コントロールハンドル(Control Handle)]を選択し、[コントロールハンドルを作成]ウィンドウを開きます。続いて、[基本(Basic)]タブを表示します。
3. [ノードタイプ]に[ロケーター(Locator)]を指定します。
4. [選択したノードを親にする(Parent to selected nodes)]チェックボックスをONにします。
5. [形状(Shape)]メニューで[点(Dot)]を選択します。
6. [カラー属性を使用する(Use color attribute)]チェックボックスをONにします。続いて、[色(Color)]ラベル右側のカラープレビューをクリックしてColor Chooserを開き、RGB値を「0.1, 0.6, 0.0」に設定します。
7. [追加の形状(Additional Shapes)]タブを表示します。
8. [プリセットカーブ(Preset Curve)]メニューで[Round]を選択します。
9. [移動(Translate)]に「0, 0, 0」、[回転(Rotate)]に「180, 90, 0」、[スケール(Scale)]に「1.0, 1.0, 1.0, 2.5」と入力します。
10. モデルビューには、glassesTemple_Lの位置にプレビュー用のガイドシェイプが表示されます。作成前に形状を確認したら、[作成して閉じる(Create and Close)]ボタンをクリックしてウィンドウを閉じます。
これで、左側のツルを回転させるコントローラーにシェイプが追加されました。
次回予告:拡張スタンダードリグの作成
以上で、eST3を使用した基本的な眼鏡リグの作成は完了です。
eSTには複数のリグ作成方法があり、今回は最も基本的な「スタンダードリグ」を作成しました。次回は、モジュラーリグの機能を利用して、同じ眼鏡リグを「拡張スタンダードリグ」として作成する方法を紹介します。
付録:用語解説
プロジェクト
eSTは、複数人での作業を前提として設計されています。そのため、作業を行う際には、常に「プロジェクト」を指定します。同じプロジェクトを指定して作業することで、eSTの各種ツールが参照する以下のような情報を共有できます。
・設定値
・データファイルの保存先
・ユーザーが定義したスクリプトファイル
リグパス
リグを一意に識別するための文字列です。次の要素を「/」で連結して構成します。
・プロジェクト
・リグタイプ
・リグ名
・バリエーション(複数指定可)
あらかじめどのようなパスがあるか、整理してプロジェクトごとに保存しておくことで、作成すべきリグを明確にし、リグ作成時の設定ミスを防げます。また、リグにリグパスを設定することで、ツールの動作を制御したり、ファイルの保存先パスとして利用したりできます。
リグ
eSTでいう「リグ」とは、eSTの規約に従って構成されたノードの集合です。eSTのリグには3種類あり、それぞれ利用できる機能や、作成時に従うべきルールが異なります。
・スタンダードリグ
最も基本的なeSTの階層構造をもつリグ
・拡張スタンダードリグ
モジュラーリグをはじめ、eSTの全ての規格を利用できるリグ
・非スタンダードリグ
自由な階層構造をeSTのリグとして認識させるためのリグ
スタンダードリグ
eSTにおける最も基本的なリグを「スタンダードリグ」と呼びます。
■フレームワーク
リグの最小構成となるノード群を「フレームワーク」と呼びます。
スタンダードリグのフレームワークは、以下のようなDAG構成になっています。
あわせて、以下のようなobjectSetが作成されます。この時点では、layoutノードとoriginノードがアニメーション可能です。
■スタンダードリグの構成要素
フレームワークには、以下の構成要素を追加できます。
・ベーススケルトン
レンダリング用オブジェクトを駆動するためのアニメーション用ノード
・レンダージオ
レンダリングに使用するジオメトリなどのオブジェクト
・ブロックジオ
アニメーションプレビューなどで使用する低解像度のジオメトリなどのオブジェクト
ユーザーは、origin ノード以下にベーススケルトンを追加してアニメーション可能なアトリビュートを定義し、レンダージオやブロックジオを動かして最終的なリグを構築していきます。これが基本的なリグの作成方法です。
■スタンダードリグの動作フロー
リグの目的は、レンダリングに使用するオブジェクトを動かすことです。
リグを使用するユーザーは、animPlugsというしくみを利用して、リグのどこにどのようなアニメーションを作成できるかを確認し、アニメーション(キーフレームやその他のコネクション等)を作成します。
スタンダードリグでは、アニメーションは以下のような流れでレンダリング用オブジェクトへ伝達されます。
アニメーションはベーススケルトンに対して作成され、ベーススケルトンによってレンダージオとブロックジオが駆動されます。
animPlugs
eSTでは、リグに含まれるノードのうち、アニメーターがアニメーションを作成できるノードとアトリビュートを管理します。これらのアトリビュートを「アニメータブル」と呼び、Mayaで使用される「キーアブル」と区別しています。
アニメータブルなアトリビュートは、animPlugsによって定義されます。animPlugsは、アニメータブルなノードとアトリビュートが集められたobjectSetです。あるアトリビュートをアニメータブルに設定するには、対応するanimPlugsへ登録する必要があります。animPlugsは、コマンドだけでなく、AnimPlugsエディターなどのツールから編集することもできます。
あらかじめアニメータブルなアトリビュートを定義しておくことで、アニメーション対象となるノードとアトリビュートを明確に制限できます。
また、これらのアトリビュートに設定されたアニメーション(値やコネクション)はファイルとしてエクスポート/インポートできます。そのため、互換性のあるリグ間でアニメーションを共有したり、アニメーション制作と並行してリグ本体を更新したりできます。
■animPlugsのタイプ
animPlugsには複数のタイプがあり、メンバーノードのどのアトリビュートがアニメータブルで、どのようなコネクションをアニメーションとして扱うか、といったことを定義します。
・default
数値型アトリビュートを対象とする最も一般的なanimPlugsです。アニメーションはanimCurveノードとして接続されます。
・static
アトリビュートに setAttr された値をアニメーションとして扱います。数値型だけでなく、データ型アトリビュートも登録できます。
・externalRig
リグ階層外にあるノードのアトリビュート値とanimCurveを扱います。また、アニメーションを作成するノードのプレフィックスをエンドユーザーが指定することもできます。
・constraint
コンストレインを追加できるようにします。コンストレインの履歴に加え、ターゲットのアニメーションが格納されます。
・deformer
リグのレンダージオにデフォーマーを作成できるようにします。デフォーマーの履歴に加え、ドライバーのアニメーションも格納されます。
・irregular
リグ内の任意のアトリビュートをアニメータブルにします。本来アニメーション対象ではないアトリビュートを、一時的または緊急的にアニメーションとして保存したい場合に使用します。
ポリゴン・ピクチュアズ
ポリゴン・ピクチュアズは、1983年7月設立の国内最大手のデジタルアニメーションスタジオです。設立以来、「誰もやっていないことを 圧倒的なクオリティで 世界に向けて発信していく」ことをミッションとし、マレーシアとインドの制作拠点を含め300名以上のクリエイターが集結。最新技術を駆使し情熱をもって先端的なエンタテインメント映像の製作に力を注いでいます。代表作は『シドニアの騎士』『トランスフォーマー』シリーズ、『スター・ウォーズ レジスタンス』『ピングー in ザ・シティ』、映画『ヒプノシスマイク -Division Rap Battle-』など。
詳細につきましては、www.ppi.co.jp をご覧ください。
公式X(旧Twitter):@POLYGONPICTURES(日本語)/@PPI_CG_anime(英語)
公式Instagram : @polygonpicturesinc
TEXT_ポリゴン・ピクチュアズ連載企画チーム
EDIT_小村仁美 / Hitomi Komura(CGWORLD)