[3dsmax]スクリプト

3dsmax[maxscript]構文めも

個人用のmaxscriptメモ

try()catch()
tryの条件を満たしたとき、catchの内容を実行
主にエラー回避で使用する
try(destroyDialog hoge)catch(MessageBox “ほげ”)–hogeウィンドウを消したときメッセージが出る


on()do()
イベントハンドラ
何かをクリックしたときdoの中身を実行するとか


複製コマンド
copy x
instance x
reference x
それぞれxをコピー、インスタンス、参照で複製する


for文
for i=1 to 5 do(print i)–ノーマル
for i=1 to 10 by 2 do(print i)–by2で1つ飛ばし by3なら2つ飛ばし
for i=1 to 10 where (i != 5) do(print i)–whereの内容の時だけループを飛ばす
for i in a=#(1,3,10) do(print i)–配列の内容がiに入る 配列以外でも様々な対応が可能
for i in selection do(print i)–例
for i = 1 to 4 collect i–#(1,2,3,4)を返す
if i == 10 then exit–do()の中でこの文があると、i=10の時ループを抜ける


while文
while a<=10 do(a+=1)–aが10以下の時do()をループする
do a<=10 while(a+=1)–aが10以下の時while()をループする
無限ループになる可能性が高いので注意
無限ループになった場合はescキーで抜けられる


if文
if a==1 then()–ノーマル
if a==1 then()else()–もしa=1ならthen()の内容、そうでなければelseの内容
if a==1 do()–thenと同じだが、elseが付けられない
if a==1 and b==1then()–a=1かつb=1ならば
if a==1 or b==1then()–a=1またはb=1ならば
if not a==1 or not b==1then()–a=1でない、またはb=1でないならば


case of
様々なケース毎に指示を出せる
case a of()のaは省略可能

b = Box()
copy_type = 2 --copy
new_obj = case copy_type of
(
2: copy b
3: instance b
default: reference b--defaultは指定以外の場合
)
a= random 1 20
b = random 1 20
c = random 1 20
d = random 1 20 
case of
(
(a > b): print "a is big"
(b < c): print "b is little"
(c <= d*3): print "c is less than 3 times d" 
default: print "none of the above"
)

比較式
条件を満たせばtrue,違えばfalseを返す
a==1–等しい
a != 1–等しくない
a>1–aが1より大きい
a<1–aが1より小さい
a>=1–aが1以上
a<=1–aが1以下


変数スコープ
local a–ローカル変数 主に()の中だけで有効
global a–グローバル変数 maxが終了するまで有効
persistent global a–永続グローバル変数 maxファイルに保存される

persistents.remove a–永続グローバル変数 aを削除
persistents.removeAll()–全ての永続グローバル変数を削除
persistents.show()–永続グローバル変数を表示


ベクトル
distance a b–a,b二点間の距離
length a–原点とa間の距離
normalize a–単位ベクトルを出す

dot<point3><point3>–内積
cross<point3><point3>–外積
acos ((dot a b) / ((length a)*(length b)))–a,bをpoint3としたときのなす角
–なす角=cosθ=内積/ベクトルA*ベクトルB


matrix3
scaleMatrix [1.2,2.0,0.5]–スケールが120,200,50%になる
transMatrix [10,20,30]–位置が各値になる
rotateXMatrix 45–X軸に対して45度回転
合成する場合は、スケール→回転→移動の順で乗算


確認系
ClassOf a–aのクラスを表示
superClassOf a–aのスーパークラスを表示
showproperties a–aのプロパティを表示
print a–aを表示


その他
$.count–選択した物の数
selection–選択した物
getTransformLockFlags a–そのオブジェクトのロック状態を配列で取得
setTransformLockFlags a–そのオブジェクトのロック状態を設定

選択順に関して
例えば連なったボーン3つを選択するとき、
範囲選択した場合は、選択配列は順番にならない(法則性はありそう?)
親をダブルクリックした時は、親から子へ順番に配列される

用語
ノード・・・階層構造の線ではなく点の部分、機能のブロック
オブジェクト・・・ノードより限定的でメッシュなどのジオメトリを指す

 

gesomaをフォローする
CGすくいどる

コメント