チュートリアル > クイック プレビューの作成 |
以下の macroScript では、3ds Max のプレビュー アニメーション機能の高度に単純化されたバージョンを実装します。ビューポートのコンテンツに直接的にアクセスし、RAM プレイヤー内に自動的にロードされる AVI ファイルを作成します。
アクティブ ビューポート情報、タイプ、および変換へのアクセス
この macroScript は、 QuickPreview と呼ばれます。スクリプトを使用する場合は、[カスタマイズ...](Customize...)に移動してスクリプトを[HowTo]カテゴリからツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。
ここで、プレビューする AVI ファイルの出力パスを定義します。 getDir 関数を使用して、3ds Max の[カスタマイズ](Customize) > [パスを設定](Configure Paths)で指定された現在のプレビューのパスにアクセスします。ファイル名を円記号で区切られたパスに追加します(ディレクトリの区切り記号として、二重の円記号「¥¥」を使うこともできます)。結果のパスは、ユーザ変数の preview_name に格納されます。
次に、現在のアクティブなビューポートのサイズを検査します。 getViewSize 関数の実行結果は、ビューポートの幅と高さをピクセル数で示した値を含む Point2 の値です。この値を、別のユーザ変数の view_size に格納します。
アクティブ ビューポート情報、タイプ、および変換へのアクセス
この 2 つのユーザ変数を使用して、プレビューを格納するビットマップを定義することができます。ビットマップ コンストラクタの幅と高さのパラメータとしてビューポート サイズの x および y コンポーネントを指定し、ファイル名を既に定義したプレビュー パスに設定します。
for ループで、現在のアニメーション セグメント内のすべてのフレームを巡回します。変数 t には各フレームのフレーム番号が含まれます。 この値は、アニメーション範囲の開始値で始まり、終了値で終わります。
t 変数を使用して、タイム スライダをフレーム間で動かします。
各フレームで、ビューポートのビットマップ (デバイスに依存しないビットマップ、DIB) を一時変数内に捕捉します。
次に、dib 変数の内容 (ビューポートの内容を示すビットマップ) を、ここで作成したプレビュー ビットマップにコピーします。これで、新しいフレームが AVI プレビュー アニメーションに追加されます。
次のフレームで同じ操作を繰り返す前に、現在のビットマップの内容をディスクに保存します。
すべてのフレームが格納されたら、アニメーション ファイルを閉じ、手動でガベージ コレクションを実行して、ビットマップのコピー中に使用されたメモリを確実に解放することができます。
3ds Max 5 では、メモリを解放するために gc light:true を使用できます。
最後に、RAM プレイヤーを呼び出して、最初のパラメータとしてプレビュー アニメーションのパスを、2 番目のパラメータとして空の文字列を指定します。この 2 つのパラメータで、ロードする 2 つのファイルを RAM プレイヤーに指示します。空の文字列は存在していないアニメーションのためのプレース ホルダであり、ここではただ 1 つのファイルをプレビューします。
スクリプトを評価します。スクリプトを使用する場合は、[カスタマイズ...](Customize...)を使用して、スクリプトを[HowTo]カテゴリからツールバー、メニュー、またはクアッド メニューにドラッグするか、キーボード ショートカットを割り当てることができます。
プレビューするビューポートを選択し、スクリプトを起動します。 結果がすばやく表示されるように、ドラッグしてビューポートを小さくすることができます。アニメーションが 1 回再生され、次に RAM プレイヤーによってプレビュー アニメーションが開かれます。