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
参照を指定することができます。
osd_limitsurface
は、サブディビジョンサーフェスとして指定したジオメトリのPointアトリビュートを評価して、その境界サーフェス上のアトリビュートの結果を返します。
Vertexアトリビュートに関しては、osd_limitsurfacevertex()
を使用してください。
失敗で考えられる原因:
-
ポリゴンやトポロジーを含まないジオメトリは、Open Subdivでは変換することができません。
-
入力ジオメトリ上にアトリビュートが存在しない。
-
アトリビュートのサイズ/タイプが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 |