@energy8platform/golem 0.2.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +28 -2
  2. package/dist/editor.css +50 -0
  3. package/dist/editor.js +1772 -1037
  4. package/dist/lib/cli.js +1575 -366
  5. package/dist/lib/cli.js.map +4 -4
  6. package/dist/lib/editor/controls-panel.d.ts +2 -0
  7. package/dist/lib/editor/stage.d.ts +1 -0
  8. package/dist/lib/editor/store.d.ts +212 -33
  9. package/dist/lib/editor-entry.js +1575 -366
  10. package/dist/lib/editor-entry.js.map +4 -4
  11. package/dist/lib/harness.js +328 -31
  12. package/dist/lib/interactive-bones.d.ts +37 -0
  13. package/dist/lib/interactive-editor.d.ts +80 -0
  14. package/dist/lib/interactive-editor.js +744 -0
  15. package/dist/lib/interactive-editor.js.map +7 -0
  16. package/dist/lib/preview/export-video.d.ts +12 -0
  17. package/dist/lib/preview/harness.d.ts +2 -0
  18. package/dist/lib/preview/render-preview.d.ts +6 -0
  19. package/dist/lib/rig-anim.d.ts +6 -3
  20. package/dist/lib/rig-check.d.ts +2 -1
  21. package/dist/lib/rig-constraints.d.ts +63 -0
  22. package/dist/lib/rig-control-qa.d.ts +319 -0
  23. package/dist/lib/rig-controls.d.ts +13 -0
  24. package/dist/lib/rig-format.d.ts +1469 -331
  25. package/dist/lib/rig-gates.d.ts +209 -0
  26. package/dist/lib/rig-mesh.d.ts +1 -0
  27. package/dist/lib/rig-motion.d.ts +22 -0
  28. package/dist/lib/rig-qa.d.ts +35 -0
  29. package/dist/lib/rig-quality.d.ts +12 -0
  30. package/dist/lib/rig-runtime.d.ts +43 -3
  31. package/dist/lib/rig-state.d.ts +3 -0
  32. package/dist/lib/rig-tools.d.ts +5 -1
  33. package/dist/lib/runtime.d.ts +3 -1
  34. package/dist/lib/runtime.js +306 -28
  35. package/dist/lib/runtime.js.map +4 -4
  36. package/dist/lib/tools.js +1557 -348
  37. package/dist/lib/tools.js.map +4 -4
  38. package/package.json +8 -2
package/README.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  Документ (`rig.json`, формат v2) — источник истины. Агент работает через MCP, человек — через вьюер и редактор в браузере (`npm run editor`). Рантайм — PixiJS v8.
4
4
 
5
+ Поддержан рабочий процесс для персонажей в полный рост: утверждённый арт + скрытые дорисовки,
6
+ плавное прохождение ключей, длинные IK-цепи, передача реквизита, запекание вторички, clipping,
7
+ редактирование весов и проверяемые прозрачные кадры/MP4 60 fps.
8
+ [Что изменилось, как использовать и результаты проверок](docs/verification-2026-09-27.md).
9
+
10
+ В 0.4 добавлен пилот параметрической мимики: независимые глаза, совместные формы
11
+ «улыбка × открытие рта», ползунки и ключевые формы в редакторе, дорожки параметров
12
+ и проверка сочетаний через реальный рендер. [Устройство и API](docs/expression-controls.md),
13
+ [воспроизводимый персонаж Milo](examples/expressions/README.md).
14
+
15
+ В 0.5 добавлен [редактор деталей и костей для встраиваемых превью](docs/interactive-editor.md):
16
+ правки мышью, группы, отмена и отдельные JSON-поправки. Поправки костей применяются
17
+ поверх параметрической мимики и сохраняются при смене анимации.
18
+ [Результаты объединения и проверок](docs/verification-2026-09-28.md).
19
+
5
20
  ```
6
21
  src/rig-format.ts схема документа (zod) + семантическая валидация; v1: deform-треки, asset.frame (атлас)
7
22
  src/rig-anim.ts чистая математика: easing, семплирование, Pose, аффинные матрицы костей, контуры слотов
@@ -13,6 +28,10 @@ src/rig-symbol.ts RigSymbol — адаптер под SymbolView из @ene
13
28
  src/rig-presets.ts пресеты: idle_breathing, weight_shift, win_bounce, anticipation_shake, blink, mouth_talk, dim, symbol_idle, symbol_win
14
29
  src/rig-tools.ts операции над документом, импорт слоёв (swap/bone), createSymbol, replaceAsset, layerPrompt
15
30
  src/rig-check.ts автокритика без рендера: out_of_canvas, static_track, loop_seam, deform_flip, patch_offset, motion_pop, …
31
+ src/rig-motion.ts градиент/сглаживание/фиксация весов, attach-to-bone, запекание вторички
32
+ src/rig-quality.ts проходные ключи, скорость петли, вторичка, порядок слоёв, ориентиры сменных рисунков
33
+ src/rig-gates.ts пороги движения, контакты/пропорции, условия FX, реальные переходы AnimationState
34
+ src/rig-qa.ts манифесты кадров с хешами исходных данных и проверкой полноты
16
35
  src/rig-history.ts снимки .rig-history/, undo, структурный diff
17
36
  src/rig-atlas.ts упаковка PNG-слоёв в atlas.png с экструзией краёв
18
37
  src/rig-templates.ts rig_save_as_preset: шаблон из готовой анимации (треки относительно rest, кости по role, множители)
@@ -157,6 +176,13 @@ golem editor --root public/assets/rigs # редактор над ригами
157
176
  `public/`, vite dev перезагружает игру на каждую запись редактора. Спека:
158
177
  `docs/superpowers/specs/2026-09-15-engine-integration-design.md`.
159
178
 
179
+ ### Правки мышью прямо в превью
180
+
181
+ Отдельный браузерный модуль `@energy8platform/golem/interactive-editor` подключается к
182
+ `RigPlayer`: выбор по видимым пикселям, перемещение, масштаб по осям и углам, вращение,
183
+ группы связанных деталей, отмена и JSON с правками. [Подключение и ограничения](docs/interactive-editor.md).
184
+ Полный редактор по-прежнему отвечает за кости, веса, IK и ключи анимации.
185
+
160
186
  ### Настоящие данные
161
187
 
162
188
  ```bash
