On this page | |
Since | 14.0 |
概要 ¶
このノードは、サーフェス上に新しいポイントをほぼ均一なパターンで分布させて、オプションでポイントの凝集や空洞化の回避を試みます。
ボリュームプリミティブに対しては、このノードは、密度の値(マイナスの値はゼロになります)に比例してボリューム内にポイントをばら撒きます。
生成されたポイントは、色々な目的で使用することができます。 例えば、パーティクルの発生位置、コピーのテンプレートポイント、ボロノイ分解のセルポイント、グローバルイルミネーションの計算用のキューなどに使用します。
密度、ユニット面積あたりのポイント数、(カーブに対する長さ、ボリュームと四面体に対する体積)を指定したり、オプションでジオメトリの表面への分布を制御するアトリビュートでウェイトを付けることができます。 また、テクスチャ空間にばら撒くことで、テクスチャマップに基づいた密度でポイントをばら撒くこともできます。
Scatterの使い方 ¶
ばら撒いたポイントを変形ジオメトリ上に引っ付ける ¶
Scatterノードの入力がフレーム毎に変わると、出力されるポイント位置とポイント番号がランダムに変わることがあります。 場合毎に、これを回避する方法がいくつかあります。
To... | Do this |
---|---|
ばら撒いたポイントを変形するジオメトリに引っ付ける |
Spiky Deforming Torusのサンプルを参照してください。 ジオメトリのトポロジーが変化しないなら、静止した“rest”ジオメトリ上に一度ポイントをばら撒いてから、Attribute Interpolateノードを使ってフレーム毎にジオメトリを変形させることができます。
Scatterノードは一度だけクックし、Attribute Interpolateノードはすべてのフレームでクックして、ポイントを変形するジオメトリの該当する位置まで動かします。 |
ジオメトリをカットしたり、細分化したり、解像度の高いモデルに置換しても、ポイントの整合性を維持させる |
Door With Polka Dotsのサンプルを参照してください。 ジオメトリを整合性のある方法でテクスチャマッピングすることができれば、Scatterノードのオプションの Generate パラメータを使ってポイントを In Texture Space でポイントをばら撒くことができます。 このオプションは、ポイントを2Dテクスチャ空間のユニット正方形にばら撒き、3Dサーフェスジオメトリがそのマッピングされたテクスチャ空間の領域からポイントを取得します。つまり、元のモデルと新しいモデルが同じテクスチャ座標を持っている限り、それらのモデルでは同じ位置にポイントがばら撒かれます。 継ぎ目付近では思ったような挙動をしないことがあります。なぜなら、その継ぎ目がモデル変更後に投影を実行した場合に、テクスチャ投影で移動することがあるからです。テクスチャの継ぎ目に沿ったポイントのリラックス化もひどい悪さをすることがあります。 Note Density Scale は、 Generate で By Density を選択した時のサーフェスのユニット正方形あたりのポイント数ではなく、テクスチャ空間ユニット正方形でのポイントの総数です。つまり、モデルに応じて By Density の時にばら撒いたポイントの数よりももっと多くまたはもっと小さくする必要があります。 |
ばら撒いたポイントを数が変わる別々の破片に引っ付ける |
Spotted Soccer Ballsのサンプルを参照してください。 In Texture Space でポイントをばら撒く方法でこの問題が解決されることが多いですが、 それが適していない時、例えば、テクスチャ化が非常に難しかったり、テクスチャの継ぎ目が問題を引き起こしているのであれば、 各プリミティブに対するシードを上書きするオプション(デフォルトはプリミティブ番号)が、若い番号のプリミティブを削除してもシードが変わらないように各プリミティブのシードを設定することができます。 |
パラメータ ¶
Group
ポイントを生成するプリミティブのグループ。
Generate
ポイントを生成する時に使用する全体的な手法。
By Density
各プリミティブの密度に基づいてポイントを分布します。密度とは、カーブではユニット長さあたりのポイント数、サーフェスではユニット面積あたりのポイント数、ボリュームと四面体ではユニット体積あたりのポイント数です。
Count per Primitive
Count per Prim Attribute パラメータで指定したポイント数がプリミティブ毎に生成されます。リラックス化はプリミティブ毎に行なわれ、ポイントが他のプリミティブに移りません。
In Texture Space
まず最初にポイントをテクスチャ空間のユニット正方形にばら撒き、uv
アトリビュートに基づいて、サーフェスジオメトリがテクスチャ空間と同じ領域のポイントを取得します。
Relax Iterations が有効な時、ポイントはテクスチャ空間内でリラックス化されるので、継ぎ目沿いのポイントはリラックス化の効果が小さいです。
Max Relax Radius はテクスチャ空間単位なので、非常に小さい値にしてください。
Scatter on Voxels Independently
有効にすると、ボリュームプリミティブ内の各ボクセルが個別にばら撒かれるようになるので、ボリュームの一部の領域を変更しても、そのボリュームの他の領域内で生成されたポイントには影響しません。 ただし、ポイント番号が変わり、 Relax Iterations によって隣接ポイントをお互いに緩和させます。 これによってポイント数が固定される保証がないので、これを有効にすると、 Force Total Count はサポートされません。
Force Total Count
有効な時、正確にこの数だけのポイントが生成されます。これが無効な時と比べて、生成されるポイントは、プリミティブ面積や密度が変わる時に変わることがあります。 これは、 Generate が By Density の時のみのオプションです。
Density Scale
生成するポイントの密度を意味する値または乗数。
Density Attribute なしで By Density でポイントをばら撒く時、これは、ユニット長さあたりのポイント数、サーフェスではユニット面積あたりのポイント数、ボリュームと四面体ではユニット体積あたりのポイント数になります。 Density Texture なしで In Texture Space でポイントをばら撒く時、これは、完全にユニット正方形内のポイント数になります。 Density Attribute または Density Texture を使用する時、これは、それらで乗算されて、物理空間またはテクスチャ空間それぞれの実際の密度を決めます。
Force Total Count が有効または Generate が Count per Primitive の時には、これは無効になります。
Density Attribute
Generate が By Density の時に生成するポイントの密度を指定するアトリビュート。このアトリビュートには、Point,Vertex,Primitive,Detailのどれかのアトリビュートを指定することができ、 Point/Vertexアトリビュートの場合では、密度がプリミティブの面積に対して線形的に補間されます。 これは、Paintノードと併用するのに適しています。 Force Total Count が有効な時、これには実際の密度ではなくポイント密度の相対分布を指定します。
Override Prim Area
変形ジオメトリにポイントをばら撒きたいのであれば、これを使用しないでください。 それをするのであれば、Attribute Interpolateと一緒にScatterノードを使用する方が、簡単で速くで柔軟性があります。Spiky Deforming Torusのサンプルを参照してください。
Generate が By Density の時、これは、プリミティブ毎に生成されるポイント数を決める時に、プリミティブ面積ではなく指定した値やPrimitiveアトリビュートを使用します。 例えば、 Density Scale を使用するなら1の値を、プリミティブ毎に生成するポイント数を指定するならオプションで Density Attribute を指定します。 ポイントの実際の数は、 Count per Primitive オプションを使用した時とは違い、グローバルとプリミティブのシードに依存し、正確に指定した数のポイントを生成します。
Use Area for 2D Volumes
有効にすると、どれかの軸が単一ボクセルになっているボリュームに関しては、密度はボリューム密度ではなく面密度として扱われるようになります。
Density Texture
Generate が In Texture Space で、これが有効な時、これは、 Density Scale で乗算されて、テクスチャ空間のユニット正方形の各領域でポイントの密度が決まります。 Max Relax Radius はテクスチャ空間単位なので、非常に小さい値にしてください。なぜなら、テクスチャマップのブラック領域に押し込まれたポイントは、最大半径を持ちます。
op:
構文を使ってCOPのパスを指定すれば、[123]
のようにテキストを追加することでフレーム番号を、{colour}
や{colour,alpha}
のようにテキストを追加することで1つ以上の平面名を、(640,480)
のようにテキストを追加することで上書き解像度を指定することができます。
Note
テクスチャマップスケールの歪みは、物理空間のポイントの相対密度に影響します。
この理由は、ポイントがまずテクスチャ空間のユニット正方形にばら撒かれて、uv
アトリビュートに基づいて、サーフェスジオメトリがテクスチャ空間と同じ領域のポイントを取得するからです。
これは、ポイントをローカル領域にのみばら撒くなら問題ではありません。
UV Attribute
Density Texture オプションを使用してばら撒きをする時に使用されるテクスチャアトリビュート。
Count per Prim Attribute
Generate が Count per Primitive の時、これは、プリミティブ毎にばら撒くポイントの実際の数を示す整数または整数アトリビュート名のどれかです。
Max Point Limit
これは、生成されるポイント数に制限をかけるオプションで、致命的なアクシデントを回避します。 生成されたポイントの数がこの数を超えると、その数を示す警告が起こり、この制限値以下のポイント数が大まかな分布で生成されます。
Generate が In Texture Space の時、これは、テクスチャ空間のユニット正方形内にばら撒かれるポイント数の制限値です。 テクスチャマップでリピートがなければ、生成されるポイントの数を、この制限値以下にしてください。
Global Seed
Generate が By Density の時、このランダムシードは、プリミティブ毎に生成されるポイント数の決定、プリミティブ毎のポイントの生成、ポイント生成順のランダム化に使用されます。 Generate が In Texture Space の時、これは、テクスチャ空間ユニット正方形内でばら撒かれるポイント数の決定、テクスチャ空間でのポイントの生成、ポイント生成順のランダム化に使用されます。
Primitive Seed Attribute
Generate が By Density の時、このPrimitiveアトリビュートは、プリミティブ毎に生成されるポイント数の決定、プリミティブ毎のポイントに使用されます。 これが有効な時、プリミティブ番号がプリミティブシードとして使用されます。 これは、他のプリミティブよりも低いプリミティブ番号のプリミティブをDetailに追加または削除した時のScatterの整合性を保つのに役に立ちます。
Randomize Point Order
有効な時、ポイントは出力されるDetailでランダムな順番になります。デメリットは、1つの領域にポイントがたくさん生成されると、他の領域でのポイントの順番は、位置やアトリビュートが同じままでも変わってしまうことです。
Relax Iterations
有効にすると、ばら撒かれたポイントは、凝集しないようにリラックス化され、お互いに引き離されます。 これを繰り返すと、おかしな挙動が回避され、リラックス化の度合いが制御されます。 この値を上げると、ポイント間の距離が広がります。 上手く離れたポイントの分布のことを、“blue noise”と呼びます。
密度内の偏差をほぼ維持させるには、密度の値と反比例した半径(カーブ用)、密度の2乗根と反比例した半径(サーフェス用)、密度の3乗根と反比例した半径(ボリューム用)をポイントに割り当てます。これは、サーフェス上に密度をペイントした時、黒の背景で密度テクスチャを使用した時、密度がゼロに近い領域、特にボリュームで問題を起こすことがあります。その理由は、半径が無限に近くなるからです。 そのため、 Max Relax Radius には、意図しないポイントが近接ポイントを遠いところに飛ばさないように適切に設定しなければなりません。
Generate が In Texture Space なら、ポイントがテクスチャ空間でリラックス化されるので、継ぎ目沿いのポイントはリラックス化の効果が小さいです。 Generate が Count per Primitive なら、各プリミティブのポイントは、他のプリミティブと無関係にリラックス化され、プリミティブ毎の数が正確になります。 ボリュームプリミティブ上にばら撒かれるポイントは、リラックス化の間に他のボリュームプリミティブ上にばら撒かれるポイントに影響を与えません。 カーブ上にばら撒かれるポイントは、数千の繰り返しを試みて、完全に均等に広がります。 1カーブ上のポイントは、リラックス化の間に他のカーブ上のポイントに影響を与えません。 サーフェス、四面体、ボリューム、カーブのどれかに対してばら撒かれるポイントは、他の3つに対してばら撒かれるポイントに影響を与えません。
Note
表面に沿ったリラックス化は、サーフェス法線に垂直な2D空間でリラックス化してサーフェス上に投影するという処理を交互に行なうことで処理されています。
入力ジオメトリにN
Point/Vertexアトリビュートが存在すれば、それらの法線が使用されるので、そのリラックス化の結果に影響します。
Use Geometric Normals
有効な時、入力ジオメトリ内の“N” Point/Vertexアトリビュートがサーフェス沿いのリラックスで使用されなくなり、 代わりに、入力ジオメトリのジオメトリ法線に基づいてリラックスされます。 ジオメトリ法線は、ジオメトリの実形状を表わしているので、見た目重視またはヘアーのグルーミング目的で設定された法線よりかは良い結果が得られる傾向があります。
Scale Radii By
ポイント半径は、ポイントをリラックスする前にこの値でスケールされます。1未満のスケールを指定すると、その結果のポイントの“凝集性”が上がり、0の値ならリラックスなしになります。1より大きいスケールを指定すると、リラックスの収束が速くなることがあります。特にカーブ上にばら撒いた時がそうです。
スケールの後は、リラックス前に Max Relax Radius が実行されます。 Output Radius Attribute は有効であれば最終半径を反映します。
Max Relax Radius
ポイントをリラックスさせた時に問題のある密度の低い領域内に異常なポイントが発生しないようにするには、これを適切に設定しなければなりません。
密度内の偏差をほぼ維持させるには、密度の値と反比例した半径(カーブ用)、密度の2乗根と反比例した半径(サーフェス用)、密度の3乗根と反比例した半径(ボリューム用)をポイントに割り当てます。これは、サーフェス上に密度をペイントした時、黒の背景で密度テクスチャを使用した時、密度がゼロに近い領域、特にボリュームで問題を起こすことがあります。その理由は、半径が無限に近くなるからです。 このパラメータには、他のポイントに影響を与えるポイントの最大半径を指定します。
Generate が In Texture Space の時、これは、テクスチャ空間での半径なので、非常に小さい値にしてください。
これを無効にしても、まだ最大半径が残ります。この半径は、 Generate が In Texture Space でない時に入力ジオメトリの境界ボックスの対角線の長さの半分として、 Generate が In Texture Space の時に1として現在選択されます。
Prim Num Attribute
有効にすると、各ポイントの生成元であるソースプリミティブの番号を示すアトリビュートが出力されます。リラックス時にあるプリミティブから他のプリミティブへ押し出されるポイントを正しく制御するために、 これはリラックス化の後に決定されます。Attribute Interpolateと併用するには、これと Prim UVW Attribute を有効にします。
Prim UVW Attribute
有効にすると、各ポイントの生成元であるプリミティブのパラメータ空間での各ポイントの座標を意味するアトリビュートが出力されます。 リラックス時に動かされるポイントを正しく制御するために、これはリラックス化の後に決定されます。Attribute Interpolateと併用するには、これと Prim Num Attribute を有効にします。
Output Density Attribute
有効にすると、各ポイントの生成位置でのポイント密度を意味するアトリビュートが出力されます。 リラックス時に動かされるポイントを正しく制御するために、これはリラックス化の後に決定されます。 Output Radius and Density in Texture Space が有効なら、その密度はテクスチャ空間の密度になります。 つまり、 Density Scale と Density Texture を乗算した値になり、無効なら、物理空間での密度になります。
Output Radius Attribute
有効にすると、各ポイントの生成位置でのポイント密度に相当する半径を意味するアトリビュートが出力されます。 リラックス時に異なる密度の領域に動かされるポイントを正しく制御するために、これはリラックス化の後に決定されます。
これらは、Generate が In Texture Space で Output Radius and Density in Texture Space が無効な時の場合を除いて、リラックス化の後に半径をスケールして物理空間スケールを表現する場合にリラックス時に使用される半径です。
ポイントの半径が Max Relax Radius より大きい場合、その最大値に制限されます。 その制限に到達しない限りは、カーブ上のポイントに対しては、半径がまさに0.5/densityになります。サーフェス上のポイントに対しては、半径が約0.537/sqrt(density)になります。 ボリュームや四面体内のポイントに対しては、半径は約0.561/cbrt(density)になります。
Output ID Attribute
有効にすると、固有な整数のid
が各ポイントに割り当てられたアトリビュートが出力されます。
このid
アトリビュートを使用することで、後でいくつかポイントが削除されたとしても、Scatterで生成された元々のポイント番号を追跡することができます。
Output Radius and Density in Texture Space
有効にすると、出力される半径と密度のアトリビュートには、テクスチャ空間の半径と密度を含みます。無効にすると、それらのアトリビュートは、物理空間の半径と密度になります。
Point Attributes
これらのPointアトリビュートやグループは、入力ジオメトリから補間され、生成されるポイントに転送されます。
Vertex Attributes
これらのVertexアトリビュートやグループは、入力ジオメトリから補間され、生成されるポイントにPointアトリビュートの形式で転送されます。
Primitive Attributes
これらのPrimitiveアトリビュートやグループは、入力ジオメトリからコピーされ、生成されるポイントにPointアトリビュートの形式で転送されます。
Detail Attributes
これらのDetailアトリビュートは、入力ジオメトリからコピーされ、生成されるポイントにPointアトリビュートの形式で転送されます。
Detail as Detail
これらのDetailアトリビュートは、入力ジオメトリからコピーされ、生成されるポイントにDetailアトリビュートの形式で転送されます。
Examples ¶
DoorWithPolkaDots Example for Scatter geometry node
このサンプルでは、入力ジオメトリを再修正したり壊すことでトポロジーが変わってしまっても、整合性を保つようにポイントをばら撒くScatter SOPの使い方を説明しています。 これは、テクスチャ空間にポイントをばら撒くオプションで実現しています。
SpikyDeformingTorus Example for Scatter geometry node
このサンプルでは、Scatter SOPとAttribute Interpolate SOPを使用して、ジオメトリが変形しても、ばら撒かれたポイントが整合性を保つように簡単に調整する方法を説明しています。
SpottedSoccerBalls Example for Scatter geometry node
このサンプルでは、Scatter SOPを使用して、別々の破片が追加または削除されても、整合性を保つようにポイントをばら撒く方法を説明しています。 これは、プリミティブ毎に独自の乱数シードを使用するオプションで実現しています。
See also |