リファレンス / 3ds Max / MaxScript チートシート

生成・複製

  • 3ds Max
  • MaxScript
  • チートシート
MaxScript チートシート の章一覧

オブジェクトを新しく作る・複製する・消す操作です。複製は copy / instance / reference の3種 を使い分けます。

プリミティブを作る

b  = box length:10 width:10 height:10     -- ボックス
s  = sphere radius:5 pos:[10,0,0]         -- 球(位置も同時指定)
c  = cylinder radius:5 height:20          -- 円柱
pl = plane length:50 width:50             -- 平面
t  = teapot radius:8                      -- ティーポット
  • 作成と同時に pos: name: wirecolor: などの プロパティをまとめて指定 できます。
  • 戻り値が作ったノードなので、変数で受けて続けて操作できます。

作れる主なクラスの例

sphere()        cone()          torus()
geoSphere()     pyramid()       tube()
Point()         dummy()         -- ヘルパー
omniLight()     targetSpot()    freeCamera()   -- ライト / カメラ
line()          circle()        rectangle()    text()  -- シェイプ
  • 引数なし クラス名() で既定値のオブジェクトを作れます。指定できるプロパティは showProperties で確認できます(→「デバッグ・調査」章)。

複製する(copy / instance / reference)

c = copy $Box001        -- 完全に独立したコピー
c = instance $Box001    -- 双方向インスタンス(片方を編集すると両方変わる)
c = reference $Box001   -- 片方向リファレンス(元→複製の向きだけ反映)
関数 関係 使いどころ
copy 独立 あとで別々に編集する
instance 双方向 同じ形を量産し一括編集したい
reference 片方向 元を編集すると複製にも反映(逆は独立)
  • ⚠️ 複製は 元と同じ位置に重なって 生成されます。直後に pos をずらすのが定番です。

複数まとめて複製する

-- 一列に5個コピー
for i in 1 to 5 do (c = copy $Box001; c.pos = [i*20, 0, 0])

-- 選択全体を複製してオフセット(newNodes に結果が入る)
maxOps.cloneNodes selection cloneType:#copy newNodes:&nn
for o in nn do o.pos += [0,50,0]
  • maxOps.cloneNodes複数ノードを階層ごと 複製でき、結果を newNodes: の参照渡し変数で受け取れます。

削除する

delete $Box001       -- 1つ削除
delete selection     -- 選択を削除
delete objects       -- 全削除(注意)
  • ⚠️ ループ中の削除は取りこぼしに注意。for o in (getCurrentSelection()) do delete o のように コピーを取ってから 回します(→「選択・取得」章)。

落とし穴まとめ

  • 複製は元と同位置に重なる。生成直後に pos をずらす。
  • instance は双方向、reference は片方向。編集の波及方向を間違えない。
  • maxOps.cloneNodes の結果は newNodes:&変数 の参照渡しで受け取る。
  • ループ削除はコピーを取ってから回す。

関連

← MaxScript チートシート へ