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
よりも大きいポイントをすべて選択します。
詳細は、手動でグループを指定を参照してください。
辞書アトリビュート
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(組み込み)アトリビュートを設定することができます。
数値精度の変換
Attribute Createノードで作成したアトリビュートでは数値精度を選択することができます。また、
Attrib Castノードを使うと、 アトリビュートをより高い精度(メモリを多く消費します)、より低い精度(メモリを節約)に変換することができます。
詳細は、Attrib Castを参照してください。
インデックスや要素数の取得に使用する変数
以下にVEXスニペットで使用できる“疑似アトリビュート”を載せています。 これらのアトリビュートは、現在処理されているエレメントの番号(例えば、ポイント番号)、ジオメトリ/リスト内のエレメントの総数を表現します。 詳細は、VEXスニペットでインデックスや要素数の取得に使用する変数を参照してください。
@elemnum
, @ptnum
, @primnum
, @vtxnum
VEXスニペットを実行している時の現行エレメントの番号を表現します。
@numelem
, @numpt
, @numprim
, @numvtx
VEXスニペットを実行している時のジオメトリ/リスト内のエレメントの総数を表現します。
よく使うアトリビュート
ノードのタイプによって、存在していれば(いくつかの場合では、そのアトリビュートが存在している必要がある)使用される特定のアトリビュートがあります。 そのようなノードは、処理の一部としてアトリビュートを作成/設定します。 ノードが使用/設定するアトリビュートについては、個々のノードのドキュメントを参照してください。
以下では、一般的に複数のノードタイプによって読み/書きされるアトリビュートをいくつか載せています。
|
vector |
ポイントの位置。ビューポートでは、これを使用して3D空間にモデルのポイントを配置します。このアトリビュートを上書きすることで、ポイントを動かすことができます。 |
|
vector |
法線方向。このアトリビュートを上書きすることで、法線を変更することができます。 |
|
vector |
Velocity(速度ベクトル)。
レンダラーは、このアトリビュートを利用して、モーションブラーを追加すべき箇所を判断します。
このアトリビュートは自動的に計算されませんが、いくつかのノード、特にパーティクル系のDOPsは、このアトリビュートを設定/使用することができます。
|
|
int |
固有のエレメントID。これはエレメント番号(例えば、ポイント番号)と同じではありません。 これは、例えば、ポイント番号が変わっても(ポイント数が変化すると起こり得ます)そのポイントを追跡できるようにポイントに割り当てられるアトリビュートです。 パーティクル系のDOPsでは、このアトリビュートをよく設定/使用しています。 |
|
string |
これは、ボリュームやパックプリミティブなどのプリミティブを名前によってコードから検索できるようにするための値です。 一部のノードでは、このアトリビュートを設定/読み込みます。 |
|
int |
ジオメトリをピースに分解するノードでは、どのポリゴンフェースが同じピースに属しているのか判断できるように、このアトリビュートを設定することが多いです。
同じピースに属するフェースは、同じ値の |
|
float |
均一スケール係数。 これは、場所によって使われ方が異なります。 パーティクル/ポイントのレンダリングに関しては、これは、レンダリング時のパーティクル/ポイントのサイズ(ワールド空間単位)を制御します。 インスタンスに関しては、これを利用することで、インスタンスジオメトリを均一にスケールさせることができます。 |
|
vector |
|
|
float |
開いたカーブをレンダリングする時、レンダリング時に、この線幅(ワールド空間単位)が設定されます。 このアトリビュートが存在しなかった場合、Mantraは、開いたカーブを太いリボンではなく、細い線としてレンダリングします。 |
|
float |
詳細レベル。これはインスタンスに使用することができます。 |
|
vector |
スプライト画像を使ってパーティクルを表示させる時、 |
|
float |
スプライト画像を使ってパーティクルを表示させる時、(カメラ角度を基準に)スプライトの回転を度で加えます。 |
|
int |
このDetailアトリビュートが1の場合、ジオメトリがビューポート内で常にワイヤーフレーム表示として表示されます。 このDetailアトリビュートが-1の場合、ジオメトリがビューポート内で常にシェーディング表示として表示されます。 従来だとワイヤーフレームのみで描画されるガイドジオメトリに関しては、これによって、ビューポートがどのシェーディングモードだろうとシェーディング表示として表示させることができます。 |
|
int |
このDetailアトリビュートが0でない場合、ジオメトリは常にライティングなしで表示されます。 現在のところ、これはガイドジオメトリでは無視されます。 |
|
int |
このDetailアトリビュートが0でない場合、すべてのポイントがジオメトリに繋がっていても、それらのポイントがスプライトとしてレンダリングされるようになります。 従来だと、繋がっていないポイントのみがレンダリングされます。 現在のところ、これはガイドジオメトリでは無視されます。 |
|
int |
If this detail attribute is not 0, unconnected points will be drawn as spheres rather than as the render properties or as sprites. The |
|
int |
If this detail attribute is not 0, the geometry will be drawn in X-Ray mode (visible even when it is hidden behind other geometry). |
|
float |
ジオメトリに何も法線がない時に法線の生成に使用されるカスプ(尖)角度を制御します。 180は、完全に滑らかなポイント法線を生成します。 |
|
string |
Specifies a texture for sprites. This is only valid on unconnected points, or if |
|
int |
Enable blending when drawing sprites if 1. When 0, no depth sorting or blending occurs, greatly increasing draw performance of sprites. Disabling blending is good for opaque sprites, like vellum grains. |
|
float |
When |
The following detail attributes control how the viewport renders volume
primitives. The viewport can display these primitives as fog, height fields, or
isosurfaces (signed distance fields). To query this property, you can read the
volumevisualmode
primitive intrinsic attribute. The detail attributes listed
in this section apply to fog volumes and some of them also affect viewport
display of height fields.
A volume visualization set can have the following 4 components.
|
For fog, this component contains the optical thickness of the smoke. With height fields, this main volume should store the elevation at each voxel. |
|
The color field. This component can be used with both fog (to color the smoke) and height fields (to texture the terrain). |
|
With fog, this component contains the intensity of emission (or internal
glowing). For height fields, this component acts like a visualization
stencil: the viewport only draws parts of the height field where the |
|
This component can be used with fog volumes to color the internal emission. |
The *
in attribute names in this section can be one of the above 4 strings.
See the help page for Volume Visualization SOP
for more information; you can use this node to set or modify these attributes.
|
string |
Name of the volume containing data for the respective component. |
|
vector2 |
Range of volume values that gets remapped to the 0..1 range. |
|
string |
This attribute should contain a string representation of the ramp that remaps the respective volume values. If this is absent, no ramp is used to remap the values. |
|
int |
This attribute flags how the ramp is applied to the remapped volume values.
When set to |
|
int |
This attribute limits the visualization resolution of volumes. When set to a positive value and the volumes are high resolution, they are resampled to this size before rendering. |
|
float |
This attribute acts as a multiplier for emission intensity. Higher values increase brightness of the internal glow (for example, of flames in a fire). |
|
float |
Controls intensity of self-shadowing from all light sources. Larger values of this attribute result in darker self-shadows. |
|
float |
Controls intensity of self-shadowing from ambient light sources. Note that the default headlight is treated as an ambient source for fog volumes. The default value of this attribute is set by Ambient Occlusion under viewport display options. |
|
float |
Controls size of the occlusion map texture when shading for ambient light sources. Larger values (up to 1) are slower to shade, but produce higher quality results. |
|
float |
Specifies how often the density texture is sampled when calculating self-shadowing from ambient light sources. Smaller values (down to 1) are slower to shade, but produce higher quality results. |
|
vector |
Controls the color of shadows cast by the smoke. The complements of these values act like additional density multipliers for light of each color (red, green, or blue). |
The viewport can additionally approximate scattering of light within fog volumes. This feature is experimental and may be changed or removed in future versions of Houdini.
|
float |
Specifies what proportion of light is absorbed by the volume (as opposed to being scattered out). Value of 1 signals that no scattering takes place. At the other extreme, value of 0 suggests that all light that interacts with the smoke is scattered. |
|
int |
Scattering is approximated by an iterative process, and this attribute stores the number of refinement iterations that are performed. Larger values produce more accurate results, but also take longer to compute. |
When working with fog volumes, you can force the viewport to instead draw its motion vectors or normals. This behavior is also controlled through detail attributes.
|
int |
The viewport will draw screen-space motion vectors for the fog when this
attribute is non-zero. To this end, the |
|
int |
The viewport will draw screen-space normals for the fog when this attribute
is non-zero. If both |
|
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 |