地下街浸水シミュレーション
— 階段から流れ込む洪水を、粒子で計算する

豪雨で地上にあふれた水が、地下へ降りる階段を流れ下り、地下街のコンコースに広がっていく様子を、約10万個の粒子からなる流体シミュレーションでリアルタイムに計算しています。浸水していく地下を一人称の視点で歩き回り、止水板を置いて水を食い止められるかを、ブラウザ上で試せます。

浸水シミュレーション 流体シミュレーション 粒子法(PBF) WebGPU 地下浸水 防災
読み込み中…
WebGPU に対応したブラウザ(Chrome / Edge の最新版など)で動きます。GPU への負荷が大きいデモです。キー操作は、デモを一度クリックしてから行ってください。 全画面で開く ↗
01

操作方法

How to Use
移動と視点
WASD前後左右に歩く。壁は通り抜けず、階段は自然に上り下りできる
ドラッグあたりを見回す
ホイール前後に進む
C / Spaceしゃがむ(もう一度押すと立つ)/ジャンプ。体は水とぶつかるので、流れの中に立つと水が体をよけて流れる
水を食い止める
+ 止水版いま立っている足元に止水板を置く(最大5枚)。向かってくる水を受け止める向きに自動で置かれる。ドラッグで動かし、ドラッグ中に ←→ で15°ずつ回す
+ Cone階段の前にコーンを置く(最大12個)。ドラッグで動かせる
水流Reset / 配置Reset水だけを最初の状態に戻す/コーンと止水板だけを最初の配置に戻す
演出と表示
Leak天井の数か所から水が漏れ落ちる
Black Out停電。照明がちらついて落ちる。もう一度押すと復旧
Splash飛沫と泡を表示する(負荷が上がるため最初はオフ)
Points水の表面を作らず、粒子そのものを速さで色分けして表示する
⏸一時停止/再開
⚙ 設定パネル(主なもの)
Flow / Particles流れ込む水の量/粒子の数(1万〜16万)
Gravity / Viscosity重力(マイナスにすると水が天井へ落ちる)/水の粘り
Solver / Time step拘束を解く反復回数/時間刻みの細かさ(小さくすると精度が上がり、重くなる)
Turbidity水の濁り。0% で青く澄んだ水、100% で土色の泥水
Reverse見回しのドラッグの向きを反転する
02

なぜ地下の浸水を考えるのか

Background

地下街や地下鉄の駅、ビルの地下階、住宅の地下室は、まわりより低い場所にあります。そのため、豪雨で地上の水があふれると、出入口の階段から一気に水が流れ込みます。1999年の福岡では、博多駅の周辺で川があふれて地下街やビルの地下が浸水し、ビルの地下で亡くなった方がいました。同じ年の7月には東京都新宿区でも、低地の住宅地が冠水し、住宅の地下室に様子を見に行った男性が、水圧で扉が開かずに閉じ込められて亡くなっています。

階段を流れ下る水は、平らな床の上の水よりずっと速くなります。実物大の階段の模型を使った避難体験の実験では、地上の水がそれほど深くなくても、流れに逆らって階段を上るのは難しいことが報告されています。また、地下側の扉は水圧で開けにくくなります。地下にいる人は、地上がどれくらい浸水しているかを直接見られないため、気づいたときには逃げにくくなっている、ということが起こりえます。

このデモでは、階段の上に置いた水槽から水を流し込み、地下のコンコースへ広がっていく様子を再現しています。流れ込みは最初はわずかで、約70秒かけて設定した流量まで増えていきます。階段の途中や水の中に立って、流れの速さや、水位が上がっていく速さを体感してみてください。

このデモは、流体シミュレーションと可視化の技術を示すためのもので、実際の浸水の深さや速さを予測するものではありません。寸法や流量は、見やすさを優先して設定しています。実際の災害への備えには、自治体のハザードマップや、地下街・施設が定める避難計画を確認してください。
03

しくみ

How It Works

1. 水を粒子の集まりとして計算する

水を、半径 3.5cm の粒子約10万個の集まりとして表します。粒子1個はおよそ 0.34 リットルぶんの水にあたり、10万個で、床に広がったときの水深がおよそ 35cm になる量です。このように、流体を粒子で表して計算する方法をまとめて粒子法と呼びます。代表的なものに SPH(Smoothed Particle Hydrodynamics)があります。

