既存の NURBS オブジェクトの修正

このクラスは、シーンに配置された NURBS オブジェクトのプロパティの修正に使用することもできます。3ds Max NURBS オブジェクトにアクセスするには、データを NURBSSet にコピーする必要があります。これには、ノード getNURBSSet() メソッドを使用します。その後、メソッド NURBSSet を使用してオブジェクトにアクセスすることができます。

たとえば、次のサンプル コードは現在の選択セット内の最初のノードから、最初の NURBS サブオブジェクトを取ります。その後、ブレンド サーフェスであるかどうか調べて、ブレンド サーフェスであれば張力パラメータの 1 つを調整します。

-- get the first node in selection
node = selection[1];
-- make sure creation has been completed on the node
stopCreating node
-- get the nurbs set for it
getSet = getNURBSSet node #relational
-- extract the first obj, check class & set tension
obj = getObject getSet 1
if classOf obj == NURBSBlendSurface then obj.tension1 = 2.0

この方法で実施できる類の修正は、NURBS シーン オブジェクトの構造を変えないパラメータおよびプロパティの変更に限られます。点、CV 位置、CV 重み、従属オブジェクト パラメータ(オフセットおよび押し出し量など)などを修正することができます。オブジェクトの追加、削除、CV 数、ノット数、親カーブ数の変更などは行うことができません。このような構造的な変更を行うには、「NURBSSet: 値」、「 addNURBSSet() 」、「 breakSurface() 」で定義されている appendObject() setObject() removeObject() 関数、および「NURBS ノードのプロパティおよびメソッド」で定義されている同様の関数を使用します。

stopCreating() メソッドは、指定のノードが作成されたかどうかを確認するときに使用します。このメソッドは、主に NURBS オブジェクトが完全に作成されていることを確認する目的で使用されます。このメソッドは、オブジェクトの作成中には使用されません。NURBS シーン オブジェクトに対して返される NURBSSet は、オブジェクトが作成モードにある間は完全ではありません。また、このメソッドは、[作成](Create)パネルでアクティブになっているオブジェクト作成用の各ボタンを非アクティブにします。

この他にも NURBS シーン オブジェクトの修正に使用できるグローバル関数があります。これらの関数は、「NURBS ノードのプロパティおよびメソッド」で説明されています。たとえば、関数 breakSurface() を使って、既存の NURBS サーフェスを取得し、2 つのサーフェスに分割することができます。

非リレーショナル NURBSSets

非リレーショナル モードで getNURBSSet() 関数を使用することもできますが、ブレンド、オフセット、ロフトなどのすべての従属サーフェスが独立したカーブやサーフェイスとして表され、NURBSSet の派生元のシーン オブジェクトに「ライブで」接続し直すことができない、NURBSSet の「フラット化」バージョンを取得するためには、 #relational 引数を指定しないようにします。これを使用して、書き出しスクリプトのために NURBS シーン オブジェクトの簡易バージョンを取得することができます。たとえば、出力先システムでリレーショナル オブジェクトがサポートされていない場合などです。また、その他のシーン オブジェクトを作成したり、変更あるいはセットに追加して NURBSNode() 関数で再初期化するための原型として、この方法で派生された NURBSet を使用することもできます。