Procedural Wind
この機能はまだ正式リリースされていません。KawaiiPhysics v1.22でリリース予定です。開発中のため仕様が変更される場合があります。
概要
外を歩くキャラクターの髪や服を風になびかせたいとき、一定方向へ流すだけでは単調に見えることがあります。風向きに加えて、強弱の間隔や揺らぎも調整したい場面です。
Procedural Windは、一定の風に周期的な強弱・毛先へ伝わる位相の変化・ランダムな揺らぎを組み合わせられます。まず一定の風で効き方を確認し、必要な変化だけ足していけば、何が見た目を変えたか追いやすくなります。

使用方法
- ノードの
External Forcesに要素を追加します。 - 追加した要素の型を
Procedural Windにします。 Constant Forceを0から少し増やします。- レベルを再生します。
表示モードと設定項目
Parameter ModeはSimpleで主な項目、Advancedで全設定を表示します。Simpleで隠れた項目も、設定値は計算に使われます。
風の設定項目
| 欲しい変化 | 最初に調整する項目 |
|---|---|
| 向きや基礎の強さを変える | Wind Direction、Constant Force |
| 全体の風を周期的に強く・弱くする | Advancedの Sway Force・Sway Period |
| 根元と毛先に時間差を付ける | Ripple Force、Ripple Tip Phase Delay |
| 規則的すぎる変化を少し崩す | Random Force、風向きノイズ |
風の成分と合成式
| 要素 | 役割 |
|---|---|
| Constant | 常に同じ強さで流す風 |
| Sway | 全ボーンを同じ位相で揺らす波 |
| Ripple | 根元から毛先へ伝わる波 |
| Strength Cycle | Constant・Sway・Ripple全体に掛ける周期的な倍率 |
| Random | 滑らかなノイズによる強さの変化 |
| Gust | APIから発生させる突風 |
合成の関係は次のとおりです。
Total = (Constant + Sway + Ripple) * StrengthCycle + Random + Gust
Ripple Tip Phase Delay は毛先での位相遅れです。0では波の伝播がなくなり、負の値では毛先から根元へ逆向きに伝わります。Wind Direction Noise Angle と Wind Direction Noise Period で風向き自体にも変化を付けられます。
Procedural Wind Gust / Transient External Force
着地や大きな動作の瞬間に風を強めたい場合、通常風の値を書き換えると元へ戻すタイミングも管理する必要があります。Gustは、立ち上がり・維持・減衰を指定して短い風を重ねられます。アニメーションに合わせるなら、発火位置をNotifyトラックへ置けます。
- Animation Sequenceを開きます。
- 突風を始めたい時刻へ移動します。
- Notifyトラックへ
KawaiiPhysics: Trigger Gustを追加します。 Strengthを0から少し増やし、RiseTime=0.2秒、DecayTime=0.5秒など、合計時間が0より大きくなるよう設定します。3つの時間の既定値はすべて0です。- アニメーションを再生します。
Notifyの全期間はRiseTime + HoldTime + DecayTimeです。途中解除にはハンドル付きAPIを使います。
進行はアニメーション評価に依存します。LODやUROで評価が止まる条件も確認してください。汎用一時外力の寿命・8件の上限・使えない参照型は一時外力リファレンスで説明します。
Wind Preset Data Asset
衣装や別のシーンでも似た風を作りたい場合、値を一から入力し直すと比較や調整に時間がかかります。風プリセットへ保存すると、調整済みの風の値を選んで使い直せます。全ノードの物理設定を保存するUKawaiiPhysicsPresetDataAssetとは用途を分けます。
- 対象のKawaii Physicsノードを選びます。
- Detailsの
Wind Scopeを開きます。 Forceで対象のProcedural Windを選びます。Presetsメニューを開きます。Breezeを選びます。
風向きは適用先に残ります。保存される11項目とランタイム適用の条件は風プリセットAPIを参照してください。
自分の風を保存するには、Project Settings > Plugins > Kawaii Physics > Wind ScopeのWind Preset Data Asset(内部名WindScopePresetDataAsset)を指定し、Wind ScopeのSave as Preset > Add New Presetを使います。組み込みプリセットだけの状態では保存できません。
Wind Scopeでの適用はABPを変更し、Enabled=true、TimeScale=1も設定します。この2値を保持するランタイムAPIとは適用範囲が異なります。保存・上書きはWind Scopeを参照してください。
Local・Shared・Auto
Wind Source の Shared / Auto は同じActorファミリーの Kawaii Physics Shared Publisher を参照します。Shared Wind Tag をPublisherの Shared Group Tag と合わせます。
SharedはPublisherの風パラメータを使います。Publisherがない間はローカルの時間積算で動き続けます。AutoはPublisherがあればShared、なければLocalとして動きます。- 共有中でも位相オフセット、Seed、Time Scale、有効状態、ボーンフィルタ、空間は各ノード側の設定です。
Seed はRandomと風向きノイズに共通です。同じ値は揺らぎの再現に使えますが、PIE中のライブ変更は次回再生から反映されます。シミュレーション全体の結果がすべての環境で一致することを保証する設定ではありません。
コードで共有パラメータや突風を変更する場合はShared Publisherのランタイム制御を参照してください。
関連するUE公式ドキュメント
- アニメーション通知 — Notifyトラックへの追加、NotifyStateの区間、発火条件を確認できます。 (UE 5.8)
- Data Assets(英語) — データをアセットとして保存する仕組みと、既存クラスのData Assetインスタンスの作成を確認できます。 (UE 5.8; English)