2021年6月9日(水)に第3回IndyZone Cafeを開催させていただきました。
アンケートで、以下のご質問がありましたので、記事にしました。
==============================================================
Q. アトリビュート名は小文字、大文字の区別がいまひとつ慣れず、よくエラーになります。
何かルールがあれば教えていただきたいです。
A. アトリビュート名が小文字であること、大文字であることには特に規則性はありません。
ただし、Houdiniにおけるアトリビュートには、「組み込みアトリビュート」と呼ばれる予め役割が定義されている
アトリビュートがあります。
==============================================================
Houdiniにおけるアトリビュートとは、ジオメトリコンポーネント(Points、Vertices、Primitives、Detail)に記録される名前のついた値を指します。
例えばモデリングの場合、モデルを構成しているポリゴンの向きを判断するためには、法線ベクトル情報が必要です。この情報は「N」という名前でポイントや頂点に保存されます。また、カーブに対して厚みをつけるためには、「pscale」もしくは「width」という名前のアトリビュートが役立ちます。
シミュレーションの場合、DOP階層内で計算を行うための初期値をSOP階層内で用意する必要があります。
例えば、煙の密度情報を制御する場合は、よく「density」という名前のアトリビュートとして設定されます。
この数値がDOP Network内で毎フレーム計算される際に考慮されることで、シミュレーションは進行します。
一部ですが、例として上記のような数値の保持や処理を行うことできます。
Houdiniのアトリビュートは大きく分けて、型による区別、値を記録できるジオメトリコンポーネントによる区別、
組み込みアトリビュート(予めHoudini内に用意されている既知のアトリビュート)による区別の3つがあります。
今回は、Pyroシミュレーションの作成時によく使用するアトリビュートやPyroシミュレーションと組み合わせて
使用するSOPノードを説明します。
1.組み込みアトリビュートについて
Houdiniにおけるアトリビュートには、「組み込みアトリビュート」と呼ばれる予め役割が定義されている
アトリビュートがあります。
ここでは、組み込みアトリビュートの中でもよく使用されるものを一覧としてまとめています。
※他にも、組み込みアトリビュートは多数用意されていますが、その中でも特に使用する機会が多いアトリビュートをまとめました。
ご注意▼
| 組み込みアトリビュートはスペルが予め決まっているので、使用時の大文字や小文字の区別には注意して下さい。 また、先に作成したアトリビュート名と後に作成したアトリビュート名がスペルミス等で異なる場合にはエラー扱いとなります。 |
よく使用される組み込みアトリビュート一覧▼
| 型 | アトリビュート名(スペル) | 詳細 |
|---|---|---|
| vector | P | ポイントの座標位置 |
| vector | rest | 1フレーム目のポイント座標位値 |
| vector | N | 法線 |
| vector | v | 速度ベクトル |
| vector | Cd | 色情報(RGB) |
| vector | uv | UV座標 |
| vector | up | パーティクル/ポイントの向き |
| float | pscale | レンダリング時のポイントのサイズ |
| float | width | カーブの線幅 |
| float | Alpha | 透明度(A) |
| string | name | 取得したプリミティブの名前 |
補足▼
| 組み込みアトリビュートはAttribute Wrangle SOP等で記述を行う際に、float型であれば「f@」、int型であれば「i@」、 vector型であれば「v@」のような型の宣言を行わずに使用することができます。 |

