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>
1 parent c91e4d4 commit e77ce09212b1735171e65a3bdafa87a9079fad23
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 2 days ago
Showing 9 changed files
View
docs/plan.md
View
v2/CLAUDE.md
View
v2/apps/demo/src/main.ts
View
v2/apps/demo/tools/checks/render.mjs
View
v2/packages/engine/src/index.ts
View
v2/packages/engine/src/models/__tests__/paletteMap.test.ts 0 → 100644
View
v2/packages/engine/src/models/__tests__/vox.test.ts 0 → 100644
View
v2/packages/engine/src/models/paletteMap.ts 0 → 100644
View
v2/packages/engine/src/models/vox.ts 0 → 100644