このオペレータは、荒さと減衰の加減で乱流を計算することができる3タイプの1Dおよび3Dノイズを計算できます。
Perlin noise (ストリング値"pnoise") Original Perlin noise (ストリング値"onoise") Sparse Convolution noise (ストリング値"snoise") Alligator noise (ストリング値"anoise") Simplex noise (ストリング値"xnoise") Zero Centered Perlin (ストリング値"correctnoise")
Original PerlinノイズはPerlinノイズに似ていますが、計算の効率が少し劣り、特性が異なります。Turbulence(乱流)が0の時は、ノイズの境界はおおよそ(-1, 1)です。
Perlinノイズは、約(0, 1)の範囲でノイズのオクターブを合計し、非ゼロ中心の結果になります。 したがって、Zero Centered(ゼロ中心) Perlinの方が他のノイズフィールドの範囲に一致します。
Sparse Convolutionノイズは、Worleyノイズに似ています。一番近いすべてのポイントのウェイトに基づいてノイズが返されます。 各ポイントの寄与はロールオフカーブのようなメタボールに基づきます。 つまり、サンプルポイントが球形に近い場合、その寄与は大きくなります。Turbulence(乱流)が0の時は、ノイズの境界はおおよそ(-1.7, 1.7)です。
Alligatorノイズは、Worleyノイズに似ています。 Worley関数によりAlligatorノイズをシミュレーションすることは現在はできませんが、非常によく似た"見た目"を作成することは可能です。 Turbulence(乱流)が0の時は、ノイズの境界はおおよそ(0, 0.5)です。
SimplexノイズはPerlinノイズとよく似ていますが、グリッドではなくシンプレックスメッシュ上のサンプルを使用します。
これにより、グリッドによる乱れが少なくなります。また高階bspline
を使用し、すぐれた微分係数を提供します。
別のタイプのノイズを計算する相対コストは、おおよそ下記のとおりです。
コスト | ノイズタイプ -----+------------------------- 1.0 | Perlin Noise (Periodic Noiseオペレータ参照) 1.1 | Original Perlin Noise 1.8 | Worley Noise (Worley Noiseオペレータ参照) 1.8 | Periodic Worley Noise (Periodic Worley Noiseオペレータ参照) 2.1 | Sparse Convolution Noise 2.3 | Alligator Noise
どのようなノイズでも認識できるように少なくともPosition(pos
)入力を必ず接続してください。
最も簡単な方法は、グローバル変数P
をpos
入力につなぐことです。
すべてのグローバル変数は、Global Variablesオペレータから使用することができます。
Examples
The following examples include this node.
Street Crowd Example Example for Crowd Solver dynamics node
2つのエージェントグループによるストリートのセットアップを説明した群衆サンプル。
このセットアップは、2つのエージェントグループを作成します。 黄色のエージェントがゾンビで、ストリートのパスに沿います。青色のエージェントがぶらついている歩行者で、ゾンビが近づくと走ります。
エージェントの状態を変更するトリガーは、crowd_sim DOPNETでセットアップします。 ゾンビのグループは、信号との距離と信号の色を使用し、信号が赤になると停止状態に変わります。 生存者のグループは、ゾンビが近づくと走行状態に変わります。
Note
アニメーションクリップは、シーンを再生する前にベイクするのに必要です。これは、サンプルをCrowdsシェルフから作成した場合に自動的に行なわれます。 そうでない場合は、シーンファイルを希望の場所に保存し、'/obj/bake_cycles' ROP NetworkのRenderをクリックして、ファイルを書き出します。 それらのファイルのデフォルトのパスは、${HIP}/agentsです。
FlipColumn Example for FLIP Solver dynamics node
このサンプルでは、流体の色がStaticオブジェクトとの衝突で混色させる方法を説明しています。
CurveForce Example for POP Curve Force dynamics node
このサンプルでは、POP Curve Forceノードを使って、パーティクルシミュレーションとFLIP流体シミュレーションの流れを制御する方法を説明しています。
Down Hill Lava Flow Example for Material shader node
このファイルでは、傾斜が低い箇所にCrust(地殻)が集まって硬化する溶岩の流れを作成しています。このアニメーションは、シェーダで作成していて、ジオメトリそのものはアニメーションしていません。
Note
Lava(溶岩)マテリアルのパラメータのほとんどを、サーフェスノードで作成したPointアトリビュートで上書きしています。
FirePit Example for Material shader node
Note
このファイルでは、ジオメトリはアニメーションしていません。 テクスチャをアニメーションさせることで、すべてのアニメーションを表現しています。
炎は、UVテクスチャを簡単に適用できるようにグリッドで作成し、Magnet SOPを使ってメタボール周辺を歪ませています。
炎には、黄色または青のFlameテクスチャのどれかを割り当てています。
Flamesのopacity mask wrapをDecalに設定することで、テクスチャがFlameジオメトリの上部で単一ピクセルリングを繰り返して表示するのを回避しています。
また、flameOpacMap.jpg
というマスクファイルを使って、上部にFlameの形状を調整しています。
noise offsetを$T
でY軸を強くアニメーションさせることで、Flameが上昇しているように見せています。これは、Noise jitterもY軸に対して大きくなります。
炭は、変形させたグリッドにCopy Stampを適用した球で表現しています。
Attribute CreateSOPを使えば、SOPレベルでLava(溶岩)のテクスチャのパラメータを上書きしてCopy Stampすれば、$BBY
などのローカル変数を使ってテクスチャをアニメーションさせることができます。
そうすれば、テクスチャのCrust(地殻)とその値だけを使って、炭の上部の形状を修正することができます。
これは、炭の下部で使用するテクスチャのLava(溶岩)のアスペクト比を保持します。熱を発する炭の下部の残り火を表現するために、Lava(溶岩)の強度(Kd
アトリビュート)をスタンプしてアニメーションしています。
StyleDisplacement Example for Material shader node
このサンプルファイルでは、2つの四角形で構成されたオブジェクトに対して、片方の四角形にはバンプマップを、もう片方の四角形にはTrue Displacementが適用されています。 そのオブジェクトが複製されており、2番目のコピーでは、スタイルシートを使用して、それらの2つの四角形に対してマテリアルの割り当てを逆にしています。
LayerVariations Example for Agent Layer geometry node
このサンプルは、いろいろなジオメトリのバリエーションを持ついくつかのレイヤーを作成して、 それらのレイヤーをエージェントにランダムに割り当てる方法を説明しています。
RandomMaterial Example for Attribute String Edit geometry node
このサンプルでは、Attrib String Edit SOPを使って、文字列Primitiveアトリビュートの修正と、
プリミティブ単位でグリッドのカラーをランダム化する方法を説明しています。
サンプルでは、material_override
Primitiveアトリビュートの文字列値にdiff_int
を修正しています。
AlphaOmega Example for Points from Volume geometry node
このサンプルでは、Points From Volume SOPでFLIPシミュレーション用のターゲットゴールを作成して、指定したジオメトリを満たすようにします。
UnpackWithStyle Example for Unpack geometry node
このサンプルでは、アンパックと同時にスタイルシート情報を評価することができるUnpack SOPの機能について説明しています。 Nested Packed Primitiveでは、スタイル情報を維持しつつも部分的にアンパックできることを説明しています。 このサンプルでは、Python SOPを使って、プリミティブ単位でスタイルシートから情報を抽出する方法も説明しています。
See also |