@lovelace_lol/loom3 1.0.4 → 1.0.7

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/dist/index.d.cts CHANGED
@@ -374,14 +374,16 @@ interface BoneBinding {
374
374
  /** Optional side hint for balance-aware AUs. */
375
375
  side?: 'left' | 'right';
376
376
  }
377
+ /** A single AU id or a grouped list of AU ids that share one semantic direction. */
378
+ type AUSelector = number | number[];
377
379
  /**
378
380
  * RotationAxis - Defines which AUs control a specific rotation axis
379
381
  */
380
382
  interface RotationAxis {
381
383
  aus: number[];
382
384
  axis: 'rx' | 'ry' | 'rz';
383
- negative?: number;
384
- positive?: number;
385
+ negative?: AUSelector;
386
+ positive?: AUSelector;
385
387
  }
386
388
  /**
387
389
  * CompositeRotation - Defines unified rotation axes for bones
@@ -1583,6 +1585,9 @@ declare class Loom3 implements LoomLarge {
1583
1585
  private getMorphKeyCacheKey;
1584
1586
  private getMorphIndexCacheKey;
1585
1587
  private isMixedAU;
1588
+ private getEffectiveBoneAUValue;
1589
+ private getCompositeAxisValueForNode;
1590
+ private getCompositeAxisBindingForNode;
1586
1591
  private initBoneRotations;
1587
1592
  /** Update rotation state - just stores -1 to 1 value like stable version */
1588
1593
  private updateBoneRotation;
@@ -2043,23 +2048,24 @@ declare class HairPhysics {
2043
2048
  reset(): void;
2044
2049
  }
2045
2050
 
