チャンネル(フィールド)
チャンネル(フィールドまたはボリューム)は、特定の物理特性、例えば圧力や速度、距離、煙の濃度などを表す値が含まれた3Dボリュームです。チャンネルは、各ポイントの値が数学関数に基づく場合(例: E_Sphere ノード)は陰的に、値が3Dグリッドの値から補間されている場合(例: シミュレーションエレメントや読み込まれたキャッシュ)は離散的になります。
チャンネルは、Nukeで直接可視化したり、レンダリングすることができるほか、Eddyや他のツールでの後処理向けにOpenVDBボリュームとしてエクスポートおよびインポートすることができます。
スカラーチャンネル
スカラーチャンネルは、空間の各ポイントで1つの浮動小数点小数値を保存します。スカラーチャンネルのシミュレーションの例としては、温度や圧力、密度などがあります。
符号付き距離チャンネル
(Signed Distance FieldsまたはSDFともよく呼ばれる) 符号付き距離チャンネルは、サーフェスを表現するために使用することができるタイプのチャンネルです。
SDFは、ジオメトリの表面上で一番近い点との符号付き距離を格納する空間内の各点によって、間接的にジオメトリの表面に陰的な幾何学的表現を行います。ジオメトリの表現が複雑すぎるように見えますが、SDFには、ジオメトリの変形や衝突を高速に検知することができる特性がいくつかあり、SDFをシミュレーションにうまく適合させます。
Eddyでは、Mesh to Volumeノードを使用してメッシュから、もしくはParticle to Volumeノードを使用してパーティクルからSDFを生成することができます。シンプルな形状のチャンネルノード (例:E_Sphere, E_Box) もSDFチャンネルを出力します。
ご注意
Eddyでは、SDFはジオメトリの表面の内側は負の値、外側は正の値を持つという慣例を使用します。
ご注意
修正/歪曲されたSDFチャンネルを可視化する場合、Eddyは、チャンネルをサーフェスとして可視化すべきかどうか、自動的に判断できないことがあります。その場合、「Force SDF」チェックボックスにチェックを入れて、SDFジオメトリとしてデータを変換するように、Eddyに指示を出す必要があります。
フォグボリュームとして可視化されたスカラーチャンネル | 符号付き距離チャンネル |
---|
ベクトルチャンネル
ベクトルチャンネルは、空間の各ポイントで3つの浮動小数点小数値を保存します。ベクトルチャンネルの例としては、速度、渦度、カラーなどがあります。
ベクトルチャンネルのトランスフォーム
ベクトルチャンネルにトランスフォームを適用する場合(例: 回転やスケール)、各ポイントのベクトルの値も変換する必要があります。例えば、速度チャンネルを回転させると、速度値自体の方向も回転します。ノードは、可能であれば、トランスフォームタイプを自動的に決定しますが、時には手動で指定する必要があり、上書きすることができます。
ベクトルチャンネルのトランスフォームには3つの方法があります。
- Vector: デフォルトのトランスフォームタイプです。ベクトル値は、適用されたトランスフォームにより回転し、スケールします。速度, フォース, 方向チャンネルは、すべてこの方法でトランスフォームする必要があります。
- Normal: 法線ベクトルは、標準のベクトルと同じ方法で回転により影響を受けますが、スケール時は挙動が異なります。これは、 E_MeshToVolume ノードによりメッシュからボクセル化される法線ベクトルチャンネルに使用されたり、E_FiniteDifferenceノードから計算された勾配に使用されます。
- Coordinate: 座標ベクトルは、トランスフォームによる影響を受けません。これは、カラーチャンネルやテクスチャ座標チャンネルなどに使用されます。
ベクターチャンネル |
---|
Channel Sets
Eddyのチャンネルセットは、単なるチャンネルの集まりで、各チャンネルには名前が与えられています。チャンネルセットは、elements, cache loadersまたはvoxelizersのような複数のチャンネルを生成するいろいろなノードから出力されます。
チャンネルセットから個別のチャンネルを抽出するには、E_Channel ノードを使用します。
Channel Setのウィジェット
チャンネルセットのウィジェットは、チャンネルセットを出力するノードのほとんどのプロパティパネルに表示されます。これにより、個別のチャンネルでいくつかのプロパティを指定したり、デフォルトのチャンネル定義を追加することができます。これは、E_CacheLoaderノードに表示されているウィジェットです。
E_CacheLoaderに表示されているChannel Setのウィジェット |
---|
そのノードに適するものに応じて、ノードごとに異なる列が表示されます。
- 選択チェックボックスにより、チャンネルを出力チャンネルセットに表示するかどうかを制御します。
- Name: チャンネルの名前です。これは、 個々のチャンネルを抽出するためにE_Channelノードで指定する必要があるものです。
- T: スカラーやベクトルのようなチャンネルのタイプです。
- type: ベクトルチャンネルのトランスフォームタイプです。ベクトルチャンネルのトランスフォームを参照してください。
- Value: チャンネルのデフォルト値です。
- Interpolator: 離散チャンネルをサンプリングする際に使用する補間です。
- Exists: 読み込み中のキャッシュにチャンネルが存在するかどうかを表示します。キャッシュに存在しないチャンネルは、デフォルトチャンネルに置き換えられます。
新しいデフォルトチャンネルをウィジェットに追加するには、ウィジェットの下部にあるテキストボックスにチャンネル名を入力し、新しいチャンネルのタイプを選択して、+のアイコンをクリックします。
Interpolators
離散的な3Dグリッドから自身の値をサンプリングするチャンネルでは、補間方法を指定する必要があります。補間は、グリッドで隣接する値をどのように組み合わせて最終値を生成するかを記述します。
- Trilinear: 最もシンプルで高速な補間方法です。これはデフォルトで、推奨された安全な選択肢です。
- B-Spline: このタイプは、他の三次補間より少し速いトリキュービック補間ですが、チャンネルに多くのスムージングを施してくれます。
- Tricubic: これは標準のトリキュービック補間です。この方法は、Trilinearより速度は落ちますが、B-Splineの過度なスムージングを適用しなくても滑らかな結果が生成されます。Tricubicはデータをオーバーシュートすることがあります。
- Monotonic tricubic: これは、モノトニックなトリキュービック補間のバージョンのため、データのオーバーシュートは発生しません。
- High order: これは、Eddyのカスタムの高次補間です。Tricubicより速く、トリリニアより滑らかな結果を生成しますが、Tricubicほど滑らかにはなりません。この方法では通常、データのオーバーシュートは発生しません。
- Clamped high order:これは、データのオーバーシュートが発生しないようにするために、滑らかさを少し犠牲にするHigh order補間のバージョンです。
ご注意
ご注意
補間方法の選択
使用に最適な補間は、残念ながら問題にもよりますが、滑らかな結果を確保する必要がない限り、一般的にはTrilinearを使用します。滑らかな結果を確保したい場合は、High orderの方法を推奨します。Trilinearでは満足な結果が得られず、High orderでは遅すぎる場合、B-Spline, TricubicまたはMonotonic tricubicを使用すると、速度と品質間の妥協を図ることができます。
補間のオーバーシュート
非線形補間では、データのオーバーシュートまたはアンダーシュートが発生するおそれがあります。これはつまり、既知の2つのデータポイント、例えば、0と1の間の値を推定する場合、推定値は、0より小さい、または1より大きくなることがあります。つまり、値の区間の外側にある値が補間されるということです。この現象は、補間されるデータの値が急激に変化し、問題となる可能性のある領域で発生します。補間される値が密度などを表している場合、補間によってこの状況では無効になる0未満の値が生成されることがあります。
SDFチャンネルを補間する場合と同様に、オーバーシュートを発生させる補間方法は、角のようなシャープな形状の近くにあるジオメトリを歪曲させることがあります。
このため、このような場合にはオーバーシュートを発生させない補間方法を使用することをお勧めします。滑らかさが一番の関心事でない場合はTricubicを、滑らかさが重要な場合は、High orderの方法を使用してください。滑らかさを最優先する場合は、B-SplineまたはMonotonic tricubicが最適な選択肢です。
合成操作
作成中: マスクする、マスクの反転、最小/最大、加減の例
SDFの合成
作成中: 最小/最大のSDF挙動の例