@lovelace_lol/embody 0.0.11 → 0.0.13

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.
package/README.md CHANGED
@@ -294,7 +294,7 @@ step/linear clip conversion, and remaining import work.
294
294
 
295
295
  `humanoid.getSpecification` exposes all 55 VRM 1.0 anatomical roles and their
296
296
  parent/required rules. CC4 maps all 55 to distinct authored bones and supplies
297
- 58 body controls for fingers, wrists, shoulders, feet, whole body motion, the
297
+ authored AU mappings for fingers, wrists, shoulders, feet, whole body motion, the
298
298
  spine, head, eyes and jaw. `profile.setHumanoidRoleBinding` edits or clears a role and
299
299
  retargets its existing actuators. The runtime keeps the same bone/morph evaluator;
300
300
  other rigs must author their own calibrated axes/ranges and optional muscle
@@ -525,42 +525,39 @@ the package; CI checks and publishes that same build.
525
525
 
526
526
  MIT. See [LICENSE](LICENSE) and [AUTHORS.md](AUTHORS.md).
527
527
 
528
- ### Semantic poses and generated motion
529
-
530
- `RuntimeCore.get_semantic_pose_catalog_json()` returns the configured profile's
531
- motion identifiers, direction labels, VRM roles, resolved bone/morph names and
532
- per-direction model support and available sides. VRM names anatomy; profile motion IDs name authored
533
- actions. Hosts should send only supported directions to generation prompts,
534
- along with their bounds: intensity and morph strength `0..1`, bilateral balance
535
- `-1` character-left, `0` both, `1` character-right. Amounts are normalized authored
536
- motion, not radians or world-space rotation.
537
-
538
- `capture_semantic_pose_json()` returns `{version:1,controls:[{controlId,positive,
539
- negative?}]}`. Each direction stores intensity, balance and morphStrength
540
- independently, preserving opposed action values. These are manual runtime
541
- controls; capturing an arbitrary mixer/baked pose would require pose inference.
542
- `validate_semantic_pose_json()` fills omitted settings without mutation.
543
- `apply_semantic_pose_json()` validates the complete input before replacing Body
544
- actions, preserving unrelated facial state. Either direction may be omitted;
545
- a control requires at least one. Known missing outputs remain portable to partial
546
- rigs; unknown IDs, duplicate actions and invalid bounds fail. Applying a semantic pose releases prior direct overrides on its exact mapped
547
- mesh/target IDs, preserving unrelated facial overrides and same-named targets on
548
- unmapped meshes.
549
-
550
- `build_semantic_clip(name, animationJson, optionsJson)` compiles
551
- `{version:1,durationSeconds,tracks:[{controlId,direction,balance?,morphStrength?,
552
- keyframes:[{time,intensity}]}]}` through the same AU/bone/morph evaluator.
553
- Direction is `positive` or `negative`; time is seconds. Unsupported directions,
554
- unknown controls, duplicate actions and non-increasing/out-of-range keys fail.
555
- `options.faceCurves` accepts additional non-Body AU curves so face and body compile
556
- together, including overlapping mapped bones. Compilation preserves live state;
557
- per-track morph strength changes only the compiled output. The host mixer owns
558
- playback and interpolation, as with existing snippets.
559
-
560
- Catalog `availableSides` identifies actual mapped left/right/center outputs.
561
- Generated animations reject a negative balance without a left output or positive
562
- balance without a right output; balance zero may drive the remaining side of a
563
- partial rig. Stored static poses retain their portability across missing outputs.
564
- `evaluate_semantic_body_bone_frame()` returns exact Body-owned properties including
565
- neutral values, allowing an explicit semantic pose/reset to replace old raw bone
566
- edits without touching unrelated properties.
528
+ ### AU controls and authored animation
529
+
530
+ Character controls come from the character's saved `auInfo`/`actionInfo`,
531
+ `auToBones`, `auToMorphs`, `compositeRotations` and `continuumPairs`. There is
532
+ no named body-control catalog or fixed control count. `engine.getAUDescriptors()`
533
+ and initialized `getAUDescriptors(profile, modelDescriptor?)` return per-AU
534
+ metadata and resolved output support, including labels, signed pair IDs,
535
+ bilateral sides, saved morph strength and resolved bone/morph names.
536
+
537
+ Use `setAU`/`transitionAU`, `setContinuum`, `getAUBalance` and
538
+ `setAUMixWeight` for live controls. `buildClip`/`playSnippet` compile numeric
539
+ AU curves through the same saved bone/morph evaluator; `balanceMap` and
540
+ `mixWeights` are per-AU compilation options. Compilation preserves live state.
541
+ Native playback owns interpolation, pause, resume, cancellation and blending.
542
+ Reset an authored control by setting its mapped AU values to zero. Hosts select
543
+ which mapped AU IDs to reset; unrelated face state and saved mix strengths remain
544
+ under their existing owners.
545
+
546
+ Named semantic pose/animation APIs and profile `bodyControls` are retired.
547
+ Persisted named records must be decoded at the storage boundary to numeric AU
548
+ values/curves, using their original profile mappings. `LEGACY_BODY_CONTROL_AUS`
549
+ is a deprecated reader-only historical identity snapshot for old CC4 records;
550
+ it is never consulted for current controls, actuation or profile compilation.
551
+ Unknown legacy names must be reported rather than silently omitted.
552
+
553
+ ### Character-derived studio background
554
+
555
+ The Three `createCharacterHost` paints its container with soft gradients sampled
556
+ from the selected model's material and texture colors. The studio uses the
557
+ original visible ink strengths (24/12%, 22/10%, 18%) over a gunmetal base.
558
+ Embody owns palette extraction and updates after successful character replacement;
559
+ late extraction cannot repaint a newer selection or a disposed host. Disposal
560
+ restores the container's original inline background. Explicit saved backgrounds,
561
+ including `null` transparency, non-studio scene types and external scenes retain
562
+ their authored appearance. Polymer forwards the host; applications do not sample
563
+ textures or construct a second scene background.