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