On this page | |
Since | 18.5 |
概要 ¶
シーン内に膨大な数のオブジェクト(例えば、森の中の木、砂漠の中の岩や小石、街の中の建物)を自動的に生成するHoudiniのワークフローは以下のとおりです:
-
オブジェクトをばら撒きたいサーフェスを構築します。
-
Scatter and Alignノードを使用して、そのサーフェス上にポイントをばら撒きます。
Scatter and Alignノードには、ポイントの分布のさせ方、特定の領域の回避、サイズと向きのバリエーションの追加などたくさんのハイレベルなコントロールが備わっています。
-
ばら撒いたポイント上にコピーしたいモデルセットを構築します。例えば、森を作成する場合だとタイプと形状が異なる木のセットを構築します。
-
Copy to Pointsノードを使用して、ばら撒いたポイント上にそれらのオブジェクトをコピーします。
Copy to Pointsノードには、ポイント上のアトリビュート値に基づいてポイント毎にコピーされるモデルセットを選択するための Piece Attribute パラメータが備わっています。
Attribute From Piecesノードは、Copy to Pointsノードが各ポイント上にどのモデルをコピーするのか決める際に使用する“piece”アトリビュートを強力で柔軟な方法で作成することができます。 Attribute From Piecesノードでは、ランダムまたは色々なルールに基づいてピースを割り当てることができます。 例えば、山の標高が低い場所ほど落葉樹が作成されやすく、標高が高い場所ほど針葉樹が作成されやすくすることができます。
結果の視覚化 ¶
このノードの非常に良い使い方は、ピースを作成し、ポイントをばら撒いて、このノードを使用してコピーするピースが指定されたアトリビュートを各ポイントに割り当てて、Copy to Pointsノード(必ずpieceアトリビュートを設定してください)を使用してポイント上にピースをコピーするネットワークをセットアップすることです。 次に、このAttribute From Piecesノードを選択して、コピー/インスタンスの目的の挙動に基づいてパラメータを調整します。
まだピース用のモデルが完成していなくても、そのピース用に単純な代替モデル(例えば、異なる単純な形状とか色違いの形状とか)を作成しておけば、パラメータを編集した時にどのように分布が変わるのか視覚化することができるので役立ちます。
ピースを理解する ¶
Houdini SOPジオメトリは、概念的には単なる非構造プリミティブ(ポリゴンフェース)の集合体であり、そこには別々の“オブジェクト”とかプリミティブの階層といった一貫した概念がありません。
代わりに、ノードがそれらのフェースが同じパーツであると理解できる手段は、特定のアトリビュートでそれらのフェースがすべて同じ値になっていることです。
例えば、ノードがpiece
という名前のピースアトリビュートを使用すると仮定すると、piece
Pointアトリビュートの値が2
のすべてのポリゴンは概念的には同じオブジェクトに一部となります。
ピースアトリビュートには、整数または文字列のアトリビュートを指定することができます。
このアトリビュート名には、piece
, class
, name
, path
という名前を付けることが多いです。
Connectivityノードを使用することでジオメトリ上にピースアトリビュートを作成することができます(自動的にピースアトリビュートが作成されます)。 通常ではこのノードで十分です。 もっと細かく制御する必要がある場合(一部のオブジェクトで、繋がっていない部分が存在する場合)、上流でAttribute Createノードを使用することで、“手動”で別々のフェースセット毎にピースアトリビュートに値を割り当てることができます。
このAttribute From Piecesノードは、ポイントをばら撒く工程においてピースがコピーされる ポイント 上にアトリビュートを作成することで動作します。 各ポイントに対して、このアトリビュート値では、Copy to Pointsノードが1番目の入力のソースジオメトリから同じピースアトリビュート値を持ったピースをそのポイント上にコピーするように指定します。
このAttribute From Piecesノードは、ピースをそれらのポイント上にコピーするわけではありませんが(Copy to Pointsノードでそれが行なえるように単にアトリビュートを作成するだけです)、このAttribute From Piecesノードの2番目の入力には、どのピースが利用可能なのか判断できるようにそれらのピースを含んだジオメトリを接続する(そして、ピースアトリビュートの名前を指定する)必要があります。 つまり、このAttribute From Piecesノードを使用する前にジオメトリにピースアトリビュートがセットアップされている必要があります。
ピースのモデリング ¶
Houdiniのコピー/インスタンス化のワークフローは、基本的にはpscale
(ポイントスケール)を使用して各インスタンスのサイズを制御します。
これはスケールなので、オブジェクトを散乱させる時に少なくとも重ならせたくない軸方向で コピー/インスタンス化するオブジェクトが1ユニットスケールでモデリング されていれば上手く動作します。
例えば、木を散乱させる場合、その木の“半径”(木の幹から一番長い枝の端までの最大距離)が1ワールド単位でモデリングするのが一番良いです。
そうすれば、コピー系ノードでpscale
を使用して木を小さくまたは大きくスケールさせることができます。
異なったスケールでモデルが作成されていた場合、Match Sizeノードを使用することで、そのモデルを1単位のスケールにすることができます。
Tipsとメモ ¶
-
“Pieces”パラメータ( Shuffle Pieces と Offset )は、 Mode が VEXpression の時には利用不可です。
入力 ¶
Points
name
アトリビュートを作成するポイント。
Geometry Library
ポイントに割り当て可能な色々なピース。
パラメータ ¶
Piece Attribute
2番目の入力内のどのプリミティブが同じピースに属するのかが指定されたPointアトリビュートの名前。
Piece Filter
このノードが2番目の入力から利用可能できるピースを限定したい場合にのみ、スペース区切りでそれらのアトリビュート値のリストをここに入力します。 ここが空っぽの場合、このノードは、2番目の入力内の利用可能なすべてのピースを使用します。
Mode
ピースをポイントに割り当てるメソッド。
Cycle
利用可能なピースを循環させて順番通りにポイントに割り当てます(実質的には、“ポイント番号をピースの数で割った余り”を使ってピースを割り当てます)。
ScatterまたはScatter and Alignを使用してポイントを生成した場合、それらのポイント番号は位置と関係性がないので、ピースの分布がランダムになっているように見えます。
Patches
(Worleyノイズを使用して)ランダムな“斑点”でピースを割り当てます。 つまり、個々のポイントをランダムにするのではなくて、ポイントの形状グループを不規則にランダムにします。
Noise
ノイズを使用してピースを割り当てます、 これは、各ピースをランダムにする事と同じではなないです。 代わりに、選択したノイズ関数の出力を量子化した結果に基づいてピースを割り当てます。 これによって、有機的な見た目のパターンと他の効果を生成することができます。
Random
ランダムにポイントにピースを割り当てます。 各ピースにウェイトを割り当てることで、一部のピースを他のピースより多く割り当てることができます。
Map Attribute
ポイント上のアトリビュート値に基づいてピースをそのポイントに割り当てます。
これは、アトリビュートを作成する幅広い色々なSOPノードを使用してPointアトリビュートをセットアップすることができるので、非常に強力です。 例えば、Attribute Paintを使用してアトリビュート値をペイントしたり、Distance From Geometryを使用して他のオブジェクトからの距離に基づいてアトリビュート値を設定したり、Distance From Targetを使用して特定の座標からの距離に基づいてアトリビュート値を設定することができます。
Tip
複数のマッピングをポイントに適用した場合、このノードはランダムにどれかのマッピングを採用します。
VEXpression
一連のVEXエクスプレッションを評価して、Trueを返したVEXエクスプレッションに基づいてピースを割り当てます。
あなたがVEXを記述できるのであれば、これによって、アトリビュート値または値の論理合成値に基づいてピースの選択方法をフルコントロールすることができます。
Tip
複数のエクスプレッションがポイントに対してTrueを返した場合、このノードはランダムにどれかのエクスプレッションを採用します。
Copy Attributes
ソースのピースからコピーするアトリビュートのリスト。 このパターンにマッチしたアトリビュートは、出力ポイントに転送される前に Promotion Method を使用して各ピース上に集約されます。
Note
Piece Attribute と同じクラスのアトリビュートがコピーされます。 つまり、 Piece Attribute がポイント上に存在していれば、それらのPointアトリビュートがコピーされます。 存在しなければ、それらのPrimitiveアトリビュートがコピーされます。
Allow P Attribute
このパラメータが有効な場合にのみ、ポジションアトリビュート(P
)が Copy Attributes のパターンに対してマッチングされます。
ピースの位置を出力インスタンスに転送したい場合は、これを有効にしてください。
Promotion Method
アトリビュート値を出力ポイントにコピーする前に、そのアトリビュート値を各ピース上に集約させる方法を指定します。
新しいクラスの1個のエレメントに合致するアトリビュートがOriginal Classに2つ以上存在すれば、何かのメソッドを使って、新しい値を決めなければなりません。 例えば、PointアトリビュートからPrimitiveアトリビュートへ変換する場合、1個のポリゴンに相当するポイントがたくさんあります。
Maximum
一番大きい値を拾います。
Minimum
一番小さい値を拾います。
Average
平均値を取ります。
Mode
一番多い共通値を取ります。一番多い共通値が複数存在した場合は、最小の値を取ります。
Median
合致したエレメントの中間のエレメントの値を取ります。エレメントの数が偶数の場合は、その中間の2つのエレメントの内、高い値を取ります。
Sum
合致したエレメントの合計値。
Sum of Squares
合致したエレメントを二乗した合計値。
Root Mean Square
合致したエレメントを二乗した合計を平均して、それを平方根にした値。
First Match
プロモート先の1番目に相当するエレメントの値。つまり、ポイントをプリミティブにプロモートすると、プリミティブの1番目の頂点に相当するポイントの値を取ります。
Last Match
プロモート先の最後に相当するエレメントの値。つまり、ポイントをプリミティブにプロモートすると、プリミティブの最後の頂点に相当するポイントの値を取ります。
Array of All
ソースアトリビュートがタプルアトリビュートの場合、新しく配列アトリビュートが作成されます。 この配列アトリビュートには、合致したエレメントのすべての値が格納されます。
Shuffle
ピースの順番をランダムに入れ替えたいのであれば、これを有効にします。
Seed
ピースの順番を入れ替える際に使用される乱数生成のシード。
シート値が同じであれば常に同じ順番が生成されます。
例えば、フレーム毎に順番を変えたいのであれば、シードに$F
(現行フレーム番号)を設定します。
Offset
ピースの順番を指定された数だけずらし、最後のピースは順番の先頭に移動します。
Override Ptnum
ID Attribute の隣にあるチェックボックスを有効にすることで、本来のポイント番号の代わりに各ポイント上のカスタムアトリビュートの値を使用してピースを循環させることができます。
ID Attribute
チェックボックスを有効にして整数Pointアトリビュートの名前を指定することで、本来のポイント番号の代わりにそのアトリビュート値を使用してピースを循環させることができます。
Location Attribute
Mode が Patches または Noise の時に、ノイズフィールドのポイントポジションとして使用するアトリビュート。
デフォルトは、ポイントポジションのP
です。
とはいえ、別のアトリビュートを使用しても構いません。
例えば、ポイントポジションがアニメーションしてもノイズがそのポイントに追従するようにさせたいのであれば、rest
を使用すると良いでしょう。
これらのパラメータは、 Mode が Patches の時に表示されます。
Patch Size
パッチの平均サイズを制御します。
Scale
パッチの平均の高さ、幅、深さを別々に制御することができます。
Patch Offset
ポイントを基準にノイズフィールドを移動させます。
これらのパラメータは、ベースのノイズパターンの上に任意で歪みを加えることができます。
Strength
追加する歪みの強度。
Size
歪みのサイズ。
Roughness
歪みの粗さ。
Offset
歪みマップの中心に追加するオフセット。
これらのパラメータは、 Mode が Noise の時に表示されます。
Noise Type
ノイズフィールドの生成に使用する関数。このノードは、ポイントポジションを乱数ジェネレータのシードとして使用します。
Element Size
ノイズの特徴サイズを制御します。
Element Scale
ノイズの特徴の高さ、幅、奥行きを別々に制御することができます。
Offset
ポイントを基準にノイズフィールドを移動させます。
Max Octaves
合成するノイズレイヤーの数。
Roughness
連続ノイズレイヤー毎の影響力の減衰。
これらのパラメータは、ベースノイズパターンの上に任意で歪みを加えることができます。
Lattice Warp
標準ノイズに“繊維っぽさ”または“ワイヤーっぽさ”を追加します。
Freq
Lattice Warp の周波数。
Gradient Warp
ノイズ出力の山または谷を広げます。
Remap Noise
ノイズ値のリマップに使用するランプ。
これらのパラメータは、 Mode が Random の時に表示されます。
Weight Method
各ピースに割り当てるウェイトを指定する方法。
Uniform Distribution
各ピースにウェイトをほぼ均等に割り当てます。
Piece Weights
マルチパラメータを使用して各ピースにウェイトを与えることで、一部のピースを他のピースよりも大きくウェイトを割り当てることができます。
このオプションを選択した場合、 Autofill Pieces ボタンをクリックすることで、2番目の入力のピースに基づいてマルチパラメータを自動的にセットアップすることができます。
Weight Attribute
ピースジオメトリ上の浮動小数点Primitiveアトリビュートを使用して、そのピースにランダムなウェイトを設定します。 ピースのウェイトは、そのピースのプリミティブ上のこのアトリビュート値の 平均 値が割り当てられます。
Seed
Weight Method が Uniform でない場合、ここには、乱数ジェネレータのシード値を指定して異なるウェイトが選択されるようにします。
Autofill Pieces
Weight Method が Piece Weights の場合、このボタンをクリックすることで、2番目の入力のピースに基づいてマルチパラメータを自動的にセットアップすることができます。
ジオメトリ内の各固有のピースがリストに含まれるように Number of Assets パラメータと Piece パラメータを自動的に入力するボタン。
Number of Pieces
マルチパラメータでウェイトを指定するピースの数。
Piece
このピースのアトリビュート値。
Weight
このピースが他のピースよりもチェーン内に出現する可能性を意味した値。
すべてのピースのウェイトは、合計して1.0
になるように正規化されてから、確率として使用されます。
例えば、3つのピースのウェイトが1
, 1
, 2
だった場合、最後のピースは50%で出現する可能性があって、他の2つのピースは25%で出現する可能性があるということです。
Weight Attribute
Mode が Weight Attribute の時、ピースにランダムなウェイトを設定するピースジオメトリ上の浮動小数点Primitiveアトリビュートの名前。 ピースのウェイトは、そのピースのプリミティブ上のこのアトリビュート値の 平均 値が割り当てられます。
これらのパラメータは、 Mode が Map Attribute の時に表示されます。
Tip
複数のマッピングをポイントに適用した場合、このノードはランダムにどれかのマッピングを採用します。
Attribute
各ポイントでピースを選択する際に使用するポイント上のアトリビュートの名前。
Attribute Type
アトリビュートのタイプ。
Numeric
アトリビュートのタイプが浮動小数点または整数のどちらかです。 これは、数値の範囲でピースを合わせることができます。
String
アトリビュートのタイプが文字列です。 これは、そのままの値または文字列パターンを使ってピースを合わせることができます。
Map Pieces From
Attribute Type が Numeric の時、自動的または手動のどちらで値をピースにマップするのかを選択します。
Automatic Ranges
アトリビュートの値の範囲を均等に割ったサイズと2番目の入力から利用可能なピースからマッピングを自動的に作成します。
Explicit Ranges
マルチパラメータを使用して、手動で範囲とピースのマッピングを行ないます。
Number of Maps/ranges
Attribute Type が String または Map Pieces From が Explicit Ranges の時、ここにはマルチパラメータのマッピングの数を指定します。
Enable Piece
各範囲の隣りにあるチェックボックスを使用することで、その範囲を使用するかどうかを制御することができます。
Piece
値がこのパターンに合致したポイントに割り当てるピースの名前。 スペース区切りでピース名のリストを入力すると、このノードはランダムにどれかのピース名を選択します。
Map From
マッチングさせる文字列値またはパターン。
Min
この範囲の最小値。
Max
この範囲の最大値。
これらのパラメータは、 Mode が VEXpression の時に表示されます。
Tip
複数のエクスプレッションがポイントに対してTrueを返した場合、このノードはランダムにどれかのエクスプレッションを採用します。
Autofill Pieces
このボタンをクリックすると、2番目の入力内のピース毎にエクスプレッション付きのマルチパラメータが自動的にセットアップされます。
Number of VEXpressions
テストするVEXエクスプレッションの数。
Enable piece
各エクスプレッションの隣りにあるチェックボックスを使用することで、そのエクスプレッションを使用するかどうかを制御することができます。
Piece
エクスプレッションがTrueを返したポイントに割り当てるピースの名前。 スペース区切りでピース名のリストを入力すると、このノードはランダムにどれかのピース名を選択します。
VEXpression
各ポイントで実行するVEXエクスプレッション。 このエクスプレッションがゼロ以外の値を評価すると、そのポイントに“マッチ”して、それに該当するピースがそのポイントに割り当てられます。
Unmatched Piece
マルチパラメータ内のどのルールにもマッチしなかった場合、このピースが使用されます。 スペース区切りでピース名のリストを入力すると、このノードはランダムにどれかのピース名を選択します。
Use Unmatched Group
Unmatched group の隣にあるチェックボックスを有効にすると、何もマッチしなかったポイントを含んだグループが出力に作成されます。
Unmatched Group
このチェックボックスを有効にしてグループ名を入力すると、何もマッチしなかったポイントを含んだグループが出力に作成されます。
Seed
ここには、乱数ジェネレータのシード値を指定して異なる値が選択されるようにします。
Examples ¶
AttributeFromPiecesForest Example for Attribute From Pieces geometry node
このサンプルでは、Attribute from Pieces SOPを使用して、サイズを示したアトリビュートをピースに割り当てる方法を説明しています。
AttributeFromPiecesModes Example for Attribute From Pieces geometry node
このサンプルでは、Attribute from Pieces SOPの色々なModeオプションの挙動を説明しています。
See also |