[JavaScript] 3D ROOM制作 3日目 ポータル通路・Export・VRMフィギュア配置 (Three.js)
vanilla JS + Three.js + WebXRで構築する3Dウォークスルー空間WIRED ROOMの開発記録。iframe競合バグ修正、VRMフィギュア配置、公開用ZIPエクスポート、プロシージャル通路生成、ポータルによる部屋間移動機能を実装。
vanilla JS + Three.js + WebXRで構築する3Dウォークスルー空間WIRED ROOMの開発記録。iframe競合バグ修正、VRMフィギュア配置、公開用ZIPエクスポート、プロシージャル通路生成、ポータルによる部屋間移動機能を実装。
vanilla Three.jsのROOMアプリにWebXR VRモード、右クリックメニュー、カスタムROOMアップロード(IndexedDB保存・stats自動取得・info入力フォーム)、リアルタイム調整スライダー、サムネ撮影機能を追加した記録
Three.js製ROOMアプリのPhase 2。セットアップウィザードUI、models.jsonからのサムネイルグリッド表示、VRMアップロードとIndexedDB保存、プロシージャルスカイボックス4プリセット(Night/Sunset/Day/WIRED)をvanilla JSで実装した記録
Three.js + vanilla JSで、ZIPを解凍してサーバーに置くだけで動く3D ROOM機能を構築。GLB部屋モデル、VRMアバター、BVH衝突判定、3人称カメラ、ポータルリンクまで、バンドラー不要のピュアESM構成で実装した記録
VRMサムネ自動生成機能を単品WEBアプリとして独立。リアルタイム3Dプレビュー、カメラ調整、.vrmaポーズ適用、ドラッグ&ドロップ対応のツールを1日で実装。
Three.jsのオフスクリーンレンダリングでVRMモデルのサムネイルを自動生成し、IndexedDBにBase64で保存。WiredAvatarMenuとWiredVRMenuの両方でサムネ付きモデル選択UIを実装した記録。
WebXR格闘ゲーム LAYER FIGHTER のラウンドフローを再設計し、GAME_SETフェーズを新設。2本先取時の演出整理、フレームカウントリセット、リセットロジック共通化、入力バッファ起因の膝蹴り暴発バグを修正。
WebXR格闘ゲーム LAYER FIGHTER のメニュー画面にPS4コントローラー対応を実装。Gamepad APIをポーリングする共通React hookを1つ作り、全5画面に適用した記録。
LAYER FIGHTERのエンディングクレジットにステージの3Dモデル情報が表示されない問題を修正。Assets.jsonではなくStages.jsonから直接読み込むようimportを追加。
NZXT CAMのWeb Integration機能を利用し、KrakenのLCDディスプレイに好きな動画やシステムステータスを自由なレイアウトで重ね置きできる神ツール「NZXT-ESC」をご紹介。
WITCreditBoardをCreditBoard.tsxとして汎用化し、ADV/RPG(STAGE_MY_ROOM)とパズルゲーム(木箱GLB付き)にクレジット看板を設置。VR/PC座標分岐、import type問題、外部VRM保存フローの調査、VRMアバターY軸回転機能の実装まで。
WebXR格闘ゲーム LAYER FIGHTER にステージセレクト画面を実装し、ジャンプ攻撃を追加しました。VR/デスクトップ両対応のHUD二重表示バグも修正。