On this page | |
Since | 12.0 |
概要 ¶
このノードは、クラスタ化したポイントをクラスタアトリビュートとオプションでクラスタの中心点と一緒に出力することができる高レベルノードです。 低レベルのクラスタリングノードでは、このノードに基づいています。Clusterノードを参照してください。
このノードは、ポイント上にクラスタ番号を意味するcluster
整数アトリビュートを作成します(同じクラスタ内のポイントすべてが同じcluster
値を持ちます)。
このノードは、 K-meansクラスタリングアルゴリズム を使ってポイントをグループ化します。
Seedを変更してクラスタリングを変更する ¶
このノードで使用するK-meansクラスタリングアルゴリズムは、ランダムに選んだ初期クラスタ中心で左右されます。特に、少ない数のクラスタを作成する時です。 例えば、ジオメトリをお互いに遠く離れた2つのパーツに分割した時、初期中心がパートAの近くにないために、パートAのポイントすべてが1クラスタに、パートBのポイントがたくさんのクラスタに分割されてしまいます。
この場合、クラスタリングの結果が良くなるまで Seed パラメータを変更します。
Threshold Attribute ¶
このノードは、複数のアトリビュートをブレンド( Control Attributes パラメータを上げることで)してクラスタ化することができます。 各アトリビュートには Weight パラメータがあり、各ポイントをクラスタ化する時に使用する近接度の線形計算を制御します。
いくつかのアトリビュートでは、線形スケールが思ったようなものではない場合があります。Thresholdの機能を使う例として、 Impact Time によってポイントをクラスタ化する時です。例:
-
埃を表現するために、Impact Analysis DOPを使って、RBDオブジェクトが地面にぶつかった箇所にポイントを作成します。Impactポイントには
impacttime
アトリビュートを持ちます。このアトリビュートは、衝突が生じた時のタイムスタンプを含んでいます。 -
Impactポイントを別の流体シミュレーションボックスに格納するためにクラスタ化します。
-
位置でポイントを分類しますが(近くにあるポイント同士を同じボックスに格納します)、さらに Impact Time でも分類します(Impactポイントが同じ場所で発生しても、時間別でお互い距離が離れるImpactポイントは別のボックスに格納します)。
-
2つの“コントロールアトリビュート”のポジション(
P
)、impacttime
を使ってクラスタリングを制御し、impacttime
の Weight 値を上げることでImpact Timeでポイントをグループ化し、そしてPositionでポイントをグループ化します。 -
しかし、線形的な処理をする Weight パラメータは、思うような正しいウェイト値を拾うのが難しい場合があり、“十分に近い”Impactポイントが同じボックスに入り、そうでないImpactポイントは別々にクラスタ化されます。
これに対してThresholdの機能が役に立ちます。指定したアトリビュートの距離が特定の量( Threshold )よりも大きい場合、線形ウェイトの代わりに、高い“penalty”を最後の距離計算に追加します。
この例では、赤いポイントが前のImpactを意味し、緑のポイントが後のImpactを意味します。いくつかの箇所で、位置が重なっているImpactがImpact Timeに基づいて別のボックスに分類されていることが確認できます。
入力 ¶
Points To Cluster
クラスタへ分類する入力ポイント。このノードは、各ポイント上にポイントが属するクラスタ番号を持つアトリビュート(デフォルトでは、cluster
)を作成します。
Rest Position
クラスタのポイントではなく、この入力のポイントに基づいてクラスタの中心を計算します。これは、大きく間引きしたポイントクラウド(パフォーマンス用)や別のフレームでのポイントポジション(Timeshiftノード)からクラスタの中心を計算するのに役に立ちます。
パラメータ ¶
Output Attribute
ポイントに設定するアトリビュートの名前。このアトリビュートは、ポイントが属するクラスタ番号を含みます。デフォルトはcluster
です。
Output
クラスタ化したポイント、scale
アトリビュート付きのクラスタの中心、グループ内のクラスタ化したポイントとクラスタの中心の両方、クラスタの境界ボックスを出力するかどうか指定します。
Cluster Points
ポイントが属するクラスタ番号を意味するクラスタアトリビュート付きで入力ポイントを出力します。
Average Points
クラスタの中心をポイントとして出力します。ポイントにはscale
ベクトルアトリビュートがあり、これは、クラスタのポイントの境界ボックスを意味しています。
Both
クラスタ化した入力ポイント(グループ名がclusterpoints
)とクラスタの中心点(グループ名がaveragepoints
)の両方を出力します。
Boxes
クラスタの境界ボックスを出力します。
Color Output
ランダムなカラーアトリビュート(Cd
)をクラスタのポイントに追加します。
Points
ポイントに色を付けません。
Colored Particles
クラスタのポイントに色を付けて、それらのポイントからパーティクルシステムを作成します。 このオプションは、ポイントがパーティクルシステムになっている時にのみ表示されるバージョンとの上位互換のためにあります。
Colored Points
クラスタのポイントに色を付けます。
Cluster Filter
このパターンに一致するクラスタ番号のクラスタのみを出力します。例えば、3 4
に設定すれば、クラスタ番号が3と4のポイントのみが出力されます。
このパターンには、他のサーフェスノードと同じパターン一致構文を使うことができ、ポイント/プリミティブ番号を指定することができます。
例えば、3-6
は、クラスタ番号が3, 4, 5, 6のクラスタを出力します。
Control Attributes
グループ化するポイントを決めるために、ブレンドするベクトルアトリビュートの数。デフォルトは、ポジションアトリビュート(P
)を使用するので、ノードは、お互いに近いポイントをクラスタ化します。
Control Attribute
ポイントをクラスタ化するために使用するベクトルアトリビュートの名前。このアトリビュートに近い値のポイントがグループ化されます。
Weight
ポイントをグループ化するために使用する指定したベクトルアトリビュートの強さ。これは線形スケールです。もっと離散的にグループ化するには、Thresholdを使います。
Cluster Settings ¶
Build Clusters
入力ジオメトリが既に指定した出力名のPointアトリビュートを持っていれば、クラスタの構築をスキップして、それを使うことができます。 これは、クラスタシミュレーションのセットアップで他のオプションのメリットを受けることができます。
Clusters
入力ポイントをグループ化するクラスタの数。
Seed
この値を変更すると、通常では、別々のグループとクラスタ番号の割り当てが生成されます。
K-meansクラスタリングアルゴリズムは、ランダムなクラスタ中心から開始し、クラスタ中心を洗練させていくために反復処理をします。初期位置を変更すれば、グループが変わる可能性があります。
Refinement iterations
数値を上げればクラスタリングの精度が上がりますが、計算に時間がかかります。
K-meansクラスタリングアルゴリズムは、ランダムなクラスタ中心から開始し、中心からの距離の基づいてポイントをクラスタに割り当て、クラスタ内のポイントに基づいて中心に移動し、それを繰り返します。 この反復処理は、通常では、より適切なクラスタに収束します。
Threshold Attribute
このfloatまたはintegerのアトリビュートの値をthresholdとして使用します。このアトリビュートで“十分に近く”( Goal Threshold 以内)ないポイントは、コントロールアトリビュートではポイント同士が近くても、グループ化されません。
Weight
Threshold Attribute の強さ。Thresholdをオフにするには、この値を0
に設定します。
Initial Threshold
Thresholdアトリビュートの初期“cutoff”値。これは、最初のクラスタリング反復で使用されます。Thresholdの値は、最初に高ければ上手く動作し(つまり、コントロールアトリビュートが支配している)、反復する度に Goal Threshold へ下がって行きます。大雑把に言えば、 Goal Threshold の4倍に設定して開始します。
Goal Threshold
Thresholdアトリビュートの“cutoff”値で、最終的なクラスタリング反復で使用されます。この値からかけ離れているポイントは、同じクラスタになることはあり得ません。
Averaging Settings ¶
Copy Point Attributes From Cluster
平均ポイントが、クラスタから転送してクラスタのPointアトリビュートを持ちます。
Max Sample Count
中心のPointアトリビュートに寄与させる近接ポイントの数。値が1なら、一番近いポイントを使用します。
Size Attribute name
Output が“Average Points”または“Both”の時、ノードは、この名前でベクトルアトリビュートをクラスタの中心点に追加します。これはクラスタのポイントの境界ボックスを意味します。デフォルトはscale
です。
Padding Min
クラスタ中心点の境界ボックスのマイナスX、マイナスY、マイナスZ側またはscale
アトリビュートに追加する詰め合わせ量。
Padding Max
クラスタ中心点の境界ボックスのプラスX、プラスY、プラスZ側またはscale
アトリビュートに追加する詰め合わせ量。
Examples ¶
アニメーションするソースポイント Example for Cluster Points geometry node
ポインの数が変わるソースジオメトリをクラスタにする時、そのクラスタとクラスタの番号はフレーム毎にランダムに変化するので、おかしな結果になります。それを避けるために、いくつかのテクニックを使って、ポイントの最終番号に基づいたクラスタを作成しなければなりません。
最初に、Cluster Pointsノードでクラスタにするポイントのポイントポジションのセットを指定するために、 Cluster Pointsノードの2番目の入力 を接続します。これを rest position と呼びます。
例えば、Impact Analysisツールは、RBDオブジェクトの衝突からポイントを作成します。その結果のジオメトリのポイントの数は、RBDオブジェクトが衝突するほど増えます。
-
ROP OutputドライバとFileノードを組み合わせて、インパクトポイントジオメトリをディクスにキャッシュ化します。
(サンプルのファイルは単純化するためにディスクにキャッシュ化していません)
-
FileノードからTimeshiftノードを枝分かれして、Timeshiftの出力をCluster Pointsノードの2番目(rest position)の入力に接続します。
-
Timeshiftノードの Frame パラメータをクラスタを実行したい時間のフレームに設定します。通常はエフェクトの最後のフレームです。
$NFRAMES
変数を使えば、常にシーンの最後のフレーム番号を設定することができます。
次に、必要な分だけスモークボックスを作成するために、Smoke Objectノードの Continuous を有効にしなければなりません。 これは、 すべてのフレーム でインスタンスポイント毎に新しいスモークボックスを作成します。 これを回避するために、クラスタの中心点が現れるフレームにだけボックスを作成します。 サンプルファイルでは、For Each SOPを使ってクラスタの中心点現れるフレーム以外のすべてのフレームのクラスタの中心点を削除しています。
ばら撒いたポイントのポジションと番号がジオメトリを変形した時にフレームが変わっても、つじつまが合うようにするには、ばら撒いたポイントをくっつける方法を参照してください。
See also |