モディファイヤの共通プロパティ、演算子、メソッド

 

   

モディファイヤ クラス - クイック ナビゲーション

プロパティ

すべてのモディファイヤに次のようなプロパティがあります。

<modifier>.name: string

モディファイヤ名を取得および設定します。

   

<modifier>.enabled: boolean

<modifier>.enabledInViews: boolean

モディファイヤの使用可能/使用不可状態をコントロールします。これらは読み込み/書き込みプロパティであり、指定されたモディファイヤの使用可能状態を決定し、設定できるようにします。

$foo.modifiers[2].enabled = false-- turn off 2nd modifier

enabledInViews プロパティはビューポートの表示をコントロールし、 enabled はビューポートとレンダリングされた表示の両方をコントロールします。

   

<modifier>.enabledInRenders: boolean

モディファイヤがレンダリングで有効になっているかどうかを取得/設定します。

true に設定した場合、モディファイヤはレンダリングで有効になり、 false の場合は無効になります。

   

関連するメソッド

シーン ノード上のモディファイヤ スタックは、次のような <node> メソッドを使って操作できます。

validModifier( <node> | <objectset>) (<modifier | <modifier_class>)

指定された <node> または <objectset> に特定のモディファイヤまたはモディファイヤ クラスが追加できるかどうかをテストします。追加できる場合は true を返し、追加できない場合は false を返します。

validModifier() メソッドは、モディファイヤの適用性を判断するときには[修正](Modify)パネルと同様に機能します。変形可能なオブジェクトを受け入れるモディファイヤはすべて、ヘルプ以外のすべてのシーン オブジェクトに対して true を返します。これは、[ベンド](Bend)、[テーパ](Taper)などのモディファイヤを、ライト、カメラ、スペース ワープ オブジェクトなどの他にボックス、球などのジオメトリ タイプに対して適用できるようにする一方で、ダミーやボーンなどのヘルパーには適用できない修正パネルの動作に対応します。

validModifier() を使用した RCMenu や macroScript では、リソース使用の節約のためクラスを使用することをお勧めします。

if validModifier $ Edit_Mesh then ...

または

if validModifier $ (Edit_Mesh()) then ...

MAXScript の isValidModifier 関数は、ランタイム時に存在しないモディファイヤを渡されていないかを確認します。この例では false を返します。モディファイヤの InputType() の特定には、ClassEntry を使用します。

   

addModifier <node> <modifier> [before:index] -- mapped

関数が適用されるノードのすべてのインスタンスにモディファイヤを追加します。

オプションの before: キーワード引数を使用して、ノードのモディファイヤ スタックの最上位から見てインデックス付けされたモディファイヤの直前の位置にモディファイヤを挿入できます。

追加されたモディファイヤは、ノード内でアクティブになっているすべての適切なサブオブジェクト選択に適用されます。ただしこの場合、そのノードは目的のサブオブジェクトの[修正](Modify)パネル内で選択され、開いている必要があります。

3ds Max システムのグローバル変数 subObjectLevel を使用して、[修正](Modify)パネル内で現在開いているオブジェクトのレベルをテストおよび設定できます。

max modify mode-- open mod panel
select $box01-- select box01 into mod panel
subObjectLevel = 3-- subobject level to Face
addModifier $box01 (ffd_2x2x2())-- add FFD mod to those faces

before: により、モディファイヤがスタック内の無効な位置に配置された場合、このモディファイヤは一番近い有効な位置に配置されます。

たとえば、SpacewarpModifier クラス オブジェクトを モディファイヤ クラス オブジェクトの下に配置する場合、SpacewarpModifier オブジェクトは任意の SpacewarpModifier オブジェクトの下、および任意のモディファイヤ オブジェクトの上に配置されます。

   

<node> がコレクションの場合、モディファイヤのインスタンスはコレクション内のすべてのノードに配置されます。

インタラクティブにモディファイヤを選択に対して適用するのとは異なり、各モディファイヤ インスタンスのギズモの位置とサイズは、モディファイヤ インスタンスを適用するノードの位置とサイズに対応します。

3ds Max がモディファイヤを適用するときと同じ方法で、コレクションにモディファイヤを適用するには、「[修正](Modify)パネル」で説明されている modPanel.addModToSelection() を使用します。

   

一般に、 addModifier() 関数はモディファイヤをサブオブジェクトの選択に適用できないため、現在のサブオブジェクト レベルをすべて使用不可にするという制限があります。

3ds Max がモディファイヤを適用するのと同じ方法で、モディファイヤをサブオブジェクトに対して適用するには、 modPanel.addModToSelection() を使用します。

この関数は、[修正](Modify)パネルで現在選択されているサブオブジェクト レベルに正確に従います。

   

deleteModifier <node> <modifier_or_index>

モディファイヤ スタックからモディファイヤを削除できます。

<node> スタックに存在するモディファイヤの値をとるか、またはインデックスをとって、削除するモディファイヤのインデックスを指定します。

   

collapseStack <node> -- mapped

編集可能メッシュ、編集可能スプライン、NURBS サーフェスなどの適切な編集可能な基底クラスを残して、スタックからモディファイヤをノードの基本オブジェクトとして集約します。

これを呼び出すときにスタックの中にモディファイヤが存在しない場合は、何も行われません。

編集可能な基底クラス形式に対してスタック集約または変換を強制的に実行したい場合は、 convertToMesh()、convertToSplineShape() などのノード変換関数のいずれかを使用します。

詳細については、「ノードの共通プロパティ、演算子、メソッド」を参照してください。

   

getModContextTM <node> <modifier>

モディファイヤ サブオブジェクト ギズモで使われたローカル座標に、モディファイヤのコンテキスト変換を提供する Matrix3 値を返します。

モディファイヤのサブオブジェクトの変換プロパティ(MAXScript のギズモや中心など)にアクセスすると、そのモディファイヤのコンテキスト変換に相対した値が生成されます。これは、トラック ビューで表示される変換プロパティの値と同じです。

モディファイヤが面や頂点の選択などのサブオブジェクト選択で機能しない場合、またはモディファイヤをオブジェクトの選択にインタラクティブに適用した場合、このコンテキスト TM はオブジェクト自身のローカル座標スペースになります。

一方で、モディファイヤがオブジェクト選択セットまたはサブオブジェクト選択に適用されている場合、このコンテキスト変換により、その選択の位置と方向が与えられ、 getModContextTM() を使って、そのサブオブジェクトのワールド空間変換プロパティを取得できます。

   

getModContextBBoxMin<node> <modifier> getModContextBBoxMax<node> <modifier>

これらの関数は getModContextTM() 関数を補完するもので、これを使ってモディファイヤ コンテキストのバウンディング ボックスのワールド空間座標を派生させることができます。

たとえば、これを使ってサブ選択に作用するモディファイヤの境界や、FFD ラティスの境界を決定できます。

これは、FFD コントロール ポイントの位置をスクリプトする場合に特に役立ちます。これらのコントロール ポイントは 0 対 1 のラティス空間に存在しており、モディファイヤ コンテキストのバウンディング ボックスがこのラティス空間の境界を設定して、スケール処理したラティス空間座標をワールド座標から計算できるようにするためです。

この関数は、バウンディング ボックスの最小範囲と最大範囲に対して Point3 値を返します。

   

関連事項