ボックスの修正

一つ前のレッスンでは、ボックスを名前の付いた変数に割り当ててボックスを作成しました。

ボックスに変数を使っているので、ボックスのプロパティすべてに簡単にアクセスできます。

変数名 mybox はボックスへのハンドルです。ハンドルのプロパティにアクセスするには、「.」(ピリオド)の後にプロパティ名を追加します。

たとえば、mybox.height は「mybox の高さ」を示すことができます。

すべての 3ds Max オブジェクトには、ボックスの幅、長さ、高さ、および円の半径などの作成パラメータがあります。

これらのオブジェクトはスケール、回転、位置のような変換プロパティや、名前、ワイヤ カラーなどの一般プロパティも持っています。

これらのプロパティを変更するには、そのプロパティに新しい値を設定します。

オブジェクト プロパティの変更

オブジェクト名

既定値のオブジェクト名 Box001 が気に入らなければ、そのボックスの名前プロパティを変更することができます。

リスナー ウィンドウに mybox.name = "BlueBox" と入力すれば、ボックスの名前が変更されます。

[修正] (Modify)パネルへ移動すると、[名前編集](Name edit)ボックスに新しい名前が表示されます。

既定値では、オブジェクトのカラーは、作成時にランダムに割り当てられます。したがって、ボックスのカラーが必ず青であるとは限りません。この場合、BlueBox はボックスの名前として適切ではありません。ただし、名前に合わせてボックスのカラーを変更できます。

mybox.wirecolor = blue と入力して、ビューポートでボックスが青色に変わることを確認してください。変化がなければ、[修正] (Modify)パネルのオブジェクト名の横にあるカラー見本で新しいカラーが反映されるように、もう一度ボックスを選択してみてください。

カラー blue は MAXScript であらかじめ定義されたカラー定数であり、その RGB 値は(0,0,255)と定義されています。その他のあらかじめ定義されているカラー定数は、赤、緑、白、黒、黄、茶色です。定義されているカラーを使わずに、次のようにして他の RGB 値を割り当てることもできます。

mybox.wirecolor = (color 255 0 255)

特定のカラー値の入力には特定の構文があることに注意してください。

ここで示した例ではボックスの色をマゼンダに変えます。このコマンドを入力した場合も、 [元に戻す] (Undo)をクリックすればボックスは青に戻ります。

カラーの詳細は、MAXScript リファレンスの「カラー値」を参照してください。

位置

ボックスの位置プロパティを変えることにより、ボックスの位置を変更できます。

この例のボックスの位置プロパティは、mybox.pos で参照します。

その位置は、x、 y、 z 軸によって表現されています。

たとえば、\[0,-75,0\] によって、ボックスの位置が Y 軸の負の方向に沿って 単位移動します。

mybox.pos = \[0,-75,0\] と入力すると、パース ビューポートのボックスが前方にジャンプします。

[元に戻す] (Undo)をクリックすると、ボックスは原点に戻ります。

サイズ

ボックスを大きくするには、そのボックスのスケール プロパティを使用します。

次のように入力します。

    mybox.scale = [1.5,1.5,1.5]

ボックスが元のサイズの 1.5 倍になることを確認します。

[元に戻す] (Undo)をクリックすると、スケールが元に戻り、ボックスは元のサイズに戻ります。

スケール プロパティでは X、Y、Z 軸それぞれにスケーリング係数、あるいはこの場合はボックスの幅、長さ、高さが必要です。ボックスの大きさを均一に変えたい場合を除けば、各軸に同じ値を使う必要はありません。

長さは変えずに高さと幅のスケールだけを変更したい場合、以下の例のように使います。

次のように入力します。

    mybox.scale = [1,3,2]

どのような係数でも、もともと[20,20,20]のスケールのボックスであれば、ボックスのパラメータは幅 20、長さ 20、高さ 20 のままです。[修正] (Modify)パネルを開くと、これを確認することができます。このボックスのパラメータはスケール変換によって変更されません。

ボックスの高さおよび幅プロパティを変更しても見た目には同じ結果のように見えますが、上記のスケール修正は以下の 2 種類のコマンドを使う場合とはなります。

mybox.height = 40 -- 2 times the original 20 units
mybox.width = 60 -- 3 times the original 20 units

この理由は、ボックスの高さプロパティを変更すると、ボックスの高さの作成パラメータが変更されるからです。ボックスの高さを変換するスケール プロパティを使った場合は変更されません。

これらの方法を使った効果は見た目には同じですが、作成パラメータは多くの別の変換をした後でも変えることができるので、オブジェクトの本来の作成パラメータを保持したい場合、ボックスの大きさを操作するためには、個々の作成プロパティではなくスケール プロパティを使ってください。

実際のプロダクションでは、オブジェクトのスケールは階層リンク オブジェクトのアニメーションや、3ds Max のその他の機能と干渉するため、一般に推奨されないことにも注意してください。XForm モディファイヤを使用して、そのギズモをスケールすることは、スケールを Modifier Stack に局所化し、アニメーションの変換に影響しないため、推奨されています。

[元に戻す] (Undo)をクリックすると、ボックスのスケールは元の[1,1,1]に戻ります。

補足的なパラメータの検索

[パラメータ] (Parameters)ロールアウトには、ボックスのすべての作成パラメータが表示されます。ロールアウト内のスピナーを使ってそれらのパラメータを変更できます。長さ、幅、高さセグメントの値や、MAXScript のマッピング座標の設定を変更したい場合は、これらのパラメータの構文を知っておく必要があります。すべてのパラメータ設定の構文を検索するには、2 つの異なる調査関数を使用します。

最初の調査関数は、showclass() です。

showClass() 関数は、指定された 1 つまたは複数の 3ds Max クラスについての情報を出力します。カッコで囲まれた情報は、3ds Max クラス名、スーパークラス名およびプロパティ名に対して一致を判断するワイルド カード パターンを含む文字列です。

次のように入力します。

    showclass "box.*"

MAXScript は[パラメータ] (Parameters)ロールアウトで表示されるものと同様のボックス パラメータをすべて表示します。これには、ボックス オブジェクトが属しているオブジェクト クラスやそれぞれのパラメータに必要なデータ型が含まれます。

ボックス パラメータをすべて表示させるために、「」をワイルドカードとして使うことができます。`showClass "box.,"と入力すると、Box` *および BoxGizmo クラスのすべてのパラメータがリストされます。

例:

    showClass "box*" -- all 3ds max classes starting "box"
    showClass "box.*" -- all the accessible properties of the box class
    showClass "*:mod*" -- all the modifier classes
    showClass "*.*rad*" -- all the classes with a property name containing "rad"

2 番目の関数は showProperties() です。

showProperties() 関数を使うと、3ds Max クラスのインスタンスである特定のオブジェクトのプロパティを表示できます。この関数は、実際のオブジェクトを取得できる場合に showClass() の代わりに使われますが、showClass() とは異なり、動的プロパティは、シーン内でオブジェクトを操作すると、各オブジェクト内に表示されます。

これらの関数の詳細を理解するには、「クラスとオブジェクトの調査関数」を参照してください。

次のトピック

標準変換の適用