@lovelace_lol/loom3 1.0.7 → 1.0.8

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 (2) hide show
  1. package/README.md +21 -21
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ Loom3 provides mappings that connect [Facial Action Coding System (FACS)](https:
6
6
 
7
7
  > **Note:** If you previously used the `loomlarge` npm package, it has been renamed to `@lovelace_lol/loom3`.
8
8
 
9
- > **Screenshot placeholder:** Add a hero image showing a character with facial expressions controlled by Loom3
9
+ ![Hero image showing Loom3 controlling a facial expression](./assets/readme/hero-expressions.webp)
10
10
 
11
11
  ---
12
12
 
@@ -32,7 +32,7 @@ Loom3 provides mappings that connect [Facial Action Coding System (FACS)](https:
32
32
 
33
33
  ## 1. Installation & Setup
34
34
 
35
- > **Screenshot placeholder:** Add a screenshot of a project structure with Loom3 installed
35
+ ![Project structure with Loom3 installed](./assets/readme/project-structure.svg)
36
36
 
37
37
  ### Install the package
38
38
 
@@ -129,13 +129,13 @@ const meshes = collectMorphMeshes(gltf.scene);
129
129
  // Returns: Array of THREE.Mesh objects with morph targets
130
130
  ```
131
131
 
132
- > **Screenshot placeholder:** Add a screenshot of a loaded character in the Three.js scene
132
+ ![Loaded character in a Three.js scene powered by Loom3](./assets/readme/loaded-character-scene.webp)
133
133
 
134
134
  ---
135
135
 
136
136
  ## 2. Using Presets
137
137
 
138
- > **Screenshot placeholder:** Add a diagram showing how presets connect AUs to morphs and bones
138
+ ![Diagram showing how Loom3 presets connect AUs to morphs and bones](./assets/readme/preset-au-flow.svg)
139
139
 
140
140
  Presets define how FACS Action Units map to your character's morph targets and bones. Loom3 ships with `CC4_PRESET` for Character Creator 4 characters.
141
141
 
@@ -247,13 +247,13 @@ const loom = new Loom3({
247
247
  });
248
248
  ```
249
249
 
250
- > **Screenshot placeholder:** Add a screenshot showing the preset being applied to a character
250
+ ![Character properties UI showing a Loom3 preset applied to a live character](./assets/readme/preset-applied-ui.webp)
251
251
 
252
252
  ---
253
253
 
254
254
  ## 3. Getting to Know Your Character
255
255
 
256
- > **Screenshot placeholder:** Add a screenshot of the console output showing mesh and morph target information
256
+ ![Console-style diagram showing Loom3 mesh and morph target inspection output](./assets/readme/console-mesh-output.svg)
257
257
 
258
258
  Before customizing presets or extending mappings, it's helpful to understand what's actually in your character model. Loom3 provides several methods to inspect meshes, morph targets, and bones.
259
259
 
@@ -381,13 +381,13 @@ This is especially useful for:
381
381
  - Making meshes semi-transparent for debugging
382
382
  - Adjusting blending modes for special effects
383
383
 
384
- > **Screenshot placeholder:** Add before/after screenshots showing render order adjustments
384
+ ![Before and after Mesh panel screenshots showing a render-order adjustment](./assets/readme/render-order-before-after.webp)
385
385
 
386
386
  ---
387
387
 
388
388
  ## 4. Extending & Custom Presets
389
389
 
390
- > **Screenshot placeholder:** Add a diagram showing preset inheritance/extension
390
+ ![Diagram showing preset inheritance and mergePreset overrides](./assets/readme/preset-inheritance.svg)
391
391
 
392
392
  ### Extending an existing preset
393
393
 
@@ -458,13 +458,13 @@ loom.setProfile(ANOTHER_PRESET);
458
458
  const current = loom.getProfile();
459
459
  ```
460
460
 
461
- > **Screenshot placeholder:** Add a screenshot showing custom preset in action
461
+ ![Comparison showing a custom Loom3 preset override in action](./assets/readme/custom-preset-in-action.webp)
462
462
 
463
463
  ---
464
464
 
465
465
  ## 5. Creating Skeletal Animation Presets
466
466
 
467
- > **Screenshot placeholder:** Add a screenshot showing the fish model with labeled bones
467
+ ![Betta fish model with bones panel visible](./assets/readme/fish-bones-ui.webp)
468
468
 
469
469
  Loom3 isn't limited to humanoid characters with morph targets. You can create presets for any 3D model that uses skeletal animation, such as fish, animals, or fantasy creatures. This section explains how to create a preset for a betta fish model that has no morph targets—only bone-driven animation.
470
470
 
@@ -739,13 +739,13 @@ async function swimCycle() {
739
739
  }
740
740
  ```
741
741
 
742
- > **Screenshot placeholder:** Add a GIF showing the fish swimming animation
742
+ ![Animated GIF of a Loom3-driven betta fish swimming](./assets/readme/fish-swimming.gif)
743
743
 
744
744
  ---
745
745
 
746
746
  ## 6. Action Unit Control
747
747
 
748
- > **Screenshot placeholder:** Add a screenshot showing a character with different AU values
748
+ ![Grid of Loom3 Action Unit examples on a character](./assets/readme/au-values-grid.webp)
749
749
 
750
750
  Action Units are the core of FACS. Each AU represents a specific muscular movement of the face.
751
751
 
@@ -821,7 +821,7 @@ loom.setAU(12, 0.8, 1); // Right side only
821
821
 
822
822
  ## 7. Mix Weight System
823
823
 
824
- > **Screenshot placeholder:** Add a comparison showing morph-only vs bone-only vs mixed weights
824
+ ![Comparison of morph-only, mixed, and bone-only AU results](./assets/readme/mix-weight-comparison.webp)
825
825
 
826
826
  Some AUs can be driven by both morph targets (blend shapes) AND bone rotations. The mix weight controls the blend between them.
827
827
 
@@ -868,7 +868,7 @@ if (isMixedAU(26)) {
868
868
 
869
869
  ## 8. Composite Rotation System
870
870
 
871
- > **Screenshot placeholder:** Add a diagram showing the pitch/yaw/roll axes on a head
871
+ ![Diagram showing pitch, yaw, and roll axes on the head](./assets/readme/head-axes-diagram.svg)
872
872
 
873
873
  Bones like the head and eyes need multi-axis rotation (pitch, yaw, roll). The composite rotation system handles this automatically.
874
874
 
@@ -928,7 +928,7 @@ loom.setAU(64, 0.4);
928
928
 
929
929
  ## 9. Continuum Pairs
930
930
 
931
- > **Screenshot placeholder:** Add a screenshot showing a continuum slider UI
931
+ ![Continuum slider UI for paired Loom3 AUs](./assets/readme/continuum-slider-ui.webp)
932
932
 
933
933
  Continuum pairs are bidirectional AU pairs that represent opposite directions on the same axis. They're linked so that activating one should deactivate the other.
934
934
 
@@ -1028,7 +1028,7 @@ const pair = CONTINUUM_PAIRS_MAP[51];
1028
1028
 
1029
1029
  ## 10. Direct Morph Control
1030
1030
 
1031
- > **Screenshot placeholder:** Add a screenshot of a morph target being controlled directly
1031
+ ![Direct morph control screenshot with a live morph preview](./assets/readme/direct-morph-control.webp)
1032
1032
 
1033
1033
  Sometimes you need to control morph targets directly by name, bypassing the AU system.
1034
1034
 
@@ -1069,7 +1069,7 @@ Loom3 caches morph target lookups for performance. The first time you access a m
1069
1069
 
1070
1070
  ## 11. Viseme System
1071
1071
 
1072
- > **Screenshot placeholder:** Add a grid showing all 15 viseme mouth shapes
1072
+ ![Grid of all 15 Loom3 viseme mouth shapes](./assets/readme/viseme-grid.webp)
1073
1073
 
1074
1074
  Visemes are mouth shapes used for lip-sync. Loom3 includes 15 visemes with automatic jaw coupling.
1075
1075
 
@@ -1158,7 +1158,7 @@ speak([5, 0, 10, 4]);
1158
1158
 
1159
1159
  ## 12. Transition System
1160
1160
 
1161
- > **Screenshot placeholder:** Add a diagram showing transition timeline with easing
1161
+ ![Diagram showing a Loom3 transition timeline with easing and handle methods](./assets/readme/transition-timeline-easing.svg)
1162
1162
 
1163
1163
  All animated changes in Loom3 go through the transition system, which provides smooth interpolation with easing.
1164
1164
 
@@ -1240,7 +1240,7 @@ loom.clearTransitions();
1240
1240
 
1241
1241
  ## 13. Playback & State Control
1242
1242
 
1243
- > **Screenshot placeholder:** Add a screenshot showing pause/resume controls in a UI
1243
+ ![Playback controls UI showing Loom3 pause and resume controls](./assets/readme/pause-resume-controls.webp)
1244
1244
 
1245
1245
  ### Pausing and resuming
1246
1246
 
@@ -1297,7 +1297,7 @@ loom.dispose();
1297
1297
 
1298
1298
  ## 14. Hair Physics (Mixer-Driven)
1299
1299
 
1300
- > **Screenshot placeholder:** Add a GIF showing hair physics responding to head movement
1300
+ ![Animated GIF showing Loom3 hair physics reacting to head motion](./assets/readme/hair-physics.gif)
1301
1301
 
1302
1302
  Loom3 includes a built-in hair physics system that drives morph targets through the AnimationMixer.
1303
1303
  It is **mixer-only** (no per-frame morph LERP), and it reacts to **head rotation** coming from AUs.
@@ -1655,7 +1655,7 @@ loom.transitionAU(45, 1.0, 100); // Blink
1655
1655
 
1656
1656
  ## Resources
1657
1657
 
1658
- > **Screenshot placeholder:** Add logos or screenshots from the resources below
1658
+ ![Reference cards for FACS, Paul Ekman Group, Character Creator 4, and Three.js](./assets/readme/resources-cards.svg)
1659
1659
 
1660
1660
  - [FACS on Wikipedia](https://en.wikipedia.org/wiki/Facial_Action_Coding_System)
1661
1661
  - [Paul Ekman Group - FACS](https://www.paulekman.com/facial-action-coding-system/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovelace_lol/loom3",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Lightweight 3D character animation engine for facial AUs, visemes, and bone-driven motion",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",