mybox
が定義済みで、ボックス プリミティブのインスタンスが含まれていることが必要です。前のレッスンからの続きとして行っていない場合は、少なくとも以下の行を評価して、mybox = box()
次の例を 3ds Max シーンに適用する必要があります。
ボックスの基本プロパティの作成 および 修正方法については既に説明しました。 次に、標準変換 (移動、スケール、回転) を適用する方法を説明します。ボックスを作成するときに、位置、サイズ、方向を指定できます。 ただし、3ds Max で行う場合と同様、オブジェクトの作成後にこれらの操作を行うこともできます。
MAXScript では、オブジェクトの移動は簡単に行うことができます。
move name_obj [<x,y,z>]
ただし、name_obj は移動させるオブジェクトの名前を、<x,y,z>
は移動させる量を表します。
オブジェクトを <x,y,z>
に移動させるのではなく、<x,y,z>
の量だけ移動させるという点に注意してください。
つまり、move 関数を複数回適用すると、オブジェクトはそのたびに移動します。スケールおよび回転変換の場合も同様です。
これは、オブジェクトのプロパティを設定する場合とは対照的です。オブジェクトの位置、スケール、回転プロパティを複数回設定しても、毎回同じ値を割り当てた場合、オブジェクトは変化しません。
例:
mybox.pos = [10,0,0] mybox.pos = [10,0,0] mybox.pos = [10,0,0]
ボックスの位置が変化するのは、最初の行の実行時だけです。
2 番目および 3 番目の行を実行しても、ボックスの絶対位置に影響はありません。
上記のコマンドを実行した場合、 元に戻すを 3 回クリックすると、ボックスは元の位置に戻ります。
一方、以下のコマンドを実行すると
move mybox [10,0,0] move mybox [10,0,0] move mybox [10,0,0]
ボックスは X 軸方向に 30 単位移動します。
上記のコマンドを実行した場合、 元に戻すを 3 回クリックすると、ボックスは元の位置に戻ります。
スケーリングも、同様の方法で実行します。
scale name_obj [<x,y,z>]
ただし、name_obj
はオブジェクトの名前を、<x,y,z>
は X 軸、Y 軸、Z 軸に沿ってオブジェクトをスケーリングする量に対応するそれぞれの 3D 座標を表します。
この場合も、スケール変換は、スケール オブジェクトのプロパティと異なることに注意してください。オブジェクトのスケール プロパティ(name_obj.scale
= …)を同じ値で繰り返し設定すると、最初はオブジェクトをスケーリングするだけですが、スケール変換を繰り返し適用することで、オブジェクトをスケーリングし続けます。
回転変換は、移動およびスケール変換より複雑です。MAXScript でオブジェクトの回転には、次の 3 つの方法があります。
[EulerAngles]、[Quaternions]、および [AngleAxis] です。
ここでは、オイラー角度について説明します。これらの変換の詳細については、『MAXScript リファレンス』を参照してください。
MAXScript で回転変換を適用するには、回転を「回転オブジェクト」として定義してから、**回転するオブジェクトに回転オブジェクトを適用します。回転オブジェクトは、次の方法で定義します。
rot_obj = eulerangles x y z
ただし、rot_obj は任意の名前に設定でき、x、y、z は X、Y、Z の各軸の周りのオブジェクトの回転量 (度) を表します。
例:
rot_box = eulerangles 0 30 0
は、rot_box と呼ばれるオブジェクトを作成し、オブジェクトを Y 軸の周りで 30 度回転させます。この回転は次の方法でボックスに適用できます。
rotate mybox rot_box
任意のオブジェクトにこの回転を適用するには、上記の行を記述し、mybox
を回転するオブジェクトの名前に置き換えます。
上記のコマンドを実行した場合、 元に戻すをクリックすると、ボックスは元の位置に戻ります。
複数の軸に対して角度を指定する場合:
rot_box2 = eulerangles 30 45 60
この回転は、X 軸方向、Y 軸方向、Z 軸方向の順に適用されます。
既定値では、オブジェクトの移動、スケール、および回転と、変換に関連するプロパティの設定は、ワールド座標系で行われます。これらの変換を別の座標系で実行する方法については「coordsys」を参照してください。
次のトピック