|
v2 трек 6: рига/анимация — «анимация = данные» + walk-цикл манекена
- animation/mat.ts: аффинная математика без three (Affine, порядок
Эйлера X→Y→Z, rotateAround) — чистая, тестируется без рендера.
- animation/rig.ts: рига (кости: имя/родитель/pivot в связочном
пространстве), привязка вокселей — явная у генератора или bindNearest;
validateRig (родители раньше детей, согласованность привязки);
poseVoxels — жёсткая деформация по цепочкам костей.
- animation/clip.ts: клипы — ключи {t, кость: rot/pos}, линейный
семплинг с заворотом t, validateClip (монотонность, замкнутость
цикла «первый = последний»), footMinY (контакт стопы).
- animation/locomotion.ts: walkClip(params) — ноги в противофазе, руки
против одноимённой ноги, корень приседает дважды за цикл и качается.
- models/mannequin.ts: эталонный манекен 5×11×3 с ригой (5 костей,
явная привязка — Voronoi по pivot отнёс бы торс к рукам).
- render: addVoxelCloud — InstancedMesh для деформированных вокселей,
обновление позы без пересборки геометрии.
- Демка: anim.html/anim.ts — аним-лист 8 кадров цикла (4×2); мост
poseStats(i)/clipCheck()/setModels. Гейт anim.mjs: 8 проверок —
картинка (ячейки видны, фазы различаются) + числа через мост
(клип замкнут, противофазы, контакт стоп, качание корня).
- Попутно: turntable sheetInfo отдавал viewSize 30 при камере 32 —
исправлено на реальное значение (гейт проходил за счёт запаса).
- 91 юнит-тест; гейты: render 13/13, turntable 5/5, anim 8/8.
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
|---|
|
|
| docs/plan.md |
|---|
| v2/CLAUDE.md |
|---|
| v2/apps/demo/anim.html 0 → 100644 |
|---|
| v2/apps/demo/src/anim.ts 0 → 100644 |
|---|
| v2/apps/demo/src/turntable.ts |
|---|
| v2/apps/demo/tools/checks/anim.mjs 0 → 100644 |
|---|
| v2/packages/engine/src/animation/__tests__/clip.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/__tests__/locomotion.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/__tests__/mat.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/__tests__/rig.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/clip.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/locomotion.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/mat.ts 0 → 100644 |
|---|
| v2/packages/engine/src/animation/rig.ts 0 → 100644 |
|---|
| v2/packages/engine/src/index.ts |
|---|
| v2/packages/engine/src/models/__tests__/mannequin.test.ts 0 → 100644 |
|---|
| v2/packages/engine/src/models/mannequin.ts 0 → 100644 |
|---|
| v2/packages/engine/src/render/voxelRenderer.ts |
|---|