On this page |
Attributes
アトリビュート とは、頂点、ポイント、プリミティブ、オブジェクト上に記録される名前を付けた値のことです。例えば、ポイントカラー、位置、UV座標、スプラインの重み(W
)、法線がPointアトリビュートに記録されます。
-
Houdiniがエクスプレッションで利用可能なPointアトリビュートを設定します。例えば、ポイントのY座標(
PY
)に基づいてカラーを設定することが可能です。 -
手動で設定する特定のアトリビュートで、もしそれが存在すれば、Houdiniで使われます。例えば、ダイナミクスソルバとレンダリングエンジンは、ジオメトリ上に特定のアトリビュートが存在していれば、それを使います。
-
ユーザー独自のアトリビュートを設定してノードのエクスプレッション、スクリプト、エクスポーターなどで利用することができます。
サーフェスノードにアトリビュートを作成するノードを追加して、異なるタイプのアトリビュートを設定します。また、Attribute SOPでは任意アトリビュートを設定・作成することもできます。
ノードのジオメトリに適用されているアトリビュートを確認するには、ネットワークエディタのノードのタイル上でクリックして、 Spreadsheet を選択してGeometry Spreadsheetを開きます。
パーティクルにもアトリビュートがあります。ジオメトリとパーティクルシステムが相互作用するときには、このアトリビュートは、とても重要になってきます。例えば、ジオメトリから放出されるパーティクルは、デフォルトではそのジオメトリのPointアトリビュートを引き継ぎます。Attribute Transfer POPによってサーフェスとパーティクル間でアトリビュートを転送することで面白い効果を作ることができます。
ジオメトリコンポーネント
一般的には、Attribute Createサーフェスノードを使って、Vertex、Point、Primitive(例:ポリゴンフェース)、Detail(ジオメトリ全体)にアトリビュートを作成・設定します。
Note
ジオメトリネットワーク内の2つ以上のノードを結合するとき、同じ名前のDetailアトリビュートが複数のノードに存在すれば、Houdiniは最初のノードの値を使います。もしアトリビュートのタイプが文字列なら、Houdiniは文字列を結合して、文字列配列にします。
アトリビュートの優先順位
同一ジオメトリ内の2つのコンポーネントが、どちらも同じ名前のアトリビュートが設定されているとき、そのアトリビュートの優先順位は、ジオメトリの中で"より低いレベル"のアトリビュートが使われます。つまり、以下の通りです:
-
Vertex アトリビュートが以下のアトリビュートを上書き
-
Point アトリビュートが以下のアトリビュートを上書き
-
Primitive アトリビュートが以下のアトリビュートを上書き
-
Detail (ジオメトリ全体)アトリビュート
-
-
-
アトリビュート値に基づいてノードを適用
ほとんどのサーフェスノードには、 Group フィールドがあり、そこに名前を付けたグループやパターンを入力することで、ノードを適用するコンポーネントを選択します。このフィールドでは、特別な構文を使ってアトリビュートの値からコンポーネントを選択することができます。例えば、Pointノードの Group フィールドに@foo>5
を入力すると、foo
アトリビュート値が5
よりも大きいポイントをすべて選択します。
詳細は、手動でグループを指定を参照してください。
Intrinsic(組み込み)アトリビュート
Intrinsic(組み込み)アトリビュート とは、まるでそれが通常のアトリビュートであるかのようにアクセス可能なジオメトリから派生して 計算された値 のことです。例:
Intrinsic(組み込み)アトリビュートの例
Detail |
|
ジオメトリ内のポイントの数。 |
Detail/primitive |
|
ジオメトリの境界ボックス。 |
Primitive |
|
ジオメトリの表面積。 |
Primitive |
|
プリミティブに使用されているメモリ使用量。 |
To... | Do this |
---|---|
利用可能なIntrinsic(組み込み)アトリビュートを調べる |
|
Intrinsic(組み込み)アトリビュートを使用する |
|
Tip
Intrinsic(組み込み)という名前の意に反して、実際にHoudiniやMantraに一部の内部設定を変更させる"Intrinsic(組み込み)"アトリビュートをいくつか書き出すことができます。
例えば、パックプリミティブに対してintrinsic:unexpandedfilename
Intrinsic(組み込み)アトリビュートを設定することができます。
数値精度の変換
Attribute Createノードで作成したアトリビュートでは数値精度を選択することができます。また、Attrib Castノードを使うと、 アトリビュートをより高い精度(メモリを多く消費します)、より低い精度(メモリを節約)に変換することができます。
詳細は、Attrib Castを参照してください。
インデックスや要素数の取得に使用する変数
以下にVEXスニペットで使用できる"疑似アトリビュート"を載せています。 これらのアトリビュートは、現在処理されているエレメントの番号(例えば、ポイント番号)、ジオメトリ/リスト内のエレメントの総数を表現します。 詳細は、VEXスニペットでインデックスや要素数の取得に使用する変数を参照してください。
@elemnum
, @ptnum
, @primnum
, @vtxnum
VEXスニペットを実行している時の現行エレメントの番号を表現します。
@numelem
, @numpt
, @numprim
, @numvtx
VEXスニペットを実行している時のジオメトリ/リスト内のエレメントの総数を表現します。
よく使うアトリビュート
ノードのタイプによって、存在していれば(いくつかの場合では、そのアトリビュートが存在している必要がある)使用される特定のアトリビュートがあります。 そのようなノードは、処理の一部としてアトリビュートを作成/設定します。 ノードが使用/設定するアトリビュートについては、個々のノードのドキュメントを参照してください。
以下では、一般的に複数のノードタイプによって読み/書きされるアトリビュートをいくつか載せています。
|
vector |
ポイントの位置。ビューポートでは、これを使用して3D空間にモデルのポイントを配置します。このアトリビュートを上書きすることで、ポイントを動かすことができます。 |
|
vector |
法線方向。このアトリビュートを上書きすることで、法線を変更することができます。 |
|
vector |
Velocity(速度ベクトル)。 レンダラーは、このアトリビュートを利用して、モーションブラーを追加すべき箇所を判断します。 このアトリビュートは自動的に計算されませんが、いくつかのノード、特にパーティクル系のDOPsは、このアトリビュートを設定/使用することができます。 Trail SOPを使用することで、Velocityをポイントに追加することができます。 |
|
int |
固有のエレメントID。これはエレメント番号(例えば、ポイント番号)と同じではありません。 これは、例えば、ポイント番号が変わっても(ポイント数が変化すると起こり得ます)そのポイントを追跡できるようにポイントに割り当てられるアトリビュートです。 パーティクル系のDOPsでは、このアトリビュートをよく設定/使用しています。 |
|
string |
これは、ボリュームやパックプリミティブなどのプリミティブを名前によってコードから検索できるようにするための値です。 一部のノードでは、このアトリビュートを設定/読み込みます。 |
|
int |
ジオメトリをピースに分解するノードでは、どのポリゴンフェースが同じピースに属しているのか判断できるように、このアトリビュートを設定することが多いです。
同じピースに属するフェースは、同じ値の |
|
float |
均一スケール係数。 これは、場所によって使われ方が異なります。 パーティクル/ポイントのレンダリングに関しては、これは、レンダリング時のパーティクル/ポイントのサイズ(ワールド空間単位)を制御します。 インスタンスに関しては、これを利用することで、インスタンスジオメトリを均一にスケールさせることができます。 |
|
vector |
|
|
float |
開いたカーブをレンダリングする時、レンダリング時に、この線幅(ワールド空間単位)が設定されます。 このアトリビュートが存在しなかった場合、Mantraは、開いたカーブを太いリボンではなく、細い線としてレンダリングします。 |
|
float |
詳細レベル。これはインスタンスに使用することができます。 |
|
vector |
スプライト画像を使ってパーティクルを表示させる時、 |
|
float |
スプライト画像を使ってパーティクルを表示させる時、(カメラ角度を基準に)スプライトの回転を度で加えます。 |
|
int |
このDetailアトリビュートが1の場合、ジオメトリがビューポート内で常にワイヤーフレーム表示として表示されます。 このDetailアトリビュートが-1の場合、ジオメトリがビューポート内で常にシェーディング表示として表示されます。 従来だとワイヤーフレームのみで描画されるガイドジオメトリに関しては、これによって、ビューポートがどのシェーディングモードだろうとシェーディング表示として表示させることができます。 |
|
int |
このDetailアトリビュートが0でない場合、ジオメトリは常にライティングなしで表示されます。 現在のところ、これはガイドジオメトリでは無視されます。 |
|
int |
このDetailアトリビュートが0でない場合、すべてのポイントがジオメトリに繋がっていても、それらのポイントがスプライトとしてレンダリングされるようになります。 従来だと、繋がっていないポイントのみがレンダリングされます。 現在のところ、これはガイドジオメトリでは無視されます。 |
|
float |
ジオメトリに何も法線がない時に法線の生成に使用されるカスプ(尖)角度を制御します。 180は、完全に滑らかなポイント法線を生成します。 |
|
vector |
現行ポイントの |
||||||||||||||||
|
vector |
各ポイントのRest Position(静止位置)を含んだ昔から使われてきたアトリビュート名で、色々なノードで使用されています。
一部のシェーダでは、 |
||||||||||||||||
|
vector |
現行ポイントの |
||||||||||||||||
|
vector |
パーティクルのローカル空間のUpベクトルを表現します。 これは、ジオメトリをポイント上にインスタンス化する際に使用されます。 このアトリビュートを上書きすることで、パーティクルの向きを変更することができます。 |
||||||||||||||||
|
vector |
廃止。古いPOPsで使用されていました。
新しいDOPパーティクルノードでは、代わりに |
||||||||||||||||
|
vector4 |
廃止。パーティクルの以前の位置を格納するために古いPOPsで使用されていました。 |
||||||||||||||||
|
vector4 |
パーティクルのクォータニオンによる向き。
これは、向きを完全に指定することができます。
それに対して、 |
||||||||||||||||
|
vector4 |
ジオメトリをポイント上にインスタンス化する際に、他のすべてのアトリビュートが適用された後に使用される追加のオフセットクォータニオン。 |
||||||||||||||||
|
int |
最も大きいパーティクルIDを格納したDetailアトリビュートで、これによってHoudiniは次の新しいパーティクルIDを効率的に作成することができます。 |
||||||||||||||||
|
int |
パーティクルの状態に関する色々な情報(例えば、パーティクルが生存しているかどうか、停止しているかどうか、前フレームで衝突したかどうかなど)を暗号化したビットフィールド。 色々なパーティクル系のDOPsがこのアトリビュートを読み書きします。
|
ほとんどのシェーダは、オーバーライドアトリビュートを使用して、そのアトリビュートを持ったエレメントのシェーディング方法を変更します。
|
vector |
ディフューズカラーオーバーライド。ビューポートは、これを使用してOpenGLジオメトリにカラーを付けます。 |
|
float |
アルファ透明度オーバーライド。ビューポートは、これを使用してOpenGLジオメトリのアルファを設定します。 |
|
vector |
スペキュラーカラーオーバーライド。 |
|
vector |
反射カラーオーバーライド。 |
|
vector |
透過カラーオーバーライド。 |
|
vector |
発光カラーオーバーライド。 |
|
float |
粗さオーバーライド。 |
|
float |
フレネル係数オーバーライド。 |
|
float |
シャドウ強度オーバーライド。 |
|
float |
シャドウバイアスオーバーライド。 |
|
vector |
ポイント/頂点のUV座標。 このベクトルの最初の2つのコンポーネントには、現在のUとVの座標が格納されます。 Note
|
|
string |
このプリミティブのシェーディングに使用するマテリアルのノードパス。 これは、オブジェクトのマテリアルを上書きします。 |
|
string |
現行ポイントの |
|
string |
Detail/Primitiveアトリビュート。RenderManシェーダの名前。 |
See also |