MAXScript マクロ レコーダは、ユーザが実行した多くのアクションをキャプチャし、それらのアクションに対応する MAXScript コマンドを生成します。
マクロ レコーダの出力は[スクリプト リスナー](Scripting Listener)ウィンドウの[マクロ レコーダ](Macro Recorder)ペインにピンクで表示されます。
複数のフィルタ オプションがあり、記録するユーザ アクションの種類が何か、生成される MAX スクリプト コマンドに含めるオブジェクト参照が明示的なものか選択に関連したものかどうか、生成される MAXScript コマンドに含める変換や座標が明示的か相対的かなどを制御できます。
これらのオプションは、[リスナー] (Listener)ウィンドウの[マクロ レコーダ] (MacroRecorder)メニューを使用して設定します。
オプションの既定設定は、3ds Max ユーザ基本設定の「MAXScript 基本設定」に記載されているように、3ds Max の[基本設定] (Preferences)ダイアログ ボックスの[MAXScript]ページで指定します。
これらの設定は 3dsmax.ini ファイルの[MAXScript]セクションを編集して変更または設定することもできます。
3ds Max の多くの領域でマクロ レコーダ出力が生成されますが、マクロ レコーダ出力が生成されない領域も多くあります。
通常、3ds Max のメニュー バー、ツールバー、ステータス バー、[作成] (Create)パネル、[修正] (Modify)パネルのほとんどのボタンは、マクロ レコーダ出力を生成します。
ボタンで 2 番目のダイアログ ボックスを呼び出した場合、2 番目のダイアログ ボックスで設定を変更したりアクションを実行したりしても、通常マクロ レコーダ出力は生成されません。
[作成] (Create)および[修正] (Modify)パネルでマクロ レコーダ出力が生成されるのは、オブジェクトまたはモディファイヤを MAXScript で作成できる場合です。
オブジェクトまたはモディファイヤを実装するプラグインがマクロ レコーダをサポートするように更新されていない場合もあり、このような場合には、オブジェクトまたはモディファイヤはマクロ レコーダ出力を生成しません。
MAXScript では、テキストをツールバーへトラッグ アンド ドロップして[マクロ スクリプト](Macro Script)ボタンを作成することができます。
[リスナー] (Listener)ウィンドウ パネルや[エディタ] (Editor)ウィンドウなどのテキスト ウィンドウからテキストを選択して、表示されているツールバー上にドラッグできます。
テキストをドロップする準備ができると、カーソルは + 記号付きの矢印に変わります。
テキストをドロップすると、[マクロ スクリプト](Macro Script)ボタンがツールバーに追加され、ドロップされたテキストはマクロ スクリプトの本体になります。
一般的な例として、マクロレコーダ ペインからツールバーにテキストをドラッグして、記録した一連のイベントを実行するボタンを作成することが挙げられます。詳細は、「MacroScript の定義」を参照してください。
次のマクロ レコーダ メニュー コマンドは[リスナー] (Listener)で使用できます。
_[使用可能] (Enable)_を選択すると、マクロ レコーダにより MAXScript コマンドが生成されます。
オブジェクトが 1 つだけ選択された場合に、生成するコマンドに明示的なシーン オブジェクト名と選択セット トークンのどちらを使用するかを指定します。
複数のオブジェクトが選択された場合は、常に選択セット トークンが使用されます。
例:
_[明示的シーン オブジェクト名](Explicit Scene Object Names)_を選択すると、通常、次のようなコマンドが生成されます。
move $Sphere03 [55.6739,23.5,0]
_[選択に関連するシーン オブジェクト名](Selection-Relative Scene Object Names)_を選択すると、通常、次のようなコマンドが生成されます。
move $ [0,-47.8044,0]
[選択に関連するシーン オブジェクト名](Selection-Relative Scene Object Names)を使用すると、記録したスクリプトを異なる選択に適用して、ある程度一般化することができます。
現在のサブオブジェクト選択にかかわらず、スクリプトで操作するサブオブジェクトを常に同じものにする場合は、[明示的サブオブジェクト セット](Explicit Scene Object Names)を使用します。
パフォーマンスに関する注:
3ds Max 2009 より前のリリースでは、マクロ レコーダーを有効にして多数のノードを選択すると処理が非常に低速になっていました。この低速化は 3ds Max 2009 以降で解決されました。10000 個のオブジェクトの選択にかかる時間は、マクロ レコーダーを使用した場合も、使用していない場合も、実質的に同じになりました。
生成されたコマンド内で絶対変換コマンドと相対変換コマンドのどちらを使用するかを指定します。
例:
_[絶対変換の割り当て](Absolute Transform Assignments)_を選択すると、ビューポート内で選択を移動するときに通常、次のようなコマンドが生成されます。
$.position = [55.6739,23.5,0]
_[相対変換の操作](Relative Transform Operations)_を選択すると、通常、次のようなコマンドが生成されます。
move $ [0,-47.8044,0]
[絶対変換の割り当て](Absolute Transform Assignments)を選択すると、単一のオブジェクトを変換する場合のみ絶対変換の割り当てが出力されます。
複数のオブジェクトが選択されている場合、相対変換操作が出力されます。
生成されたコマンドに明示的なサブオブジェクト識別子とサブオブジェクト選択セット プロパティのどちらを使用するかを指定します。
例:
_[明示的サブオブジェクト セット](Explicit Sub-object Sets)_を選択すると、通常、次のようなコマンドが生成されます。
move $Sphere02.verts[#{20..32, 51..65}] [40.0986,10.3648,0]
_[選択に関連するサブオブジェクト セット](Selection-Relative Sub-object Sets)_を選択すると、通常、次のようなコマンドが生成されます。
move $Sphere02.selectedVerts [40.0986,10.3648,0]
[選択に関連するサブオブジェクト セット](Selection-Relative Sub-object Sets)を選択すると、記録したスクリプトを異なる選択に適用して、ある程度一般化することができます。現在のサブオブジェクト選択にかかわらず、スクリプトで操作するサブオブジェクトを常に同じものにする場合は、[明示的サブオブジェクト セット](Explicit Sub-object Sets)を使用します。
[コマンド パネルの切り替えを表示](Command Panel Switching)を選択すると、マクロ レコーダによりコマンド パネルを切り替えるための MAXScript コマンドが生成されます。
ほとんどのスクリプトはユーザ インタフェース モードに依存せずに動作するため、コマンド パネルの切り替えを記録する必要はありません。
[ツール選択を表示](Tool Selections)を選択すると、マクロ レコーダにより_[3ds Max]_ツールバーでツールを選択するための MAXScript コマンドが生成されます。
ほとんどのスクリプトはツール選択に依存せずに動作するため、ツールの選択を記録する必要はありません。
[メニュー項目の選択を表示](Menu Item Selections)を選択すると、マクロ レコーダにより_[3ds Max]_メニュー バーのメニュー項目を選択するための MAXScript コマンドが生成されます。
スクリプト ロールアウトでパラメータ ブロックを実行して値がイベント ハンドラから切り替わると、マクロ レコーダは自動的に無効になります。
3ds Max 2013 では、スクリプト ロールアウトのイベント ハンドラでマクロ レコーダの出力を明示的に再度有効にするための専用の MAXScript コンテキストが導入されています。