WarpGate Player Specification
Document Version: 0.1.05 | Engine: Three.js + SparkJS
1. Core Integration Architecture
本プロジェクトの最も重要なアーキテクチャは、SparkJSを独自の描画コンテキストではなく、Three.jsのカスタムメッシュ(SplatMesh)として統合している点です。これにより、3DGS(背景)とGLB(人物)を1つのキャンバス・1つのシーン・1つのカメラで同時にレンダリングでき、Zバッファ(深度)の破綻やカメラ同期の複雑な計算を完全に回避しています。
Three.js (Core)
キャンバスの管理、カメラ制御 (OrbitControls)、環境光・平行光源、GLBモデルの読み込みとループアニメーション制御を統括します。
SparkJS (3DGS)
独立したエンジンとしてではなく、Three.js内の「1つのメッシュオブジェクト」として機能し、カメラワークに100%同調して描画されます。
// SplatMesh Integration Example
import { SplatMesh } from '@sparkjsdev/spark';
const splatMesh = new SplatMesh({ url: config.spzUrl });
splatMesh.rotation.y = config.envRotation;
scene.add(splatMesh); // Added directly to Three.js scene
2. Asset Management & Loading
柔軟な運用とUX向上のため、サーバーリクエストからローカルテストまでシームレスに対応する3段階のアセットロード機構を採用しています。JSON取得時はタイムスタンプによる強力なキャッシュバスターが働きます。
1. Default Load
HTMLロード時、同階層の default.spz, .glb, .json を自動取得。
2. Dynamic URL
?scene=xxx により、指定されたアセットセットへ動的に切り替え。
3. Local Interactive
画面のダブルタップやD&Dによるローカルファイルの即座ロード。
4. Pro Mode Configuration
URLの末尾に ?dev=1 を付与してアクセスした時のみ、lil-gui を使用した開発者用のリアルタイム設定パネルが出現し、ローカルファイルのD&D読込が有効化されます。