Mayaでアニメーションを作る上で便利なスクリプト(ツール)といえば、「Aaron KoresselのMELスクリプト」をとりあげないわけにはいきません。
「Aaron KoresselのMELスクリプト」は、Pixarでアニメーターをされている方が作ったアニメーター用の33個のMELスクリプト群です。
しかし、2008年から更新されていないサイトなので、一抹の不安はありますが、昔からアニメーター御用達スクリプトとして有名です。無料で使えるのでアニメーション用のツール(スクリプト)を使ったことがない人は、まずはこの「Aaron KoresselのMELスクリプト」を使ってみましょう。
「Aaron KoresselのMELスクリプト」と「animBot」
「Aaron KoresselのMELスクリプト」はとても便利なスクリプト(ツール)です。
しかし、「animBot」をすでに使っている人には必要ありません。
「animBot」はサブスクの有料ツールなので、初心者のうちはなかなか課金に踏み切れないでしょう(課金しても使いこなせるのか等)。まずは「Aaron KoresselのMELスクリプト」で、アニメーション作業にはどんなスクリプト(ツール)をどのように使えば良いのかを学びましょう。

「Aaron KoresselのMELスクリプト」と「レイヤードアプローチ」
私が以前に受けたアニメーションマスタークラスで、Michal Makarewiczさんに「レイヤードアプローチ」について教わりました。
その「レイヤードアプローチ」で使う3つのスクリプトが「Aaron KoresselのMELスクリプト」の中にあります。
具体的には「ackNegateKeys」と「ackPushPull」と「ackSpreadSqueezeTiming」の3つです。
「レイヤードアプローチ」をやりたいひとは、この3つを使ってください。


MELスクリプトの使い方
Windowsの場合は上のscriptsフォルダの中にダウンロードしたMELを入れます。
その後、Mayaを立ち上げて、MELのコマンドラインから呼び出します(例:ackDeleteRedundant; と入力してテンキーのEnterキーを押す。または「Ctrl + Enter」を押してください)。
これでスクリプトが実行されます。
33個のMELスクリプトの紹介
33個もある「Aaron KoresselのMELスクリプト」を紹介します。
最初に言っておくことは33個全部が必要なわけではありません。
レイヤードアプローチに必須なもの、Steppedブロッキング用のもの、そして、私が個人的におすすめするのものなどピックアップしてあるので、まずはピックアップされているものから導入してみましょう。
スクリプトを入手する方法は、Aaron Koresselさんのサイトのスクリプトをダウンロードするページからダウンロードしたいスクリプトの名前のリンクを右クリックして「名前をつけてリンク先を保存…」で入手してください。
ちょっとわかりづらい部分がありますが、2008年から更新されていないようなので仕方ありません(サイトを残してくれているだけで感謝です)。
それぞれのスクリプトの使い方は「(show demo)」という所を開くとでてくるアニメーションをみればわかるようになっています。
【おすすめ】ackDeleteRedundant 1.1

同じ値をもつキーに挟まれているキー(消してもアニメーションが変わらないキー)を削除します。
単純な機能ですが、手作業でやるとなると大変です。ミスをして消してはいけないキーまで消してしまうおそれもあります。
Steppedでのブロッキングが終わってスプライン化する時、また、ポリッシュする際に無駄なキーをたくさん消すことができます。
使用するためのMELコマンド
//ackDeleteReduntantを実行
ackDeleteRedundant;ackConvergeBuffer 1.0

Bufferしたカーブに近づけたり、遠ざけたり、スナップさせたりします。
//toward(カーブに近づける)で使う
ackConvergeBuffer "toward";
//away(カーブから遠ざける)で使う
ackConvergeBuffer "away";
//snap(カーブにスナップさせる)で使う
ackConvergeBuffer "snap";ackSnapEndKeyValues 1.0

最後のキーの値を最初のキーの値にスナップします(leftモード時)。
または、(その逆で)最初のキーの値を最後のキーの値にスナップします(rightモード時)。
ackSetupで「left」と「right」を切り替えることが出来ます。
//leftモードに切り替える
ackSetup "left";
//rightモードに切り替える
ackSetup "right";
//ackSnapEndKeyValuesを実行。デフォルトはleftモード
ackSnapEndKeyValues;
【レイヤードアプローチ】ackNegateKeys 1.3

選択したキーをX軸上で反転させます。
レイヤードアプローチの大家Michal Makarewiczさんによると、レイヤードアプローチで使用するスクリプトの3つのうちの1つです。
//ackNegateKeysを実行
ackNegateKeys;
ackSnapToTime 1.1

選択されているキーを現在のフレームに移動させます。
デフォルトでは最初のキーが現在のフレームに移動します(Leftモード)が、「ackSetup」でRightモードにすると最後のキーが現在のフレームに移動するようになります。
ackSetupで「left」と「right」を切り替えることが出来ます。
//ackSnapToTimeを実行
ackSnapToTime;ackSnapAnimation 1.1

