標準変換の適用

注:これは、「ボックスの操作 - MAXScript での最初の手順」チュートリアルの前のレッスン「MAXScript によるボックスの描画」および「ボックスの修正」の続きです。このレッスンを行うには、変数 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 番目の行を実行しても、ボックスの絶対位置に影響はありません。

 

上記のコマンドを実行した場合、 [元に戻す](Undo)を 3 回クリックすると、ボックスは元の位置に戻ります。

一方、以下のコマンドを実行すると

move mybox [10,0,0]
move mybox [10,0,0]
move mybox [10,0,0]

ボックスは X 軸方向に 30 単位移動します。

 

上記のコマンドを実行した場合、 [元に戻す](Undo)を 3 回クリックすると、ボックスは元の位置に戻ります。

ボックスのスケーリング

スケーリングも、同様の方法で実行します。

scale name_obj [<x,y,z>]

ただし、name_obj はオブジェクトの名前を、<x,y,z>は X 軸、Y 軸、Z 軸に沿ってオブジェクトをスケーリングする量に対応するそれぞれの 3D 座標を表します。

この場合も、スケール変換は、スケール オブジェクトのプロパティと異なることに注意してください。オブジェクトのスケール プロパティ(name_obj.scale= …)を同じ値で繰り返し設定すると、最初はオブジェクトをスケーリングするだけですが、スケール変換を繰り返し適用することで、オブジェクトをスケーリングし続けます。

ボックスの回転

回転変換は、移動およびスケール変換より複雑です。MAXScript でオブジェクトの回転には、次の 3 つの方法があります。

[オイラー角度](Euler Angles), [Quaternions ] and [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 を回転するオブジェクトの名前に置き換えます。

上記のコマンドを実行した場合、 [元に戻す](Undo)をクリックすると、ボックスは元の位置に戻ります。

複数の軸に対して角度を指定する場合:

rot_box2 = eulerangles 30 45 60

この回転は、X 軸方向、Y 軸方向、Z 軸方向の順に適用されます。

注:

既定値では、オブジェクトの移動、スケール、および回転と、変換に関連するプロパティの設定は、ワールド座標系で行われます。これらの変換を別の座標系で実行する方法については「coordsys」を参照してください。

次のトピック

高度なボックス変換