3ds Max を初めて起動すると、MAXScript によってスタートアップ スクリプト ファイルが検索され、自動的にロードされ、実行されます。この機能は、常に使用する関数ライブラリを事前にロードしておく場合、カスタム UI 設定を行う場合、スクリプト プラグインを定義する場合、またはスクリプト ユーティリティ ロールアウトをロードする場合などに便利です。
3ds Max が起動すると、常に以下で説明する手順通りにスクリプトがロードされます。ソフトウェアの一部はまだアップできておらず、スタートアップ プロセスの別の段階にあります。スタートアップ プロセスの手順とその理由を理解するとコードの作成に役立ち、すべての関数とUI の自動ロードが正常に作動するようにできるようになります。
3ds Max は stdplugs¥stdscripts にある初期状態のスクリプトの評価を行います。これらのスクリプトでは、3ds Max ソフトウェアのベースとなるスクリプト化された要素に必要な関数を定義しています。
独自の MacroScript での使用のためにいくつかの関数やグローバル変数を定義する必要がある場合は、stdplugs¥stdscripts の .ms ファイルに格納してください。これにより関数やグローバル変数を最初に定義できます。
次に、3ds Max は、[カスタマイズ...](Customize...) > [パスを設定...](Configure Paths...) > [プラグイン](Plug-Ins)で定義されたディレクトリおよびそのサブディレクトリ内のスクリプト ファイルをロードします。通常のプラグインのロード方法とは異なる点に注意してください。この方法は通常のプラグインをロードする方法と異なります。プラグインは指定したパスからのみロードされ、サブディレクトリは検索しません。その他のスクリプト、 特に MacroScripts で使用する関数、メソッド、構造体を定義できます。
この時点では、3ds Max シーンは作成されず、ビューポートも作成されていません。これらのスクリプトでは、シーン オブジェクトは作成できず、また UI 関連の作業は何もできません。もちろん、これらの操作を実行する関数を定義できますが、この時点ではこれらの関数の呼び出しはできません。
このとき startup.ms という名前のスクリプト ファイルが無視されます。こうしておくと、スクリプト プラグイン スクリプトを プラグイン フォルダに配置して自動的にロードされるようにすることができます。これらのスクリプトは DLL プラグインのように管理でき、管理しやすいようにスタートアップ スクリプトを独自のディレクトリ内でグループ別に構成することができます。ネストされたディレクトリが検索されないようにするには、「(old-versions)」のように、名前をカッコ()で囲みます。こうすると、ディレクトリ ベースのグループに対して、スクリプトを有効または無効に設定できます。
次に、ui¥macroscripts にある MacroScript .mcr ファイルが評価されます。これらのファイルは UI に表示できるアクション項目を定義します。この時点では、まだ UI は作成されておらず、MacroScripts はその関連ボタンを埋め込む際に必要です。
最後に、startup フォルダにある startup.ms および任意のスクリプトが評価されます。この時点で、シーン、ビューポート、および UI が表示されます。ここでは、必要に応じて操作できます。
3ds Max 9 以降では、3ds Max システム スタートアップ スクリプト ディレクトリにあるスタートアップ スタートアップ スクリプトが最初に実行され、次に ユーザ スタートアップ スクリプト ディレクトリ内のスタートアップ スクリプトが実行されます。この動作により、Max システムのスタートアップ スクリプト ディレクトリとは別にユーザのスタートアップ スクリプト ディレクトリを設定することができます。
MAXScript では、まず以下のディレクトリで startup.ms ファイルが、以下の順序で検索されます。
ユーザ スクリプト ディレクトリ
ユーザ スタートアップ スクリプト ディレクトリ
Max システム スクリプト ディレクトリ
Max システム スタートアップ スクリプト ディレクトリ
3ds Max 実行可能メイン ディレクトリ
Windows NT 32 ビット システム ディレクトリ(system32)
Windows 16 ビット システム ディレクトリ(system)
Windows ディレクトリ
PATH 環境変数にリストされているディレクトリ
MAXScript は最初に startup.ms が見つかったところで検索を停止します。
スタートアップ スクリプト ファイルの自動ロードを非アクティブにするには、[基本設定](Preferences)ダイアログ ボックスの [MAXScript]ページにある [MAXScript オート スタート](Auto Start MAXScript)オプションをオフにします。詳細については、主要製品オンライン ヘルプの「MAXScript 基本設定」を参照してください。
次の 2 つの場合について考えてみましょう。
3ds Max をコマンド ラインから起動し、最終的にはコマンド ライン スクリプトを使用する
3dsmax.exe somefile.max 3dsmax.exe somefile.max -U MAXScript somescript.ms |
.MAX ファイルをデスクトップの 3ds Max ショートカットにドラッグする
いずれの場合も、3ds Max は上記の説明どおりに開始され、ファイルをロードします。
3ds Max 2009 以前では、スクリプト フォルダおよびコールバックは以下の順番で実行されていました。
フォルダ/コールバックの処理 |
コメント |
stdplugs¥stdscripts¥ |
3ds Max シーンおよび UI はまだ作成されていません。 |
プラグイン パス |
3ds Max シーンおよび UI はまだ作成されていません。 |
MacroScript |
UI はまだ作成されていません。 |
#filePreOpenProcess |
シーンが作成されます。 |
#filePreOpen |
起動スクリプトはまだロードされていません。 |
¥Startup |
ファイル オブジェクトにはまだアクセスできません。 |
.MAX ファイル |
コマンド ライン/ドロップされたファイルをロード |
#filePostOpen |
シーン オブジェクトにはこの後アクセスできます。 |
#filePostOpenProcess |
ファイルのロードが完了 |
-U MAXScript スクリプト |
コマンド ライン スクリプトを実行 (存在する場合) |
この結果、Startup フォルダからロードされたスクリプトは #filePreOpen イベント コールバック で使用することはできません。
3ds Max 2010 では、ロード順序が次のように変更されました。
フォルダ/コールバックの処理 |
コメント |
stdplugs¥stdscripts¥ |
3ds Max シーンおよび UI はまだ作成されていません。 |
プラグイン パス |
3ds Max シーンおよび UI はまだ作成されていません。 |
MacroScript |
UI はまだ作成されていません。 |
¥Startup |
UI が作成されます。コールバックの前に起動スクリプトがロードされます。 |
#filePreOpenProcess |
シーンが作成されます。 |
#filePreOpen |
ファイル オブジェクトにはまだアクセスできません。 |
.MAX ファイル |
コマンド ライン/ドロップされたファイルをロード |
#filePostOpen |
シーン オブジェクトにはこの後アクセスできます。 |
#filePostOpenProcess |
ファイルのロードが完了 |
コマンド ライン -U MAXScript スクリプト |
コマンド ライン スクリプトを実行 (存在する場合) |