LoginSignup
0
0

Ocean Spectrum [Mardini2024]

Last updated at Posted at 2024-05-04

これはMardini2024のDay16 Ocean Spectrumの動画を視聴してまとめたものです。

動画

image.png

公式のサンプルファイル

Day15 Pyro Burst Source | Day16 Ocean Spectrum | Day17 Flip Solver

Ocean Spectrumノードを使用すると、リアルな海洋の波のシミュレーションを作成できます。

Ocean Spectrumのヘルプ

image.png

要約

  • Ocean Spectrumノードは、海洋の波のスペクトラムデータを生成できます
  • Ocean Evaluateノードを使用して、スペクトラムデータをジオメトリに適用します
  • 解像度、グリッドサイズ、タイムスケールなどのパラメータを調整できます
  • 風向、風速、うねり、チョップなどのパラメータで波の特性を制御できます
  • Wave Instancingを使用して、タイリングを解消し、バリエーションを追加できます
  • マスクを使用して、波の高さを抑制し、リアルな表現が可能です
  • シェルフツールを使用して、簡単に海洋シミュレーションをセットアップできます
  • Karma Render Settingsノードを使用して、ビューポートでオーシャンを表示できます
  • Attribute VOPを使用して、Ocean Spectrumのデータを直接操作できます
  • Ocean Spectrumのデータを使用して、他のシミュレーションを駆動することもできます

サンプルファイル

image.png

OCEAN_EVALUATE

Ocean Spectrumの評価例

image.png

image.png

DISPLACE

CdにVelocityを反映させた例

image.png

image.png

ocean_surface ocean_interior

シェルフで作成されるノード

Stage

image.png

Ocean Spectrumノードの基本

Ocean SpectrumもSOPレベルのジオメトリノードです。

image.png

ビューポートにはガイドが表示されますが、特に何も見えません。

image.png

海の動きを見るためには、追加でOcean Evaluateノードを接続する必要があります。

Ocean Spectrum + Ocean Evaluate

Ocean Evaluateノードを追加し、Ocean Spectrumの出力から2番目の入力に接続します。

image.png

しかし接続してもまだビューポート上は何も見えません。なぜなら第1入力にジオメトリを入力するモードになっているからです。

image.png

Preview Gridに切り替えるとOcean Spectrumが表示されます

image.png

デフォルトのDeform Input Geometryに戻し、Grid(Size:1000×1000,RowsColumns:500)を入力に入れます。

image.png

oceanspectrumの Node Infoを確認すると、いくつかのAttributeやボリュームのデータが確認できます。このデータをOcean Evaluateノードが解釈し、ジオメトリに適用しています。

image.png

Ocean Spectrumの問題点

image.png

先ほど作成したGrid入力の結果は明らかに問題があります。全体的にタイル化されており、本物の海にはまったく見えません。再生させると、Ocean Spectrumによって海の動きが付いていることを確認できます。

Ocean Spectrumの設定

image.png

  • Resolution Exponent : Ocean Spectrumの全体解像度

    • 値が高いほど解像度が高くなります。つまり、周波数が小さくなります
    • 値が低いほど、ディティールがなくなります
    • 値を2にすると、非常に大きな動きだけが維持されます
    • 一般的には、7から9の間の値が推奨されます
    • image.png
  • Grid Size : 特定のグリッドブロックのサイズです

    • 値を20に変更すると、小さな海を想定していることがわかります
    • 一般的には、50の値で大丈夫です
    • image.png
  • Time Scale : 海の再生速度

    • 値を上げると海の再生速度が上がります。しかし、これは物理的に正確ではありません
    • 速く移動している時の海という意味ではなく、ただ2倍の速度で再生しているだけです。なので、少し奇妙に見えることがあります。しかし、時々、Time Scaleを調整して、実際に海の速度を調整したい場合があるでしょう
  • Windタブ : 風

    • image.png

    • Spectrum Type

      • TMA(Texel-Marsen-Arsloe)スペクトル
        • 風がオーシャンに作用した時間の長さを指定するパラメータが追加され、 Depth設定を低くするとパフォーマンスが向上するように拡張されたスペクトル
    • Direction:波が動く方向

      • デフォルトのDirectionが0の状態ではX軸の正の方向に動いています
      • 値を変更すると、Y軸で回転します。つまり、90度で正のZ、180度で負のX、270度で負のZ、そして360度で正のXに戻ります
      • image.png
    • Wind Speed:海のダイナミックレンジを増加させます

      • これが意味するのは、風速によって生じる波の高さです
      • image.png
    • Swell(うねり)

      • Directionと連動して動作する値
      • 値によってTMAスペクトルの波の指向性が強くなります
      • 1に上げると、すべての波はDirectionで設定した方向にのみ動き、-1に設定すると指向性がなくなり、風と反対の方向を向く波が追加されます
    • Fetch(km)

      • 海岸からどれだけ離れているか
      • 一般的に海の場合は300のようなものを使用しますが、より浅い水域が良い場合は、10km以下に下げることがあります
      • image.png
    • Chop

      • 波のピークがどれだけ鋭いか
      • 値を上げると密集して引き寄せられ波が尖ります、値を下げると広がりなめらかになります
      • image.png
  • Amplitudeタブ

    • image.png
    • 海のスケーリング係数
    • 値を上げると乗数としてスケールされ、誇張された波になります
    • image.png

Wave Instanceによるタイリングの除去

Wave Instanceはタイリングを取り除くのに役立ちます。除去を効果的に行うためにScatterノードを使用します。

image.png

