feat: support glb model assets

This commit is contained in:
Tom Boullay
2026-04-29 16:18:24 +02:00
parent 471424f83d
commit 3a0639bdaa
9 changed files with 59 additions and 36 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ This document describes the code that exists today in the repository.
## Map Data
- `public/map.json` is expected to be a `MapNode[]`.
- Each map node `name` maps to `public/models/{name}/model.gltf`.
- Each map node `name` maps to `public/models/{name}/model.glb` when available, with `public/models/{name}/model.gltf` kept as fallback.
- The editor renders a fallback cube for missing models.
- The game scene filters out nodes whose model cannot be resolved.
+3 -3
View File
@@ -57,7 +57,7 @@ src/
`src/controls/editor/FlyController.tsx` provides editor movement controls for player-style navigation.
`src/utils/loadMapSceneData.ts` is shared by the game map and editor. It loads `/map.json` and resolves available `public/models/{name}/model.gltf` files.
`src/utils/loadMapSceneData.ts` is shared by the game map and editor. It loads `/map.json` and resolves available `public/models/{name}/model.glb` files first, then falls back to `public/models/{name}/model.gltf`.
`src/utils/editor/loadEditorScene.ts` contains editor-only upload handling for user-selected folders.
@@ -96,10 +96,10 @@ public/
├── map.json
└── models/
└── pylone/
└── model.gltf
└── model.glb
```
If a model is missing, the editor renders a fallback cube so the node can still be selected and transformed.
If `model.glb` and `model.gltf` are both missing, the editor renders a fallback cube so the node can still be selected and transformed.
## Editor Flow
+1 -1
View File
@@ -9,7 +9,7 @@ Use the editor when you need to move, rotate, or scale existing map objects with
The editor reads the same map data as the runtime scene:
- `public/map.json` contains the object list.
- `public/models/{name}/model.gltf` contains the matching 3D model for each object name.
- `public/models/{name}/model.glb` contains the matching 3D model for each object name. `model.gltf` is still supported as a fallback during migration.
- Missing models are displayed as gray fallback cubes, so incomplete maps remain editable.
## Map Node Format
+2 -2
View File
@@ -5,7 +5,7 @@ This document lists features that are implemented in the current codebase.
## Scene
- Fullscreen React Three Fiber scene
- Main map scene loaded from `public/map.json` and matching `public/models/{name}/model.gltf` assets
- Main map scene loaded from `public/map.json` and matching `public/models/{name}/model.glb` or `model.gltf` assets
- Debug physics test scene selectable from the debug panel
- Ambient and directional lighting
- Environment background setup
@@ -43,7 +43,7 @@ This document lists features that are implemented in the current codebase.
- `/editor` route for inspecting and editing `public/map.json`
- Automatic loading of `public/map.json` when available
- Folder upload fallback when `map.json` is missing
- Rendering of available `public/models/{name}/model.gltf` assets
- Rendering of available `public/models/{name}/model.glb` or `model.gltf` assets
- Fallback cubes for nodes whose model is missing
- Object selection by click
- Transform modes for translate, rotate, and scale