タグ: ocean

  • Blender : add-on ~ KJ Ocean Vortex Designer ~ 渦潮デザイナーです.

    Blender : add-on ~ KJ Ocean Vortex Designer ~ 渦潮デザイナーです.

    はじめに

    KJ Ocean Vortex Designerは、Blender 5.1上で渦潮や巨大な海流、大波、穏やかな外洋までを一体的に生成・編集できる、自然現象表現に特化したNメニューAdd-onです。Vortex CenterからMain Spiral、Seamless領域、Outer Spiral、Calm Seaへと続く海面構造を段階的に設計でき、波の回転方向、Sink / Source、波頭数、放射性、同心円性、Noise、Foam、外洋波などをLive Editで細かく調整できます。Outer Spiralには、波頭が渦中心を軸に連続して回転する表現にも対応しています。Big Wave Builderは,現在開発中。User Libraryには設定保存・読込・Import / Export機能を備え、すぐに機能や表現を確認できるDemoデータも収録。海洋CG、台風・嵐の海、ファンタジーの巨大渦、映像背景、自然現象の研究的ビジュアライゼーションなど、幅広い用途で利用できるプロシージャル海洋デザインAdd-onです。

    インストール

    Blender 5.1を起動し、ExtensionsまたはAdd-onsのインストール機能から、配布されているExtension ZIPをインストールします。

    インストール後にKJ Ocean Vortex Designerを有効化します。

    3D ViewportでNキーを押すと右側にNメニューが表示されます。Nメニューのタブから、

    Ocean Vortex

    を選択してください。

    基本的な操作はすべてこのNメニュー内で行います。

    Image
    Building Designerで作った12Fビルの横に渦潮を配置.Sun Lightで反射さてた.

    UIの基本構成

    v0.5.0では、Vortex関連のUIを実際の海面構造に合わせて、中心から外側へ向かう順番で配置しています。

    基本的には次の順序で上から設定していきます。

    1. Ocean Scene
    2. Vortex : Center → Ocean Edge
    3. Big Wave
    4. Sea Parts
    5. User Library
    6. Material & Utilities

    Vortex内部についても、

    Vortex Center → Main Vortex → Main Spiral → Seamless → Outer Spiral → Outer Ocean → Calm Sea → Ocean Edge

    という実際の半径方向の並びを意識したUIになっています。

    Ocean Scene

    Ocean Sceneでは海面全体の生成や基本サイズを設定します。

    最初にOceanを生成し、その後Vortex、Outer Spiral、外洋波などをLive Editで調整していくのが基本的な使い方です。

    Ocean Sizeは単なる表示範囲ではなく、実際に生成される海面Meshの物理的な大きさです。

    各種エフェクトを大きくした結果Ocean Sizeが不足した場合は、必要に応じてFit Ocean Size to Effectsを利用します。

    自動的にOcean Sizeを変更し続ける仕様ではないため、ユーザーが意図しない巨大Meshの生成を防げます。

    VortexのON/OFF

    Enable VortexをONにすると、中心にVortexを持つ通常のOcean Vortexとして動作します。

    OFFにするとVortex形状を消し、Ocean Mesh全体をCalm Oceanとして利用できます。

    VortexをOFFにしてもVortex関連の設定値は削除されません。

    再度ONにすると、以前設定していたVortexパラメータを復元して利用できます。

    Vortex Center

    Vortex Centerは渦の最も中心側の形状を設定する領域です。

    主に、

    Center Radius、Center Fade、Center Sink Strength、Center Compression

    などを調整します。

    Center Sink Strengthを強くすると中心部の落ち込みが強くなります。

    Center Fadeは中心形状から周囲のVortex形状へ移行する範囲を滑らかにするために使用します。

    中心を極端に小さくすると鋭い穴のような形状になりやすいため、自然な渦潮を作る場合はCenter RadiusとCenter Fadeのバランスを確認してください。

    Main Vortex

    Main VortexはVortex全体の主要な漏斗形状を作ります。

    Main Outer RadiusはMain Vortexの基本的な外周位置です。

    この値はOuter SpiralやSeamless Ocean Edgeとの接続位置を考える際の重要な基準になります。

    DepthやFunnel Shape関連の値によって、浅い大規模な渦から深く鋭い渦まで調整できます。

    Main Spiralの既存ロジックはv0.5.0でも維持されています。

    Main Spiral Waves

    Main Spiral WavesではMain Vortex上に発生する螺旋状の波を調整します。

    Wave Radialityを使用すると、波の形状を同心円寄りから放射状寄りまで変更できます。

    一般的にはMain Spiralではある程度Radialityを高めることで、中心へ引き込まれるような渦らしい波形を作れます。

    Radial Wave Countは放射方向の波の本数に影響します。

    Radial Curvatureは波の湾曲、Radial Sharpnessは波頭の鋭さを調整します。

    Main Spiralの回転や現在の波形計算ロジックは、Outer Spiral改修とは独立して維持されています。

    Spiral Motion

    Spiral MotionではMain側の回転や波の移動を設定します。

    RotationとWave Travelは別の概念として扱われます。

    Rotationは波形の角度方向の変化、Wave Travelは波が半径方向に進む動きを担当します。

    Flow Modeでは、

    Sink

    Source

    を切り替えられます。

    Sinkは基本的に外側から中心側へ、Sourceは中心側から外側へ波が進む方向として使用します。

    CW / CCWは渦の角度方向の回転方向を指定します。

    Seamless Ocean Edge

    Main Vortexの外周を突然通常海面へ切り替えると、段差やリング状の境界が目立つ場合があります。

    そのためKJ Ocean Vortex DesignerにはSeamless Ocean Edgeがあります。

    主な設定には、

    Funnel Edge Blend Width、Funnel Edge Smoothness、Wave Edge Blend Width、Noise Edge Blend Width、Foam Edge Blend Width

    などがあります。

    これらを調整することで、Vortexの漏斗形状、波、Noise、Foamをそれぞれ異なる幅で外側へFadeできます。

    Zero Slope at Ocean Edgeを利用すると接続部の傾斜をさらに滑らかにできます。

    Seamless Ocean EdgeはアニメーションのSeamless Loopとは別機能です。

    Outer Spiral Inner Boundary

    Outer SpiralはMain Vortexの外側に配置される大きな渦波です。

    Outer Inner Boundaryは、Outer Spiralが中心側へどこまで入り込むかを設定します。

    Follow Mainを使用するとMain Vortexの外周を基準にします。

    Custom Radiusを使用すると、Main Outer Radiusより内側までOuter Spiralを入れることもできます。

    例えばMain Radiusが70m、Outer Inner Boundaryが50mなら、Outer SpiralをMain側へ約20m重ねられます。

    このOverlapはMainとOuterの接続を自然に見せるためにも使用できます。

    Fit Inner Reach to Seamlessを利用すると、Seamless領域に合わせてInner Reachを設定できます。

    Outer Spiral

    Outer SpiralはMain Spiralとは異なり、比較的同心円に近い大規模な渦波を作る用途を想定しています。

    完全な同心円では回転しても見た目が変化しにくいため、実際には弱いSpiral成分を残した形状が適しています。

    Outer Spiralの形状と回転速度は別々に調整できます。

    Outer Spiral Turnsは形状の螺旋性を調整するための値であり、新しいShared Motion Kernelでは回転速度そのものを決める値ではありません。

    Outer Motion Engine

    v0.5.0ではOuter Spiralに2種類のMotion Engineがあります。

    Shared Motion Kernel

    は新しいOuter Spiral用の回転方式です。

    Legacy Outer Motion

    は従来方式を残した互換モードです。

    過去の見え方を確認したい場合や、旧Presetとの比較にはLegacyを利用できます。

    新しい調整ではShared Motion Kernelの利用を推奨します。

    Shared Motion Kernel

    Shared Motion Kernelでは、Outer Spiralの円周方向移動と半径方向移動を分けて扱います。

    Outer Spiralの回転は、Vortex Centerを中心とした接線方向の移動として考えます。

    CCW、つまり左回りの場合、理想的な波の移動方向は、

    +X位置では+Y方向、+Y位置では-X方向、-X位置では-Y方向、-Y位置では+X方向

    となります。

    この動きが連続してつながることで、Outer Spiral全体が中心軸を中心に左回りしているように見えます。

    CWを選択するとこの方向が反転します。

    Outer Inner Crest Count

    Outer Inner Crest Countは、Outer SpiralのMain側境界付近に何周期の波頭を配置するかを設定します。

    例えば値を6にすると、一周の中に6個の主要な山を持つ波パターンになります。

    これは回転速度ではありません。

    Outer Inner Crest Countを増やすと波頭の数が増えますが、Rotation Speed自体は変化しません。

    波頭の数と回転速度を独立して調整できることがShared Motion Kernelの重要な特徴です。

    Outer Rotation

    Outer Spiralの回転はMainとは独立して設定できます。

    Override Outer MotionをONにしてください。

    Seamless LoopをOFFにしている場合は、

    Outer Rotation Speed

    で調整します。

    Seamless LoopをONにしている場合は、

    Outer Rotation Cycles

    を使用します。

    Outer SpiralはMainより大きな海面領域を動かすため、Mainより遅い回転にすると自然な結果を得やすくなります。

    例えばMainが高速で回転している場合でも、Outerはゆっくりと大きく周回させることができます。

    Outer RotationとWave Travelの違い

    Outer RotationとOuter Wave Travelは別々に考えます。

    Outer Rotationは波頭をVortex Centerの周囲へ円周方向に移動させます。

    Outer Wave Travelは波をMain側または外側へ半径方向に移動させます。

    したがって、

    Rotation Speedを変更すると円周方向だけが変化し、Wave Speedを変更すると半径方向だけが変化する

    のが基本です。

    回転の確認中はWave Travelを弱くすると、円周方向の動きを観察しやすくなります。

    Sync Outer Boundary Phase

    Outer SpiralとMain側の接続を連続させるため、Boundary Phaseを同期できます。

    v0.5.0ではBoundary Phaseの同期とRadial Travelの同期を分離しています。

    これにより、Mainとの境界位置は揃えながら、Outer独自のWave Travel Speedを使用できます。

    OuterをMainよりゆっくり動かしたい場合に重要です。

    Sync Outer Radial Travel

    Sync Outer Radial TravelをONにすると、Outerの半径方向Wave TravelをMain側へ同期できます。

    OFFにするとOuter独自のWave Speed / Wave Cyclesを使用します。

    v0.5.0ではOFFを基本として、Outer RotationとOuter Radial Travelを個別に調整できる構成になっています。

    Suppress Normal Ocean in Spiral

    Outer OceanにはOuter Spiralとは別に、Primary Swell、Secondary Wave、Fine Rippleなどの方向波があります。

    これらの方向波がOuter Spiralと強く重なると、Vortex Centerを中心とした回転ではなく、海面全体が一定方向へ流れているように見える場合があります。

    特に+X側と-X側の両方が+Y方向へ進んで見える場合には、この影響を疑います。

    Suppress Normal Ocean in Spiral

    を高くすると、Outer Spiral領域では通常の方向波を弱め、True Outer Spiralの回転を優先します。

    回転動作を確認するときは1.00付近から試すと分かりやすくなります。

    Rotation Retention at Outer Edge

    Outer Spiralは外側へ行くほどCalm Seaへ近づくため、同心円的な形状になります。

    しかしAngular Motionを完全に消すと、外側の波が固定して見えます。

    Rotation Retention at Outer Edgeでは、Outer Spiral外周でもどの程度回転成分を残すかを設定します。

    回転が弱く見える場合は0.5前後まで上げて確認してください。

    形状を穏やかにしたい場合は少し下げます。

    Outer Ocean Surface

    Outer Spiralのさらに外側には通常のOuter Oceanがあります。

    Primary Swell、Secondary Wave、Fine Ripple、Noiseなどを重ね、単調なPlaneではない海面を生成します。

    Outer Spiralの回転確認時にはこれらを弱くし、完成時に徐々に戻す方法も有効です。

    Calm Outer Sea

    Vortexから十分離れたOuter Oceanでは、波を徐々に穏やかにできます。

    Calm Outer Seaを利用すると、巨大な海面全体がVortexと同じ強さで変形することを防げます。

    Vortex付近では強い波、遠方では穏やかな海という構造を作れます。

    Calm Sea Ripples

    Calm Seaにも完全な平面ではなく、小さな波紋を追加できます。

    Ripple Height、Wavelength、Direction、Secondary Ripple、Ripple Noiseなどを使用します。

    遠景では大きな変形よりも小さなRippleを利用した方が自然に見える場合があります。

    Animation

    Vortex、Outer Spiral、Noise、Foamなどはアニメーションできます。

    Start FrameとEnd Frameを設定し、Seamless LoopをONにすると指定したCycles数でループするアニメーションを作れます。

    Rotation CyclesとWave Cyclesは別々に設定できます。

    そのため、同じ時間範囲で、

    Mainは複数回転、Outerは1回転、Wave Travelは別周期

    といった設定も可能です。

    Reverse FlowはCW / CCWとは別機能です。

    Big Wave

    Big Wave BuilderではVortexとは独立した大波を生成できます。

    通常のSwell、Breaker、Barrel、Storm Wave、浮世絵を連想させるStylized WaveなどをSea Partとして扱えます。

    Big Waveには、

    Build Up、Peak、Breaking、Splash / Collapse

    の4段階Animationがあります。

    同じTopologyを使って各Stage間を滑らかに補間する設計です。

    Peak Style

    Big Waveには複数のPeak Styleがあります。

    Neutral、Ukiyo-e Inspired、Western Romantic、Marine Realist、Impressionistic、Storm Dramatic、Graphic Stylizedなどの方向性を利用できます。

    Presetを選択した後も値をLive Editできます。

    Presetを選択したからといって形状が固定されるわけではありません。

    Sea Parts

    Big Waveなど独立して配置する海面要素はSea Partとして管理できます。

    Sea PartにはRootを持たせ、位置、回転、複製などを一括して扱えます。

    複数のSea Partを組み合わせてAssemblyとして扱うこともできます。

    Sea Part Connector

    複数のSea Partを接続する場合、Sea Part Connectorを使用できます。

    基本思想はMeshを直接破壊的に結合するのではなく、接続部分にBlend Surfaceを用意する方式です。

    Blend Width、Height Match、Normal Match、Phase Offsetなどを調整して接続します。

    User Library

    作成した設定はUser Libraryへ保存できます。

    主な保存対象にはOcean Settings、Sea Part、Assembly、Big Wave、Peak Style、Big Wave Animation、Full Ocean Sceneなどがあります。

    Full Ocean Sceneを使用すると、Vortex、Outer Spiral、Outer Ocean、Animationなどを含めて保存できます。

    User LibraryはExtension本体のInstall Folderとは別のユーザーデータ領域を使用する設計です。

    Extensionを更新した際にPresetを失いにくくする目的があります。

    PresetのImport / Export

    PresetはJSONを基準形式として扱います。

    Import / Exportを利用して別PCへ移動したり、ユーザー間で設定を共有したりできます。

    配布用Packageでは設定データやPreviewなどをまとめることができます。

    安全性のため、Preset Packageは実行可能なPythonコードを含める用途には使用しません。

    Live Edit

    KJ Ocean Vortex Designerでは多くの設定がLive Editに対応しています。

    値を変更すると、原則としてGenerateを押し直さなくてもGeometry NodesやMaterialへ反映されます。

    ただし大規模なOcean Mesh、高密度Mesh、Big Waveなどを多数生成している場合は、Viewport更新に時間がかかることがあります。

    調整中は必要以上にMesh密度を上げないことを推奨します。

    Outer Spiralの回転確認方法

    Outer Spiralの回転が正しく設定されているか確認したい場合は、通常Outer Oceanの影響をできるだけ減らして観察します。

    Shared Motion Kernel、Override Outer Motion、CCW、Suppress Normal Ocean in Spiralを有効にし、Rotation Retentionを0.5前後に設定します。

    必要ならOuter Wave Travelを一時的に弱くします。

    そしてOuter Spiral上の1個の波頭を追跡します。

    CCWなら、

    +X → +Y → -X → -Y → +X

    という順でVortex Center周囲を移動することが目標です。

    CWなら逆方向になります。

    単に波高がその場で上下するだけ、または+X側と-X側が同じ+Y方向へ流れる場合は、正常な回転とは判断しません。

    Outer Spiralが回転して見えない場合

    まずOuter Motion EngineがShared Motion Kernelになっていることを確認します。

    Override Outer MotionがONであること、Outer Rotation SpeedまたはOuter Rotation Cyclesが0になっていないことも確認してください。

    次にSuppress Normal Ocean in Spiralを上げます。

    さらにRotation Retention at Outer Edgeを上げてください。

    Outer Wave Travelが強すぎる場合は一時的に弱くし、円周方向のMotionだけを確認します。

    完全な同心円は数学的に回転させても形状変化を確認しにくいため、Outer Spiralには少量の非対称性またはSpiral成分を残すことも重要です。

    Outer Spiralが中心方向へ動きすぎる場合

    Outer RotationとOuter Wave Travelは別機能です。

    中心方向への動きが強い場合は、Outer Wave Speed / Wave Cyclesを下げます。

    Sync Outer Radial TravelがONの場合はMain側のTravel設定が影響するため、Outerを独立させたい場合はOFFにしてください。

    Rotation Speedを変更しても半径方向の速度が大きく変わらないことが理想的な状態です。

    Outer SpiralがMainと離れて見える場合

    Outer Inner Boundaryを確認します。

    Follow MainではMain Vortex Radius付近からOuterが始まります。

    より内側へ重ねたい場合はCustom Radiusを利用します。

    Inner Boundary Fadeを極端に小さくすると境界が硬くなるため、数m程度のFadeを与えると自然につながりやすくなります。

    Fit Inner Reach to Seamlessも利用できます。

    Outer Spiralと通常Ocean Waveの見分け方

    Outer SpiralはVortex Centerを軸とした円周方向のMotionを持ちます。

    一方、Primary Swellなどの通常Ocean Waveは指定したDirectionに沿って海面上を進みます。

    両者を強く重ねると回転方向の判定が難しくなります。

    調整中はOuter Spiralを優先し、完成後に通常Ocean Waveを追加していく方法が分かりやすいです。

    Material

    Material関連では海面の色、反射、粗さ、透明感などを調整できます。

    海面の形状が正しくてもLighting、World、Camera設定によって見え方は大きく変化します。

    特に大規模OceanではCamera Clip Endが小さすぎると遠景が正しく表示されない場合があります。

    Reset

    各主要セクションにはReset機能があります。

    Shapeだけ戻す、Waveだけ戻す、Outer Oceanだけ戻す、Materialだけ戻すといった部分的なResetが可能です。

    Reset Allは広範囲の値を戻すため、保存しておきたい設定がある場合はUser LibraryへPresetを保存してから使用してください。

    v0.5.0での主な改善点

    v0.5.0ではOuter Spiralの回転表示改善を中心に調整しています。

    特に、通常Outer OceanのDirectional WaveがTrue Outer Spiralに重なって回転方向を分かりにくくする問題への対策、Outer Spiral外周でAngular Motionが弱くなりすぎる問題への対策、Outer Boundary PhaseとRadial Travel同期の分離を行っています。

    Main Spiralの既存ロジックは変更せず、Outer Spiral側を中心に改善しています。

    またLegacy Outer Motionは削除せず、Shared Motion Kernelと切り替えて比較できる構成を維持しています。

    推奨する基本調整手順

    最初にOceanとMain Vortexを完成させ、次にMain SpiralとSeamless Ocean Edgeを調整します。

    その後Outer Inner Boundaryを決め、Shared Motion KernelでOuter Spiralの回転を確認します。

    回転が確認できた後にOuter Wave Travel、通常Outer Ocean、Calm Sea、Foam、Noiseを加えていくと、問題の原因を切り分けやすくなります。

    Outer Spiralの確認では、完成した複雑な海面を最初から見るのではなく、回転 → 半径移動 → 通常海面 → Noise/Foamの順に要素を加えていく方法が有効です。

    対応環境

    KJ Ocean Vortex Designer v0.5.0はBlender 5.1専用として開発しています。

    Nメニュー名はOcean Vortexです。