2.アトリビュートの作成について
「Pyro Source SOP」「Pyro Burst Source SOP」「Pyro Trail Source SOP」ではノード上で「Attribute」パラメータの
プルダウンメニューから、作成するアトリビュート名を選択できます。
以下では、それぞれのノードについて作成可能なアトリビュート、ノード追加時に自動で作成されるアトリビュート等について説明します。
ジオメトリコンポーネントとは、アトリビュートを持たせることができるジオメトリ要素(Point、Vertices、Primitives、Detail)のことを指します。
※組み込みアトリビュートに該当するアトリビュートには「*」を付けて表記しています。
一覧の各項目の意味合い▼
| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| float(浮動小数値) integer(整数値) vector(3つの数値からなる値) | アトリビュート名の スペル | 各アトリビュートの意味 | アトリビュートが与えられる ジオメトリコンポーネント |
2.1「Pyro Source SOP」を使用したアトリビュートの作成
Attributeパラメータから作成可能なアトリビュート▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| vector | Cd* | 色情報 | Points |
| vector | v* | 速度ベクトル | Points |
| float | density | 密度 | Points |
| float | temperature | 温度 | Points |
| float | burn | 燃焼 | Points |
| float | fuel | 燃料 | Points |
| float | Alpha* | 透明度 | Points |
ノード追加時に自動で作成されるアトリビュート▼
| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| float | pscale* | ポイントのサイズ | Points |
| — | group:particles | 入力されたポイントに設定されるグループ名 | Points |
※こちらのアトリビュートは「Pyro Source SOP」追加時に、ポイントに対して自動で追加されるアトリビュートです。「Attribute」パラメータの設定とは関係なく追加されます。
補足1▼
| プルダウンメニュ—内に「Custom」コンポーネントが用意されています。 そのため、上記以外の任意のアトリビュートを作成することも可能です。 |
補足2▼
| 「Cd*」、「v*」、「Alpha*」、「pscale*」は組み込みアトリビュートのため、任意にアトリビュート名を変更して値を 持たせることはできません。 |
2.2「Pyro Burst Source SOP」を使用したアトリビュートの作成
Attributeパラメータから作成可能なアトリビュート▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| vector | Cd* | 色情報 | Points |
| float | density | 密度 | Points |
| float | temperature | 温度 | Points |
| float | divergence | 発散 | Points |
| float | burn | 燃焼 | Points |
| float | Alpha* | 透明度 | Points |
補足▼
| 「Cd*」と「Alpha*」は組み込みアトリビュートのため、任意にアトリビュート名を変更して値を持たせることはできません。 一方で、「density」「temperature」「divergence」「burn」については、任意のアトリビュート名に変更した後に値を持たせた場合でも、シミュレーションを動作させることができます。 |
追加アトリビュート (「Output Attributes」タブ)▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| string | source_name | アトリビュート名の保持 | Points |
| float | pscale* | ポイントのサイズ | Points |
| vector | v* | 速度ベクトル | Points |
| float | agen | ポイントの生死を判定する0から1の範囲の数値 | Points |
| float | trailingpos | 軌道に沿った各ソースポイントの位置 | Points |
| vector | rest* | Burstの開始時点における各ポイントの位置 | Points |
| integer | burstid | 「Randomization By」パラメータで使用されている値 | Points |
補足▼
| 追加アトリビュートの作成は「Output Attribute」タブから行えます。 組み込みアトリビュートである「v*」「pscale*」以外は、パラメータからアトリビュート名の変更ができます。 例外として、「rest*」も任意のアトリビュート名に変更できます。 |
2.3「Pyro Trail Source SOP」を使用したアトリビュートの作成
Attributeパラメータから作成可能なアトリビュート▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| vector | Cd* | 色情報 | Points |
| float | density | 密度 | Points |
| float | temperature | 温度 | Points |
| float | divergence | 発散 | Points |
| float | burn | 燃焼 | Points |
| float | Alpha* | 透明度 | Points |
補足▼
| 「Cd*」と「Alpha*」は組み込みアトリビュートのため、任意にアトリビュート名に変更して値を持たせることはできません。 一方で、「density」「temperature」「divergence」「burn」については、任意のアトリビュート名に変更した後に値を持たせた場合でも、シミュレーションを動作させることができます。 |
追加アトリビュート (「Output Attributes」タブ)▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| string | source_name | アトリビュート名の保持 | Points |
| float | pscale* | ポイントのサイズ | Points |
| vector | v* | 速度ベクトル | Points |
| float | agen | ポイントの生死を判定する0から1の範囲の数値 | Points |
| float | trailingpos | 軌道に沿った各ソースポイントの位置 | Points |
| vector | rest* | Burstの開始時点における各ポイントの位置 | Points |
| integer | burstid | 「Randomization By」パラメータで使用されている値 | Points |
補足▼
| 追加アトリビュートの作成は「Output Attribute」タブから行えます。 組み込みアトリビュートである「v*」「pscale*」以外は、パラメータからアトリビュート名の変更ができます。 例外として、「rest*」も任意のアトリビュート名に変更できます。 |
2.4「Pyro Trail Path SOP」を使用したアトリビュートの作成
追加アトリビュート (「Output Attributes」タブ)▼

