プロパティ
NURBS オブジェクト内で選択されたサブオブジェクトへのアクセスを提供する <node>
オブジェクトには、次のようなプロパティがあります。
<node>.selectedCurveCVs
<node>.selectedCurves
<node>.selectedImports
<node>.selectedPoints
<node>.selectedSurfaces
<node>.selectedSurfCVs
<node>.curveCVs
<node>.curves
<node>.imports
<node>.surfaces
<node>.surfCVs
<node>.points
これらはすべて NURBSSelection の値を返し、編集可能メッシュ向けに提供されているのと同様の方法でサブオブジェクトを操作できます。
メソッド
次の NURBS 関連のメソッドは、シーン ノードで動作します。
getNURBSSet <node> [#relational]
この関数は、指定された NURBS シーン ノードに対応する NURBSSet の取得に使用されます。これによって、3ds Max の編集可能な NURBS オブジェクト内の内部オブジェクトにアクセスできます。
オプションの #relational
パラメータが指定されない場合は、返される NURBSSet には、独立カーブおよびサーフェスだけが含まれます。従属オブジェクトはすべて、対応する独立オブジェクトに分解されます。たとえば、リレーショナル モデル (CV サーフェス 2 つと従属ブレンド サーフェス 1 つと仮定) を含むオブジェクトを渡した場合、このモデルは、3 つの CV サーフェスに分解されます。これは、2 つのサーフェスと 1 つのブレンドを表す CV サーフェスですが、ブレンドに関連するデータは取得されません。#relational
引数 が指定されている場合は、2 つの CV サーフェスと 1 つの NURBS ブレンド サーフェスが返されます。また、NURBSSet がシーン オブジェクトのアクティブな見本となります。その要素の NURBSObject のプロパティに対する変更は、すべて、ソース シーン オブジェクトで直接反映されます。
addNURBSSet <node> <nurbsSet>
この関数は、指定された NURBSSet を指定の NURBS シーン オブジェクトに追加して、NURBSSet の定義に対応するシーン ノード内にサブオブジェクトを作成します。関数呼び出し後、指定された NURBSSet は新しいシーン ノードサブオブジェクトのアクティブな見本となります。NURBSId プロパティはすべて満たされ、NURBSSet コンポーネント オブジェクトのプロパティを修正することによって、関連したシーンサブオブジェクトを修正することができます。
transform <node> <nurbsId_or_Id_array> <matrix3>
ノードのローカル スペースに指定された行列によって、指定したサブオブジェクトを変換します。変換されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードからリレーショナル NURBSSet を抽出したときに設定されます。
breakCurve <node> <nurbsId> <u_param>
指定されたサブオブジェクト カーブを、<u_param>
浮動小数点引数によって定義されるカーブ上のパラメトリック ポイントで分割します。分割されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードからリレーショナル NURBSSet を抽出したときに設定されます。
breakSurface <node> <nurbsId> (#U |#V) <u_or_v_param>
指定されたサブオブジェクト サーフェスを、<u_or_v_param>
引数によって定義されるパラメトリック ポイントで分割します。3 つ目の引数として #U
または #V
が指定されるかどうかによって、それぞれ u 方向または v 方向の引数が使用されます。分割されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードからリレーショナル NURBSSet を抽出したときに設定されます。
joinCurves <node> <nurbsId1> <nurbsId2> <tolerance_float> [flip1:<boolean>] [flip2:<boolean>]
2 つの曲線サブオブジェクトを指定のシーン ノードに結合し、そこから 1 つの曲線を作成します。この場合、2 つのカーブ オブジェクトの終点が新しいセグメントによって接続され、元のカーブは 1 つのカーブに置き換えられます。
与えられる許容度は、3ds Max 単位の距離です。接続するカーブ同士の隙間がこの値より大きい場合、この関数は最初にブレンド カーブを作成してから 3 つの部分を結合します。隙間がこの値より小さい場合、またはカーブが重なったり、完全に一致するような場合、ブレンドは作成されません。
ブレンド カーブを作成してから 3 つのカーブを 1 つに接合する方が、望ましいテクニックです。最終的に、親カーブによくマッチします。ブレンド カーブを作成しないで接合すると、作成されたカーブは滑らかさを保持するために親カーブからずれてしまう可能性があります。ずれの量は入力した 2 つのカーブが接合時に接線からどれくらい離れていたかによります。
小さすぎる隙間があると問題が生じます。この場合、この関数はブレンドを生成しますが、十分なスペースがないので結果として生じる曲線はその中にループができます。このループを避けるには、このパラメータを隙間の距離より大きい値に設定します。
許容度を 0.0 にすると、許容度として使用する値は関数によって選択されます。
結合されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードからリレーショナル NURBSSet を抽出したときに設定されます。
joinSurfaces <node> <nurbsId1> <nurbsId2> <edge1_integer> <edge2_integer> <tolerance_float>
2 つのサーフェス サブオブジェクトを指定したシーン ノードに結合し、そこから 1 つのサーフェスを作成します。2 つのサーフェス オブジェクトの指定されたエッジは新しいサーフェスによって接続され、2 つの元のサーフェスは 1 つのサーフェスに置き換えられます。
エッジは、エッジのインデックス番号で識別されます。
許容度は、3ds Max 単位の距離です。結合するサーフェス同士の隙間がこの値より大きい場合、この関数は最初にブレンド サーフェスを作成してから結合を行います隙間がこの値より小さい場合、またはサーフェスが重なったり、完全に一致するような場合、3ds Max ではブレンドは作成されません。
ブレンド サーフェスを作成してから 3 つのサーフェスを単一のサーフェスに結合する方法は、より優れたものです。結果のサーフェスは親サーフェスによくマッチしています。ブレンド サーフェスを作成するステップを省略すると最終的なサーフェスは、滑らかさを維持するために親サーフェスからずれる可能性があります。ずれの量は入力した 2 つの入力サーフェスが結合時に接線からどれくらい離れていたかによります。
小さすぎる隙間があると問題が生じます。この場合、この関数はブレンドを生成しますが、十分なスペースがないので結果として生じるサーフェスはその中にループができます。このループを避けるには、許容度のパラメータを隙間の距離より大きい値に設定します。
許容度を 0.0 にすると、許容度として使用する値は関数によって選択されます。
結合されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードからリレーショナル NURBSSet を抽出したときに設定されます。
makeIndependent <node> <nurbsId>
この関数は、従属サブオブジェクト (フィレット、オフセット、ブレンドなど) を取り、独立している(親に従属しない)かのように、それ自身の CV バリアントに返します。
独立して作成されるサブオブジェクトは、各サブオブジェクトの NURBSId プロパティによって識別されます。このプロパティは NURBSNode()
関数を使って NURBSSet をインスタンス化したとき、または getNURBSSet()
関数を使って既存の NURBS シーン ノードから リレーショナル NURBSSet を抽出したときに設定されます。
setViewApproximation <node> <surfaceApproximation> setRenderApproximation <node> <surfaceApproximation> setSurfaceDisplay <node> <nurbsdisplay>
これらのメソッドは、NURBS カーブや NURBS サーフェスのシーン ノードを操作します。これらは、NURBSSurfaceApproximation および NURBSDisplay のクラスのインスタンスを受け取り、近似または表示のコントロール インスタンス内で指定された NURBS シーン ノードの表示設定やカーブまたはサーフェスの近似設定を行います。
関連するメソッド
canConvertTo <node> <class>
これにより、指定されたノードが指定されたクラスに変換可能かどうかをテストできます。true
または false
を返します。たとえば、次のように使用されます。
if canConvertTo $foo NURBSSurface then ...
オブジェクトを変換できるクラスは汎用の編集可能形式のもので、Mesh、SplineShape、NURBSCurve、NURBSSurface などがあります。
convertTo <node> <class> -- mapped
この関数は、既存の特定の変換関数(convertToMesh()
、convertToSplineShape()
など)の標準形式です。たとえば、convertToSplineShape()
は次のように記述できます。
convertTo $circle01 SplineShape
変換がサポートされていない場合、関数は undefined
値を返します。
convertToNURBSSurface <node> -- mapped convertToNURBSCurve <node> -- mapped
これらの関数は、NURBS への変換をサポートしている基本的なジオメトリおよびシェイプのクラス(四角形、球、円、線など)に作用します。オブジェクトが変換をサポートしていない場合、この関数は undefined
を返します。
isPointSelected <node> <point_index>
指定したポイントが選択されている場合は true を返し、選択されていない場合は false を返します。
「ポイント」の定義は、オブジェクト タイプによって異なります。
メッシュの場合はメッシュの頂点、
NURBS オブジェクトの場合は頂点やコントロール ポイントになります。
スプラインの場合は、ノットとその入出力ベジェ ハンドルになります。スプラインには 3 倍のノットが含まれ、ノットが選択されると、そのベジェ ハンドルも選択されたと見なされます。したがって、正しいノット値をクエリーするには、<point_index>
に 3 を掛ける必要があります。たとえば、編集可能スプラインのノット 1 が選択され、ノット 2 が選択されていない場合、インデックス 1、2、3 では True が返されますが、インデックス 4、5、6 では False が返されます。
pointSelection <node> <point_index>
オブジェクトのサポートに応じて、選択された重み付きのポイントの浮動小数を返します。ほとんどのオブジェクト タイプは、ポイントが選択されている場合に 1.0 を返し、選択されていない場合は 0.0 を返します。現在、重み付きポイントの選択がサポートされているのは、NURBS オブジェクトのみです。
stopCreating <node>
このメソッドは現在のオブジェクトの作成を中止します (作成中の場合)。このメソッドは、主に NURBS オブジェクトが完全に作成されていることを確認する目的で使用されます。このメソッドは、オブジェクトの作成中には使用されません。NURBS シーン オブジェクトに対して返される NURBSSet は、オブジェクトが作成モードにある間は完全ではありません。このメソッドは、[作成] (Create)パネルでアクティブになっているオブジェクト作成用の各ボタンを非アクティブにします。