海面の作り方 【Blender】

Blenderで海面(波のある水面)を作る方法はいくつかありますが、基本的なやり方は大きく分けて

  1. **Ocean Modifier(オーシャンモディファイア)**を使う方法(高速・リアル)
  2. ジオメトリノードディスプレイスメントを使う方法(カスタム性高め)
  3. **流体シミュレーション(Fluid Simulation)**を使う方法(物理ベース)

ここでは一番簡単でリアルな Ocean Modifier を使った手順を説明します。


🌊 Blenderで海面を作る手順(Ocean Modifier編)

1. メッシュを用意

  1. Shift + AMesh > Plane(平面)を追加
  2. スケールを大きくして (Sキー)、例えば 50×50 くらいにする

2. Ocean Modifier を追加

  1. 平面を選択
  2. 右側の モディファイアタブ(レンチアイコン)
  3. Add ModifierOcean を選択

3. 波の設定

  • Resolution(解像度)を上げると細かい波になる(例: 12〜16)
  • Size:波の大きさ(海のスケール感調整)
  • Choppiness:波のとがり具合
  • Time:波のアニメーション進行
  • Scale:全体的な波の高さ

4. マテリアル設定(リアルな水色)

  1. Shadingタブへ移動
  2. 新規マテリアルを作成
  3. Principled BSDF の設定:
    • Base Color:濃い青〜青緑
    • Transmission:1.0(完全透明)
    • Roughness:0.0〜0.1(反射を強く)
    • IOR:1.333(水の屈折率)
  4. Environment Texture(HDRI)を使って反射をリアルにする
    • WorldタブでHDRIを読み込み(海辺や空のHDRIが効果的)

5. アニメーション

  • Ocean ModifierTime にキーフレーム(Iキー)を打って進めると波が動く
  • 例:フレーム0でTime=0、フレーム250でTime=10

💡 ポイント

  • 遠景用ならOcean ModifierだけでOK
  • 近景や水飛沫が必要なら パーティクル+スプラッシュのエフェクト を追加
  • リアルさを求めるなら EeveeよりCyclesレンダーが水の反射・透過で有利

ここからさらに波の泡などを表現したい場合は、**Oceanモディファイア+物理っぽい水シェーダ+白波(Foam)**までを、数値例つきで解説します。

 ↓↓↓


0) 事前セットアップ(仕上がりが安定します)

  • 単位Scene > UnitsMetric / Unit Scale = 1.0 / Length = Meters
  • 平面サイズ:海は広いので、100–500 m くらいのスケールで考えると各値が調整しやすい
  • カラーマネジメントRender > Color Management → View Transform: Filmic / Look: Medium High Contrast(反射が締まる)

1) 海面メッシュを用意

  1. Shift + A > Mesh > Plane
  2. S でスケールし、まずは 200 m 四方 を目安に(数値入力なら S200
  3. 名前を Ocean_Plane

2) Ocean モディファイアの正しい使い方

  1. Ocean_Plane を選択 → モディファイアAdd Modifier > Ocean
  2. 主なパラメータ
    • Geometry
      • Generate … 平面から専用の海面ジオメトリを“生成”。Foamの頂点カラー出力を使うならこちらが楽
      • Displace … 既存メッシュを変位。自分のトポロジーを使いたいときに
    • Resolution:波の細かさ(グリッドの解像度)。12–16 で十分。アップショットや寄りは 18–24
    • Spatial Size (Size):波モデルの実寸範囲(m)200–1000 くらい。海の“スケール感”に直結
    • Wave Scale (Scale):波高のスケール。0.7–3.0 目安
    • Choppiness:波の“とがり”。0.8–2.0(上げるとシャープで海らしい)
    • Wind Velocity:風の強さ。10–40(上げるほど荒れる)
    • Alignment / Direction:風向き・整列(風波を方向づけたい時)
    • Time:時間進行。アニメの鍵
    • Repeat X/Y平面をタイル状に繰り返し、広く見せる(パースで端が見えにくい値に)
    • Foam:白波強度を計算して頂点カラー(属性)として出力
      • Foam Data Layer Name に例:foam_mask と入力
      • 後でシェーダでこの属性を読む

推奨の出発点(昼の少し風のある海)

  • Geometry: Generate / Resolution: 14 / Spatial Size: 500
  • Wave Scale: 1.4 / Choppiness: 1.2 / Wind Velocity: 20
  • Repeat X/Y: 2 / 2
  • Foam: 有効、Data Layer Name: foam_mask

3) アニメーション設定(Time の打ち方)

  • タイムライン 0fTime = 0.0I キー(Keyframe)
  • 250fTime = 10.0I
    • 再生で自然に波が進行
  • 等速でよければ、Graph EditorTime の補間を Linear
  • 速度感:Time の差を増やすだけでOK(例:0→20 にすると速くなる)

ループさせたい場合

  • 完全シームレスにしたいなら、Ocean Bake(キャッシュ)を書き出して範囲をループ再生するのが堅実。
  • あるいは 0→T→0 をクロスフェード合成(VSE/外部編集)で疑似ループに。

4) “ちゃんと水に見える”シェーダ(Cycles/Eevee 両対応)

基本ノード(マテリアル)

  1. Principled BSDF 1個
    • Base Color:やや深い青緑(後述の吸収で色づくので薄めでOK)
    • Transmission = 1.0
    • Roughness = 0.02–0.08(寄りは 0.02–0.05、引きは 0.05–0.08)
    • IOR = 1.333(水の屈折)
    • Specular = 0.5(デフォルトでOK)
  2. Volume Absorption ノード(海の“厚みで暗くなる”吸収)
    • Color:やや青緑、Density = 0.02–0.08(深いほど上げる)
  3. Material Output
    • Surface に Principled BSDF
    • Volume に Volume Absorption を接続