| 型 | アトリビュート名 | 詳細 | ジオメトリコンポーネント |
|---|---|---|---|
| integer | trailid | 生成されたパス毎の固有ID | Primitives |
| integer | trailidx | 生成された軌道のインデックス番号 | Primitives |
| float | launchspeed | 各軌道の始点における 速度ベクトルの長さ | Primitives |
| float | endtime | 軌道が終了した時間 | Primitives |
| float | burstid | 「Randomization By」パラメータで使用されている値 | Primitives |
補足▼
| 「Pyro Trail Path SOP」の「Output Attribute」タブで追加可能なアトリビュートは、ポリゴン辺に対して保存されます。そのため、ジオメトリコンポーネントとしては「Primitives」に対して保存される形になります。 |
3.カスタマイズアトリビュートについて
「Pyro Burst Source SOP」「Pyro Trail Source SOP」「Pyro Trail Path SOP」には、各ノードで扱うことができる専用のカスタマイズアトリビュートが存在します。
ここで使用されるアトリビュートは少し特殊で、パラメータに入力する数値の代わりとして使用することができます。
また、これらのアトリビュートは保持できる数値範囲が決められている場合があります。
※組み込みアトリビュートに該当するアトリビュートには「*」を付けて表記しています。
一覧の各項目の意味合い▼
| パラメータ名 | 設定可能な数値範囲 | 型 | アトリビュート名 |
|---|---|---|---|
| 各ノード上のパラメータの名前 | アトリビュートに設定できる 数値の範囲 | float(浮動小数値) integer(整数値) vector(3つの数値からなる値) | アトリビュートの名前とスペル |
3.1 カスタムアトリビュートの使い方
ここでは、「startframe」アトリビュートを例に説明します。
1. 発生位置をポイントで決定します。ここでは、「Add SOP」で発生位置を決めています。

2. 例として「Pyro Trail Path SOP」を作成します。

3.「Trail Generation」タブの「Start Frame」パラメータを、事前に作成した「startframe」アトリビュートの値で調整できるように設定します。
「Attribute Wrangle SOP」を追加し、以下の簡単なVEXpressionを入力します。
以下のVEXpressionは、アニメーションを24フレーム目から開始させるために記述します。例えば、10フレーム目から開始させたい場合は、「f@startframe=10.0;」と入力することになります。
VEXpression▼
| f@startframe = 24.0; |

4. 「Pyro Trail Path SOP」上の「Start Frame」パラメータに戻り、「Set Uniform」(パラメータで数値を入力するモード)を「Use Attribute」(アトリビュートの数値を入力値とするモード)に切り替えます。

5. アニメーションの開始フレームが24フレーム目に変更されます。

ここでは「startframe」アトリビュートを例にとりましたが、各パラメータの隣に下の画像のようなプルダウンメニューが用意されている場合は、制御用のカスタムアトリビュートが用意されており、アトリビュートによる制御が可能です。

3.2「Pyro Burst Source SOP」のカスタムアトリビュート
ここでは、「Pyro Burst Source SOP」内で扱うことができるカスタムアトリビュートと対応するパラメータを一覧を
説明します。
パラメータ▼