このデモでは、粒子法の一種である Position Based Fluids(PBF)を使っています。水はほとんど縮まないので、粒子のまわりの密度は常に一定でなければなりません。PBF は、この「密度一定」を拘束条件として扱い、拘束を満たすように粒子の位置を直接ずらしていきます。ばねのような力で押し返す方法に比べて、大きな時間刻みでも計算が破綻しにくいため、リアルタイムに向いています。

2. 近くの粒子だけを探す

密度は、各粒子から 14cm 以内にある粒子だけで決まります。10万個すべての組み合わせを調べると計算が追いつかないので、空間を 14cm 角の格子に区切り、粒子をそれぞれのマスに振り分けておきます。こうすると、自分のマスと隣のマスを調べるだけで済みます。この振り分けから密度の拘束の計算までを、すべて WebGPU の compute shader で、GPU 上で並列に行っています。

3. 水の表面を描く

粒子をそのまま描くと、水ではなくビーズの山に見えます(Points ボタンでこの状態を見られます)。そこで、スクリーンスペース流体レンダリングという方法を使っています。まず、画面から見た各粒子の奥行きを描き、次に、輪郭を保ったまま奥行きをなめらかにならします(バイラテラルフィルタ)。ならした奥行きから水面の向き(法線)を求めれば、粒子の集まりが1枚のつながった水面になります。この水面に、屈折、まわりの景色の映り込み、水の厚みに応じた色の吸収、濁りを加えて仕上げています。

4. 飛沫と泡

Splash をオンにすると、波の頂や流れが激しくぶつかる場所から、飛沫・泡・気泡の3種類の小さな粒子が生まれます。これらは水の計算には加わらず、まわりの水の流れに乗って動き、寿命が来ると消えます。白く泡立つ流れを、水本体の計算を重くせずに表すための工夫です。

5. 地下空間を作る

コンコースは幅 10.8m、天井高 3.1m です。階段は幅 3m、蹴上 17cm、踏面 30cm で、地上から地下へ約 2.9m 下っています。壁・床・階段・天井の形は数式(距離関数)で表しているので、水の粒子との衝突判定と描画に同じ形を使えます。床と壁のタイルには、汚れや擦れ、水に濡れたところの色の変化を描き込んでいます。奥まで流れた水は少しずつ排水されて、再び階段の上から流れ込みます。

04

試してみよう

Try This
  1. 階段の下まで歩いていき、流れ込んでくる水の正面に立つ。体に当たった水が左右に分かれていきます。C でしゃがむと、目の高さが水面に近づきます。
  2. 階段の下に + 止水版 を何枚か並べ、どこまで水を食い止められるか試す。すき間や板の端から水が回り込む様子もわかります。
  3. ⚙ の Turbidity を上げると、泥水になります。足元が見えなくなることも、実際の浸水の怖さの一つです。
  4. Black Out で停電させる。照明が落ちた地下で、水面や足元がどれくらい見えにくくなるかを確かめてみてください。
  5. Points にして、粒子を速さで色分けして見る。階段を下るところで流れがいちばん速くなっていることがわかります。
05

技術メモ

Technical Notes
計算手法
Position Based Fluids
粒子数
10 万(最大 16 万)
粒子半径 / 影響半径
3.5 cm / 14 cm
近傍探索
一様格子(GPU)
描画
スクリーンスペース流体レンダリング
実行環境
WebGPU(compute + render)

描画では、ほかにも、HDR とブルーム(明るい光のにじみ)、水面の屈折で床にできる光の模様(コースティクス)、床の濡れ跡、空気中の霞などを加えています。粒子の数と画面の解像度は、⚙ の Particles と Res で下げられます。動きが重いときは試してください。

06

参考文献

References
  1. M. Macklin, M. Müller: Position Based Fluids, ACM Transactions on Graphics (Proc. SIGGRAPH), 32(4), 2013.
  2. M. Müller, D. Charypar, M. Gross: Particle-Based Fluid Simulation for Interactive Applications, Proc. ACM SIGGRAPH/Eurographics Symposium on Computer Animation, 2003.
  3. W. J. van der Laan, S. Green, M. Sainz: Screen Space Fluid Rendering with Curvature Flow, Proc. ACM Symposium on Interactive 3D Graphics and Games (I3D), 2009.
  4. M. Ihmsen, N. Akinci, G. Akinci, M. Teschner: Unified Spray, Foam and Air Bubbles for Particle-Based Fluids, The Visual Computer, 28(6–8), 2012.
→

関連するページ

Related