1 of 34

MAXScriptトレーニング

その2

2 of 34

ボックスの操作 - MAXScriptでの最初の手順

・MAXScript によるボックスの描画

・ボックスの修正

・標準変換の適用

・高度なボックス変換

3 of 34

ボックスの操作 - MAXScriptでの最初の手順

MAXScript によるボックスの描画

・ボックスの修正

・標準変換の適用

・高度なボックス変換

4 of 34

MAXScript によるボックスの描画

最短ボックス生成コマンド

box()

これは 既定値 のパラメータでボックスを生成してくれます。

生成したオブジェクトを操作したい場合、

mybox = box()

で変数に割り当てればいいでしょう。

5 of 34

MAXScript によるボックスの描画

もし、生成するときにパラメータを指定したい場合

mybox = box length:20 width:20 height:20

このコマンドでは 20x20x20 のボックスが生成されます

パラメータを指定する場合、 () は必要ありません

6 of 34

MAXScript によるボックスの描画

注意点

・パラメータを指定する場合、 () は必要ありません

・パラメータを指定する方法

 ・<パラメータ名>:<パラメータ値> のように指定できます

 ・例 length:20

・パラメータは区切り記号を入れない

7 of 34

ボックスの操作 - MAXScriptでの最初の手順

・MAXScript によるボックスの描画

ボックスの修正

・標準変換の適用

・高度なボックス変換

8 of 34

ボックスの修正

変数に割り当てたボックスには

変数を使ってプロパティにアクセスできます

プロパティにアクセスには「.」(ピリオド)を使用します

■フォーマット

<変数名>.<プロパティ>

9 of 34

ボックスの修正

ボックスには以下のプロパティがあります

・幅、長さ、高さ

・スケール、回転、位置

など、

これらのプロパティを変更するには

そのプロパティに新しい値を設定します

10 of 34

例えば

■オブジェクト名

mybox.name = “new name”

■カラー

mybox.wireColor = (color 255 0 255)

あるいは

mybox.wireColor = blue

11 of 34

例えば

■位置

mybox.pos = [0,-75,0]

■スケール

mybox.scale = [1.5,1.5,1.5]

■幅

mybox.height = 40;mybox.width = 60

12 of 34

調査関数:showClass()

指定されたクラスのパラメータ一覧が出力できます

■フォーマット

showClass “<調査対象>”

■例

showClass “box*.*”

を入力すると、「Box」および「BoxGizmo」クラス

すべてパラメータがリストアップされます

13 of 34

「*」はなに?

「*」(アスタリスク)をワイルドカードとして使用されます

どの文字にも当てはまる。

■例:box*

・「BoxGizmo」なら「Gizmo」の部分はワイルドカードでヒットします

・「Box」なら「空き文字」「該当なし」もヒット可能です

■謎:なぜ box* を検索して 「Box」の 「B」が大文字とヒットしたか

(たぶんクラス名は box ですが、表示名は Box になってる可能性ある)

14 of 34

調査関数:showProperties()

同じくプロパティ一覧をリストアップですが

showProperties() は クラスのインスタンスに使用します

オブジェクトのインスタンスを取得できた場合

オブジェクトの動的プロパティもリストアップできるため

こちらを使用することが推奨します

15 of 34

ボックスの操作 - MAXScriptでの最初の手順

・MAXScript によるボックスの描画

ボックスの修正

標準変換の適用

・高度なボックス変換

16 of 34

標準変換

先ほど説明したプロパティに新しい値を設定する以外

標準変換という機能を使って移動したり、回転したりも可能です

■例:ボックスの移動

move <name_obj> [<x,y,z>]

・<name_obj>は操作したいオブジェクトの名前

・[<x,y,z>]は移動量

17 of 34

標準変換とプロパティ

機能は似てますが、効果は全然違います。

標準変換は適用回数分の効果があります

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 になります

18 of 34

標準変換の呼び方

標準変換はすべての変換機能を指します。

各機能の呼び方について

■移動の標準変換:移動変換

■スケールの標準変換:スケール変換

■回転の標準変換:回転変換

のようです

19 of 34

ボックスの操作 - MAXScriptでの最初の手順

・MAXScript によるボックスの描画

ボックスの修正

・標準変換の適用

高度なボックス変換

20 of 34

高度なボックス変換

もう少し複雑な変換を行ってみましょう。

以下の4行を入力してみてください

mybox.lengthsegs = 10 -- 長さセグメント

mybox.widthsegs = 10 -- 幅セグメント

mybox.heightsegs = 10 -- 高さセグメント

mybox.mapCoords = true -- マッピング座標の生成を有効

21 of 34

高度なボックス変換

このようにセグメントを設定できます

22 of 34

モディファイヤの作成

addModifier コマンドを使えばモディファイヤの作成ができます

■例:addModifier mybox (twist angle:30)

実行したら、

30度に設定したツイストモディファイヤを作成して

mybox に適用することができます

23 of 34

実行結果

24 of 34

モディファイヤの変更

適用済のモディファイアを変更することもできます

■例 : mybox.twist.angle = 60

先ほど30度に設定されたツイストを60度に変更できました

25 of 34

ボックスのアニメート

スクリプトからアニメートの設定ができます

■例

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])

)

26 of 34

実行結果

再生されない場合:=>

27 of 34

ボックスのアニメート

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])

)

意味:[オートキー]をオンする

28 of 34

ボックスのアニメート

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])

)

意味:指定したフレームにキーを打つ

29 of 34

ボックスのアニメート

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])

)

意味:座標プロパティを設定

30 of 34

ボックスのアニメート

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])

)

意味:スケールプロパティを設定

31 of 34

ボックスのアニメート

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] のアニメーションができました

32 of 34

アニメート?

今では「オートキー」ボタンになっていますが、

3ds Max バージョン2およびバージョン3では

「アニメート」という同じな機能を実行していました

この理由で、

コマンドは animate になっています

33 of 34

今回は以上です

34 of 34

参考