ジオメトリ(ここではGrid)上で均等にポイントを分布させます。そのままだと均等ではないので、Max Relax Radiusを増やしましょう。

image.png

接続した結果を見てみましょう。小さなパッチができているのがわかります。
image.png

例えば、Scatterのポイント数を50に減らすと「小さなパッチ」が何なのかがわかります。
すべてのポイントに波のパッチがインスタンス化されています。

image.png

Wave Instancingタブではバリエーションの設定ができます。

image.png

Scatterで分布させた全ポイントは、20の半径、Zの回転、0.8の振幅を持ち、それぞれのバリエーションを持ちます。ポイントの数を2倍の2000にすると、より海面らしい形にすることができます。

Scatter時に、分布できていないポイントがある場合、ScatterノードのScale Radii byを1から10に増やしてください。より均一に分布した状態にすることができます。

image.png

これでOcean Spectrumからタイリング取り除かれました。

image.png

■ 注意点

このScatterポイントは加算的であることに注意してください。例えばポイント数を8000など増やしすぎると、海に小さなアーティファクトやものが発生してしまい、ピークが本当に高くなります。

image.png

なぜなら、たくさんのポイントを互いの上に重ねて、振幅を単に足し合わせているからです。あまりにも多くのポイントを互いに近づけすぎないようにしてください。

マスクの使用

image.png

マスクタブの中を見ていきます。Suppressionを使用してAdd Noiseにチェックを入れてノイズを追加すると、Ocean Spectrumの一部の領域が平坦になるのがわかります。

image.png

これで波打っているところと、波打っていない場所ができてリアルになります。とはいえ一切波が無く平坦になるのも変なので、いくつかの変更を加える必要があります。

image.png

Output Rangeの入力範囲と出力範囲で、0の値を0.3に変更します。ノイズの領域がゼロの値を取得しないようにするためです。

image.png

Ocean Spectrumの使用方法

Ocean Spectrumの活用事例を知るために、シェルフのOceansタブからいくつかの例を見てみましょう。

image.png

Small Oceanをクリックすると、小さな海が生成されます。
先ほどやった例と同じことが行われていることが確認できます。

image.png

このネットワークを見ると、Ocean SpectrumがOcean Evaluateに適用され、ここにノード名はプレビューとあります。ROP Geometry OutputはOcean Spectrumから伸びており、つまり実際に出力されている海の情報はOcean Spectrumが全て持っています。ディスクに保存するときは、単にbgeo.oscファイルとしてのみ保存します。

Stageを見ると、Houdini Ocean Proceduralノードが追加されています。

image.png

レンダリングのためにディスクからスペクトラを取得しています。

image.png

よってまずはFile Cacheで「Save to Disk」を押して、ディスクに保存してからレンダリングを行う必要があります。

image.png

Karmaでの海のプレビュー

ただし、Karmaで海をプレビューするには、実際にはいくつかの設定が必要です。デスクトップをSolarisにします。
image.png

カメラ、ライト(Sky)、Karma Render Settingsノード、USD Render ROPノード追加します。

image.png

ビューポートをKarmaに切り替えます。

image.png

いまのところ平らな平面があるだけです。
海を表示するためには、Preview Houdini Proceduralsノードが必要です。

image.png

すると非常に低解像度の海が表示されます。

image.png

より高解像度のものを見るには、Ocean Proceduralに移動し、Viewport Qualityを0.1から1に設定します。

image.png

これで海がレンダリングされます。

image.png

他のOcean Tools

Small Ocean以外にLarge OceanとGuided Ocean Layerがあります。

Large Ocean

Large OceanはSmall Oceanとほとんど同じ拡張バージョンです。

image.png

スキャッタースプリットの下を見るとOceanSpectrumを2つ作成して、一緒にマージしてから、Ocean Evaluateに渡しています。

image.png

Guided Ocean Layer

image.png

これはかなり複雑です。なぜなら、Flip SolverとOcean Spectrumを使用するからです。

image.png

Ocean Spectrumを作成し、Wave Tankに供給され、Guided Ocean Layerに渡されるのがわかります。それが海のシミュレーションに使用されていることがわかります。

image.png

Ocean Evaluateとその他の方法

Ocean Spectrumからのディスプレイスメント情報はグリッド以外にも適用できます。たとえばラバートイ(Unifrom Sizeを10などに増やし、サブディバイドしたもの)でも大丈夫です。

image.png

Ocean Spectrumの影響を受けることがわかります。

image.png

Ocean Evaluateを使用せずに変形させる方法もあります。それはAttribute VOPを使用する方法です。

image.png

1番目の入力はジオメトリからスキャッターされたポイントが入力されています。
Ocean Spectrumは2番目の入力に接続します。

VOP内部では、Ocean Sample Layersを使用できます。必要なのは、ジオメトリのP(位置)、Time(時間)、そしてファイル名が2番目の入力のOcean Spectrumです。

image.png

ディスプレイスメントについては、元の位置に変位出力をAdd(追加)して出力します。

image.png

さらに、Cusp(鋭さ)のようなものを出力することもできます。

image.png

例えばCdに出力すると、これがスペクトルのピークが確認できます。

image.png

同様に、Velocity速度もCdに入れて確認できます。

image.png

image.png

まとめ

Ocean Spectrumノードはリアルな海洋シミュレーションを作成できます。Ocean Spectrumからは多くのデータにアクセスできるので、データがどこに存在しているのか、関連してどのように操作するかを知っていれば様々な表現に結びつけることができます。パラメータを調整し、他のノードと組み合わせることで様々な表現が可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0