On this page |
概要
Houdiniでは、元々からポイント/プリミティブにそれぞれ固有の順番が割り当てられており、各ポイント/プリミティブが自身の"ポイント番号"または"プリミティブ番号"(これは、ポイント/プリミティブのリストのインデックスです)を知っています。 このノードでは、特定の基準に基づいてポイント/プリミティブの順番を変更することができます。
プリミティブ内の頂点の順番を変更するには、Reverse SOPを使ってください。
任意のエクスプレッションによるソート
このノードの"By Expression"オプションを使用しないでください。代わりに、以下の操作を行ないます:
-
Attribute CreateまたはAttribute Wrangleを使用して、各ポイント/プリミティブに対して"比較キー"の値を持ったアトリビュートを設定します。この値を使用することで各エレメントの順番を決めることができます。
-
Sortノードの"By Attribute"を使って、そのキーアトリビュートを指定します。
これは、"By Expression"によるソートよりもメリットが2つあります:
-
Geometry Spreadsheetでそのアトリビュート値を調べることで、正しい値が生成されているのかを確認することができます。
-
"By Attribute"による並べ替えはマルチスレッドであるのに対して、ローカル変数を使用した"By Expression"はマルチスレッドではないので、通常では、この方が 非常に 高速です。
Note
Sort SOPは、Vector3/Vector4の値または配列を適切に ソートしません 。要するに、単一コンポーネントでソートするだけです。 とはいえ、Sort SOPは安定したソートを使用しているので、Sort SOPを複数まとめて繋げることで、複数コンポーネントによるソート、複数アトリビュートによるソートを行なうことができます。
ローカル変数
このノードには何も特別なローカル変数はありません。 "By Expression"によるソートを行なう際には共通のローカル変数を使用することができますが、上記の任意のエクスプレッションによるソートを参照してください。
パラメータ
Point Sort
エレメントをソートする方法。
No Change
順番を変更しません(現在の順番を維持します)。
By Vertex Order(ポイントのみ)
ポイントをプリミティブの頂点の順番に合わせて並べ替えます。
カーブに沿ってポイント番号が上昇していないカーブがあれば、このオプションを使うことで、カーブ方向に合わせてポイント番号をソートすることができます。
By X/Y/Z
エレメントのX、Y、Zの座標でソートします。
Reverse
現在の 順番を逆順にします。
Random
エレメントをランダムな順番でごちゃ混ぜにします。
Shift
現在のエレメント番号を順方向に特定の数だけオフセットしてずらします。ポイントリストの最後のポイント番号が、最初のポイント番号に循環します。
Proximity to Point
特定のポイントまでの距離に基づいてエレメントの順番を決定します。
これは、ポイントクラウドをターゲットに近いN番目までのポイントのみに制限するのに役立ちます。 例えば、近接度によってポイントをソートしてから、最初のN個以外のポイントすべてを削除することができます。
Along Vector
3D空間内の特定の線に沿った位置でエレメントの順番を決定します。これは"By X/Y/Z"と同様ですが、座標軸のどれかの代わりに任意の方向を指定することができます。
By Expression
このオプションはエクスプレッションによって求まった"キー値"を使ってエレメントをソートすることができますが、アトリビュートを使用した方が高速で便利です。
Spatial Locality
空間的に近い位置にあるエレメントがほぼ近いインデックス値を持つようにエレメントの順番を変更します。
By Attribute
アトリビュート値をソートの"キー値"として使用します。 Vector3/Vector4アトリビュートに関しては、このノードは、一度に単一コンポーネントしかソートできません。 とはいえ、Sort SOPは安定したソートを使用しているので、Sort SOPを複数まとめて繋げることで、複数コンポーネントによるソート、複数アトリビュートによるソートを行なうことができます。
Seed
ソートの方法が"Random"の時、乱数生成に使用するシードを指定します。シードが異なれば、異なるランダムな順番が生成されます。
Offset
ソートの方法が"Shift"の時、エレメント番号を順方向にずらす数を指定します。
Point
ソートの方法が"Proximity"の時、このポイントまでの近さに基づいてエレメントの順番が決まります。
Vector Object
ソートの方法が"Along Vector"の時、ここにObjectノードのパスを入力すると、Sort SOPは、そのオブジェクトの位置をソートさせるベクトルとして使用します。
これは、原点からオブジェクトの現在の3D位置までのベクトルに沿ってソートすることができます。
Vector
ソートの方法が"Along Vector"の時、ソートに使用するベクトルを指定します。このベクトルは符号に対応しているので、0, 1, 0
の値はBy Yによるソート、0, -1, 0
の値はその逆順のソートと等価です。
Expression
ソートの方法が"By Expression"の時、ここには、キー値の生成に使用するエレメント単位のエクスプレッションを指定しますが、アトリビュートを使用した方が高速で便利です。
Attribute
ソートの方法が"By Attribute"の時、ソートのキー値として使用するアトリビュートの名前を指定します。
Component
ソートの方法が"By Attribute"の時、ソートのキー値として使用する複合(ベクトル/マトリックス)値のコンポーネントを指定します。 このノードは、一度に単一コンポーネントしかソートできません。 とはいえ、Sort SOPは安定したソートを使用しているので、Sort SOPを複数まとめて繋げることで、複数コンポーネントによるソート、複数アトリビュートによるソートを行なうことができます。
Reverse Point Sort
上記のコントロールによって計算されたソート順を逆順にします。例えばソートの方法を"By X"に設定して、これを有効にすると、ポイントはX位置の 下降順 でソートされます。
Primitive Sort
上記の Point Sort のヘルプを参照してください。
Sort Vertices by Order in Primitives
各プリミティブ内のポイント番号と同じ順番で頂点番号をソートします。
Examples
The following examples include this node.
ClipParticle Example for Clip geometry node
このサンプルでは、Clip SOPで無限平面を使用して、パーティクルの流れを切り取る非常に単純な方法を説明しています。
アニメーションを再生して、その効果を確認してください。
CopyTemplateAttribs Example for Copy Stamp geometry node
Copy SOPは、テンプレートから特定のアトリビュートを、コピーしたプリミティブに転送することができます。このサンプルでは、カラーアトリビュートを設定したポイントをテンプレートとして、球にカラーアトリビュートを追加しています。Particle SOPは球のポイントからパーティクルを生成するために使用しています。
Copy SOPは次の2つの事をしています:
-
ジオメトリをパーティクルにコピー。
-
ソースの球のポイントからカラーアトリビュートをパーティクルの位置にあるジオメトリに転送。
アニメーションを再生して、その効果を確認してください。
ParticleCopyScale Example for Copy Stamp geometry node
Copy SOPは、Particle SOPを使ったパーティクルをテンプレートとしてジオメトリをコピーすることができます。このサンプルでは、Copy SOPのScaleパラメータを使って特殊な効果を作成しています。 Copy SOPは、Scale以外にもコピーしたジオメトリのアトリビュートを制御することができます。
アニメーションを再生して、その効果を確認してください。
CreepParticleTubeA Example for Creep geometry node
このサンプルでは、パーティクルがサーフェス上を這う2通りの方法を説明しています。このケースでは、サーフェスは捻じ曲がったチューブです。
1つ目がサーフェスの内側にパーティクルを這わせる方法、2つ目がサーフェスの外側にパーティクルを這わせる方法を説明しています。これはCreep SOPのz scaleを変更することで、サーフェス法線方向にパーティクルをオフセットしています。
パーティクルはチューブから抽出した円から発生しています。
DirectedEdgesPath Example for Find Shortest Path geometry node
このサンプルでは、FindShortestPath SOPを使って、指向性のエッジを持つジオメトリから最短パスを見つける方法を説明しています。 指向性のエッジは、1方向にしか移動できません。
SOPがどのように間違えた方向を回避するのか、なぜ出力方向のエッジのみではポイントに到達できないのかを調べるために、指向性のエッジだけでなく、開始/終了点も変更してみてください。
PathAnalysis Example for Find Shortest Path geometry node
これは、FindShortestPathとAttribWrangleによる測定に基づいた"中心軸"パスを優先にする高度なサンプルです。これは、壁への近接を回避するのに役に立ちます。
空間内でもっと簡単に確認するには、Display OptionsダイアログのOptimizationタブにあるCulling > Remove Backfacesをオンにします。 Switchノードを使って別の中心軸測定を可視化してみてください。パスの中心軸を考慮しない同じサンプルを、違いがわかるようにSOPネットワーク内の端に置いています。
ForceBasic Example for Force geometry node
このサンプルでは、Metaball SOPとParticle SOPをForce SOPと組み合わせてダイナミックアニメーションを作成する方法を説明しています。
Force SOPのRadial Forceパラメータを使用すると、パーティクルが内側と外側に吹きつけられます。 Directional Forceパラメータを使用すると、ある軸を基準にメタボールがぐるぐるまわると、それに伴って回転する渦が作成されます。
再生ボタンを押してアニメーションを確認してください。
MagnetBubbles Example for Magnet geometry node
このサンプルではMagnet SOPでジオメトリを変形する方法を説明しています。
Magnet SOPの影響力をメタボールの大きさに設定しています。その影響力は、サーフェスとメタボールの中心との距離に基づいて変形します。
このサンプルでは、平面のサーフェス上を跳ねて移動するパーティクルにメタボールを追加しています。そのサーフェスとメタボールが交差した箇所が泡のように変形します。
MatchTopologySphere Example for Match Topology geometry node
このサンプルでは、Match Topology SOPを使ってポイント番号とプリミティブ番号を揃える方法を説明しています。
Tracking Points、Reference Points、Assume Primitives Matchの機能は、完全な一致を得るために使用します。
FlutteringLeaves Example for Particle geometry node
このサンプルでは、Particle SOPを使って、ひらひらと舞う葉っぱのシミュレーションの作成方法を説明しています。
また、Point SOPでポイント法線を修正することで、パーティクルの速度と方向に影響を与える方法を説明しています。 パーティクルとは実際には空間内のポイントなので、パーティクルのアトリビュートを制御するにはPoint SOPを使用するのが効果的な方法です。
再生ボタンを押してシミュレーションを確認してください。
ParticleAttractor Example for Particle geometry node
このサンプルでは、メタボールをフォースとしてParticle SOPを使用する方法を説明しています。
パーティクルは原点から発生し、止まっているメタボールに向かって進みます。 メタボールにはForce SOPが適用されていて、パーティクルがメタボールに到達すると広がっていきます。
ParticleExamples Example for Particle geometry node
このサンプルでは、Particle SOPの色々な使い方を5つの説明しています。
-
Creep Creep SOPを使ってサーフェス沿いにパーティクルを這わせます。
-
Group サーフェス上のポイントのグループからパーティクルを発生します。
-
Bounce パーティクルを跳ね返らせます。
-
Split 接触時にパーティクルを分割します。
-
Collide 衝突オブジェクトからパーティクルを発生します。
-
Moving Object 移動オブジェクトからパーティクルを発生します。
-
Force メタボールを使ってパーティクルに力を加えます。
ParticleFountain Example for Particle geometry node
このサンプルでは、いくつかのParticle SOPと基本モデルから噴水を作成する方法を説明しています。
法線オフセット、速度の多様化、衝突時の動作を設定して、パーティクルの動きと見た目を設定する方法がわかります。
ParticlePusher Example for Particle geometry node
このサンプルでは、Metaball SOPとForce SOPを使って、Particle SOPで生成したパーティクルの流れを左右に押し出す方法を説明しています。
パーティクルは球から広がって発生すると同時に、メタボールが左右に動いてパーティクルを押し出します。
アニメーションを再生して全体の効果を確認してください。
ParticleTube Example for Particle geometry node
Particle SOPはSOPレベルでパーティクルを作成することができ、そのパーティクルを直接ジオメトリと作用させることが可能です。 さらに、パーティクルは次々とポイントジオメトリとして扱われます。
このサンプルでは、チューブオブジェクト上を這うパーティクルとチューブオブジェクトに衝突するパーティクルがあります。 そのオブジェクトのポイント法線(パーティクルの法線を含む)を調整してSOP内のパーティクルを制御することも可能です。
AimPointNormals Example for Point geometry node
このサンプルでは、Point SOPを使ってポイント法線の方向をパスに沿わせる方法を説明しています。 これによって、ジオメトリをポイントにコピーした時にジオメトリの向きを制御できるようになります。
Carve SOPにエクスプレッションを使用することで、フレーム毎に1ポイントの基準でポイントを螺旋に沿って抽出しています。 円錐を抽出したポイントに連続でコピーすることで、パスに沿ってアニメーションします。