Houdini 20.0 VEX

アトリビュートの読み込み

On this page

アトリビュートの有無をチェックしない関数

これらの関数は、指定したDetail/Primitive/Point/Vertexが存在していて、指定したアトリビュートがある場合にそのアトリビュート値を返し、そうでない場合にゼロ/空っぽの値を返します。

実際のゼロ/空っぽの値のアトリビュート値とアトリビュートが存在しない理由で関数が返したゼロ/空っぽの値を区別する必要があるのであれば、以下のチェックバージョンを使用してください。

attrib

ジオメトリからアトリビュートの値を読み込みます。

<type> attrib(<geometry>geometry, string attribclass, string name, int elemnum)

<type>[] attrib(<geometry>geometry, string attribclass, string name, int elemnum)

この汎用的な形式では、実行時のアトリビュートの“クラス”を指定することができます。 これは、異なるクラスで動作可能な汎用コードを記述するのに役立ちます。 読み込みたいアトリビュートのクラスが事前に分かっていれば、detail(), prim(), point(), vertex()を使用した方が高速です。

<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

ジオメトリから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、成功すればアトリビュートの値を返します。

prim

ジオメトリから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

ジオメトリから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

ジオメトリから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なのかどうかがコード内で問題にならないのであれば、上記のチェックなしバージョンを使用した方が、上書きする変数を作成する必要がないので若干楽です。

getattrib

有効性チェック付きでジオメトリからアトリビュート値を読み込みます。

<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

アトリビュートの値。

detailattrib

ジオメトリから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、成功するとアトリビュートの値。

primattrib

ジオメトリから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が設定されます。

pointattrib

ジオメトリから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

vertexattrib

ジオメトリから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);

VEX

言語

次のステップ

リファレンス