2046
- /**
2047
- * Loom3 - Mapping Corrections
2048
- *
2049
- * Attempts to generate a corrected mapping configuration using fuzzy matching.
2050
- * This is a best-effort helper that can be layered on top of validation.
2051
- */
2052
-
2053
- interface MorphMesh$1 {
2051
+ interface ValidationMorphMesh {
2054
2052
  name: string;
2055
2053
  morphTargetDictionary?: Record<string, number>;
2056
2054
  morphTargetInfluences?: number[];
2057
2055
  }
2058
- interface Skeleton$1 {
2056
+ interface ValidationSkeleton {
2059
2057
  bones: Array<{
2060
2058
  name: string;
2061
2059
  }>;
2062
2060
  }
2061
+
2062
+ /**
2063
+ * Loom3 - Mapping Corrections
2064
+ *
2065
+ * Attempts to generate a corrected mapping configuration using fuzzy matching.
2066
+ * This is a best-effort helper that can be layered on top of validation.
2067
+ */
2068
+
2063
2069
  interface MappingCorrection {
2064
2070
  type: 'bone' | 'morph' | 'viseme' | 'mesh';
2065
2071
  source: string;
@@ -2083,7 +2089,7 @@ interface MappingCorrectionOptions {
2083
2089
  */
2084
2090
  useResolvedNames?: boolean;
2085
2091
  }
2086
- declare function generateMappingCorrections(meshes: MorphMesh$1[], skeleton: Skeleton$1 | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2092
+ declare function generateMappingCorrections(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2087
2093
 
2088
2094
  /**
2089
2095
  * Loom3 - Mapping Validation
@@ -2143,36 +2149,20 @@ interface MappingConsistencyResult {
2143
2149
  interface ValidateMappingOptions extends MappingCorrectionOptions {
2144
2150
  suggestCorrections?: boolean;
2145
2151
  }
2146
- /**
2147
- * Interface for mesh with morph targets (compatible with Three.js Mesh)
2148
- */
2149
- interface MorphMesh {
2150
- name: string;
2151
- morphTargetDictionary?: Record<string, number>;
2152
- morphTargetInfluences?: number[];
2153
- }
2154
- /**
2155
- * Interface for skeleton (compatible with Three.js Skeleton)
2156
- */
2157
- interface Skeleton {
2158
- bones: Array<{
2159
- name: string;
2160
- }>;
2161
- }
2162
2152
  /**
2163
2153
  * Validate that the mapping dictionaries are internally consistent.
2164
2154
  */
2165
2155
  declare function validateMappingConfig(config: Profile): MappingConsistencyResult;
2166
- declare function validateMappings(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2156
+ declare function validateMappings(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2167
2157
  /**
2168
2158
  * Quick check if a preset is compatible with a model.
2169
2159
  * Returns true if at least 50% of mappings are found.
2170
2160
  */
2171
- declare function isPresetCompatible(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile): boolean;
2161
+ declare function isPresetCompatible(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile): boolean;
2172
2162
  /**
2173
2163
  * Suggest the best preset from a list based on validation scores.
2174
2164
  */
2175
- declare function suggestBestPreset<T extends Profile>(meshes: MorphMesh[], skeleton: Skeleton | null, presets: T[]): {
2165
+ declare function suggestBestPreset<T extends Profile>(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, presets: T[]): {
2176
2166
  preset: T;
2177
2167
  score: number;
2178
2168
  } | null;
@@ -2399,4 +2389,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
2399
2389
  right: string[];
2400
2390
  }): 'forward' | 'backward' | 'unknown';
2401
2391
 
2402
- export { type AUInfo, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, AU_MAPPING_CONFIG as FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig$1 as HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, resolveBoneName, resolveBoneNames, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };
2392
+ export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, AU_MAPPING_CONFIG as FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig$1 as HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, resolveBoneName, resolveBoneNames, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };
package/dist/index.d.ts CHANGED
@@ -374,14 +374,16 @@ interface BoneBinding {
374
374
  /** Optional side hint for balance-aware AUs. */
375
375
  side?: 'left' | 'right';
376
376
  }
377
+ /** A single AU id or a grouped list of AU ids that share one semantic direction. */
378
+ type AUSelector = number | number[];
377
379
  /**
378
380
  * RotationAxis - Defines which AUs control a specific rotation axis
379
381
  */
380
382
  interface RotationAxis {
381
383
  aus: number[];
382
384
  axis: 'rx' | 'ry' | 'rz';
383
- negative?: number;
384
- positive?: number;
385
+ negative?: AUSelector;
386
+ positive?: AUSelector;
385
387
  }
386
388
  /**
387
389
  * CompositeRotation - Defines unified rotation axes for bones
@@ -1583,6 +1585,9 @@ declare class Loom3 implements LoomLarge {
1583
1585
  private getMorphKeyCacheKey;
1584
1586
  private getMorphIndexCacheKey;
1585
1587
  private isMixedAU;
1588
+ private getEffectiveBoneAUValue;
1589
+ private getCompositeAxisValueForNode;
1590
+ private getCompositeAxisBindingForNode;
1586
1591
  private initBoneRotations;
1587
1592
  /** Update rotation state - just stores -1 to 1 value like stable version */
1588
1593
  private updateBoneRotation;
@@ -2043,23 +2048,24 @@ declare class HairPhysics {
2043
2048
  reset(): void;
2044
2049
  }
2045
2050
 
2046
- /**
2047
- * Loom3 - Mapping Corrections
2048
- *
2049
- * Attempts to generate a corrected mapping configuration using fuzzy matching.
2050
- * This is a best-effort helper that can be layered on top of validation.
2051
- */
2052
-
2053
- interface MorphMesh$1 {
2051
+ interface ValidationMorphMesh {
2054
2052
  name: string;
2055
2053
  morphTargetDictionary?: Record<string, number>;
2056
2054
  morphTargetInfluences?: number[];
2057
2055
  }
2058
- interface Skeleton$1 {
2056
+ interface ValidationSkeleton {
2059
2057
  bones: Array<{
2060
2058
  name: string;
2061
2059
  }>;
2062
2060
  }
2061
+
2062
+ /**
2063
+ * Loom3 - Mapping Corrections
2064
+ *
2065
+ * Attempts to generate a corrected mapping configuration using fuzzy matching.
2066
+ * This is a best-effort helper that can be layered on top of validation.
2067
+ */
2068
+
2063
2069
  interface MappingCorrection {
2064
2070
  type: 'bone' | 'morph' | 'viseme' | 'mesh';
2065
2071
  source: string;
@@ -2083,7 +2089,7 @@ interface MappingCorrectionOptions {
2083
2089
  */
2084
2090
  useResolvedNames?: boolean;
2085
2091
  }
2086
- declare function generateMappingCorrections(meshes: MorphMesh$1[], skeleton: Skeleton$1 | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2092
+ declare function generateMappingCorrections(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: MappingCorrectionOptions): MappingCorrectionResult;
2087
2093
 
2088
2094
  /**
2089
2095
  * Loom3 - Mapping Validation
@@ -2143,36 +2149,20 @@ interface MappingConsistencyResult {
2143
2149
  interface ValidateMappingOptions extends MappingCorrectionOptions {
2144
2150
  suggestCorrections?: boolean;
2145
2151
  }
2146
- /**
2147
- * Interface for mesh with morph targets (compatible with Three.js Mesh)
2148
- */
2149
- interface MorphMesh {
2150
- name: string;
2151
- morphTargetDictionary?: Record<string, number>;
2152
- morphTargetInfluences?: number[];
2153
- }
2154
- /**
2155
- * Interface for skeleton (compatible with Three.js Skeleton)
2156
- */
2157
- interface Skeleton {
2158
- bones: Array<{
2159
- name: string;
2160
- }>;
2161
- }
2162
2152
  /**
2163
2153
  * Validate that the mapping dictionaries are internally consistent.
2164
2154
  */
2165
2155
  declare function validateMappingConfig(config: Profile): MappingConsistencyResult;
2166
- declare function validateMappings(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2156
+ declare function validateMappings(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile, options?: ValidateMappingOptions): ValidationResult;
2167
2157
  /**
2168
2158
  * Quick check if a preset is compatible with a model.
2169
2159
  * Returns true if at least 50% of mappings are found.
2170
2160
  */
2171
- declare function isPresetCompatible(meshes: MorphMesh[], skeleton: Skeleton | null, config: Profile): boolean;
2161
+ declare function isPresetCompatible(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, config: Profile): boolean;
2172
2162
  /**
2173
2163
  * Suggest the best preset from a list based on validation scores.
2174
2164
  */
2175
- declare function suggestBestPreset<T extends Profile>(meshes: MorphMesh[], skeleton: Skeleton | null, presets: T[]): {
2165
+ declare function suggestBestPreset<T extends Profile>(meshes: ValidationMorphMesh[], skeleton: ValidationSkeleton | null, presets: T[]): {
2176
2166
  preset: T;
2177
2167
  score: number;
2178
2168
  } | null;
@@ -2399,4 +2389,4 @@ declare function detectFacingDirection(model: THREE.Object3D, eyeBoneNames?: {
2399
2389
  right: string[];
2400
2390
  }): 'forward' | 'backward' | 'unknown';
2401
2391
 
2402
- export { type AUInfo, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, AU_MAPPING_CONFIG as FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig$1 as HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, resolveBoneName, resolveBoneNames, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };
2392
+ export { type AUInfo, type AUSelector, AU_INFO, AU_MIX_DEFAULTS, AU_TO_MORPHS, type AnalyzeModelOptions, type Animation, type AnimationActionHandle, type AnimationAnalysis, type AnimationClipInfo, type AnimationInfo, type AnimationPlayOptions, type AnimationState, AnimationThree, BETTA_FISH_PRESET, BLENDING_MODES, BONE_AU_TO_BINDINGS, type BlendingMode, type BoneBinding, type BoneInfo, type BoneKey, CC4_BONE_NODES, CC4_BONE_PREFIX, CC4_EYE_MESH_NODES, CC4_MESHES, CC4_PRESET, CC4_SUFFIX_PATTERN, COMPOSITE_ROTATIONS, CONTINUUM_LABELS, CONTINUUM_PAIRS_MAP, type CharacterConfig, type CharacterRegistry, type ClipHandle, type ClipOptions, type CompositeRotation, type CompositeRotationState, type CurvePoint, type CurvesMap, DEFAULT_HAIR_PHYSICS_CONFIG, type ExpandAnimation, type ExpandedRegionState, AU_MAPPING_CONFIG as FISH_AU_MAPPING_CONFIG, type FaceCenterResult, type FallbackConfig, type FindFaceCenterOptions, type Hair, type HairMorphAxis, type HairMorphOutput$1 as HairMorphOutput, type HairMorphTargetMapping, type HairMorphTargetValueMapping, type HairMorphTargetsConfig, type HairObjectRef, type HairObjectState, HairPhysics, type HairPhysicsConfig$1 as HairPhysicsConfig, type HairPhysicsDirectionConfig$1 as HairPhysicsDirectionConfig, type HairPhysics$1 as HairPhysicsInterface, type HairMorphOutput as HairPhysicsMorphOutput, type HairPhysicsProfileConfig, type HairPhysicsRuntimeConfig, type HairPhysicsRuntimeConfigUpdate, type HairPhysicsState, type HairState, type HairStrand, type HeadState$1 as HeadState, type LineConfig, type LineCurve, type LineStyle, Loom3, type Loom3Config, Loom3 as Loom3Three, type LoomLarge, type LoomLargeConfig, Loom3 as LoomLargeThree, MORPH_TO_MESH, type MappingConsistencyResult, type MappingCorrection, type MappingCorrectionOptions, type MappingCorrectionResult, type MappingIssue, type MarkerGroup, type MarkerStyle, type MarkerStyleOverrides, type MeshCategory, type MeshInfo, type MeshMaterialSettings, type MixerLoopMode, type ModelAnalysisReport, type ModelData, type ModelMeshInfo, type MorphCategory, type MorphInfo, type MorphTargetRef, type MorphTargetsBySide, type NamedDirection, type PresetType, type Profile, type ReadyPayload, type Region, type RotationAxis, type RotationsState, type Snippet, type TrackInfo, type TransitionHandle, VISEME_JAW_AMOUNTS, VISEME_KEYS, type ValidateMappingOptions, type ValidationResult, analyzeModel, collectMorphMeshes, detectFacingDirection, extractFromGLTF, extractModelData, findFaceCenter, fuzzyNameMatch, generateMappingCorrections, getModelForwardDirection, hasLeftRightMorphs, isMixedAU, isPresetCompatible, resolveBoneName, resolveBoneNames, resolveFaceCenter, resolvePreset, resolvePresetWithOverrides, resolveProfile, suggestBestPreset, validateMappingConfig, validateMappings };