現在選択されているキーを、その値に隣接するキーに合わせてオフセットします。
//ackSnapEndKeyValuesを実行。デフォルトはleftモード
ackSnapAnimation;ackMoveKeys 1.1

キーを移動させる。
「convergeLeft」と「convergeRight」はキーの値を隣接するキーに収束させる。
詳細は「ackSetup」で設定。
Fixed Move Factor:「up」と「down」で使用。デフォルトは「0.05」。
Scale Factor:「convengeLeft」と「convergeRight」で使用。デフォルトは「0.9」。
//左に移動
ackMoveKeys "left";
//右に移動
ackMoveKeys "right";
//上に移動
ackMoveKeys "up";
//下に移動
ackMoveKeys "down";
//convergeLeft
ackMoveKeys "convergeLeft";
//convergeRight
ackMoveKeys "convergeright";【レイヤードアプローチ】ackPushPull 1.1

レイヤードアプローチの大家Michal Makarewiczさんによると、レイヤードアプローチで使用するスクリプトの3つのうちの1つです。
| ackSetupによる設定 | |
|---|---|
| Leftモード。Adjust Left(Multi Pivot) | カーブごとに隣接する左のキーをピボットポイントとして使用。複数のカーブが選択されている場合は、複数のピボットポイントが存在し、各カーブは独立して左隣接のキーを参照する。 |
| Rightモード。Adjust Right(Multi Pivot) | カーブごとに隣接する右のキーをピボットポイントとして使用。複数のカーブが選択されている場合は、複数のピボットポイントが存在し、各カーブは独立して右隣接のキーを参照する。 |
| Lastモード。Last Selected Key(Single Pivot) | 最後に選択されたキーを単一のピボットポイントとして使用する。すべてのカーブはこの単一のキーをピボットにする。 |
| Scale Factor | |
//leftモードに切り替える
ackSetup "left";
//rightモードに切り替える
ackSetup "right";
//lastモードに切り替える
ackSetup "last";
//Pushモードで実行
ackPushPull "Push;
//Pullモードで実行
ackPushPull "Pull";
【設定用】ackSetup 1.0

「ackPushPull」「ackSnapAnimation」などを使用する際の設定をします。
| ackSetup で設定するスクリプト | |
|---|---|
| Pivot Form: | ackNegateKeys、ackPushPull、ackSnapAnimation(最後に選択されたものは無視される)、ackSnapToTime(最後に選択されたものは無視される)、ackSnapEndKeyValues(最後に選択されたものは無視される)で使用。 |
| Fixed Move Factor: | ackMoveKeys(「up」と「down」)で使用。 |
| Scale Factor: | ackMoveKeys(「convergeLeft」と「convergeRight」)で使用。 |
// ackSetup ウインドウを起動
ackSetup "setup";
//leftモードに切り替える
ackSetup "left";
//rightモードに切り替える
ackSetup "right";
//lastモードに切り替える
ackSetup "last";【レイヤードアプローチ】ackSpreadSqueezeTiming 1.0

時間内のキーのスケーリングと同様の効果ですが、フレーム全体で均等なスケーリングとキーが保証される点が異なります。
レイヤードアプローチの大家Michal Makarewiczさんによると、レイヤードアプローチで使用するスクリプトの3つのうちの1つです。
//spreadとして実行
ackSpreadSqueezeTiming "spread";
//squeezeとして実行
ackSpreadSqueezeTiming "squeeze";
【おすすめ】ackTimingFramework 1.0

キーが打たれている場合は、選択したすべてのカーブにキーを挿入します。
「ackDeleteRedundant 」の逆です。
ブロッキングの時にすべてのコントローラーにキーを打っていなかった場合はこれを使用します。
これを使えばブロッキングのあとにタイミングを修正することができるようになります。
//ackTimingFrameworkを実行
ackTimingFramework;ackToggleHighlight

選択したオブジェクトのワイヤーフレームのハイライトのONとOFFを切り替えます。
//ackToggleHighlightを実行
ackToggleHighlight;ackToggleCams 1.1
ショット用のカメラとパースペクティブのカメラを切り替えることができます。
//ackToggleCamを実行
ackToggleCams;
//ackToggleCamsの設定
ackToggleCams_setup;【おすすめ】ackGotoTime
表示されたWindowに移動したいフレームを入力してEnterキーを押すと、そのフレームに移動します。
素早く指定のフレームへ飛ぶことが出来ます。
//ackGotoTimeを実行
ackGotoTime;ackToggleTranslateMode 1.1

Translateモードのマニュピレーターを「local」と「world」に交互に切り替えます。
//ackToggleTranslateModeを実行
ackToggleTranslateMode;ackToggleModel 1.1

NURBSサーフェス、ポリゴン、サブディビジョンサーフェスの表示、非表示を切り替えます。
//ackToggleModelを実行
ackToggleModel;ackSwapKeys 1.0

