On this page |
アトリビュートの有無をチェックしない関数 ¶
これらの関数は、指定したDetail/Primitive/Point/Vertexが存在していて、指定したアトリビュートがある場合にそのアトリビュート値を返し、そうでない場合にゼロ/空っぽの値を返します。
実際のゼロ/空っぽの値のアトリビュート値とアトリビュートが存在しない理由で関数が返したゼロ/空っぽの値を区別する必要があるのであれば、以下のチェックバージョンを使用してください。
ジオメトリからアトリビュートの値を読み込みます。
<type> attrib(<geometry>geometry, string attribclass, string name, int elemnum)
<type>[] attrib(<geometry>geometry, string attribclass, string name, int elemnum)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribclass
detail
(またはglobal
), point
, prim
, vertex
のどれか。
primgroup
, pointgroup
, vertexgroup
を使用することで、グループから読み込むこともできます。
name
読み込み先のアトリビュート、グループ、Intrinsicの名前。
elemnum
読み込み先のエレメント番号(例えば、ポイント番号、プリミティブ番号、頂点番号)。 これはDetailアトリビュートでは無視されます。 vertexindex()を使用することで、プリミティブ/ポイントのペアを頂点番号に変換することができます。
Returns
アトリビュートが存在しなければゼロ/空っぽの値。アトリビュートが存在しているかどうかをチェックしたいのであれば、getattrib()を使用します。
ジオメトリからDetailアトリビュートの値を読み込みます。
<type> detail(<geometry>geometry, string attribute_name, int ignored=0)
<type>[] detail(<geometry>geometry, string attribute_name, int ignored=0)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
ignored
最後の引数が常に無視されます。 これは、引数を変更することなく名前を変更するだけで、Prim/Point/Vertexコール(それぞれエレメント番号引数を持っています)をDetailコールに変更できるようにするためにあります。
Returns
アトリビュートのインポートに失敗すれば0
、成功すればアトリビュートの値を返します。
ジオメトリからPrimitiveアトリビュートの値を読み込みます。
<type> prim(<geometry>geometry, string attribute_name, int primnumber)
<type>[] prim(<geometry>geometry, string attribute_name, int primnumber)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
primnumber
アトリビュートを読み込むプリミティブ番号。
Returns
指定したプリミティブ番号の指定したアトリビュートの値。アトリビュートまたはプリミティブが存在しなければ0
。
ジオメトリからPointアトリビュートの値を読み込みます。
<type> point(<geometry>geometry, string attribute_name, int pointnumber)
<type>[] point(<geometry>geometry, string attribute_name, int pointnumber)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
pointnumber
アトリビュートを読み込むポイント番号。
Returns
指定したポイント番号の指定したアトリビュートの値。アトリビュートまたはポイントが存在しなければ0
。
ジオメトリからVertexアトリビュートの値を読み込みます。
<type> vertex(<geometry>geometry, string attribute_name, int linear_vertex_index)
<type>[] vertex(<geometry>geometry, string attribute_name, int linear_vertex_index)
線形インデックスを使って、すべての頂点のリスト内の頂点を指定します。
<type> vertex(<geometry>geometry, string attribute_name, int prim_num, int vertex_num)
<type>[] vertex(<geometry>geometry, string attribute_name, int prim_num, int vertex_num)
プリミティブ番号とオフセットを使って、そのプリミティブ上の頂点のリスト内の頂点を指定します。
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
Returns
指定した頂点の指定したアトリビュートの値。アトリビュートまたは頂点が存在しなければ0
。
Tip
アトリビュートの設定方法によってアトリビュート値の読み込みにどのような違いがあるのかの詳細は、VEXの記述でのアトリビュートの設定方法を参照してください。
アトリビュートの有無をチェックする関数 ¶
これらの関数は、さらに引数を受け取ります。これらの関数では、この引数に渡された整数変数に読み込みが成功すれば1
を、失敗すれば0
を上書きします。
これによって、アトリビュート値が実際にゼロだった時と読み込みに失敗した時のゼロを区別することができます。
アトリビュートが存在するのかどうか、実際に0
なのかどうかがコード内で問題にならないのであれば、上記のチェックなしバージョンを使用した方が、上書きする変数を作成する必要がないので若干楽です。
有効性チェック付きでジオメトリからアトリビュート値を読み込みます。
<type> getattrib(<geometry>geometry, string attribclass, string attribute_name, int elemnum, int &success)
<type>[] getattrib(<geometry>geometry, string attribclass, string attribute_name, int elemnum, int &success)
この汎用的な形式では、実行時のアトリビュートの“クラス”を指定することができます。 これは、異なるクラスで動作可能な汎用コードを記述するのに役立ちます。 読み込みたいアトリビュートのクラスが事前に分かっていれば、detailattrib(), primattrib(), pointattrib(), vertexattrib()を使用した方が高速です。
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribclass
detail
(またはglobal
), point
, prim
, vertex
のどれか。
primgroup
, pointgroup
, vertexgroup
を使用することで、グループから読み込むこともできます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
elemnum
アトリビュート値を読み込むポイント番号/プリミティブ番号/頂点番号。Detailアトリビュートに関しては、ここでは0
を使用します(Detailアトリビュートでは引数は無視されます)。
プリミティブ上のプリミティブ番号や頂点番号によって線形頂点番号を取得するには、primvertex()関数を使用します。
success
指定したアトリビュートが存在して読み込み可能であれば、この関数は、この変数に1
を設定します。それ以外の場合は、この変数に0
を設定します。
Returns
アトリビュートの値。
ジオメトリからDetailアトリビュートの値を読み込みます。
<type> detailattrib(<geometry>geometry, string attribute_name, int ignored, int &success)
<type>[] detailattrib(<geometry>geometry, string attribute_name, int ignored, int &success)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
ignored
この引数には0
を渡します。
success
この関数は、アトリビュートの読み込みに成功すると1
、失敗すると0
をこの変数に設定します。
Returns
アトリビュートの読み込みに失敗すると0
、成功するとアトリビュートの値。
ジオメトリからPrimitiveアトリビュートの値を読み込み、成功フラグを出力します。
<type> primattrib(<geometry>geometry, string attribute_name, int prim, int &success)
<type>[] primattrib(<geometry>geometry, string attribute_name, int prim, int &success)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
prim
プリミティブ番号。
&success
読み込みに成功すれば1
、エラー(例えば、アトリビュートまたはプリミティブ番号が存在しない)になれば0
が設定されます。
ジオメトリからPointアトリビュート値を読み込んで、成功/失敗のフラグを出力します。
<type> pointattrib(<geometry>geometry, string attribute_name, int pointnumber, int &success)
<type>[] pointattrib(<geometry>geometry, string attribute_name, int pointnumber, int &success)
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
&success
この関数は、アトリビュートが存在して読み込みに成功したら1
、失敗したら0
でこの変数を上書きします。
Returns
指定したポイント番号上の指定したアトリビュートの値。アトリビュートまたはポイントが存在しなければ0
。
ジオメトリからVertexアトリビュートの値を読み込みます。
<type> vertexattrib(<geometry>geometry, string attribute_name, int linear_vertex_index, int &success)
<type>[] vertexattrib(<geometry>geometry, string attribute_name, int linear_vertex_index, int &success)
vertex()とは違って、この関数には、プリミティブ番号とプリミティブ頂点番号を受け取るバージョンがありません。 プリミティブ番号とプリミティブ頂点番号を指定したいのであれば、vertexindex()を使用することで、それらを線形インデックスに変換することができます。
<geometry>
ノード(例えばWrangle SOP)のコンテキスト内で実行する時は、この引数にジオメトリの読み込み元の入力番号(0から始まります)を意味する整数を指定することができます。
別の方法として、読み込み元のジオメトリファイル(例えば、.bgeo
)を示した文字列を指定することができます。
Houdini内で実行する時は、この引数にop:/path/to/sop
参照を指定することができます。
attribute_name
読み込むアトリビュート(またはIntrinsic)の名前。
linear_vertex_index
すべての頂点のリスト内の線形インデックス。 プリミティブ番号とプリミティブ頂点番号を指定したいのであれば、vertexindex()を使用することで、それらを線形インデックスに変換することができます。
success
この関数は、アトリビュートが存在し読み込みに成功した場合に1
、それ以外の場合に0
でこの変数を上書きします。
Returns
指定したポイント番号の指定したアトリビュートの値。
Examples ¶
// "uv"Detailアトリビュート値を取得します。 vector uv = detail("defgeo.bgeo", "uv");
// "/obj/geo1/color1"パスで指定されたSOPのプリミティブ番号7の"Cd"アトリビュートの値を取得します(Houdiniのみ)。 vector clr = prim("op:/obj/geo1/color1", "Cd", 7);
// "defgeo.bgeo"内のポイント番号3の位置を取得します。 vector pos = point("defgeo.bgeo", "P", 3);
// defgeo.bgeoファイル内のプリミティブ番号3の頂点番号2の"uv"アトリビュートの値を取得します。 vector uv = vertex("defgeo.bgeo", "uv", 3, 2);