Simulation Track

煙の流体シミュレーション記録

Blenderによる流体解析からUnityでのリアルタイム描画、nanoVDB最適化までの試行錯誤を整理しました。

タイムライン 技術要点

開発タイムライン

2024年10月

Blenderでの煙生成 成功

有限差分法で移流・拡散・非圧縮条件を解く標準フローを構築。OpenVDB形式で高密度な煙フィールドを出力。

主要方程式: ∂φ/∂t + (u·∇)φ = 0, ∂φ/∂t = D∇²φ, ∇·u = 0

2024年11月

OpenXR + MetaQuest3S 課題

UnityにOpenVDBを直接読み込めず、旧パッケージの互換性もなし。外部VFXパッケージはOpenXR環境で利用不可だった。

2024年12月

リアルタイム描画案の検証 高負荷

逆投影行列と体積分を使ったカスタムシェーダを試作。理論上は実装可能だがQuestクラスでは負荷が高く断念。

2024年12月末

nanoVDB活用を決定 突破

vcpkgのOpenVDBモジュールでnanoVDBへ変換できることを確認。NVIDIAのサンプルをもとにUnityへの読み込みを実施。

2025年1月

Unityでのレンダリング成功 現在

複数のnanoVDBをフレームアニメーション化し、煙の連続再生に成功。MetaQuest上でも軽量に動作する構成を確認。

技術まとめ

発生した問題

  • OpenVDBをUnityに直接取り込めない
  • 旧バージョンの外部パッケージはOpenXR非対応
  • リアルタイム流体シミュレーションはQuestで高負荷

採用した解決策

  • vcpkgのOpenVDBモジュールでnanoVDBへ変換
  • C++/C#連携でカスタムレンダラーを構築
  • フレーム単位のアニメーション表示で負荷を平準化

次のアクション

Optimization

nanoVDBの圧縮調整

密度閾値とボクセル解像度を再設計し、さらなる軽量化と描画クオリティのバランスを図る。

Tooling

変換ツールの自動化

Blender出力からnanoVDBまでのパイプラインを一括で実行できるスクリプトを整備。

UX

教育向けデモ化

煙の濃度変化を授業で説明できるよう、UIオーバーレイと操作手順を簡略化したデモを制作。