本文へ移動
BenriWorks Lab

3Dシミュレーション

Three.jsなどのWeb技術による3D表現と、それを教育・訓練へ応用する取り組みを扱う分野です。荷振れの振り子モデルやマントル対流のWeb Worker化など、伝えたい現象から逆算して物理の忠実度を決める設計を記録します。

3Dシミュレーションは、Three.jsなどのWeb技術を用いた3D表現と、それを教育や訓練に応用する取り組みを扱う分野です。BenriWorksでは「移動式クレーン安全シミュレーター」と「地球地下シミュレータ」という性格の異なる2つのアプリを通じて、ブラウザ上の物理表現と可視化を検証しています。

物理エンジンを使うか、現象を絞って自前で書くか

Web上の3Dシミュレーションでまず迷うのは、物理エンジン(Rapier、cannon-esなど)を導入するか、対象の現象だけを自前の数式で書くかです。

クレーンの荷振れ表現では、汎用の剛体シミュレーションではなく「吊り荷は振り子である」という割り切りから始めました。ブームの先端を支点とする振り子運動に減衰を加えるだけで、旋回時に荷が遅れてついてくる・急停止で振れが残るという、安全教育で伝えたい挙動の芯は再現できます。汎用エンジンより挙動が安定し、パラメータの意味も説明しやすくなります。この設計の詳細は開発記事「Three.jsでクレーンの荷振れを表現する」で公開しています。

一方、地球のマントル対流のような連続体の現象は、剛体物理の枠組みでは扱えません。地球地下シミュレータでは簡略化した2次元ブシネスク近似の対流計算をWeb Workerで回し、描画スレッドから切り離すことでUIの応答を保っています。この実装も開発記事として公開しています。

どちらの選択にも共通するのは、「何を伝えるためのシミュレーションか」から逆算して物理の忠実度を決めることです。忠実度を上げるほど計算は重くなり、スマートフォンでは動かなくなります。教育用途では「伝えたい現象が正しく伝わる最低限の物理」を見極めることが、実装技術そのものより重要だと考えています。

ブラウザで動かすことの制約と価値

ネイティブアプリやゲームエンジンに比べると、ブラウザの3Dには明確な制約があります。WebGLの性能はデバイス差が大きく、特に低価格帯のスマートフォンではポリゴン数とシェーダーの複雑さをかなり絞る必要があります。クレーンシミュレーターがローポリ・フラットシェーディング寄りの画作りなのは、意匠の好みではなく「現場のスマホで動く」ことを優先した結果です。

それでもブラウザを選ぶのは、インストール不要という一点の価値が教育用途では決定的だからです。URLを共有すれば朝礼の場でもすぐ開ける。この手軽さは、画質の劣位を補って余りあると判断しています。

この分野で発信すること

実際の開発で試した物理表現・可視化の設計と検証を、数式とコードの両面から記録します。荷振れの振り子モデル、マントル対流のWeb Worker化、地震波の伝播をレイトレーシングで描く実装などを公開済みです。見た目の派手さよりも、シミュレーションが学習や安全教育にどう役立つか、そして何が限界かを正直に扱うことを方針としています。

この分野のアプリ

この分野の記事