MAXScript入門|3ds Maxの「繰り返し作業」を自動化する最初の一歩

3dsMax

3ds Maxで作業していると、「同じ操作を何十回も繰り返している」場面が必ず出てきます。オブジェクトの一括リネーム、原点の調整、同じ設定の割り当て——こうした単純作業こそ、MAXScriptで自動化する価値が一番高いところです。この記事では、プログラミング未経験の方でも今日から試せる、MAXScriptの入り口を紹介します。

なぜMAXScriptなのか

MAXScriptは3ds Maxに標準で組み込まれているスクリプト言語です。追加のインストールは不要で、Maxさえあればすぐに書き始められます。アニメ背景モデルのように「大量の似たオブジェクトを扱う」制作では、手作業の時間をそのまま短縮できるため、費用対効果がとても高いのが特徴です。

まずは メインメニュー → スクリプト作成 → 新規スクリプト でエディタを開き、書いたコードを選択して Ctrl+E で実行、という流れを覚えておけば十分です。

最初の一歩:選択オブジェクトを操作する

MAXScriptでは、いま選択しているオブジェクトの集まりを selection で扱えます。たとえば選択中のオブジェクトを順番に処理するには、次のように書きます。

-- 選択している全オブジェクトの名前をリスナーに表示する
for obj in selection do
    print obj.name

この for obj in selection do ... が、繰り返し作業を自動化する基本の型です。あとは「何をするか」の部分を書き換えていくだけです。

実用例1:連番で一括リネームする

選択したオブジェクトに Prop_001, Prop_002… と連番の名前を付ける例です。手作業だと地味に時間のかかる作業が、一瞬で終わります。

-- 選択オブジェクトを Prop_001 から連番でリネーム
for i = 1 to selection.count do
    selection[i].name = ("Prop_" + (formattedPrint i format:"03d"))

実用例2:原点をまとめて床に合わせる

配置したモデルの高さがバラバラなとき、選択したオブジェクトをまとめて床(Z=0)に接地させる例です。

-- 選択オブジェクトの一番下をZ=0に合わせる
for obj in selection do
(
    local bottom = obj.min.z
    obj.pos.z -= bottom
)

数行のスクリプトですが、対象が10個でも100個でも同じ手間で処理できるのがスクリプトの強みです。

どうやって覚えていくか

いきなり文法を覚える必要はありません。おすすめは マクロレコーダー の活用です。スクリプト作成 → マクロレコーダー をオンにして普段の操作をすると、その操作に対応するMAXScriptが自動で書き出されます。それを見ながら「この操作はこう書くのか」と逆引きで覚えていくのが、一番の近道です。

また、リスナー(下部のピンク&白の枠)にエラーや結果が表示されるので、少しずつ実行しながら確認していくと安全です。

管理人のひとこと

MAXScriptは「プログラミングを覚える」というより「面倒な作業を減らす道具」くらいの感覚で始めるのがちょうどいいと思います。最初はマクロレコーダーの出力をコピペするだけでも十分。慣れてくると、自分専用のツールがどんどん増えていって作業が本当に楽になります。

コメント

タイトルとURLをコピーしました