2つのキーを入れ替えます。
//ackSwapKeysを実行
ackSwapKeys;ackDeadPixelFinder BETA 1
Steppedブロッキングをしたあとに、Splineにし忘れたキーを探す時などに使用します。
「BETA 1」とのことですが、2008年から更新されていないことを考えると正式版がでる見込みはなさそうです。
ackShuttleControl 1.2
機能以前にこのスクリプトには未修正のバグがあるそうです。
よって、使わなくてもよろしいかと。
ackToggleSound 1.1

タイムラインに読み込んだサウンドファイルを再生するかミュートにするか切り替えます。
//ackToggleSoundを実行
ackToggleSound;ackCycleTangents

タンジェントを「Flat」と「Spline」と「Linear」に切り替えます。
//ackCycleTnagentsを実行
ackCycleTangents;ackDeleteKey
キーボードの削除キーと同じです。
よって、使わなくて良いでしょう。
//ackDeleteKeyを実行
ackDeleteKey;ackNewGraphEditor
新しいグラフエディターを表示します。
//ackNewGraphEditorを実行
ackNewGraphEditor;ackPlayblastSelectedKeys
最初と最後に選択したキーを含む時間範囲をプレイブラストします。
//ackPlayblastSelectedKeysを実行
ackPlayblastSelectedKeys;【おすすめ】ackSliceCurves

カーブの形を崩さないでキーを追加(Insert Key)します。
標準機能のInsert Keyでも良い気はしますが、こっちのほうが楽です(マウスを使わずに挿入できます)。
//ackSliceCurvesを実行
ackSliceCurves;【おすすめ】ackSnapKeyValues

選択したキーのすべての値を最後に選択したキーの値にスナップします。
//ackSnapKeyValuesを実行
ackSnapKeyValues;【Steppedブロッキング】ackSteppedTween

「Stepped Tangent」でキーを打ちます。
「Stepped」でブロッキングをしているときは重宝します。
しかしながら、「Stepped」でブロッキングをしない人には必要ないです。
//ackSteppedTweenを実行
ackSteppedTween;ackToggleImagePlane
シーン内のすべてのイメージプレーンの表示と非表示を切り替えます。
//ackToggleImagePlaneを実行
ackToggleImagePlane;ackToggleKeyColor
キーの色が変わります。
//ackToggleKeyColorを実行
ackToggleKeyColor;ackToggleNURBSCurves

NURBSカーブ(コントローラー)の表示のONとOFFを切り替えます。
アニメーションをチェックするときにはコントローラーを消したほうが良いです。
ただし、そのためにこのスクリプトを使うかどうかはその人次第です。
//ackToggleNURBSCurvesを実行
ackToggleNURBSCurves;【おすすめ】ackToggleRotateMode

Rotationモードのマニュピレーターを「local」と「gimblal」に交互に切り替えます。
//ackToggleRotateModeを実行
ackToggleRotateMode;ackToggleTangentType

タンジェントを「broken + free」と「unified + free」に切り替えます。
私はグラフエディターについているアイコンを使うので必要ないかな…。
//ackToggleTangentTypeを実行
ackToggleTangentType;【おすすめ】ackZeroOutKeys

選択したキーの値を「0」にします。
値を「0」に戻したいときは多々あります。
非常に単純なスクリプトですが、使用頻度が高く、作業効率が上がります。
//ackZeroOutKeysを実行
ackZeroOutKeys;まとめ
これで「Aaron KoresselのMELスクリプト」の解説をおわります。
最後に1つだけ懸念点をあげておきます。
これは私の環境ではこの「Aaron KoresselのMELスクリプト」を使用すると、Mayaが落ちることがよくあります。私の環境だけの問題ならばよいのですが(私は「animBot」を使っているため)。私の使い方(documentのmayaのバージョンの数字の中のscriptsフォルダーの中にMELを入れて、そこから呼び出しています)が悪いのか…。
したがって、トラブルを避けたい方は有料ですが「animBot」の使用を強くおすすめします。

Mayaで使える便利なツール(スクリプト、プラグイン)をまとめた記事はこちらです。



コメント
コメント一覧 (2件)
いつも拝見しております。大変勉強になる記事をありがとうございます。
こちらの記事を拝見し、スクリプトのダウンロードを試みたのですが、「安全にダウンロードすることができません」という警告が表示されました。
以前からこのような警告は表示されていたのでしょうか?
警告を無視してダウンロードしても問題ないか、教えていただけますと幸いです。
お忙しいところ恐れ入りますが、どうぞよろしくお願いいたします。
コメントありがとうございます。
警告の件は、私のほうでは確認できませんでした。
こちらのスクリプトは昔から(10年以上前)から、有名で様々な人がダウンロードしているサイトなので、決して怪しいサイトではありません。
しかしながら、私自信は「animBot」を導入して以来使っていないので最近の状況はわかりません。
しかも、長期間このサイトがアップデートもされていないようなので、危険なものが含まれている可能性も完全には否定できません。
どうしてもセキュリティー面に不安があるようでしたら、有料の「animBot」のご使用をご検討ください。