@@ -323,7 +349,7 @@ IK, тащить напрямую нельзя: жест перенаправл
323
349
  ## Шаг 4 — риг класса Spine: формат v2 и импорт настоящего Spine-проекта (ross)
324
350
 
325
351
  Инструмент больше не «двигает картинки»: документ v2 — это меши с весами костей, регионы, пути, shear и режимы наследования,
326
- ограничения IK (1–2 кости, softness/stretch/compress), transform (мировой и локальный, relative) и path (4 режима шага,
352
+ ограничения IK (1–2 кости с softness/stretch/compress; длинные цепи через CCD), transform (мировой и локальный, relative) и path (4 режима шага,
327
353
  3 режима поворота, замкнутые и открытые пути), треки деформации вершин, порядка отрисовки, цвета слота и миксов ограничений.
328
354
  Это своя реализация по документированной семантике Spine, не порт рантайма; spine-core используется только как оракул в тестах.
329
355
 
@@ -352,7 +378,7 @@ npm run ktx2 -- ross/ross.ktx2 ross/ross.png # транскодер из three
352
378
  transform- и path-ограничения правят мировую матрицу и раскладываются обратно в локальные значения (иначе при неравномерном
353
379
  масштабе родителя поворот «уезжает»); двухкостный IK при отрицательном масштабе добавляет 180° и зеркалит сгиб.
354
380
 
355
- Не поддержано или отличается: linked mesh, clipping/bounding box/point attachments (пропускаются с предупреждением), скины
381
+ Не поддержано или отличается при импорте Spine: linked mesh, clipping/bounding box/point attachments (пропускаются с предупреждением; собственные clipping-маски Golem задаются через `slot.clip`), скины
356
382
  сливаются в один с префиксом (переключения нет), physics 4.2 и sequence 4.1 нет, смешивание анимаций — наш `AnimationState`
357
383
  (кроссфейд поз), а не MixBlend-треки; в локальном режиме transform-ограничения масштаб смешивается линейно (spine-core делит
358
384
  на масштаб кости); IK у костей с нестандартным `inherit` приближённый.
package/dist/editor.css CHANGED
@@ -698,4 +698,54 @@ h4 {
698
698
  color: var(--fg2);
699
699
  font-size: 11px;
700
700
  }
701
+ .control-panel {
702
+ padding: 14px;
703
+ font-size: 12px;
704
+ }
705
+ .control-panel p {
706
+ color: #a9b2bf;
707
+ line-height: 1.5;
708
+ }
709
+ .control-panel label {
710
+ display: block;
711
+ margin: 12px 0;
712
+ }
713
+ .control-panel select {
714
+ width: 100%;
715
+ margin-top: 6px;
716
+ }
717
+ .control-slider span {
718
+ display: flex;
719
+ justify-content: space-between;
720
+ }
721
+ .control-slider input {
722
+ width: 100%;
723
+ margin-top: 6px;
724
+ }
725
+ .control-panel button {
726
+ margin: 5px 5px 5px 0;
727
+ }
728
+ .control-panel fieldset {
729
+ border: 0;
730
+ padding: 0;
731
+ min-width: 0;
732
+ }
733
+ .keyform-channel {
734
+ margin: 16px 0;
735
+ }
736
+ .keyform-channel b {
737
+ display: block;
738
+ margin-bottom: 6px;
739
+ }
740
+ .keyform-channel input {
741
+ width: 82px;
742
+ }
743
+ .keyform-points {
744
+ display: grid;
745
+ grid-template-columns: 1fr 1fr;
746
+ gap: 4px;
747
+ }
748
+ .keyform-points label {
749
+ margin: 3px 0;
750
+ }
701
751
  /*# sourceMappingURL=editor.css.map */