これで「透明・反射・吸収」の3点が揃い、一気に水っぽくなります。

反射環境(超重要)

  • WorldEnvironment Texture に HDRI(空や晴天)を読み込み
  • Mapping で回転し、太陽や明るい空が反射で入る角度を探す
  • 必要なら Sun Light を追加(Strength 2–5、Angle 0.3–1.0)

Eevee の追加設定

  • Render Properties > Screen Space Reflections をON
    • その中の Refraction もON
  • マテリアル側Settings > Screen Space Refraction をON、Refraction Depth1–3 m くらい
  • Render Properties > Bloom はお好みで(ハイライトのにじみ)

Cycles の追加メモ

  • Light PathsMax Bounces6–10 程度
  • Shadow Caustics(対応バージョンのみ):ライト/オブジェクトで有効にすると水越しの影がきれいに

5) 白波(Foam)を出す:Ocean の出力をシェーダで使う

  1. Ocean モディファイアの Foam をON、Data Layer Name = foam_mask
  2. シェーダで Attribute / Color Attribute / Vertex Color ノードを追加
    • Namefoam_mask と入力
  3. ColorRamp を挟み、黒~白を調整(白=泡が強い)
  4. MixRGB(または Mix)で
    • Color A:海のベース色(BSDF前段)
    • Color Bほぼ白(#f8f8f8)
    • FacColorRamp(foam_mask)
      → 泡のところだけ白くなる
  5. 泡を少しだけ粗く・マットにしたい場合
    • Roughnessfoam_mask で少し上げる(Map Range→0〜0.2 など)

泡の“線が細い”ときは、Ocean側の Choppiness を上げたり、Foam Threshold(バージョンによる)や ColorRamp の白側を手前に寄せて強調。


6) 近景の立体感:法線の追加(細かいさざ波)

  • Normal Map テクスチャ(細かい水面法線)を 1枚足すと寄りで一気にリアル
  • Normal Map ノードPrincipled BSDF の Normal
  • Strength 0.1–0.4
  • UVObject(またはTriplanar/Box)投影でタイル、Scale 10–30 くらい
    • アニメなら Mapping の Location/Rotation を少し動かし、海面の微細な揺らぎを演出

7) 環境・ライティング・大気表現

  • ミスト(遠景の空気感)World > VolumeVolume Scatter(Anisotropy 0.6–0.8、Density 0.005–0.02)
  • または View Layer > Passes > Mist をONにしてコンポジットで減衰
  • 地平線の切れが気になるときは、カメラの高さを下げる焦点距離 35–85mm あたりで圧縮

8) パフォーマンスとレンダリングTips

  • Viewport もたつく
    • Ocean Resolution を落とす(レンダー時だけ上げる)
    • Displace モードで、自前の軽いメッシュ+Subdivision の方が軽い場合あり
  • ジャギー/チラつき
    • カメラの Clipping Start0.1–0.3 m 程度に、End は必要十分に
    • Eevee なら TAA(Sample を上げる)、Cycles なら Sample 64–256Denoise
  • 真っ黒に沈む
    • Volume Absorption の Density 下げる
    • Refraction Depth(Eevee)を上げる

9) 数値プリセット(コピペ用の目安)

穏やかな外洋(引き画)

  • Resolution: 14 / Spatial Size: 800
  • Wave Scale: 0.9 / Choppiness: 0.9 / Wind: 12
  • Roughness: 0.05 / IOR: 1.333 / Absorption Density: 0.03

風強めの海(中~寄り)

  • Resolution: 16 / Spatial Size: 500
  • Wave Scale: 1.6 / Choppiness: 1.4 / Wind: 24
  • Foam:有効(foam_mask)+ColorRampで強め
  • Roughness: 0.035(泡部は 0.1 まで上げる)/ Absorption: 0.05

荒天・嵐

  • Resolution: 18–20 / Spatial Size: 600–1000
  • Wave Scale: 2.4–3.0 / Choppiness: 1.8–2.2 / Wind: 32–40
  • Sun を弱め、空HDRIを暗く、Volume Scatter 強め(霧感)

10) さらに踏み込む(必要なら)

  • Ocean BakeCache にフレーム範囲を入れて Bake。重い大規模海面の再生が軽くなる
  • ジオメトリノードで白波パーティクル
    • Attribute(foam_mask) > ColorRamp > 比較 で閾値を作り、Points on Facesで発生 → スプライトメッシュ飛沫をインスタンス
  • 岸(浅瀬)Depthベースの色変化
    • カメラ高さ一定なら Geometry > Position の Z で色を上下にグラデーション
    • 物体と交差する波打ち際は Dynamic PaintDistance フィールドでマスク作成

11) よくある質問(Q&A)

Q. 海が暗い/濁る
A. Absorption の Density を下げ、HDRI 露出(World の Strength)や Sun を上げる。Eevee は Screen Space Refraction をON。

Q. 近景で波が“のっぺり”
A. Normal Map を必ず追加。さらに Choppiness を上げる。Specular Tint を少し(0.2)足すのも有効。

Q. 端が見えてしまう
A. Camera の向きで地平線を画面上縁に寄せる/Repeat X/Y を増やす/被写界深度+霧で隠す。

コメント

タイトルとURLをコピーしました