blob: b218d0b65d5401389778dcdb9d77d532b121aca0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# Handoff: 3D Scene Pipeline (February 8, 2026)
## Summary
Implemented a complete pipeline for exporting 3D scenes from Blender and loading them at runtime.
## Accomplishments
### Task #18: 3D System Enhancements
- **Blender Exporter**: Created `tools/blender_export.py` to export scenes to a binary format (`SCN1`).
- Exports objects, transforms, types, and mesh references.
- Handles string-based asset resolution.
- **Asset System Update**: Updated `asset_packer` to generate `GetAssetIdByName` for runtime string lookup.
- **Runtime Loader**: Implemented `SceneLoader` (`src/3d/scene_loader.h/cc`) to parse the binary scene format.
- **Verification**: Added `test_scene_loader` to verify the pipeline.
## Key Components
### Binary Format (`doc/SCENE_FORMAT.md`)
- Magic: `SCN1`
- Supports Objects (Mesh, Primitives), Cameras, Lights.
- Compact binary representation.
### Runtime Integration
- `SceneLoader::LoadScene(scene, data, size)` populates a `Scene` object.
- Uses `GetAssetIdByName` to resolve mesh references (e.g. "MESH_CUBE" -> `ASSET_MESH_CUBE`).
## Next Steps
- Use the exporter in a real workflow (requires Blender).
- Update `Renderer3D` or `MainSequence` to actually use `SceneLoader` for a level (e.g. `assets/final/level1.bin`).
- Implement `Task #5: Spectral Brush Editor` (In Progress).
## Files Modified
- `tools/blender_export.py` (New)
- `src/3d/scene_loader.h` (New)
- `src/3d/scene_loader.cc` (New)
- `src/tests/test_scene_loader.cc` (New)
- `tools/asset_packer.cc` (Updated)
- `src/util/asset_manager.h` (Updated)
- `CMakeLists.txt` (Updated)
- `doc/SCENE_FORMAT.md` (New)
|