カスタマイズアトリビュート一覧▼
| パラメータ名 | 設定可能な数値範囲 | 型 | アトリビュート名 |
|---|---|---|---|
| ① Initial Size | 0以上 | float | pscale* |
| ② Direction | (-1,-1,-1)~(1,1,1) | vector | N* |
| ③ Spread Angle | 0~180 | float | spread_angle |
| ④ Roundness | 0~1 | float | roundness |
| ⑤ Number of Tailings | 0以上 | integer | trailingnum |
| ⑥Trailing Separation | 0.001以上 | float | trailingsep |
| ⑦Start Frame | — | float | startframe |
| ⑧Frame Duration | 1以上 | integer | life |
| ⑨ Outward Expansion | 0以上 | float | expansion_outscale |
| ⑩ Directional Expansion | 0以上 | float | expansion_dirscale |
補足▼
| 一部のカスタマイズアトリビュートでは、組み込みアトリビュートを参照する仕様となっています。(例:pscale*、N*) |
3.3「Pyro Trail Source SOP」のカスタムアトリビュート
ここでは、「Pyro Trail Source SOP」内で扱うことができるカスタムアトリビュートと対応するパラメータの一覧を
説明します。
パラメータ▼



カスタマイズアトリビュート一覧▼
| パラメータ名 | 設定可能な数値範囲 | 型 | アトリビュート名 |
|---|---|---|---|
| ① Point Separation | 0以上 | float | trailingsep |
| ② Lengh | 0以上 | float | trail_length |
| ③ Radius | 0以上 | float | trail_radius |
| ④ Start Frame | — | float | startframe |
| ⑤ Speed | 0以上 | float | speed |
| ⑥ Fade by Age | 0以上 | float | fade_startage |
補足▼
| ⑥は「Scale Along Trailing」オプションと「Scale Further Using Age」オプションの両方が有効になっている場合に表示されます。 |
3.4「Pyro Trail Path SOP」のカスタムアトリビュート
ここでは、「Pyro Trail Path SOP」内で扱うことができるカスタムアトリビュートと対応するパラメータの一覧を
説明します。
パラメータ▼



カスタマイズアトリビュート一覧▼
| パラメータ名 | 設定可能な数値範囲 | 型 | アトリビュート名 |
|---|---|---|---|
| ① Initial Size | 0以上 | float | pscale* |
| ② Direction | (-1,-1,-1)~(1,1,1) | vector | N* |
| ③ Number of Trails | 0以上 | integer | copynum |
| ④ Spread Start Angle | 0~180 | float | spread_startangle |
| ⑤ Spread Angle | 0~180 | float | spread_angle |
| ⑥ Azimuth Start Angle | 0~360 | float | azimuth_startangle |
| ⑦ Azimuth Angle | 0~360 | float | azimuth_angle |
| ⑧ Line Start | 0以上 | float | line_start |
| ⑨ Line Length | 0以上 | float | line_length |
| ⑩ Velocity Scale | 0以上 | float | vscale |
| ⑪ Drag | 0以上 | float | drag |
| ⑫ Mass | 0以上 | float | mass |
| ⑬ Start Frame | — | float | startframe |
| ⑭ Trail Duration | 0以上 | float | life |
| ⑮ Speed Scale | 0以上 | float | speed |
補足1▼
| ⑧、⑨は「Shape」パラメータが「Line」タイプに切り替わっている場合に表示されます。 |
補足2▼
| 一部のカスタマイズアトリビュートでは、組み込みアトリビュートを参照する仕様となっています。(例:pscale*、N*) |
ここまで、アトリビュートの区別やルールについて、簡単ですが紹介しました。
今回は、Pyroシミュレーションにおけるアトリビュート設定に焦点を当て、間違いやすいアトリビュート名や
アトリビュートの扱いについてまとめました。
基本的にアトリビュート名は数値を区別するための名前に過ぎませんが、組み込みアトリビュートのように名前自体が意味を持つアトリビュートも存在しています。
HoudiniのPyroシミュレーションを行う際にご参考にしていただければと思います。
