生成・複製
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:&変数の参照渡しで受け取る。- ループ削除はコピーを取ってから回す。
関連
- 作ったあとに動かす: 「変形・配置」章
- 親子・グループにまとめる: 「階層・グループ」章