MAXScriptトレーニング
その2
ボックスの操作 - MAXScriptでの最初の手順
・MAXScript によるボックスの描画
・ボックスの修正
・標準変換の適用
・高度なボックス変換
ボックスの操作 - MAXScriptでの最初の手順
・MAXScript によるボックスの描画
・ボックスの修正
・標準変換の適用
・高度なボックス変換
MAXScript によるボックスの描画
最短ボックス生成コマンド
box()
これは 既定値 のパラメータでボックスを生成してくれます。
生成したオブジェクトを操作したい場合、
mybox = box()
で変数に割り当てればいいでしょう。
MAXScript によるボックスの描画
もし、生成するときにパラメータを指定したい場合
mybox = box length:20 width:20 height:20
このコマンドでは 20x20x20 のボックスが生成されます
パラメータを指定する場合、 () は必要ありません
MAXScript によるボックスの描画
注意点
・パラメータを指定する場合、 () は必要ありません
・パラメータを指定する方法
・<パラメータ名>:<パラメータ値> のように指定できます
・例 length:20
・パラメータは区切り記号を入れない
ボックスの操作 - MAXScriptでの最初の手順
・MAXScript によるボックスの描画
・ボックスの修正
・標準変換の適用
・高度なボックス変換
ボックスの修正
変数に割り当てたボックスには
変数を使ってプロパティにアクセスできます
プロパティにアクセスには「.」(ピリオド)を使用します
■フォーマット
<変数名>.<プロパティ>
ボックスの修正
ボックスには以下のプロパティがあります
・幅、長さ、高さ
・スケール、回転、位置
など、
これらのプロパティを変更するには
そのプロパティに新しい値を設定します
例えば
■オブジェクト名
mybox.name = “new name”
■カラー
mybox.wireColor = (color 255 0 255)
あるいは
mybox.wireColor = blue
例えば
■位置
mybox.pos = [0,-75,0]
■スケール
mybox.scale = [1.5,1.5,1.5]
■幅
mybox.height = 40;mybox.width = 60
調査関数:showClass()
指定されたクラスのパラメータ一覧が出力できます
■フォーマット
showClass “<調査対象>”
■例
showClass “box*.*”
を入力すると、「Box」および「BoxGizmo」クラス
すべてパラメータがリストアップされます
「*」はなに?
「*」(アスタリスク)をワイルドカードとして使用されます
どの文字にも当てはまる。
■例:box*
・「BoxGizmo」なら「Gizmo」の部分はワイルドカードでヒットします
・「Box」なら「空き文字」「該当なし」もヒット可能です
■謎:なぜ box* を検索して 「Box」の 「B」が大文字とヒットしたか
(たぶんクラス名は box ですが、表示名は Box になってる可能性ある)
調査関数:showProperties()
同じくプロパティ一覧をリストアップですが
showProperties() は クラスのインスタンスに使用します
オブジェクトのインスタンスを取得できた場合
オブジェクトの動的プロパティもリストアップできるため
こちらを使用することが推奨します
ボックスの操作 - MAXScriptでの最初の手順
・MAXScript によるボックスの描画
・ボックスの修正
・標準変換の適用
・高度なボックス変換
標準変換
先ほど説明したプロパティに新しい値を設定する以外
標準変換という機能を使って移動したり、回転したりも可能です
■例:ボックスの移動
move <name_obj> [<x,y,z>]
・<name_obj>は操作したいオブジェクトの名前
・[<x,y,z>]は移動量
標準変換とプロパティ
機能は似てますが、効果は全然違います。
標準変換は適用回数分の効果があります
move mybox [10,0,0];move mybox [10,0,0]
実際、x軸は 10 + 10 = 20になります
mybox.pos [10,0,0];mybox.pos [10,0,0]
プロパティは複数回適用して複数回の効果はありません
x軸を 10 に設定し、もう一回 x軸を 10 に設定するため、結果は 10 になります
標準変換の呼び方
標準変換はすべての変換機能を指します。
各機能の呼び方について
■移動の標準変換:移動変換
■スケールの標準変換:スケール変換
■回転の標準変換:回転変換
のようです
ボックスの操作 - MAXScriptでの最初の手順
・MAXScript によるボックスの描画
・ボックスの修正
・標準変換の適用
・高度なボックス変換
高度なボックス変換
もう少し複雑な変換を行ってみましょう。
以下の4行を入力してみてください
mybox.lengthsegs = 10 -- 長さセグメント
mybox.widthsegs = 10 -- 幅セグメント
mybox.heightsegs = 10 -- 高さセグメント
mybox.mapCoords = true -- マッピング座標の生成を有効
高度なボックス変換
このようにセグメントを設定できます
モディファイヤの作成
addModifier コマンドを使えばモディファイヤの作成ができます
■例:addModifier mybox (twist angle:30)
実行したら、
30度に設定したツイストモディファイヤを作成して
mybox に適用することができます
実行結果
モディファイヤの変更
適用済のモディファイアを変更することもできます
■例 : mybox.twist.angle = 60
先ほど30度に設定されたツイストを60度に変更できました
ボックスのアニメート
スクリプトからアニメートの設定ができます
■例
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
実行結果
ボックスのアニメート
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
意味:[オートキー]をオンする
ボックスのアニメート
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
意味:指定したフレームにキーを打つ
ボックスのアニメート
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
意味:座標プロパティを設定
ボックスのアニメート
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
意味:スケールプロパティを設定
ボックスのアニメート
animate on
(
at time0 (mybox.pos = [-100,0,0];mybox.scale = [1,1,0.25])
at time100 (mybox.pos = [100,0,0];mybox.scale = [1,1,3])
)
0フレーム pos [-100,0,0] scale [1,1,0.25] から
100フレーム pos [100,0,0] scale [1,1,3] のアニメーションができました
アニメート?
今では「オートキー」ボタンになっていますが、
3ds Max バージョン2およびバージョン3では
「アニメート」という同じな機能を実行していました
この理由で、
コマンドは animate になっています
今回は以上です
参考