osd_limitsurface
は、サブディビジョンサーフェスとして指定されたジオメトリ内のPointアトリビュートを評価します。
頂点アトリビュートに関しては、osd_limitsurfacevertexを使用してください。
int osd_limitsurface(<geometry>geometry, string attrib_name, int patch_id, float u, float v, <type>&result)
int osd_limitsurface(<geometry>geometry, string attrib_name, int patch_id, float u, float v, float &result[])
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
&result
計算されたアトリビュート値は、この引数に渡された変数に格納されます。 この変数のタイプは、読み込むアトリビュートのタイプに合わせてください。
Returns
アトリビュートの計算に成功すれば1
、失敗すれば0
を返します。
失敗で考えられる原因:
-
ポリゴンやトポロジーを含まないジオメトリは、Open Subdivでは変換することができません。
-
入力ジオメトリ上にアトリビュートが存在しない。
-
アトリビュートのサイズ/タイプが
result
引数のVEXタイプに一致しない。
Examples ¶
サブディビジョンメッシュの境界サーフェス上にポイントクラウドを生成します。
int npatches = osd_patchcount(file); for (int patch = 0; patch < npatches; patch++) { for (int v = 0; v < 100; v++) { vector P; if (osd_limitsurface(file, "P", patch, nrandom(), nrandom(), P)) { int ptid = addpoint(geohandle, P); } } }
See also | |
subd |