On this page |
Attributes ¶
アトリビュート とは、頂点、ポイント、プリミティブ、オブジェクト上に記録される名前を付けた値のことです。例えば、ポイントカラー、位置、UV座標、スプラインの重み(W
)、法線がPointアトリビュートに記録されます。
-
Houdiniがエクスプレッションで利用可能なPointアトリビュートを設定します。例えば、ポイントのY座標(
PY
)に基づいてカラーを設定することが可能です。 -
手動で特定のアトリビュートを設定することができ、もしそのアトリビュートが存在すればHoudiniで使われます。例えば、ダイナミクスソルバとレンダリングエンジンは、ジオメトリ上に特定のアトリビュートが存在していれば、それを使います。
-
ユーザ独自のアトリビュートを設定してノードのエクスプレッション、スクリプト、エクスポーターなどで利用することができます。
サーフェスノードにアトリビュートを作成するノードを追加して、異なるタイプのアトリビュートを設定します。また、Attribute SOPでは任意アトリビュートを設定・作成することもできます。
ノードのジオメトリに適用されているアトリビュートを確認するには、ネットワークエディタでノードをクリックして Spreadsheet を選択し、そのノードのGeometry Spreadsheetを開きます。
ジオメトリコンポーネント ¶
一般的には、Attribute Createサーフェスノードを使って、Vertex、Point、Primitive(例:ポリゴンフェース)、Detail(ジオメトリ全体)にアトリビュートを作成・設定します。
Note
ジオメトリネットワーク内の2つ以上のノードを結合するとき、同じ名前のDetailアトリビュートが複数のノードに存在すれば、Houdiniは最初のノードの値を使います。もしアトリビュートのタイプが文字列なら、Houdiniは文字列を結合して、文字列配列にします。
アトリビュートの優先順位 ¶
同一ジオメトリ内の2つのコンポーネントが、どちらも同じ名前のアトリビュートが設定されているとき、そのアトリビュートの優先順位は、ジオメトリの中で“より低いレベル”のアトリビュートが使われます。つまり、以下の通りです:
-
Vertex アトリビュートが以下のアトリビュートを上書き:
-
Point アトリビュートが以下のアトリビュートを上書き:
-
Primitive アトリビュートが以下のアトリビュートを上書き:
-
Detail (ジオメトリ全体)アトリビュート:
-
-
-
アトリビュート値に基づいてノードを適用 ¶
ほとんどのサーフェスノードには、 Group フィールドがあり、そこに名前が付いたグループやパターンを入力することで、ノードを適用するコンポーネントを選択します。このフィールドでは、特別な構文を使ってアトリビュートの値からコンポーネントを選択することができます。例えば、Pointノードの Group フィールドに@foo>5
を入力すると、foo
アトリビュート値が5
よりも大きいポイントをすべて選択します。
詳細は、手動でグループを指定を参照してください。
辞書アトリビュート ¶
Houdini18.5以降のSOPジオメトリは、辞書アトリビュートに対応しています。 この辞書アトリビュートタイプは、各エレメント(ポイント、頂点、プリミティブ/フェース、ジオメトリ全体/Detail)でキー/値のペアのセットを保存することができます。辞書アトリビュートは以下の内容を保存するのに使用すると良いでしょう:
-
ゲームエンジンデータやHoudiniがネイティブで対応していない外部ジオメトリフォーマットといった複雑な“目に見えない”エレメントデータ。
-
Detail(ジオメトリ全体)上の辞書アトリビュートにはジオメトリに関するメタデータを格納すると良いでしょう。
-
デバッグ用途なら、生成されたノードのパラメータ値をエレメント別に格納するのも良いでしょう。 辞書Pointアトリビュート内にポイントとワイヤーとパラメータを使ってノードを表現することで、ノードネットワークをジオメトリとして保存することさえもできてしまいます。Attribute From Parms SOPを参照してください。
辞書配列 アトリビュートを作成することもできます。これは、アトリビュート値が単一辞書ではなくて辞書の 配列 になっています。
辞書のキーは文字列です。 辞書の値には、文字列、数値、配列、(入れ子化した)辞書を設定することができます。 辞書アトリビュートは実質的にJSONと同じデータモデルを持ちます 。 実際に、Geometry SpreadsheetなどのUIは、辞書アトリビュートの内容をJSONエンコード文字列のように表示します。
現在のところ、辞書アトリビュートは主にPython、VEX、VOPsでサポートされています。 Attribute WrangleでVEXスニペットを使用するか、または、Python SOPを使用することでジオメトリ上の辞書アトリビュートを操作することができます。 他にも、パラメータエクスプレッションでキー値を読み込む簡単なサポートもあります。
言語 |
対応 |
---|---|
VEX/VOPs |
VEXでの |
Python |
|
エクスプレッション |
Tip
Attribute Createノードは、空っぽの辞書アトリビュートのみを作成します。 現在のところ、ジオメトリネットワーク内で辞書値を設定する最も良い方法は、Python SOPまたはAttribute Wrangleを使用することです。
Intrinsic(組み込み)アトリビュート ¶
Intrinsic(組み込み)アトリビュート とは、まるでそれが通常のアトリビュートであるかのようにアクセス可能なジオメトリから派生して 計算された値 のことです。
Intrinsic(組み込み)アトリビュートの例
Detail |
|
ジオメトリ内のポイントの数。 |
Detail/primitive |
|
ジオメトリの境界ボックス。 |
Primitive |
|
ジオメトリの表面積。 |
Primitive |
|
プリミティブに使用されているメモリ使用量。 |
To... | Do this |
---|---|
利用可能なIntrinsic(組み込み)アトリビュートを調べる |
|
Intrinsic(組み込み)アトリビュートを使用する |
|
Tip
Intrinsic(組み込み)という名前の意に反して、実際にHoudiniやMantraに一部の内部設定を変更させる“Intrinsic(組み込み)”アトリビュートをいくつか書き出すことができます。
例えば、パックプリミティブに対してintrinsic:unexpandedfilename
Intrinsic(組み込み)アトリビュートを設定することができます。
Tip
intrinsic:bounds
やintrinsic:packedbounds
などの境界ボックス系Intrinsic値は、(xmin, xmax, ymin, ymax, zmin, zmax)の順番で返されます。
数値精度の変換 ¶
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でない場合、すべてのポイントがジオメトリに繋がっていても、それらのポイントがスプライトとしてレンダリングされるようになります。 従来だと、繋がっていないポイントのみがレンダリングされます。 現在のところ、これはガイドジオメトリでは無視されます。 |
|
int |
このDetailアトリビュートが0でない場合、繋がっていないポイントは、レンダープロパティでもスプライトでもなく球として描画されます。
|
|
int |
このDetailアトリビュートが0でない場合、ジオメトリはX-Rayモードで描画されます(ジオメトリが他のジオメトリで隠れている時であっても可視になります)。 |
|
float |
ジオメトリに何も法線がない時に法線の生成に使用されるカスプ(尖)角度を制御します。 180は、完全に滑らかなポイント法線を生成します。 |
|
string |
スプライト用のテクスチャを指定します。
これは、繋がっていないポイント、または、 |
|
int |
これが1の場合、スプライトを描画する時にブレンドが有効になります。 これが0の場合、デプスソートもブレンドも行なわれないので、スプライトの描画パフォーマンスが大幅に良くなります。 Vellum Grainなど不透明なスプライトでは、ブレンドを無効にするのが良いです。 |
|
float |
|
以下のDetailアトリビュートは、ビューポートがボリュームプリミティブをレンダリングする方法を制御します。
ビューポートは、ボリュームプリミティブをフォグ、Height Field、アイソサーフェス(符号付き距離フィールド)として表示することができます。
volumevisualmode
Intrinsic Primitiveアトリビュートを読み込むことで、このプロパティを照会することができます。
このセクションに載せているDetailアトリビュートは、フォグボリュームに適用され、いくつかのアトリビュートはHeight Fieldのビューポート表示にも影響を与えます。
ボリュームのヴィジュアライゼーションには、以下の4つのコンポーネントを利用することができます。
|
フォグに対して、このコンポーネントには煙の光学的な厚みを格納します。 Height Fieldに対して、このメインボリュームには、各ボクセルの標高を格納します。 |
|
カラーフィールド。 このコンポーネントは、フォグ(煙に色を付けます)とHeight Field(地形にテクスチャを張ります)のどちらにも使用することができます。 |
|
フォグに対して、このコンポーネントには発光強度(または、内部の白熱)を格納します。
Height Fieldに対して、このコンポーネントはビジュアライゼーションステンシルのように動作します。
つまり、ビューポートは、 |
|
このコンポーネントはフォグボリュームで使用され、内部の発光に色を付けることができます。 |
以下のセクションのアトリビュート名の中の*
には、上記の4つの文字列のどれかを含めることができます。
Volume Visualization SOPを使用することで、これらのアトリビュートを設定または修正することができます。
|
string |
関連コンポーネントのデータを含んだボリュームの名前。 |
|
vector2 |
0..1範囲にリマップされるボリューム値の範囲。 |
|
string |
このアトリビュートには、関連ボリューム値をリマップするランプの文字列表現を含めてください。 何も文字列が存在しなかった場合、値のリマップにランプは使用されません。 |
|
int |
このアトリビュートは、リマップされるボリューム値にランプを適用する方法を示します。
|
|
int |
このアトリビュートは、ボリュームのビジュアライゼーション解像度を制限します。 ボリュームの解像度が大きい場合、レンダリング前にこのサイズにリサンプリングされます。 |
|
float |
このアトリビュートは、発光強度の乗数として作用します。 値が大きいほど、内部の白熱(例えば、炎の火炎)が明るくなります。 |
|
float |
すべての光源からの自己シャドウの強度を制御します。 このアトリビュート値が大きいほど、自己シャドウが暗くなります。 |
|
float |
環境光源からの自己シャドウの強度を制御します。 Note デフォルトのヘッドライトは、フォグボリュームの環境光源として扱われます。 このアトリビュートのデフォルト値は、ビューポートのDisplay Optionsの Ambient Occlusion で設定します。 |
|
float |
環境光源のシェーディングをする際のオクルージョンマップテクスチャのサイズを制御します。 値が大きいほど(最大1まで)シェーディングが遅くなりますが、高品質な結果が生成されます。 |
|
float |
環境光源からの自己シャドウを計算する際のDensityテクスチャのサンプリング頻度を指定します。 値が小さいほど(最小1なで)シェーディングが遅くなりますが、高品質な結果が生成されます。 |
|
vector |
煙が落とす影の色を制御します。 これらの値の補数は、光の各カラー(赤、緑、青)の補助Density乗数として作用します。 |
ビューポートは、フォグボリューム内の光の散乱を追加で近似処理することができます。 この機能は実験段階で、将来のバージョンのHoudiniで変更および削除される可能性があります。
|
float |
ボリュームが(光を散乱させるのとは対照的に)光を吸収する割合を指定します。 1の値は、散乱なしを意味します。 0の値は、煙に作用するすべての光が散乱することを意味します。 |
|
int |
散乱は反復処理によって近似処理され、このアトリビュートには、細分化を実行する反復回数を格納します。 この回数が多いほど精度の高い結果が生成されますが、計算時間もかかります。 |
フォグボリュームを扱う場合、代わりにビューポートがモーションベクトルまたは法線を描画するようにさせることができます。 この挙動は、Detailアトリビュートからも制御することができます。
|
int |
このアトリビュートがゼロでない場合、ビューポートはフォグに対してスクリーン空間のモーションベクトルを描画します。
|
|
int |
このアトリビュートがゼロでない場合、ビューポートはフォグに対してスクリーン空間の法線を描画します。
|
|
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 |