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化、地震波の伝播をレイトレーシングで描く実装などを公開済みです。見た目の派手さよりも、シミュレーションが学習や安全教育にどう役立つか、そして何が限界かを正直に扱うことを方針としています。
この分野のアプリ
この分野の記事

開発記事公開
支持多角形でクレーンの転倒を判定する
クレーン安全シミュレーターで、支持多角形と安定余裕から転倒の危険を判定し、アウトリガーの張出しが効く理由を体感できるようにした実装を紹介します

開発記事公開
物理エンジンでクレーンの荷振れとワイヤー破断を表現する
クレーン安全シミュレーターで、振り子近似からRapier3Dの剛体とバネダンパーケーブルへ移行し、荷振れと破断を創発させた実装を紹介します

開発記事公開
マントル対流をWeb Workerでリアルタイムに計算する
教育用3D地球シミュレータで、渦度と流れ関数による対流計算をWeb Workerで安定して動かし続けた実装を紹介します

開発記事公開
地震波の波線追跡でシャドウゾーンを再現する
教育用3D地球シミュレータで、スネルの法則による波線追跡からS波シャドウゾーンを再現した実装を紹介します

開発記事公開
Three.jsで移動式クレーンの荷振れを表現する方法
振り子運動と減衰を使った荷振れ表現の設計方針を、運動モデルとフレーム更新の観点から解説します

ガイド公開
クレーン安全教育に3Dシミュレーターを使う利点と限界
3Dシミュレーターをクレーンの安全教育に取り入れる場合の一般的な利点と、実機訓練や法令上の教育を代替できない限界を整理します

