一つ前のレッスンでは、ボックスを名前の付いた変数に割り当ててボックスを作成しました。
ボックスに変数を使っているので、ボックスのプロパティすべてに簡単にアクセスできます。
変数名 mybox はボックスへのハンドルです。ハンドルのプロパティにアクセスするには、「.」(ピリオド)の後にプロパティ名を追加します。
すべての 3ds Max オブジェクトには、ボックスの幅、長さ、高さ、および円の半径などの作成パラメータがあります。
これらのオブジェクトはスケール、回転、位置のような変換プロパティや、名前、ワイヤ カラーなどの一般プロパティも持っています。
既定値のオブジェクト名 Box001 が気に入らなければ、そのボックスの名前プロパティを変更することができます。
リスナー ウィンドウに mybox.name = "BlueBox" と入力すれば、ボックスの名前が変更されます。
[修正](Modify)パネルへ移動すると、[名前編集](Name edit)ボックスに新しい名前が表示されます。
既定値では、オブジェクトのカラーは、作成時にランダムに割り当てられます。したがって、ボックスのカラーが必ず青であるとは限りません。この場合、BlueBox はボックスの名前として適切ではありません。ただし、名前に合わせてボックスのカラーを変更できます。
mybox.wireColor = blue と入力して、ビューポートでボックスが青色に変わることを確認してください。変化がなければ、[修正](Modify)パネルのオブジェクト名の横にあるカラー見本で新しいカラーが反映されるように、もう一度ボックスを選択してみてください。
カラー blue は MAXScript であらかじめ定義されたカラー定数であり、その RGB 値は(0,0,255)と定義されています。その他のあらかじめ定義されているカラー定数は、赤、緑、白、黒、黄、茶色です。定義されているカラーを使わずに、次のようにして他の RGB 値を割り当てることもできます。
特定のカラー値の入力には特定の構文があることに注意してください。
ここで示した例ではボックスの色をマゼンダに変えます。このコマンドを入力した場合も、 [元に戻す](Undo)をクリックすればボックスは青に戻ります。
カラーの詳細は、MAXScript リファレンスの「カラー値」を参照してください。
ボックスの位置プロパティを変えることにより、ボックスの位置を変更できます。
この例のボックスの位置プロパティは、mybox.pos で参照します。
たとえば、[0,-75,0] によって、ボックスの位置が Y 軸の負の方向に沿って 75 単位移動します。
mybox.pos = [0,-75,0] と入力すると、パース ビューポートのボックスが前方にジャンプします。
ボックスを大きくするには、そのボックスのスケール プロパティを使用します。
スケール プロパティでは X、Y、Z 軸それぞれにスケーリング係数、あるいはこの場合はボックスの幅、長さ、高さが必要です。ボックスの大きさを均一に変えたい場合を除けば、各軸に同じ値を使う必要はありません。
長さは変えずに高さと幅のスケールだけを変更したい場合、以下の例のように使います。
どのような係数でも、もともと[20,20,20]のスケールのボックスであれば、ボックスのパラメータは幅 20、長さ 20、高さ 20 のままです。[修正](Modify)パネルを開くと、これを確認することができます。このボックスのパラメータはスケール変換によって変更されません。
ボックスの高さおよび幅プロパティを変更しても見た目には同じ結果のように見えますが、上記のスケール修正は以下の 2 種類のコマンドを使う場合とは異なります。
この理由は、ボックスの高さプロパティを変更すると、ボックスの高さの作成パラメータが変更されるからです。ボックスの高さを変換するスケール プロパティを使った場合は変更されません。
これらの方法を使った効果は見た目には同じですが、作成パラメータは多くの別の変換をした後でも変えることができるので、オブジェクトの本来の作成パラメータを保持したい場合、ボックスの大きさを操作するためには、個々の作成プロパティではなくスケール プロパティを使ってください。
実際のプロダクションでは、オブジェクトのスケールは階層リンク オブジェクトのアニメーションや、3ds Max のその他の機能と干渉するため、一般に推奨されないことにも注意してください。XForm モディファイヤを使用して、そのギズモをスケールすることは、スケールを Modifier Stack に局所化し、アニメーションの変換に影響しないため、推奨されています。
この 2 種類のコマンドを入力した場合は、 [元に戻す](Undo)を 2 回クリックしてボックスを元の高さと幅に戻します。
[パラメータ](Parameters)ロールアウトには、ボックスのすべての作成パラメータが表示されます。ロールアウト内のスピナーを使ってそれらのパラメータを変更できます。長さ、幅、高さセグメントの値や、MAXScript のマッピング座標の設定を変更したい場合は、これらのパラメータの構文を知っておく必要があります。すべてのパラメータ設定の構文を検索するには、2 つの異なる調査関数を使用します。
showClass() 関数は、指定された 3ds Max クラスまたは複数のクラスについての情報を出力します。カッコで囲まれた情報は、3ds Max クラス名、スーパークラス名およびプロパティ名に対して一致を判断するワイルド カード パターンを含む文字列です。
MAXScript は[パラメータ](Parameters)ロールアウトで表示されるものと同様のボックス パラメータをすべて表示します。これには、ボックス オブジェクトが属しているオブジェクト クラスやそれぞれのパラメータに必要なデータ型が含まれます。
ボックス パラメータをすべて表示させるために、「*」をワイルドカードとして使うことができます。showClass "box*.*," と入力すると、Box および BoxGizmo クラスのすべてのパラメータがリストされます。
showProperties() 関数を使うと、3ds Max クラスのインスタンスである特定のオブジェクトのプロパティを表示できます。この関数は、実際のオブジェクトを取得できる場合に showClass() の代わりに使われますが、ダイナミック プロパティは、シーン内でオブジェクトを操作すると、各オブジェクト内に表示されます。
これらの関数の詳細を理解するには、「クラスとオブジェクトの調査関数」を参照してください。