|
v2 трек 5: .vox импорт/экспорт (MagicaVoxel) + перекладка палитры
- models/vox.ts: parseVox/exportVox — чанки MAIN/SIZE/XYZI/RGBA, PACK>1 — ошибка, неизвестные чанки пропускаются с детьми; обрыв файла (в теле и в заголовке чанка) — понятная ошибка, не RangeError. Оси: у .vox z — вверх, у движка y — вверх: (x,y,z)_engine = (x,z,y)_vox. RGBA ровно 256 записей; при экспорте слоты модели сжимаются в подряд 1..N. - models/paletteMap.ts: remapSlots — перекладка слотов модели на палитру сцены (точный hex или ближайший RGB, при равенстве — меньший слот); решает «слоты модели ≠ слоты сцены» после импорта .vox. - Демка: мост stampVoxB64(b64,x,z) — парсинг → перекладка → штамп + ремешинг dirty-чанков. - Гейты: render 13 проверок (+ .vox-штамп меняет кадр, фиксстура — base64 от exportVox), turntable 5 проверок зелёные. - Уроки в план/CLAUDE: Node не импортирует @rpg/engine — фиксстуры гейтов вкладываются готовыми; точка правки для «кадр изменился» обязана быть в кадре камеры; заголовок .vox-чанка — 12 байт. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| docs/plan.md |
|---|
| v2/CLAUDE.md |
|---|
| v2/apps/demo/src/main.ts |
|---|
| v2/apps/demo/tools/checks/render.mjs |
|---|
| v2/packages/engine/src/index.ts |
|---|
| v2/packages/engine/src/models/__tests__/paletteMap.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/models/__tests__/vox.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/models/paletteMap.ts 0 → 100644 |
|---|
| v2/packages/engine/src/models/vox.ts 0 → 100644 |
|---|