SpaceXのStarlink衛星は数千機が地球を取り囲む巨大メッシュを形成しています。これをブラウザ上で遅延なく動かすためのGPUインスタンシング技術を解説します。
1. 2,000個の独立メッシュを描画する限界
数千機の衛星を個別の3Dオブジェクトとしてシーンに追加すると、CPUとGPU間の通信オーバーヘッド(ドローコール)により描画速度が極端に低下します。
2. GPU Instancing(インスタンシング)の導入
SatViewer3Dでは、1つの基本メッシュ形状(衛星モデル)をGPUメモリに1度だけ転送し、各衛星の位置・回転・スケール・状態カラーを4x4行列バッファ(Float32Array)として一括転送するGPUインスタンシングを導入しました。
これにより、ドローコールをわずか1回に集約し、CPU負荷をほぼゼロに抑えることに成功しました。
3. 新規打ち上げ「スターリンクトレイン」の連動追跡
打ち上げ直後の衛星群が一列に並んで夜空を横切る「スターリンクトレイン」を、専用のプリセットフィルターで即座にハイライトできる機能を実装しました。