@lovelace_lol/embody 0.0.1
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/LICENSE +21 -0
- package/README.md +2411 -0
- package/dist/authoring/boneAuthoring.d.ts +132 -0
- package/dist/camera/annotationCameraAngles.d.ts +28 -0
- package/dist/camera/cameraRelativeGaze.d.ts +15 -0
- package/dist/camera/rustAnnotationCameraCore.d.ts +136 -0
- package/dist/cljs.cjs +362 -0
- package/dist/cljs.cjs.map +1 -0
- package/dist/cljs.d.ts +5 -0
- package/dist/cljs.js +359 -0
- package/dist/cljs.js.map +1 -0
- package/dist/core/TsClipCompiler.d.ts +51 -0
- package/dist/core/TsRuntimeCore.d.ts +40 -0
- package/dist/core/WasmRuntimeCore.d.ts +55 -0
- package/dist/core/compositeAxis.d.ts +4 -0
- package/dist/core/contracts/abi.d.ts +70 -0
- package/dist/core/contracts/clip.d.ts +44 -0
- package/dist/core/contracts/frame.d.ts +27 -0
- package/dist/core/contracts/host.d.ts +28 -0
- package/dist/core/contracts/ids.d.ts +15 -0
- package/dist/core/contracts/index.d.ts +10 -0
- package/dist/core/contracts/model.d.ts +31 -0
- package/dist/core/contracts/primitives.d.ts +17 -0
- package/dist/core/contracts/skeletonFit.d.ts +41 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/types.d.ts +472 -0
- package/dist/core.cjs +1065 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.js +1040 -0
- package/dist/core.js.map +1 -0
- package/dist/engines/three/Embody.d.ts +373 -0
- package/dist/engines/three/ThreeAnimationRuntime.d.ts +203 -0
- package/dist/engines/three/ThreeClipAdapter.d.ts +24 -0
- package/dist/engines/three/ThreeFrameApplier.d.ts +68 -0
- package/dist/engines/three/ThreeModelInspector.d.ts +54 -0
- package/dist/engines/three/bakedClipPartitioning.d.ts +16 -0
- package/dist/engines/three/balanceUtils.d.ts +3 -0
- package/dist/engines/three/characterHost.d.ts +80 -0
- package/dist/engines/three/characterScene.d.ts +98 -0
- package/dist/engines/three/hair/HairPhysicsController.d.ts +124 -0
- package/dist/engines/three/index.d.ts +20 -0
- package/dist/engines/three/modelLoader.d.ts +61 -0
- package/dist/engines/three/profileTestScene.d.ts +52 -0
- package/dist/engines/three/types.d.ts +20 -0
- package/dist/hair/appearance.d.ts +29 -0
- package/dist/index.cjs +15431 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.js +15141 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/Animation.d.ts +315 -0
- package/dist/interfaces/EmbodyRuntime.d.ts +90 -0
- package/dist/interfaces/Hair.d.ts +181 -0
- package/dist/interfaces/HairPhysics.d.ts +90 -0
- package/dist/interfaces/index.d.ts +11 -0
- package/dist/mappings/extendPresetWithProfile.d.ts +17 -0
- package/dist/mappings/types.d.ts +309 -0
- package/dist/mappings/visemeSystem.d.ts +26 -0
- package/dist/physics/HairPhysics.d.ts +86 -0
- package/dist/physics/RustHairPhysics.d.ts +18 -0
- package/dist/physics/index.d.ts +6 -0
- package/dist/preset.cjs +2000 -0
- package/dist/preset.cjs.map +1 -0
- package/dist/preset.js +1997 -0
- package/dist/preset.js.map +1 -0
- package/dist/presets/bettaFish.d.ts +328 -0
- package/dist/presets/cc4.d.ts +145 -0
- package/dist/presets/index.d.ts +27 -0
- package/dist/profiles/resolveProfileConfig.d.ts +36 -0
- package/dist/profiles/types.d.ts +118 -0
- package/dist/regions/normalizeRegionTree.d.ts +6 -0
- package/dist/regions/regionMapping.d.ts +17 -0
- package/dist/regions/types.d.ts +122 -0
- package/dist/skeletonTemplates/humanoidSkeletonTemplates.d.ts +32 -0
- package/dist/test/setupWasm.d.ts +1 -0
- package/dist/three.cjs +10115 -0
- package/dist/three.cjs.map +1 -0
- package/dist/three.js +10086 -0
- package/dist/three.js.map +1 -0
- package/dist/validation/analyzeModel.d.ts +68 -0
- package/dist/validation/extractModelData.d.ts +90 -0
- package/dist/validation/generateMappingCorrections.d.ts +32 -0
- package/dist/validation/geometryHelpers.d.ts +66 -0
- package/dist/validation/types.d.ts +10 -0
- package/dist/validation/validateMappings.d.ts +77 -0
- package/dist/wasm/LICENSE +21 -0
- package/dist/wasm/README.md +72 -0
- package/dist/wasm/embody_wasm.d.ts +531 -0
- package/dist/wasm/embody_wasm.js +1635 -0
- package/dist/wasm/embody_wasm_bg.wasm +0 -0
- package/dist/wasm/embody_wasm_bg.wasm.d.ts +107 -0
- package/dist/wasm.cjs +302 -0
- package/dist/wasm.cjs.map +1 -0
- package/dist/wasm.d.ts +43 -0
- package/dist/wasm.js +268 -0
- package/dist/wasm.js.map +1 -0
- package/dist/wasmTypes.d.ts +121 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/presets/cc4.ts","../src/presets/bettaFish.ts"],"names":["AU_INFO","CONTINUUM_PAIRS_MAP","CONTINUUM_LABELS","COMPOSITE_ROTATIONS"],"mappings":"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","file":"preset.cjs","sourcesContent":["/**\n * CC4 Preset - Character Creator 4 AU Mappings\n *\n * Complete FACS Action Unit to morph target and bone mappings for CC4 rigs.\n * This includes all the composite rotations, continuum pairs, mesh classifications,\n * and AU metadata that we painstakingly worked through.\n */\n\nimport type { Profile, MeshCategory, BlendingMode, MeshMaterialSettings, MeshInfo, MorphCategory, MorphTargetsBySide, VisemeSlot, MappingEditorSection } from '../mappings/types';\nimport type { BoneBinding, AUInfo, CompositeRotation } from '../core/types';\n\n// ============================================================================\n// AU TO MORPHS - Maps AU IDs to morph target names\n// ============================================================================\n\nexport const AU_TO_MORPHS: Record<number, MorphTargetsBySide> = {\n 1: {\n left: ['Brow_Raise_Inner_L'],\n right: ['Brow_Raise_Inner_R'],\n center: [],\n },\n 2: {\n left: ['Brow_Raise_Outer_L'],\n right: ['Brow_Raise_Outer_R'],\n center: [],\n },\n 4: {\n left: ['Brow_Drop_L'],\n right: ['Brow_Drop_R'],\n center: [],\n },\n 5: {\n left: ['Eye_Wide_L'],\n right: ['Eye_Wide_R'],\n center: [],\n },\n 6: {\n left: ['Cheek_Raise_L'],\n right: ['Cheek_Raise_R'],\n center: [],\n },\n 7: {\n left: ['Eye_Squint_L'],\n right: ['Eye_Squint_R'],\n center: [],\n },\n 8: {\n left: ['Mouth_Press_L'],\n right: ['Mouth_Press_R'],\n center: ['Mouth_Close'],\n },\n 9: {\n left: ['Nose_Sneer_L'],\n right: ['Nose_Sneer_R'],\n center: [],\n },\n 10: {\n left: ['Mouth_Up_Upper_L'],\n right: ['Mouth_Up_Upper_R'],\n center: [],\n },\n 11: {\n left: ['Mouth_Up_Upper_L'],\n right: ['Mouth_Up_Upper_R'],\n center: [],\n },\n 12: {\n left: ['Mouth_Smile_L'],\n right: ['Mouth_Smile_R'],\n center: [],\n },\n 13: {\n left: ['Mouth_Smile_L', 'Mouth_Up_Upper_L'],\n right: ['Mouth_Smile_R', 'Mouth_Up_Upper_R'],\n center: [],\n },\n 14: {\n left: ['Mouth_Dimple_L'],\n right: ['Mouth_Dimple_R'],\n center: [],\n },\n 15: {\n left: ['Mouth_Frown_L'],\n right: ['Mouth_Frown_R'],\n center: [],\n },\n 16: {\n left: ['Mouth_Down_Lower_L'],\n right: ['Mouth_Down_Lower_R'],\n center: [],\n },\n 17: {\n left: [],\n right: [],\n center: ['Mouth_Shrug_Lower'],\n },\n 18: {\n left: [],\n right: [],\n center: ['Mouth_Pucker'],\n },\n 19: {\n left: [],\n right: [],\n center: ['Tongue_Out'],\n },\n 20: {\n left: ['Mouth_Stretch_L'],\n right: ['Mouth_Stretch_R'],\n center: [],\n },\n 22: {\n left: [],\n right: [],\n center: ['Mouth_Funnel'],\n },\n 23: {\n left: ['Mouth_Press_L'],\n right: ['Mouth_Press_R'],\n center: [],\n },\n 24: {\n left: ['Mouth_Press_L'],\n right: ['Mouth_Press_R'],\n center: [],\n },\n 25: {\n left: [],\n right: [],\n center: ['Jaw_Open'],\n },\n 26: {\n left: [],\n right: [],\n center: ['Jaw_Open'],\n },\n 27: {\n left: [],\n right: [],\n center: ['Jaw_Open'],\n },\n 28: {\n left: [],\n right: [],\n center: ['Mouth_Roll_In_Upper', 'Mouth_Roll_In_Lower'],\n },\n 29: {\n left: [],\n right: [],\n center: ['Jaw_Forward'],\n },\n 30: {\n left: ['Jaw_L'],\n right: [],\n center: [],\n },\n 31: {\n left: [],\n right: [],\n center: [],\n },\n 32: {\n left: [],\n right: [],\n center: ['Mouth_Roll_In_Lower'],\n },\n 34: {\n left: ['Cheek_Puff_L'],\n right: ['Cheek_Puff_R'],\n center: [],\n },\n 35: {\n left: [],\n right: ['Jaw_R'],\n center: [],\n },\n 36: {\n left: ['Tongue_Bulge_L'],\n right: ['Tongue_Bulge_R'],\n center: [],\n },\n 37: {\n left: [],\n right: [],\n center: ['Tongue_Up'],\n },\n 38: {\n left: [],\n right: [],\n center: ['Tongue_Down'],\n },\n 39: {\n left: ['Tongue_L'],\n right: [],\n center: [],\n },\n 40: {\n left: [],\n right: ['Tongue_R'],\n center: [],\n },\n 41: {\n left: [],\n right: [],\n center: [],\n },\n 42: {\n left: [],\n right: [],\n center: [],\n },\n 43: {\n left: ['Eye_Blink_L'],\n right: ['Eye_Blink_R'],\n center: [],\n },\n 45: {\n left: ['Eye_Blink_L'],\n right: ['Eye_Blink_R'],\n center: [],\n },\n 51: {\n left: ['Head_Turn_L'],\n right: [],\n center: [],\n },\n 52: {\n left: [],\n right: ['Head_Turn_R'],\n center: [],\n },\n 53: {\n left: [],\n right: [],\n center: ['Head_Turn_Up'],\n },\n 54: {\n left: [],\n right: [],\n center: ['Head_Turn_Down'],\n },\n 55: {\n left: ['Head_Tilt_L'],\n right: [],\n center: [],\n },\n 56: {\n left: [],\n right: ['Head_Tilt_R'],\n center: [],\n },\n 61: {\n left: ['Eye_L_Look_L'],\n right: ['Eye_R_Look_L'],\n center: [],\n },\n 62: {\n left: ['Eye_L_Look_R'],\n right: ['Eye_R_Look_R'],\n center: [],\n },\n 63: {\n left: ['Eye_L_Look_Up'],\n right: ['Eye_R_Look_Up'],\n center: [],\n },\n 64: {\n left: ['Eye_L_Look_Down'],\n right: ['Eye_R_Look_Down'],\n center: [],\n },\n 65: {\n left: ['Eye_L_Look_L'],\n right: [],\n center: [],\n },\n 66: {\n left: [],\n right: ['Eye_L_Look_R'],\n center: [],\n },\n 67: {\n left: [],\n right: [],\n center: ['Eye_L_Look_Up'],\n },\n 68: {\n left: [],\n right: [],\n center: ['Eye_L_Look_Down'],\n },\n 69: {\n left: ['Eye_R_Look_L'],\n right: [],\n center: [],\n },\n 70: {\n left: [],\n right: ['Eye_R_Look_R'],\n center: [],\n },\n 71: {\n left: [],\n right: [],\n center: ['Eye_R_Look_Up'],\n },\n 72: {\n left: [],\n right: [],\n center: ['Eye_R_Look_Down'],\n },\n 73: {\n left: [],\n right: [],\n center: ['Tongue_Narrow'],\n },\n 74: {\n left: [],\n right: [],\n center: ['Tongue_Wide'],\n },\n 75: {\n left: [],\n right: [],\n center: ['Tongue_Roll'],\n },\n 76: {\n left: [],\n right: [],\n center: ['Tongue_Tip_Up'],\n },\n 77: {\n left: [],\n right: [],\n center: ['Tongue_Tip_Down'],\n },\n 80: {\n left: ['EO Bulge L'],\n right: ['EO Bulge R'],\n center: [],\n },\n 81: {\n left: ['EO Depth L'],\n right: ['EO Depth R'],\n center: [],\n },\n 82: {\n left: ['EO Inner Depth L'],\n right: ['EO Inner Depth R'],\n center: [],\n },\n 83: {\n left: ['EO Inner Height L'],\n right: ['EO Inner Height R'],\n center: [],\n },\n 84: {\n left: ['EO Inner Width L'],\n right: ['EO Inner Width R'],\n center: [],\n },\n 85: {\n left: ['EO Outer Depth L'],\n right: ['EO Outer Depth R'],\n center: [],\n },\n 86: {\n left: ['EO Outer Height L'],\n right: ['EO Outer Height R'],\n center: [],\n },\n 87: {\n left: ['EO Outer Width L'],\n right: ['EO Outer Width R'],\n center: [],\n },\n 88: {\n left: ['EO Upper Depth L'],\n right: ['EO Upper Depth R'],\n center: [],\n },\n 89: {\n left: ['EO Lower Depth L'],\n right: ['EO Lower Depth R'],\n center: [],\n },\n 90: {\n left: ['EO Center Upper Depth L'],\n right: ['EO Center Upper Depth R'],\n center: [],\n },\n 91: {\n left: ['EO Center Upper Height L'],\n right: ['EO Center Upper Height R'],\n center: [],\n },\n 92: {\n left: ['EO Center Lower Depth L'],\n right: ['EO Center Lower Depth R'],\n center: [],\n },\n 93: {\n left: ['EO Center Lower Height L'],\n right: ['EO Center Lower Height R'],\n center: [],\n },\n 94: {\n left: ['EO Inner Upper Depth L'],\n right: ['EO Inner Upper Depth R'],\n center: [],\n },\n 95: {\n left: ['EO Inner Upper Height L'],\n right: ['EO Inner Upper Height R'],\n center: [],\n },\n 96: {\n left: ['EO Inner Lower Depth L'],\n right: ['EO Inner Lower Depth R'],\n center: [],\n },\n 97: {\n left: ['EO Inner Lower Height L'],\n right: ['EO Inner Lower Height R'],\n center: [],\n },\n 98: {\n left: ['EO Outer Upper Depth L'],\n right: ['EO Outer Upper Depth R'],\n center: [],\n },\n 99: {\n left: ['EO Outer Upper Height L'],\n right: ['EO Outer Upper Height R'],\n center: [],\n },\n 100: {\n left: ['EO Outer Lower Depth L'],\n right: ['EO Outer Lower Depth R'],\n center: [],\n },\n 101: {\n left: ['EO Outer Lower Height L'],\n right: ['EO Outer Lower Height R'],\n center: [],\n },\n 102: {\n left: ['EO Duct Depth L'],\n right: ['EO Duct Depth R'],\n center: [],\n },\n};\n\n// ============================================================================\n// BONE NODE NAMES - CC4-specific skeleton hierarchy\n// ============================================================================\n\n/** Bone name prefix used by semantic CC4 profile metadata. */\nexport const CC4_BONE_PREFIX = 'CC_Base_';\n\n/**\n * Suffix pattern regex for fuzzy bone matching.\n * Matches numbered suffixes like _01, _038 (common in Sketchfab exports)\n * and .001, .002 (common in Blender exports).\n */\nexport const CC4_SUFFIX_PATTERN = '_\\\\d+$|\\\\.\\\\d+$';\n\n/** Actual CC4 skeleton node names used by the stock preset. */\nexport const CC4_BONES = {\n EYE_L: 'CC_Base_L_Eye',\n EYE_R: 'CC_Base_R_Eye',\n HEAD: 'CC_Base_Head',\n NECK: 'CC_Base_NeckTwist01',\n NECK_TWIST: 'CC_Base_NeckTwist02',\n JAW: 'CC_Base_JawRoot',\n TONGUE: 'CC_Base_Tongue01',\n SPINE_01: 'CC_Base_Spine01',\n SPINE_02: 'CC_Base_Spine02',\n CLAVICLE_L: 'CC_Base_L_Clavicle',\n CLAVICLE_R: 'CC_Base_R_Clavicle',\n HAND_L: 'CC_Base_L_Hand',\n HAND_R: 'CC_Base_R_Hand',\n FOOT_L: 'CC_Base_L_Foot',\n FOOT_R: 'CC_Base_R_Foot',\n TOEBASE_L: 'CC_Base_L_ToeBase',\n TOEBASE_R: 'CC_Base_R_ToeBase',\n} as const;\n\n/**\n * Semantic bone keys used by profile metadata and annotation regions. Runtime\n * AU/composite bindings may still use concrete CC4 node names directly.\n */\nexport const CC4_BONE_NODES = {\n EYE_L: 'L_Eye',\n EYE_R: 'R_Eye',\n HEAD: 'Head',\n NECK: 'NeckTwist01',\n NECK_TWIST: 'NeckTwist02',\n JAW: 'JawRoot',\n TONGUE: 'Tongue01',\n SPINE_01: 'Spine01',\n SPINE_02: 'Spine02',\n CLAVICLE_L: 'L_Clavicle',\n CLAVICLE_R: 'R_Clavicle',\n HAND_L: 'L_Hand',\n HAND_R: 'R_Hand',\n FOOT_L: 'L_Foot',\n FOOT_R: 'R_Foot',\n TOEBASE_L: 'L_ToeBase',\n TOEBASE_R: 'R_ToeBase',\n // Concrete-name aliases keep existing runtime callers compatible.\n [CC4_BONES.EYE_L]: CC4_BONES.EYE_L,\n [CC4_BONES.EYE_R]: CC4_BONES.EYE_R,\n [CC4_BONES.HEAD]: CC4_BONES.HEAD,\n [CC4_BONES.NECK]: CC4_BONES.NECK,\n [CC4_BONES.NECK_TWIST]: CC4_BONES.NECK_TWIST,\n [CC4_BONES.JAW]: CC4_BONES.JAW,\n [CC4_BONES.TONGUE]: CC4_BONES.TONGUE,\n [CC4_BONES.SPINE_01]: CC4_BONES.SPINE_01,\n [CC4_BONES.SPINE_02]: CC4_BONES.SPINE_02,\n [CC4_BONES.CLAVICLE_L]: CC4_BONES.CLAVICLE_L,\n [CC4_BONES.CLAVICLE_R]: CC4_BONES.CLAVICLE_R,\n [CC4_BONES.HAND_L]: CC4_BONES.HAND_L,\n [CC4_BONES.HAND_R]: CC4_BONES.HAND_R,\n [CC4_BONES.FOOT_L]: CC4_BONES.FOOT_L,\n [CC4_BONES.FOOT_R]: CC4_BONES.FOOT_R,\n [CC4_BONES.TOEBASE_L]: CC4_BONES.TOEBASE_L,\n [CC4_BONES.TOEBASE_R]: CC4_BONES.TOEBASE_R,\n} as const;\n\n// ============================================================================\n// AU TO BONES - Maps AU IDs to bone bindings (CC4 head/eye/jaw/tongue)\n// ============================================================================\n\nexport const BONE_AU_TO_BINDINGS: Record<number, BoneBinding[]> = {\n // Jaw open/close (jaw drop)\n 25: [{ node: CC4_BONES.JAW, channel: 'rz', scale: 1, maxDegrees: 20 }],\n 26: [{ node: CC4_BONES.JAW, channel: 'rz', scale: 1, maxDegrees: 30 }],\n 27: [{ node: CC4_BONES.JAW, channel: 'rz', scale: 1, maxDegrees: 35 }],\n\n // Jaw lateral (left/right)\n 30: [{ node: CC4_BONES.JAW, channel: 'ry', scale: -1, maxDegrees: 15 }],\n 35: [{ node: CC4_BONES.JAW, channel: 'ry', scale: 1, maxDegrees: 15 }],\n\n // Head yaw (turn left/right)\n // AU 51 = Turn Left: positive ry rotation (scale: 1)\n // AU 52 = Turn Right: negative ry rotation (scale: -1)\n 51: [{ node: CC4_BONES.HEAD, channel: 'ry', scale: 1, maxDegrees: 60 }],\n 52: [{ node: CC4_BONES.HEAD, channel: 'ry', scale: -1, maxDegrees: 60 }],\n\n // Head pitch (up/down)\n // AU 53 = Head Up: negative rx rotation (scale: -1)\n // AU 54 = Head Down: positive rx rotation (scale: 1)\n 53: [{ node: CC4_BONES.HEAD, channel: 'rx', scale: -1, maxDegrees: 30 }],\n 54: [{ node: CC4_BONES.HEAD, channel: 'rx', scale: 1, maxDegrees: 30 }],\n\n // Head roll (tilt)\n 55: [{ node: CC4_BONES.HEAD, channel: 'rz', scale: -1, maxDegrees: 25 }],\n 56: [{ node: CC4_BONES.HEAD, channel: 'rz', scale: 1, maxDegrees: 25 }],\n\n // Eyes horizontal (left/right) - CC4 uses rz for yaw\n // AU 61 = Eyes Turn Left = character looks toward THEIR left = viewer's RIGHT\n // AU 62 = Eyes Turn Right = character looks toward THEIR right = viewer's LEFT\n // For CC4 rigs: positive rz = eyes rotate left (look right), negative rz = eyes rotate right (look left)\n 61: [\n { node: CC4_BONES.EYE_L, channel: 'rz', scale: 1, maxDegrees: 25, side: 'left' },\n { node: CC4_BONES.EYE_R, channel: 'rz', scale: 1, maxDegrees: 25, side: 'right' },\n ],\n 62: [\n { node: CC4_BONES.EYE_L, channel: 'rz', scale: -1, maxDegrees: 25, side: 'left' },\n { node: CC4_BONES.EYE_R, channel: 'rz', scale: -1, maxDegrees: 25, side: 'right' },\n ],\n\n // Eyes vertical (up/down) - rx\n // AU 63 = Eyes Up = character looks up\n // AU 64 = Eyes Down = character looks down\n // For CC4 rigs: negative rx = eyes rotate up, positive rx = eyes rotate down\n 63: [\n { node: CC4_BONES.EYE_L, channel: 'rx', scale: -1, maxDegrees: 20, side: 'left' },\n { node: CC4_BONES.EYE_R, channel: 'rx', scale: -1, maxDegrees: 20, side: 'right' },\n ],\n 64: [\n { node: CC4_BONES.EYE_L, channel: 'rx', scale: 1, maxDegrees: 20, side: 'left' },\n { node: CC4_BONES.EYE_R, channel: 'rx', scale: 1, maxDegrees: 20, side: 'right' },\n ],\n 65: [{ node: CC4_BONES.EYE_L, channel: 'rz', scale: 1, maxDegrees: 25, side: 'left' }],\n 66: [{ node: CC4_BONES.EYE_L, channel: 'rz', scale: -1, maxDegrees: 25, side: 'left' }],\n 67: [{ node: CC4_BONES.EYE_L, channel: 'rx', scale: -1, maxDegrees: 20, side: 'left' }],\n 68: [{ node: CC4_BONES.EYE_L, channel: 'rx', scale: 1, maxDegrees: 20, side: 'left' }],\n 69: [{ node: CC4_BONES.EYE_R, channel: 'rz', scale: 1, maxDegrees: 25, side: 'right' }],\n 70: [{ node: CC4_BONES.EYE_R, channel: 'rz', scale: -1, maxDegrees: 25, side: 'right' }],\n 71: [{ node: CC4_BONES.EYE_R, channel: 'rx', scale: -1, maxDegrees: 20, side: 'right' }],\n 72: [{ node: CC4_BONES.EYE_R, channel: 'rx', scale: 1, maxDegrees: 20, side: 'right' }],\n\n // Tongue controls (optional, for rigs that expose them)\n 37: [{ node: CC4_BONES.TONGUE, channel: 'rz', scale: 1, maxDegrees: 20 }],\n 38: [{ node: CC4_BONES.TONGUE, channel: 'rz', scale: -1, maxDegrees: 20 }],\n 39: [{ node: CC4_BONES.TONGUE, channel: 'ry', scale: -1, maxDegrees: 20 }],\n 40: [{ node: CC4_BONES.TONGUE, channel: 'ry', scale: 1, maxDegrees: 20 }],\n 41: [{ node: CC4_BONES.TONGUE, channel: 'rx', scale: -1, maxDegrees: 20 }],\n 42: [{ node: CC4_BONES.TONGUE, channel: 'rx', scale: 1, maxDegrees: 20 }],\n\n};\n\n// ============================================================================\n// LIP-SYNC SUPPORT CONTROL BINDINGS\n// ============================================================================\n\n/**\n * Lip-sync support controls are not FACS AUs. They are semantic controls emitted\n * by speech planning when the runtime needs articulation support that should not\n * activate a visible FACS morph. Control 103 opens the jaw bone for speech while\n * leaving AU 26's Jaw_Open morph untouched.\n *\n * This is kept as a separate preset object so the data model does not pretend\n * lip-sync support controls are ordinary AUs. `CC4_PROFILE_BONE_BINDINGS` folds\n * it into the legacy `Profile.auToBones` field until Embody has the canonical\n * control/binding model tracked in meekmachine/embody#30.\n */\nexport const LIP_SYNC_CONTROL_TO_BINDINGS: Record<number, BoneBinding[]> = {\n 103: [{ node: CC4_BONES.JAW, channel: 'rz', scale: 1, maxDegrees: 30 }],\n};\n\n/** Legacy compatibility map consumed by the current runtime profile shape. */\nexport const CC4_PROFILE_BONE_BINDINGS: Record<number, BoneBinding[]> = {\n ...BONE_AU_TO_BINDINGS,\n ...LIP_SYNC_CONTROL_TO_BINDINGS,\n};\n\n// ============================================================================\n// VISEME KEYS - CC4 1:1 Direct viseme morph targets (15)\n// ============================================================================\n\nexport const VISEME_KEYS: string[] = [\n 'AE',\n 'Ah',\n 'B_M_P',\n 'Ch_J',\n 'EE',\n 'Er',\n 'F_V',\n 'Ih',\n 'K_G_H_NG',\n 'Oh',\n 'R',\n 'S_Z',\n 'T_L_D_N',\n 'Th',\n 'W_OO',\n];\n\n/**\n * Jaw opening amounts for each viseme index (0-14).\n * Values are 0-1 representing how much the jaw should open.\n * Used by snippetToClip when autoVisemeJaw is enabled.\n */\nexport const VISEME_JAW_AMOUNTS: number[] = [\n 0.75, // 0: AE\n 0.80, // 1: Ah\n 0.00, // 2: B_M_P\n 0.30, // 3: Ch_J\n 0.20, // 4: EE\n 0.35, // 5: Er\n 0.10, // 6: F_V\n 0.20, // 7: Ih\n 0.35, // 8: K_G_H_NG\n 0.60, // 9: Oh\n 0.35, // 10: R\n 0.10, // 11: S_Z\n 0.30, // 12: T_L_D_N\n 0.15, // 13: Th\n 0.50, // 14: W_OO\n];\n\nexport const CC4_VISEME_SYSTEM_ID = 'cc4-arkit-15';\n\nexport const CC4_VISEME_SLOTS: VisemeSlot[] = [\n {\n id: 'ae',\n label: 'AE',\n order: 0,\n providerIds: { azure: [4], sapi: [4] },\n phonemes: ['AE', 'EH', 'EY', 'UH'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(ae|eh|ey)([_ .-]|$)'],\n features: { jawOpen: 0.75, lipSpread: 0.35 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[0],\n },\n {\n id: 'ah',\n label: 'Ah',\n order: 1,\n providerIds: { azure: [1, 2, 9, 11, 12], sapi: [1, 2, 9, 11, 12] },\n phonemes: ['AA', 'AE', 'AH', 'AX', 'AW', 'AY', 'HH'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(ah|aa|aah|open)([_ .-]|$)'],\n features: { jawOpen: 0.8 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[1],\n },\n {\n id: 'b-m-p',\n label: 'B_M_P',\n order: 2,\n providerIds: { azure: [0, 21], sapi: [0, 21] },\n phonemes: ['B', 'M', 'P'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(b[_ .-]?m[_ .-]?p|bmp|closed|sil|rest)([_ .-]|$)'],\n features: { jawOpen: 0, lipClosed: 1 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[2],\n },\n {\n id: 'ch-j',\n label: 'Ch_J',\n order: 3,\n providerIds: { azure: [16], sapi: [16] },\n phonemes: ['CH', 'JH', 'SH', 'ZH'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(ch|j|sh|zh)([_ .-]|$)'],\n features: { jawOpen: 0.3, fricative: 0.6 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[3],\n },\n {\n id: 'ee',\n label: 'EE',\n order: 4,\n providerIds: { azure: [6], sapi: [6] },\n phonemes: ['IY', 'IH', 'IX', 'Y'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(ee|iy|y)([_ .-]|$)'],\n features: { jawOpen: 0.2, lipSpread: 0.8 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[4],\n },\n {\n id: 'er',\n label: 'Er',\n order: 5,\n providerIds: { azure: [5], sapi: [5] },\n phonemes: ['ER'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(er)([_ .-]|$)'],\n features: { jawOpen: 0.35, lipRound: 0.35 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[5],\n },\n {\n id: 'f-v',\n label: 'F_V',\n order: 6,\n providerIds: { azure: [18], sapi: [18] },\n phonemes: ['F', 'V'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(f[_ .-]?v|fv)([_ .-]|$)'],\n features: { jawOpen: 0.1, fricative: 1 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[6],\n },\n {\n id: 'ih',\n label: 'Ih',\n order: 7,\n providerIds: { azure: [6], sapi: [6] },\n phonemes: ['IH', 'IX'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(ih|ix)([_ .-]|$)'],\n features: { jawOpen: 0.2, lipSpread: 0.55 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[7],\n },\n {\n id: 'k-g-h-ng',\n label: 'K_G_H_NG',\n order: 8,\n providerIds: { azure: [20], sapi: [20] },\n phonemes: ['K', 'G', 'NG'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(k[_ .-]?g[_ .-]?h?[_ .-]?ng|kg|ng)([_ .-]|$)'],\n features: { jawOpen: 0.35 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[8],\n },\n {\n id: 'oh',\n label: 'Oh',\n order: 9,\n providerIds: { azure: [3, 8, 10], sapi: [3, 8, 10] },\n phonemes: ['AO', 'OW', 'OY'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(oh|ao|ow|oy)([_ .-]|$)'],\n features: { jawOpen: 0.6, lipRound: 0.8 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[9],\n },\n {\n id: 'r',\n label: 'R',\n order: 10,\n providerIds: { azure: [13], sapi: [13] },\n phonemes: ['R'],\n matchers: ['(^|[_ .-])(v|viseme)[_ .-]?r([_ .-]|$)', '(^|[_ .-])r[_ .-]?(sound|viseme)([_ .-]|$)'],\n features: { jawOpen: 0.35, lipRound: 0.5 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[10],\n },\n {\n id: 's-z',\n label: 'S_Z',\n order: 11,\n providerIds: { azure: [15], sapi: [15] },\n phonemes: ['S', 'Z'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(s[_ .-]?z|sz)([_ .-]|$)'],\n features: { jawOpen: 0.1, fricative: 1 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[11],\n },\n {\n id: 't-l-d-n',\n label: 'T_L_D_N',\n order: 12,\n providerIds: { azure: [14, 19], sapi: [14, 19] },\n phonemes: ['T', 'L', 'D', 'N'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(t[_ .-]?l[_ .-]?d[_ .-]?n|tldn)([_ .-]|$)', '(^|[_ .-])(v|viseme)[_ .-]?l([_ .-]|$)'],\n features: { jawOpen: 0.3, tongueTip: 1 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[12],\n },\n {\n id: 'th',\n label: 'Th',\n order: 13,\n providerIds: { azure: [17], sapi: [17] },\n phonemes: ['TH', 'DH'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(th|dh)([_ .-]|$)'],\n features: { jawOpen: 0.15, tongueTip: 0.8, fricative: 0.8 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[13],\n },\n {\n id: 'w-oo',\n label: 'W_OO',\n order: 14,\n providerIds: { azure: [7], sapi: [7] },\n phonemes: ['W', 'UW'],\n matchers: ['(^|[_ .-])(v|viseme)?[_ .-]?(w[_ .-]?oo|woo|uw|oo)([_ .-]|$)'],\n features: { jawOpen: 0.5, lipRound: 1 },\n defaultJawAmount: VISEME_JAW_AMOUNTS[14],\n },\n];\n\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\n/** Check if an AU has both morphs and bones (can blend between them) */\nexport const isMixedAU = (id: number): boolean => {\n const morphs = AU_TO_MORPHS[id];\n const hasMorphs = !!(morphs?.left?.length || morphs?.right?.length || morphs?.center?.length);\n return !!(hasMorphs && BONE_AU_TO_BINDINGS[id]?.length);\n};\n\n/** Check if an AU has separate left/right morphs */\nexport const hasLeftRightMorphs = (auId: number): boolean => {\n const morphs = AU_TO_MORPHS[auId];\n return !!(morphs?.left?.length && morphs?.right?.length);\n};\n\n/** Check if an AU has bilateral bone bindings (L and R nodes) in CC4 preset */\nexport const hasLeftRightBones = (auId: number): boolean => {\n const bindings = BONE_AU_TO_BINDINGS[auId];\n return checkBindingsForLeftRight(bindings);\n};\n\n/** Helper to check if bone bindings have L and R nodes */\nexport const checkBindingsForLeftRight = (bindings: BoneBinding[] | undefined): boolean => {\n if (!bindings || bindings.length === 0) return false;\n\n // Check if bindings include both L and R nodes\n const nodes = bindings.map(b => b.node);\n // Match patterns like _L, _R, _L_, _R_, GILL_L, GILL_R, etc.\n const hasLeft = nodes.some(n => /_L$|_L_|GILL_L|_L\\d/i.test(n));\n const hasRight = nodes.some(n => /_R$|_R_|GILL_R|_R\\d/i.test(n));\n\n return hasLeft && hasRight;\n};\n\n// ============================================================================\n// COMPOSITE ROTATIONS - Unified rotation control for bones\n// ============================================================================\n\nexport const COMPOSITE_ROTATIONS: CompositeRotation[] = [\n {\n node: CC4_BONES.JAW,\n pitch: { aus: [25, 26, 27, 103], axis: 'rz' }, // Jaw drop plus speech jaw pseudo-control\n yaw: { aus: [30, 35], axis: 'ry', negative: 30, positive: 35 }, // Jaw lateral (left/right)\n roll: null // Jaw doesn't have roll\n },\n {\n node: CC4_BONES.HEAD,\n pitch: { aus: [54, 53], axis: 'rx', negative: 54, positive: 53 }, // Head down/up\n yaw: { aus: [51, 52], axis: 'ry', negative: 51, positive: 52 }, // Head turn left/right\n roll: { aus: [55, 56], axis: 'rz', negative: 55, positive: 56 } // Head tilt left/right\n },\n {\n node: CC4_BONES.EYE_L,\n pitch: { aus: [64, 63, 68, 67], axis: 'rx', negative: [64, 68], positive: [63, 67] }, // Eyes down/up\n yaw: { aus: [61, 62, 65, 66], axis: 'rz', negative: [61, 65], positive: [62, 66] }, // Eyes left/right (rz for CC4)\n roll: null // Eyes don't have roll\n },\n {\n node: CC4_BONES.EYE_R,\n pitch: { aus: [64, 63, 72, 71], axis: 'rx', negative: [64, 72], positive: [63, 71] }, // Eyes down/up\n yaw: { aus: [61, 62, 69, 70], axis: 'rz', negative: [61, 69], positive: [62, 70] }, // Eyes left/right (rz for CC4)\n roll: null // Eyes don't have roll\n },\n {\n node: CC4_BONES.TONGUE,\n pitch: { aus: [38, 37], axis: 'rz', negative: 38, positive: 37 }, // Tongue down/up\n yaw: { aus: [39, 40], axis: 'ry', negative: 39, positive: 40 }, // Tongue left/right\n roll: { aus: [41, 42], axis: 'rx', negative: 41, positive: 42 } // Tongue tilt left/right\n }\n];\n\n// ============================================================================\n// CONTINUUM PAIRS - Bidirectional AU pair mappings\n// ============================================================================\n\n/**\n * Continuum pair mappings - precomputed from COMPOSITE_ROTATIONS\n * Maps AU ID to its continuum partner info for bidirectional axes\n * (e.g., AU 51 \"Head Left\" is paired with AU 52 \"Head Right\")\n */\nexport const CONTINUUM_PAIRS_MAP: Record<number, {\n pairId: number;\n isNegative: boolean;\n axis: 'pitch' | 'yaw' | 'roll';\n node: string;\n}> = {\n // Eyes horizontal - both eyes share same AUs (yaw maps to rz via COMPOSITE_ROTATIONS)\n 61: { pairId: 62, isNegative: true, axis: 'yaw', node: CC4_BONES.EYE_L },\n 62: { pairId: 61, isNegative: false, axis: 'yaw', node: CC4_BONES.EYE_L },\n 65: { pairId: 66, isNegative: true, axis: 'yaw', node: CC4_BONES.EYE_L },\n 66: { pairId: 65, isNegative: false, axis: 'yaw', node: CC4_BONES.EYE_L },\n 69: { pairId: 70, isNegative: true, axis: 'yaw', node: CC4_BONES.EYE_R },\n 70: { pairId: 69, isNegative: false, axis: 'yaw', node: CC4_BONES.EYE_R },\n // Eyes vertical (pitch)\n 64: { pairId: 63, isNegative: true, axis: 'pitch', node: CC4_BONES.EYE_L },\n 63: { pairId: 64, isNegative: false, axis: 'pitch', node: CC4_BONES.EYE_L },\n 68: { pairId: 67, isNegative: true, axis: 'pitch', node: CC4_BONES.EYE_L },\n 67: { pairId: 68, isNegative: false, axis: 'pitch', node: CC4_BONES.EYE_L },\n 72: { pairId: 71, isNegative: true, axis: 'pitch', node: CC4_BONES.EYE_R },\n 71: { pairId: 72, isNegative: false, axis: 'pitch', node: CC4_BONES.EYE_R },\n // Head yaw (turn left/right)\n 51: { pairId: 52, isNegative: true, axis: 'yaw', node: CC4_BONES.HEAD },\n 52: { pairId: 51, isNegative: false, axis: 'yaw', node: CC4_BONES.HEAD },\n // Head pitch (up/down)\n 54: { pairId: 53, isNegative: true, axis: 'pitch', node: CC4_BONES.HEAD },\n 53: { pairId: 54, isNegative: false, axis: 'pitch', node: CC4_BONES.HEAD },\n // Head roll (tilt left/right)\n 55: { pairId: 56, isNegative: true, axis: 'roll', node: CC4_BONES.HEAD },\n 56: { pairId: 55, isNegative: false, axis: 'roll', node: CC4_BONES.HEAD },\n // Jaw yaw (left/right)\n 30: { pairId: 35, isNegative: true, axis: 'yaw', node: CC4_BONES.JAW },\n 35: { pairId: 30, isNegative: false, axis: 'yaw', node: CC4_BONES.JAW },\n // Tongue yaw (left/right)\n 39: { pairId: 40, isNegative: true, axis: 'yaw', node: CC4_BONES.TONGUE },\n 40: { pairId: 39, isNegative: false, axis: 'yaw', node: CC4_BONES.TONGUE },\n // Tongue pitch (up/down)\n 38: { pairId: 37, isNegative: true, axis: 'pitch', node: CC4_BONES.TONGUE },\n 37: { pairId: 38, isNegative: false, axis: 'pitch', node: CC4_BONES.TONGUE },\n // Tongue roll (tilt left/right)\n 41: { pairId: 42, isNegative: true, axis: 'roll', node: CC4_BONES.TONGUE },\n 42: { pairId: 41, isNegative: false, axis: 'roll', node: CC4_BONES.TONGUE },\n // Extended tongue morphs (continuum pairs)\n 73: { pairId: 74, isNegative: true, axis: 'yaw', node: CC4_BONES.TONGUE }, // Tongue Narrow/Wide\n 74: { pairId: 73, isNegative: false, axis: 'yaw', node: CC4_BONES.TONGUE },\n 76: { pairId: 77, isNegative: false, axis: 'pitch', node: CC4_BONES.TONGUE }, // Tongue Tip Up/Down\n 77: { pairId: 76, isNegative: true, axis: 'pitch', node: CC4_BONES.TONGUE },\n};\n\n/**\n * Human-readable labels for continuum pairs\n * Key format: \"negativeAU-positiveAU\"\n * Used by UI components (ContinuumSlider, AUSection) to display friendly axis names\n */\nexport const CONTINUUM_LABELS: Record<string, string> = {\n '61-62': 'Eyes — Horizontal',\n '64-63': 'Eyes — Vertical',\n '65-66': 'Left Eye — Horizontal',\n '68-67': 'Left Eye — Vertical',\n '69-70': 'Right Eye — Horizontal',\n '72-71': 'Right Eye — Vertical',\n '51-52': 'Head — Horizontal',\n '54-53': 'Head — Vertical',\n '55-56': 'Head — Tilt',\n '30-35': 'Jaw — Horizontal',\n '38-37': 'Tongue — Vertical',\n '39-40': 'Tongue — Horizontal',\n '41-42': 'Tongue — Tilt',\n '73-74': 'Tongue — Width',\n '76-77': 'Tongue Tip — Vertical',\n};\n\nexport const CC4_EYE_MESH_NODES = {\n LEFT: 'CC_Base_Eye',\n RIGHT: 'CC_Base_Eye_1'\n} as const;\n\n// ============================================================================\n// AU INFO - Metadata for each Action Unit\n// ============================================================================\n\nexport const AU_INFO: Record<string, AUInfo> = {\n // Forehead / Brow (Upper)\n '1': { id:'1', name:'Inner Brow Raiser', muscularBasis:'frontalis (pars medialis)', links:['https://en.wikipedia.org/wiki/Frontalis_muscle'], faceArea:'Upper', facePart:'Forehead' },\n '2': { id:'2', name:'Outer Brow Raiser', muscularBasis:'frontalis (pars lateralis)', links:['https://en.wikipedia.org/wiki/Frontalis_muscle'], faceArea:'Upper', facePart:'Forehead' },\n '4': { id:'4', name:'Brow Lowerer', muscularBasis:'corrugator/depressor supercilii', links:['https://en.wikipedia.org/wiki/Corrugator_supercilii'], faceArea:'Upper', facePart:'Forehead' },\n\n // Eyelids / Eyes (Upper)\n '5': { id:'5', name:'Upper Lid Raiser', muscularBasis:'levator palpebrae superioris', links:['https://en.wikipedia.org/wiki/Levator_palpebrae_superioris'], faceArea:'Upper', facePart:'Eyelids' },\n '6': { id:'6', name:'Cheek Raiser', muscularBasis:'orbicularis oculi (pars orbitalis)', links:['https://en.wikipedia.org/wiki/Orbicularis_oculi'], faceArea:'Upper', facePart:'Cheeks' },\n '7': { id:'7', name:'Lid Tightener', muscularBasis:'orbicularis oculi (pars palpebralis)', links:['https://en.wikipedia.org/wiki/Orbicularis_oculi'], faceArea:'Upper', facePart:'Eyelids' },\n '43': { id:'43', name:'Eyes Closed', muscularBasis:'orbicularis oculi', links:['https://en.wikipedia.org/wiki/Orbicularis_oculi_muscle'], faceArea:'Upper', facePart:'Eyelids' },\n '45': { id:'45', name:'Blink', muscularBasis:'orbicularis oculi', links:['https://en.wikipedia.org/wiki/Orbicularis_oculi_muscle'], faceArea:'Upper', facePart:'Eyelids' },\n '61': { id:'61', name:'Eyes Turn Left', faceArea:'Upper', facePart:'Eyes' },\n '62': { id:'62', name:'Eyes Turn Right', faceArea:'Upper', facePart:'Eyes' },\n '63': { id:'63', name:'Eyes Up', faceArea:'Upper', facePart:'Eyes' },\n '64': { id:'64', name:'Eyes Down', faceArea:'Upper', facePart:'Eyes' },\n '65': { id:'65', name:'Left Eye Look Left', faceArea:'Upper', facePart:'Eyes' },\n '66': { id:'66', name:'Left Eye Look Right', faceArea:'Upper', facePart:'Eyes' },\n '67': { id:'67', name:'Left Eye Look Up', faceArea:'Upper', facePart:'Eyes' },\n '68': { id:'68', name:'Left Eye Look Down', faceArea:'Upper', facePart:'Eyes' },\n '69': { id:'69', name:'Right Eye Look Left', faceArea:'Upper', facePart:'Eyes' },\n '70': { id:'70', name:'Right Eye Look Right',faceArea:'Upper', facePart:'Eyes' },\n '71': { id:'71', name:'Right Eye Look Up', faceArea:'Upper', facePart:'Eyes' },\n '72': { id:'72', name:'Right Eye Look Down', faceArea:'Upper', facePart:'Eyes' },\n\n // Nose / Cheeks\n '9': { id:'9', name:'Nose Wrinkler', muscularBasis:'levator labii superioris alaeque nasi', links:['https://en.wikipedia.org/wiki/Levator_labii_superioris_alaeque_nasi'], faceArea:'Upper', facePart:'Nose' },\n '34': { id:'34', name:'Cheek Puff', faceArea:'Lower', facePart:'Cheeks' },\n\n // Mouth (Lower)\n '8': { id:'8', name:'Lips Toward Each Other', muscularBasis:'orbicularis oris', links:['https://en.wikipedia.org/wiki/Orbicularis_oris'], faceArea:'Lower', facePart:'Mouth' },\n '10': { id:'10', name:'Upper Lip Raiser', muscularBasis:'levator labii superioris', links:['https://en.wikipedia.org/wiki/Levator_labii_superioris'], faceArea:'Lower', facePart:'Mouth' },\n '11': { id:'11', name:'Nasolabial Deepener', muscularBasis:'zygomaticus minor', links:['https://en.wikipedia.org/wiki/Zygomaticus_minor'], faceArea:'Lower', facePart:'Cheeks' },\n '12': { id:'12', name:'Lip Corner Puller', muscularBasis:'zygomaticus major', links:['https://en.wikipedia.org/wiki/Zygomaticus_major'], faceArea:'Lower', facePart:'Mouth' },\n '13': { id:'13', name:'Sharp Lip Puller', muscularBasis:'levator anguli oris', links:['https://en.wikipedia.org/wiki/Levator_anguli_oris'], faceArea:'Lower', facePart:'Mouth' },\n '14': { id:'14', name:'Dimpler', muscularBasis:'buccinator', links:['https://en.wikipedia.org/wiki/Buccinator'], faceArea:'Lower', facePart:'Cheeks' },\n '15': { id:'15', name:'Lip Corner Depressor', muscularBasis:'depressor anguli oris', links:['https://en.wikipedia.org/wiki/Depressor_anguli_oris'], faceArea:'Lower', facePart:'Mouth' },\n '16': { id:'16', name:'Lower Lip Depressor', muscularBasis:'depressor labii inferioris', links:['https://en.wikipedia.org/wiki/Depressor_labii_inferioris'], faceArea:'Lower', facePart:'Mouth' },\n '17': { id:'17', name:'Chin Raiser', muscularBasis:'mentalis', links:['https://en.wikipedia.org/wiki/Mentalis'], faceArea:'Lower', facePart:'Chin' },\n '18': { id:'18', name:'Lip Pucker', faceArea:'Lower', facePart:'Mouth' },\n '20': { id:'20', name:'Lip Stretcher', muscularBasis:'risorius + platysma', links:['https://en.wikipedia.org/wiki/Risorius','https://en.wikipedia.org/wiki/Platysma'], faceArea:'Lower', facePart:'Mouth' },\n '22': { id:'22', name:'Lip Funneler', muscularBasis:'orbicularis oris', links:['https://en.wikipedia.org/wiki/Orbicularis_oris'], faceArea:'Lower', facePart:'Mouth' },\n '23': { id:'23', name:'Lip Tightener', muscularBasis:'orbicularis oris', faceArea:'Lower', facePart:'Mouth' },\n '24': { id:'24', name:'Lip Presser', muscularBasis:'orbicularis oris', faceArea:'Lower', facePart:'Mouth' },\n '25': { id:'25', name:'Lips Part', faceArea:'Lower', facePart:'Mouth' },\n '27': { id:'27', name:'Mouth Stretch', muscularBasis:'pterygoids + digastric', links:['https://en.wikipedia.org/wiki/Pterygoid_bone','https://en.wikipedia.org/wiki/Digastric_muscle'], faceArea:'Lower', facePart:'Mouth' },\n '28': { id:'28', name:'Lip Suck', muscularBasis:'orbicularis oris', faceArea:'Lower', facePart:'Mouth' },\n\n // Tongue (Lower)\n '19': { id:'19', name:'Tongue Show', faceArea:'Lower', facePart:'Tongue' },\n '36': { id:'36', name:'Tongue Bulge', faceArea:'Lower', facePart:'Tongue' },\n '37': { id:'37', name:'Tongue Up', faceArea:'Lower', facePart:'Tongue' },\n '38': { id:'38', name:'Tongue Down', faceArea:'Lower', facePart:'Tongue' },\n '39': { id:'39', name:'Tongue Left', faceArea:'Lower', facePart:'Tongue' },\n '40': { id:'40', name:'Tongue Right', faceArea:'Lower', facePart:'Tongue' },\n '41': { id:'41', name:'Tongue Tilt Left', faceArea:'Lower', facePart:'Tongue' },\n '42': { id:'42', name:'Tongue Tilt Right', faceArea:'Lower', facePart:'Tongue' },\n // Extended tongue controls (CC4-specific morphs)\n '73': { id:'73', name:'Tongue Narrow', faceArea:'Lower', facePart:'Tongue' },\n '74': { id:'74', name:'Tongue Wide', faceArea:'Lower', facePart:'Tongue' },\n '75': { id:'75', name:'Tongue Roll', faceArea:'Lower', facePart:'Tongue' },\n '76': { id:'76', name:'Tongue Tip Up', faceArea:'Lower', facePart:'Tongue' },\n '77': { id:'77', name:'Tongue Tip Down', faceArea:'Lower', facePart:'Tongue' },\n\n // Jaw (Lower)\n '26': { id:'26', name:'Jaw Drop', muscularBasis:'masseter (relax temporalis)', links:['https://en.wikipedia.org/wiki/Masseter_muscle'], faceArea:'Lower', facePart:'Jaw' },\n '29': { id:'29', name:'Jaw Thrust', faceArea:'Lower', facePart:'Jaw' },\n '30': { id:'30', name:'Jaw Left', faceArea:'Lower', facePart:'Jaw' },\n '31': { id:'31', name:'Jaw Clencher', muscularBasis:'masseter + temporalis', faceArea:'Lower', facePart:'Jaw' },\n '32': { id:'32', name:'Lip Bite', muscularBasis:'orbicularis oris', faceArea:'Lower', facePart:'Mouth' },\n '35': { id:'35', name:'Jaw Right', faceArea:'Lower', facePart:'Jaw' },\n\n // Head position (M51-M56 in FACS notation)\n '51': { id:'51', name:'Head Turn Left', faceArea:'Upper', facePart:'Head' },\n '52': { id:'52', name:'Head Turn Right', faceArea:'Upper', facePart:'Head' },\n '53': { id:'53', name:'Head Up', faceArea:'Upper', facePart:'Head' },\n '54': { id:'54', name:'Head Down', faceArea:'Upper', facePart:'Head' },\n '55': { id:'55', name:'Head Tilt Left', faceArea:'Upper', facePart:'Head' },\n '56': { id:'56', name:'Head Tilt Right', faceArea:'Upper', facePart:'Head' },\n\n // Eye (Upper) - EO morphs applied to CC_Base_Eye meshes\n '80': { id:'80', name:'Eye Bulge', faceArea:'Upper', facePart:'Eye' },\n '81': { id:'81', name:'Eye Depth', faceArea:'Upper', facePart:'Eye' },\n '82': { id:'82', name:'Eye Inner Depth', faceArea:'Upper', facePart:'Eye' },\n '83': { id:'83', name:'Eye Inner Height', faceArea:'Upper', facePart:'Eye' },\n '84': { id:'84', name:'Eye Inner Width', faceArea:'Upper', facePart:'Eye' },\n '85': { id:'85', name:'Eye Outer Depth', faceArea:'Upper', facePart:'Eye' },\n '86': { id:'86', name:'Eye Outer Height', faceArea:'Upper', facePart:'Eye' },\n '87': { id:'87', name:'Eye Outer Width', faceArea:'Upper', facePart:'Eye' },\n '88': { id:'88', name:'Eye Upper Depth', faceArea:'Upper', facePart:'Eye' },\n '89': { id:'89', name:'Eye Lower Depth', faceArea:'Upper', facePart:'Eye' },\n '90': { id:'90', name:'Eye Center Upper Depth', faceArea:'Upper', facePart:'Eye' },\n '91': { id:'91', name:'Eye Center Upper Height',faceArea:'Upper', facePart:'Eye' },\n '92': { id:'92', name:'Eye Center Lower Depth', faceArea:'Upper', facePart:'Eye' },\n '93': { id:'93', name:'Eye Center Lower Height',faceArea:'Upper', facePart:'Eye' },\n '94': { id:'94', name:'Eye Inner Upper Depth', faceArea:'Upper', facePart:'Eye' },\n '95': { id:'95', name:'Eye Inner Upper Height', faceArea:'Upper', facePart:'Eye' },\n '96': { id:'96', name:'Eye Inner Lower Depth', faceArea:'Upper', facePart:'Eye' },\n '97': { id:'97', name:'Eye Inner Lower Height', faceArea:'Upper', facePart:'Eye' },\n '98': { id:'98', name:'Eye Outer Upper Depth', faceArea:'Upper', facePart:'Eye' },\n '99': { id:'99', name:'Eye Outer Upper Height', faceArea:'Upper', facePart:'Eye' },\n '100': { id:'100', name:'Eye Outer Lower Depth', faceArea:'Upper', facePart:'Eye' },\n '101': { id:'101', name:'Eye Outer Lower Height',faceArea:'Upper', facePart:'Eye' },\n '102': { id:'102', name:'Eye Duct Depth', faceArea:'Upper', facePart:'Eye' },\n};\n\n// ============================================================================\n// MIX DEFAULTS - Morph/bone blend weights\n// ============================================================================\n\n/** Default mix weights (0 = morph only, 1 = bone only) */\nexport const AU_MIX_DEFAULTS: Record<number, number> = {\n 31: 0.7, 32: 0.7, 33: 0.7, 54: 0.7, 55: 0.7, 56: 0.7, // head\n 61: 0.5, 62: 0.5, 63: 0.5, 64: 0.5, // eyes\n 25: 0.5, 26: 0.5, 27: 0.5, // jaw open (lips part, jaw drop, mouth stretch)\n 30: 0.5, 35: 0.5, // jaw left/right\n};\n\n// ============================================================================\n// CC4 MESH CLASSIFICATION\n// Types imported from '../mappings/types'\n// ============================================================================\n\n/** Exact mesh name -> category mapping from the character GLB */\nexport const CC4_MESHES: Record<string, MeshInfo> = {\n // Body (6 meshes, 80 morphs each) - default render order 0\n 'CC_Base_Body_1': { category: 'body', morphCount: 80 },\n 'CC_Base_Body_2': { category: 'body', morphCount: 80 },\n 'CC_Base_Body_3': { category: 'body', morphCount: 80 },\n 'CC_Base_Body_4': { category: 'body', morphCount: 80 },\n 'CC_Base_Body_5': { category: 'body', morphCount: 80 },\n 'CC_Base_Body_6': { category: 'body', morphCount: 80 },\n // Eyes (bone-driven, no morphs) - render first (behind everything)\n 'CC_Base_Eye': { category: 'eye', morphCount: 0, material: { renderOrder: -10 } },\n 'CC_Base_Eye_1': { category: 'eye', morphCount: 0, material: { renderOrder: -10 } },\n 'CC_Base_Eye_2': { category: 'eye', morphCount: 0, material: { renderOrder: -10 } },\n 'CC_Base_Eye_3': { category: 'eye', morphCount: 0, material: { renderOrder: -10 } },\n 'CC_Base_Eye_4': { category: 'eye', morphCount: 0, material: { renderOrder: -10 } },\n // Eye occlusion (94 morphs each) - render on top of eyes with transparency support\n 'CC_Base_EyeOcclusion_1': { category: 'eyeOcclusion', morphCount: 94, material: { renderOrder: 2, transparent: true, opacity: 1, depthWrite: true, depthTest: true, blending: 'Normal' } },\n 'CC_Base_EyeOcclusion_2': { category: 'eyeOcclusion', morphCount: 94, material: { renderOrder: 2, transparent: true, opacity: 1, depthWrite: true, depthTest: true, blending: 'Normal' } },\n // Tear lines (90 morphs each) - on top of eyes/face\n 'CC_Base_TearLine_1': { category: 'tearLine', morphCount: 90, material: { renderOrder: 2 } },\n 'CC_Base_TearLine_2': { category: 'tearLine', morphCount: 90, material: { renderOrder: 2 } },\n // Cornea (no morphs) - render first with eyes\n 'CC_Base_Cornea': { category: 'cornea', morphCount: 0, material: { renderOrder: -10 } },\n 'CC_Base_Cornea_1': { category: 'cornea', morphCount: 0, material: { renderOrder: -10 } },\n // Teeth (no morphs, follow jaw bone) - default render order\n 'CC_Base_Teeth_1': { category: 'teeth', morphCount: 0 },\n 'CC_Base_Teeth_2': { category: 'teeth', morphCount: 0 },\n // Tongue (23 morphs) - default render order\n 'CC_Base_Tongue': { category: 'tongue', morphCount: 23 },\n // Eyebrows (91 morphs each) - above face\n 'Male_Bushy_1': { category: 'eyebrow', morphCount: 91, material: { renderOrder: 5 } },\n 'Male_Bushy_2': { category: 'eyebrow', morphCount: 91, material: { renderOrder: 5 } },\n // Hair (14 styling morphs each) - render last (on top of everything)\n 'Side_part_wavy_1': { category: 'hair', morphCount: 14, material: { renderOrder: 10 } },\n 'Side_part_wavy_2': { category: 'hair', morphCount: 14, material: { renderOrder: 10 } },\n};\n\n// ============================================================================\n// MORPH TO MESH MAPPING\n// MorphCategory type imported from '../mappings/types'\n// ============================================================================\n\n/** Which mesh each morph category applies to */\nexport const MORPH_TO_MESH: Record<MorphCategory, string[]> = {\n // Face/AU morphs target the main body mesh only.\n // Include both CC4 naming variants (with and without _1/_2 suffixes).\n face: ['CC_Base_Body'],\n viseme: ['CC_Base_Body', 'CC_Base_Body_1'],\n eye: ['CC_Base_EyeOcclusion', 'CC_Base_EyeOcclusion_1', 'CC_Base_EyeOcclusion_2'],\n tongue: ['CC_Base_Tongue', 'CC_Base_Tongue_1'],\n hair: ['Side_part_wavy', 'Side_part_wavy_1', 'Side_part_wavy_2'],\n};\n\n/** Map AU facePart labels to morphToMesh categories for configurable AU mesh routing. */\nexport const AU_FACEPART_TO_MESH_CATEGORY: Record<string, MorphCategory> = {\n Eye: 'eye',\n Eyes: 'eye',\n Eyelids: 'eye',\n Tongue: 'tongue',\n};\n\nexport const CC4_MAPPING_SECTIONS: MappingEditorSection[] = [\n { id: 'Forehead', label: 'Forehead', kind: 'au', order: 0, meshCategory: 'face', facePart: 'Forehead' },\n { id: 'Eyelids', label: 'Eyelids', kind: 'au', order: 1, meshCategory: 'eye', facePart: 'Eyelids' },\n { id: 'Eyes', label: 'Eyes', kind: 'au', order: 2, meshCategory: 'eye', facePart: 'Eyes' },\n { id: 'Cheeks', label: 'Cheeks', kind: 'au', order: 3, meshCategory: 'face', facePart: 'Cheeks' },\n { id: 'Nose', label: 'Nose', kind: 'au', order: 4, meshCategory: 'face', facePart: 'Nose' },\n { id: 'Mouth', label: 'Mouth', kind: 'au', order: 5, meshCategory: 'face', facePart: 'Mouth' },\n { id: 'Chin', label: 'Chin', kind: 'au', order: 6, meshCategory: 'face', facePart: 'Chin' },\n { id: 'Jaw', label: 'Jaw', kind: 'au', order: 7, meshCategory: 'face', facePart: 'Jaw' },\n { id: 'Tongue', label: 'Tongue', kind: 'au', order: 8, meshCategory: 'tongue', facePart: 'Tongue' },\n { id: 'Head', label: 'Head', kind: 'au', order: 9, meshCategory: 'face', facePart: 'Head' },\n { id: 'Joint Controls', label: 'Joint Controls', kind: 'au', order: 10, meshCategory: 'face', facePart: 'Joint Controls' },\n { id: 'Eye', label: 'Eye', kind: 'au', order: 11, meshCategory: 'eye', facePart: 'Eye' },\n { id: 'Hair', label: 'Hair', kind: 'hair', order: 12, meshCategory: 'hair' },\n { id: 'Visemes', label: 'Visemes', kind: 'viseme', order: 13, meshCategory: 'viseme' },\n { id: 'LipSync', label: 'Lip Sync', kind: 'lipSync', order: 14, meshCategory: 'face' },\n { id: 'Unmapped', label: 'Unmapped', kind: 'unmapped', order: 15, meshCategory: 'face' },\n];\n\n// ============================================================================\n// HAIR PHYSICS DEFAULTS\n// ============================================================================\n\nexport const CC4_HAIR_PHYSICS: Profile['hairPhysics'] = {\n stiffness: 7.5,\n damping: 0.18,\n inertia: 3.5,\n gravity: 12,\n responseScale: 2.5,\n idleSwayAmount: 0.12,\n idleSwaySpeed: 1.0,\n windStrength: 0,\n windDirectionX: 1.0,\n windDirectionZ: 0,\n windTurbulence: 0.3,\n windFrequency: 1.4,\n idleClipDuration: 10,\n impulseClipDuration: 1.4,\n direction: {\n yawSign: -1,\n pitchSign: -1,\n },\n morphTargets: {\n swayLeft: { key: 'L_Hair_Left', axis: 'yaw' },\n swayRight: { key: 'L_Hair_Right', axis: 'yaw' },\n swayFront: { key: 'L_Hair_Front', axis: 'pitch' },\n fluffRight: { key: 'Fluffy_Right', axis: 'yaw' },\n fluffBottom: { key: 'Fluffy_Bottom_ALL', axis: 'pitch' },\n headUp: {\n Hairline_High_ALL: { value: 0.45, axis: 'pitch' },\n Length_Short: { value: 0.65, axis: 'pitch' },\n },\n headDown: {\n L_Hair_Front: { value: 2.0, axis: 'pitch' },\n Fluffy_Bottom_ALL: { value: 1.0, axis: 'pitch' },\n },\n },\n};\n\n// ============================================================================\n// CC4_PRESET - Main export for Profile\n// ============================================================================\n\nexport const CC4_PRESET: Profile = {\n name: 'Character Creator 4',\n animalType: 'human',\n // No emoji for humans - uses FaTheaterMasks icon instead\n auToMorphs: AU_TO_MORPHS,\n auToBones: CC4_PROFILE_BONE_BINDINGS,\n boneNodes: CC4_BONE_NODES,\n bonePrefix: CC4_BONE_PREFIX,\n suffixPattern: CC4_SUFFIX_PATTERN,\n morphToMesh: MORPH_TO_MESH,\n auFacePartToMeshCategory: AU_FACEPART_TO_MESH_CATEGORY,\n mappingSections: CC4_MAPPING_SECTIONS,\n visemeKeys: VISEME_KEYS,\n visemeSystemId: CC4_VISEME_SYSTEM_ID,\n visemeSlots: CC4_VISEME_SLOTS,\n visemeMeshCategory: 'viseme',\n visemeJawAmounts: VISEME_JAW_AMOUNTS,\n auMixDefaults: AU_MIX_DEFAULTS,\n auInfo: AU_INFO,\n eyeMeshNodes: CC4_EYE_MESH_NODES,\n meshes: CC4_MESHES,\n continuumPairs: CONTINUUM_PAIRS_MAP,\n continuumLabels: CONTINUUM_LABELS,\n hairPhysics: CC4_HAIR_PHYSICS,\n annotationRegions: [\n {\n name: 'full_body',\n objects: ['*'],\n paddingFactor: 2.0,\n },\n {\n name: 'head',\n bones: ['HEAD', 'JAW'],\n paddingFactor: 1.5,\n children: ['face', 'left_eye', 'right_eye', 'mouth'],\n expandAnimation: 'staggered',\n },\n {\n name: 'face',\n bones: ['HEAD'],\n // meshes: populated by user selection in wizard - varies per character\n paddingFactor: 1.3,\n parent: 'head',\n },\n {\n name: 'left_eye',\n bones: ['EYE_L'],\n paddingFactor: 0.9,\n parent: 'head',\n },\n {\n name: 'right_eye',\n bones: ['EYE_R'],\n paddingFactor: 0.9,\n parent: 'head',\n },\n {\n name: 'mouth',\n bones: ['JAW'],\n paddingFactor: 1.5,\n parent: 'head',\n },\n {\n name: 'upper_body',\n bones: [\n 'SPINE_02',\n 'HEAD',\n 'CLAVICLE_L',\n 'CLAVICLE_R',\n ],\n paddingFactor: 1.6,\n },\n {\n name: 'back',\n bones: ['SPINE_01', 'SPINE_02'],\n paddingFactor: 1.8,\n cameraAngle: 180,\n },\n {\n name: 'left_hand',\n bones: ['HAND_L'],\n paddingFactor: 1.3,\n cameraAngle: 270,\n },\n {\n name: 'right_hand',\n bones: ['HAND_R'],\n paddingFactor: 1.3,\n cameraAngle: 90,\n },\n {\n name: 'left_foot',\n bones: ['FOOT_L', 'TOEBASE_L'],\n paddingFactor: 2.5,\n cameraAngle: 270,\n },\n {\n name: 'right_foot',\n bones: ['FOOT_R', 'TOEBASE_R'],\n paddingFactor: 2.5,\n cameraAngle: 90,\n },\n ],\n};\n\nexport default CC4_PRESET;\n","/**\n * Betta Fish Preset - Skeletal Animation Mappings\n *\n * Bone mappings for the betta fish model from Sketchfab.\n * This fish has 53 bones and 1 embedded animation (\"Take 01\" swimming).\n * No morph targets/blend shapes - all animation is skeletal.\n *\n * Bone structure (inferred from hierarchy):\n * - Armature_rootJoint: Root\n * - Bone_Armature: Main body root\n * - Bone.001_Armature: Head/Front body\n * - Bone.009-017: Likely eyes/gills area (left/right symmetry)\n * - Bone.002_Armature: Body spine chain\n * - Bone.003 → 004 → 005: Body to tail\n * - Bone.018-045: Tail fins (multiple branching chains)\n * - Bone.046/047: Pectoral fins (left/right)\n * - Bone.006_Armature: Dorsal fin area\n * - Bone.007/008: Dorsal fin bones\n */\n\nimport type { BoneBinding, AUInfo, CompositeRotation } from '../core/types';\nimport type { AnnotationRegion, MeshInfo, MeshCategory, Profile } from '../mappings/types';\nimport { checkBindingsForLeftRight } from './cc4';\n\n// ============================================================================\n// BONE NAMES - All 53 bones in the fish skeleton\n// Note: Bone names in the GLTF use dots (e.g., \"Bone.001_Armature\")\n// ============================================================================\n\nexport const BONES = [\n \"Armature_rootJoint\",\n \"Bone_Armature\",\n \"Bone.001_Armature\",\n \"Bone.009_Armature\",\n \"Bone.027_Armature\",\n \"Bone.029_Armature\",\n \"Bone.031_Armature\",\n \"Bone.028_Armature\",\n \"Bone.030_Armature\",\n \"Bone.032_Armature\",\n \"Bone.010_Armature\",\n \"Bone.012_Armature\",\n \"Bone.014_Armature\",\n \"Bone.016_Armature\",\n \"Bone.011_Armature\",\n \"Bone.013_Armature\",\n \"Bone.015_Armature\",\n \"Bone.017_Armature\",\n \"Bone.002_Armature\",\n \"Bone.003_Armature\",\n \"Bone.004_Armature\",\n \"Bone.005_Armature\",\n \"Bone.020_Armature\",\n \"Bone.025_Armature\",\n \"Bone.026_Armature\",\n \"Bone.039_Armature\",\n \"Bone.040_Armature\",\n \"Bone.041_Armature\",\n \"Bone.042_Armature\",\n \"Bone.043_Armature\",\n \"Bone.044_Armature\",\n \"Bone.045_Armature\",\n \"Bone.019_Armature\",\n \"Bone.023_Armature\",\n \"Bone.024_Armature\",\n \"Bone.034_Armature\",\n \"Bone.036_Armature\",\n \"Bone.038_Armature\",\n \"Bone.018_Armature\",\n \"Bone.021_Armature\",\n \"Bone.022_Armature\",\n \"Bone.033_Armature\",\n \"Bone.035_Armature\",\n \"Bone.037_Armature\",\n \"Bone.046_Armature\",\n \"Bone.048_Armature\",\n \"Bone.050_Armature\",\n \"Bone.047_Armature\",\n \"Bone.049_Armature\",\n \"Bone.051_Armature\",\n \"Bone.006_Armature\",\n \"Bone.007_Armature\",\n \"Bone.008_Armature\"\n] as const;\n\n// ============================================================================\n// BONE NAME CONFIGURATION\n// Uses prefix/suffix system: 'Bone.' + baseNumber + '_Armature' = 'Bone.001_Armature'\n// ============================================================================\n\nexport const BONE_PREFIX = 'Bone.';\nexport const BONE_SUFFIX = '_Armature';\n\n// ============================================================================\n// SEMANTIC BONE MAPPINGS - Human-readable names for key bones\n// Uses base names that get combined with prefix/suffix\n// Exception: ROOT, BODY_ROOT, and EYE nodes use full names (don't follow pattern)\n// ============================================================================\n\nexport const BONE_NODES = {\n // Root bones (special - don't use prefix/suffix)\n ROOT: 'Armature_rootJoint',\n BODY_ROOT: 'Bone_Armature',\n\n // Head and body (use base names)\n HEAD: '001',\n BODY_FRONT: '002',\n BODY_MID: '003',\n BODY_BACK: '004',\n TAIL_BASE: '005',\n\n // Gills - bilateral (even = left, odd = right)\n GILL_L: '046',\n GILL_L_MID: '048',\n GILL_L_TIP: '050',\n GILL_R: '047',\n GILL_R_MID: '049',\n GILL_R_TIP: '051',\n\n // Dorsal fin (top fin)\n DORSAL_ROOT: '006',\n DORSAL_L: '007',\n DORSAL_R: '008',\n\n // Ventral fins (belly fins)\n VENTRAL_L: '018',\n VENTRAL_L_MID: '021',\n VENTRAL_L_TIP: '022',\n VENTRAL_R: '033',\n VENTRAL_R_MID: '035',\n VENTRAL_R_TIP: '037',\n\n // Pectoral fins - left side chain\n PECTORAL_L_ROOT: '009',\n PECTORAL_L_CHAIN1: '027',\n PECTORAL_L_CHAIN1_MID: '029',\n PECTORAL_L_CHAIN1_TIP: '031',\n PECTORAL_L_CHAIN2: '028',\n PECTORAL_L_CHAIN2_MID: '030',\n PECTORAL_L_CHAIN2_TIP: '032',\n\n // Pectoral fins - right side chain\n PECTORAL_R_ROOT: '010',\n PECTORAL_R_CHAIN1: '012',\n PECTORAL_R_CHAIN1_A: '014',\n PECTORAL_R_CHAIN1_B: '016',\n PECTORAL_R_ROOT2: '011',\n PECTORAL_R_CHAIN2: '013',\n PECTORAL_R_CHAIN2_A: '015',\n PECTORAL_R_CHAIN2_B: '017',\n\n // Eyes (special - mesh name, not bone)\n EYE_L: 'EYES_0',\n EYE_R: 'EYES_0',\n\n // Main tail fins\n TAIL_TOP: '020',\n TAIL_TOP_MID: '025',\n TAIL_TOP_TIP: '026',\n TAIL_MID: '039',\n TAIL_MID_A: '040',\n TAIL_MID_A_TIP: '041',\n TAIL_MID_B: '042',\n TAIL_MID_B_TIP: '043',\n TAIL_MID_C: '044',\n TAIL_MID_C_TIP: '045',\n\n // Side tail chains\n TAIL_SIDE_L: '019',\n TAIL_SIDE_L_MID: '023',\n TAIL_SIDE_L_TIP: '024',\n TAIL_SIDE_R: '034',\n TAIL_SIDE_R_MID: '036',\n TAIL_SIDE_R_TIP: '038',\n} as const;\n\n// ============================================================================\n// AU ID CONSTANTS - Fish \"Action Units\" (analogous to FACS AUs for humans)\n// These use plain numbers like CC4 preset - no special fish-specific types\n// ============================================================================\n\n// Body orientation (AU 2-7)\n// 2 = Turn Left, 3 = Turn Right\n// 4 = Pitch Up, 5 = Pitch Down\n// 6 = Roll Left, 7 = Roll Right\n\n// Tail movements (AU 12-15)\n// 12 = Tail Sweep Left, 13 = Tail Sweep Right\n// 14 = Tail Fin Spread, 15 = Tail Fin Close\n\n// Pectoral fins (AU 20-27)\n// 20 = Pectoral L Up, 21 = Pectoral L Down\n// 22 = Pectoral R Up, 23 = Pectoral R Down\n// 24 = Pectoral L Forward, 25 = Pectoral L Back\n// 26 = Pectoral R Forward, 27 = Pectoral R Back\n\n// Ventral fins (AU 30-33)\n// 30 = Ventral L Up, 31 = Ventral L Down\n// 32 = Ventral R Up, 33 = Ventral R Down\n\n// Head (AU 51-54, matching FACS standard)\n// 51 = Head Turn Left, 52 = Head Turn Right\n// 53 = Head Up, 54 = Head Down\n// (AU 55/56 Head Tilt removed - fish don't have this motion)\n\n// Gills (AU 45-46) - separate L/R, single AU per side (0=closed, 1=flared)\n// 45 = Gill L, 46 = Gill R\n\n// Eye rotation (AU 61-64, like human FACS)\n// 61 = Eyes Left, 62 = Eyes Right\n// 63 = Eyes Up, 64 = Eyes Down\n\n// ============================================================================\n// BONE BINDINGS - Map AU IDs to bone rotations\n// ============================================================================\n\nexport const BONE_BINDINGS: Record<number, BoneBinding[]> = {\n // ========== BODY ORIENTATION (AU 2-7) ==========\n // AU 2: Turn Left\n 2: [\n { node: 'HEAD', channel: 'ry', scale: 1, maxDegrees: 30 },\n { node: 'BODY_FRONT', channel: 'ry', scale: 1, maxDegrees: 14 },\n { node: 'BODY_MID', channel: 'ry', scale: 1, maxDegrees: 5 },\n ],\n // AU 3: Turn Right\n 3: [\n { node: 'HEAD', channel: 'ry', scale: -1, maxDegrees: 30 },\n { node: 'BODY_FRONT', channel: 'ry', scale: -1, maxDegrees: 14 },\n { node: 'BODY_MID', channel: 'ry', scale: -1, maxDegrees: 5 },\n ],\n // AU 4: Pitch Up\n 4: [\n { node: 'HEAD', channel: 'rx', scale: -1, maxDegrees: 20 },\n { node: 'BODY_FRONT', channel: 'rx', scale: -1, maxDegrees: 5 },\n ],\n // AU 5: Pitch Down\n 5: [\n { node: 'HEAD', channel: 'rx', scale: 1, maxDegrees: 20 },\n { node: 'BODY_FRONT', channel: 'rx', scale: 1, maxDegrees: 5 },\n ],\n // AU 6: Roll Left\n 6: [\n { node: 'BODY_ROOT', channel: 'rz', scale: -1, maxDegrees: 25 },\n ],\n // AU 7: Roll Right\n 7: [\n { node: 'BODY_ROOT', channel: 'rz', scale: 1, maxDegrees: 25 },\n ],\n\n // ========== TAIL (AU 12-15) ==========\n // Tail sweep uses rz (roll axis) to sweep left/right in fish's local space\n // AU 12: Tail Sweep Left\n 12: [\n { node: 'BODY_BACK', channel: 'rz', scale: 1, maxDegrees: 15 },\n { node: 'TAIL_BASE', channel: 'rz', scale: 1, maxDegrees: 30 },\n { node: 'TAIL_TOP', channel: 'rz', scale: 1, maxDegrees: 20 },\n { node: 'TAIL_MID', channel: 'rz', scale: 1, maxDegrees: 20 },\n ],\n // AU 13: Tail Sweep Right\n 13: [\n { node: 'BODY_BACK', channel: 'rz', scale: -1, maxDegrees: 15 },\n { node: 'TAIL_BASE', channel: 'rz', scale: -1, maxDegrees: 30 },\n { node: 'TAIL_TOP', channel: 'rz', scale: -1, maxDegrees: 20 },\n { node: 'TAIL_MID', channel: 'rz', scale: -1, maxDegrees: 20 },\n ],\n // Tail fin spread/close (fan motion)\n // AU 14: Tail Fin Spread\n 14: [\n { node: 'TAIL_TOP', channel: 'rx', scale: -1, maxDegrees: 20 },\n { node: 'TAIL_SIDE_L', channel: 'rx', scale: 1, maxDegrees: 15 },\n { node: 'TAIL_SIDE_R', channel: 'rx', scale: -1, maxDegrees: 15 },\n ],\n // AU 15: Tail Fin Close\n 15: [\n { node: 'TAIL_TOP', channel: 'rx', scale: 1, maxDegrees: 15 },\n { node: 'TAIL_SIDE_L', channel: 'rx', scale: -1, maxDegrees: 12 },\n { node: 'TAIL_SIDE_R', channel: 'rx', scale: 1, maxDegrees: 12 },\n ],\n\n // ========== PECTORAL FINS (AU 20-27, front/head fins) ==========\n // These are the decorative fins attached to the head (bones 009-017)\n // AU 20: Pectoral L Up\n 20: [\n { node: 'PECTORAL_L_ROOT', channel: 'rz', scale: 1, maxDegrees: 40 },\n { node: 'PECTORAL_L_CHAIN1', channel: 'rz', scale: 1, maxDegrees: 20 },\n { node: 'PECTORAL_L_CHAIN2', channel: 'rz', scale: 1, maxDegrees: 20 },\n ],\n // AU 21: Pectoral L Down\n 21: [\n { node: 'PECTORAL_L_ROOT', channel: 'rz', scale: -1, maxDegrees: 40 },\n { node: 'PECTORAL_L_CHAIN1', channel: 'rz', scale: -1, maxDegrees: 20 },\n { node: 'PECTORAL_L_CHAIN2', channel: 'rz', scale: -1, maxDegrees: 20 },\n ],\n // AU 22: Pectoral R Up\n 22: [\n { node: 'PECTORAL_R_ROOT', channel: 'rz', scale: -1, maxDegrees: 40 },\n { node: 'PECTORAL_R_CHAIN1', channel: 'rz', scale: -1, maxDegrees: 20 },\n { node: 'PECTORAL_R_ROOT2', channel: 'rz', scale: -1, maxDegrees: 40 },\n ],\n // AU 23: Pectoral R Down\n 23: [\n { node: 'PECTORAL_R_ROOT', channel: 'rz', scale: 1, maxDegrees: 40 },\n { node: 'PECTORAL_R_CHAIN1', channel: 'rz', scale: 1, maxDegrees: 20 },\n { node: 'PECTORAL_R_ROOT2', channel: 'rz', scale: 1, maxDegrees: 40 },\n ],\n // AU 24: Pectoral L Forward\n 24: [\n { node: 'PECTORAL_L_ROOT', channel: 'ry', scale: 1, maxDegrees: 30 },\n ],\n // AU 25: Pectoral L Back\n 25: [\n { node: 'PECTORAL_L_ROOT', channel: 'ry', scale: -1, maxDegrees: 30 },\n ],\n // AU 26: Pectoral R Forward\n 26: [\n { node: 'PECTORAL_R_ROOT', channel: 'ry', scale: -1, maxDegrees: 30 },\n ],\n // AU 27: Pectoral R Back\n 27: [\n { node: 'PECTORAL_R_ROOT', channel: 'ry', scale: 1, maxDegrees: 30 },\n ],\n\n // ========== VENTRAL FINS (AU 30-33, belly fins) ==========\n // AU 30: Ventral L Up\n 30: [\n { node: 'VENTRAL_L', channel: 'rz', scale: 1, maxDegrees: 30 },\n { node: 'VENTRAL_L_MID', channel: 'rz', scale: 1, maxDegrees: 15 },\n ],\n // AU 31: Ventral L Down\n 31: [\n { node: 'VENTRAL_L', channel: 'rz', scale: -1, maxDegrees: 30 },\n { node: 'VENTRAL_L_MID', channel: 'rz', scale: -1, maxDegrees: 15 },\n ],\n // AU 32: Ventral R Up\n 32: [\n { node: 'VENTRAL_R', channel: 'rz', scale: -1, maxDegrees: 30 },\n { node: 'VENTRAL_R_MID', channel: 'rz', scale: -1, maxDegrees: 15 },\n ],\n // AU 33: Ventral R Down\n 33: [\n { node: 'VENTRAL_R', channel: 'rz', scale: 1, maxDegrees: 30 },\n { node: 'VENTRAL_R_MID', channel: 'rz', scale: 1, maxDegrees: 15 },\n ],\n\n // ========== GILLS (AU 45-46, separate L/R - 0=closed, 1=flared) ==========\n // AU 45: Gill L\n 45: [\n { node: 'GILL_L', channel: 'rz', scale: 1, maxDegrees: 40 },\n { node: 'GILL_L_MID', channel: 'rz', scale: 1, maxDegrees: 20 },\n ],\n // AU 46: Gill R\n 46: [\n { node: 'GILL_R', channel: 'rz', scale: -1, maxDegrees: 40 },\n { node: 'GILL_R_MID', channel: 'rz', scale: -1, maxDegrees: 20 },\n ],\n\n // ========== HEAD (AU 51-56, matching FACS standard) ==========\n // AU 51: Head Turn Left\n 51: [\n { node: 'HEAD', channel: 'ry', scale: 1, maxDegrees: 30 },\n { node: 'BODY_FRONT', channel: 'ry', scale: 1, maxDegrees: 14 },\n { node: 'BODY_MID', channel: 'ry', scale: 1, maxDegrees: 5 },\n ],\n // AU 52: Head Turn Right\n 52: [\n { node: 'HEAD', channel: 'ry', scale: -1, maxDegrees: 30 },\n { node: 'BODY_FRONT', channel: 'ry', scale: -1, maxDegrees: 14 },\n { node: 'BODY_MID', channel: 'ry', scale: -1, maxDegrees: 5 },\n ],\n // AU 53: Head Up\n 53: [\n { node: 'DORSAL_ROOT', channel: 'rx', scale: -1, maxDegrees: 25 },\n { node: 'DORSAL_L', channel: 'rx', scale: -1, maxDegrees: 15 },\n { node: 'DORSAL_R', channel: 'rx', scale: -1, maxDegrees: 15 },\n ],\n // AU 54: Head Down\n 54: [\n { node: 'DORSAL_ROOT', channel: 'rx', scale: 1, maxDegrees: 25 },\n { node: 'DORSAL_L', channel: 'rx', scale: 1, maxDegrees: 15 },\n { node: 'DORSAL_R', channel: 'rx', scale: 1, maxDegrees: 15 },\n ],\n // Note: AU 55/56 (Head Tilt) removed - fish don't have this motion\n\n // ========== EYES (AU 61-64, rotate the EYES_0 mesh) ==========\n // Fish has a single combined eyes mesh - both eyes rotate together\n // AU 61: Eyes Left\n 61: [\n { node: 'EYE_L', channel: 'ry', scale: 1, maxDegrees: 25 }, // Look left (yaw)\n ],\n // AU 62: Eyes Right\n 62: [\n { node: 'EYE_L', channel: 'ry', scale: -1, maxDegrees: 25 }, // Look right (yaw)\n ],\n // AU 63: Eyes Up\n 63: [\n { node: 'EYE_L', channel: 'rx', scale: -1, maxDegrees: 20 }, // Look up (pitch)\n ],\n // AU 64: Eyes Down\n 64: [\n { node: 'EYE_L', channel: 'rx', scale: 1, maxDegrees: 20 }, // Look down (pitch)\n ],\n};\n\n// ============================================================================\n// FISH AU INFO - Metadata for each action (compatible with loomlarge AUInfo)\n// facePart is used to group controls in the UI\n// ============================================================================\n\nexport const AU_INFO: Record<string, AUInfo> = {\n // Body Orientation\n '2': { id: '2', name: 'Turn Left', facePart: 'Body Orientation', muscularBasis: 'Myomere muscles', links: ['https://en.wikipedia.org/wiki/Myomere'] },\n '3': { id: '3', name: 'Turn Right', facePart: 'Body Orientation', muscularBasis: 'Myomere muscles', links: ['https://en.wikipedia.org/wiki/Myomere'] },\n '4': { id: '4', name: 'Pitch Up', facePart: 'Body Orientation', muscularBasis: 'Epaxial muscles', links: ['https://en.wikipedia.org/wiki/Epaxial_muscles'] },\n '5': { id: '5', name: 'Pitch Down', facePart: 'Body Orientation', muscularBasis: 'Hypaxial muscles', links: ['https://en.wikipedia.org/wiki/Hypaxial_muscles'] },\n '6': { id: '6', name: 'Roll Left', facePart: 'Body Orientation', muscularBasis: 'Lateral body muscles', links: ['https://en.wikipedia.org/wiki/Fish_locomotion'] },\n '7': { id: '7', name: 'Roll Right', facePart: 'Body Orientation', muscularBasis: 'Lateral body muscles', links: ['https://en.wikipedia.org/wiki/Fish_locomotion'] },\n\n // Tail (Caudal fin)\n '12': { id: '12', name: 'Tail Sweep Left', facePart: 'Caudal Fin', muscularBasis: 'Caudal fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Caudal_fin'] },\n '13': { id: '13', name: 'Tail Sweep Right', facePart: 'Caudal Fin', muscularBasis: 'Caudal fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Caudal_fin'] },\n '14': { id: '14', name: 'Tail Fin Spread', facePart: 'Caudal Fin', muscularBasis: 'Fin ray muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Caudal_fin'] },\n '15': { id: '15', name: 'Tail Fin Close', facePart: 'Caudal Fin', muscularBasis: 'Fin ray muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Caudal_fin'] },\n\n // Pectoral Fins (side fins for steering and braking)\n '20': { id: '20', name: 'Pectoral L Up', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '21': { id: '21', name: 'Pectoral L Down', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '22': { id: '22', name: 'Pectoral R Up', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '23': { id: '23', name: 'Pectoral R Down', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '24': { id: '24', name: 'Pectoral L Forward', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '25': { id: '25', name: 'Pectoral L Back', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '26': { id: '26', name: 'Pectoral R Forward', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n '27': { id: '27', name: 'Pectoral R Back', facePart: 'Pectoral Fins', muscularBasis: 'Pectoral fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pectoral_fins'] },\n\n // Ventral/Pelvic Fins (belly fins for stability)\n '30': { id: '30', name: 'Ventral L Up', facePart: 'Pelvic Fins', muscularBasis: 'Pelvic fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pelvic_fins'] },\n '31': { id: '31', name: 'Ventral L Down', facePart: 'Pelvic Fins', muscularBasis: 'Pelvic fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pelvic_fins'] },\n '32': { id: '32', name: 'Ventral R Up', facePart: 'Pelvic Fins', muscularBasis: 'Pelvic fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pelvic_fins'] },\n '33': { id: '33', name: 'Ventral R Down', facePart: 'Pelvic Fins', muscularBasis: 'Pelvic fin muscles', links: ['https://en.wikipedia.org/wiki/Fish_fin#Pelvic_fins'] },\n\n // Gills (separate L/R - single AU per side, 0=closed, 1=flared)\n '45': { id: '45', name: 'Gill L', facePart: 'Gills', muscularBasis: 'Opercular muscles', links: ['https://en.wikipedia.org/wiki/Operculum_(fish)'] },\n '46': { id: '46', name: 'Gill R', facePart: 'Gills', muscularBasis: 'Opercular muscles', links: ['https://en.wikipedia.org/wiki/Operculum_(fish)'] },\n\n // Head (AU 51-56, matching FACS standard)\n '51': { id: '51', name: 'Head Turn Left', facePart: 'Head', muscularBasis: 'Cranial muscles', links: ['https://en.wikipedia.org/wiki/Fish_anatomy#Head'] },\n '52': { id: '52', name: 'Head Turn Right', facePart: 'Head', muscularBasis: 'Cranial muscles', links: ['https://en.wikipedia.org/wiki/Fish_anatomy#Head'] },\n '53': { id: '53', name: 'Head Up', facePart: 'Head', muscularBasis: 'Cranial muscles', links: ['https://en.wikipedia.org/wiki/Fish_anatomy#Head'] },\n '54': { id: '54', name: 'Head Down', facePart: 'Head', muscularBasis: 'Cranial muscles', links: ['https://en.wikipedia.org/wiki/Fish_anatomy#Head'] },\n // Note: AU 55/56 (Head Tilt) removed - fish don't have this motion\n\n // Eye movement (similar to human AU 61-64)\n '61': { id: '61', name: 'Eyes Left', facePart: 'Eyes', muscularBasis: 'Extraocular muscles', links: ['https://en.wikipedia.org/wiki/Extraocular_muscles'] },\n '62': { id: '62', name: 'Eyes Right', facePart: 'Eyes', muscularBasis: 'Extraocular muscles', links: ['https://en.wikipedia.org/wiki/Extraocular_muscles'] },\n '63': { id: '63', name: 'Eyes Up', facePart: 'Eyes', muscularBasis: 'Superior rectus', links: ['https://en.wikipedia.org/wiki/Superior_rectus_muscle'] },\n '64': { id: '64', name: 'Eyes Down', facePart: 'Eyes', muscularBasis: 'Inferior rectus', links: ['https://en.wikipedia.org/wiki/Inferior_rectus_muscle'] },\n};\n\n// ============================================================================\n// CONTINUUM PAIRS - Define which AUs form bidirectional pairs for sliders\n// ============================================================================\n\n/**\n * Continuum pairs - maps AU ID to its partner for bidirectional sliders\n * Format matches loomlarge's CONTINUUM_PAIRS_MAP (animal-agnostic)\n */\nexport const CONTINUUM_PAIRS_MAP: Record<number, {\n pairId: number;\n isNegative: boolean;\n axis: 'pitch' | 'yaw' | 'roll';\n node: string;\n}> = {\n // Body Orientation (AU 2-7)\n 2: { pairId: 3, isNegative: true, axis: 'yaw', node: 'HEAD' }, // Turn Left ↔ Turn Right\n 3: { pairId: 2, isNegative: false, axis: 'yaw', node: 'HEAD' },\n 5: { pairId: 4, isNegative: true, axis: 'pitch', node: 'HEAD' }, // Pitch Down ↔ Pitch Up\n 4: { pairId: 5, isNegative: false, axis: 'pitch', node: 'HEAD' },\n 6: { pairId: 7, isNegative: true, axis: 'roll', node: 'BODY_ROOT' }, // Roll Left ↔ Roll Right\n 7: { pairId: 6, isNegative: false, axis: 'roll', node: 'BODY_ROOT' },\n\n // Tail (AU 12-15)\n 12: { pairId: 13, isNegative: true, axis: 'roll', node: 'TAIL_BASE' }, // Tail Sweep Left ↔ Right\n 13: { pairId: 12, isNegative: false, axis: 'roll', node: 'TAIL_BASE' },\n 15: { pairId: 14, isNegative: true, axis: 'pitch', node: 'TAIL_TOP' }, // Tail Fin Close ↔ Spread\n 14: { pairId: 15, isNegative: false, axis: 'pitch', node: 'TAIL_TOP' },\n\n // Pectoral Fins (AU 20-27)\n 21: { pairId: 20, isNegative: true, axis: 'roll', node: 'PECTORAL_L_ROOT' }, // Pectoral L Down ↔ Up\n 20: { pairId: 21, isNegative: false, axis: 'roll', node: 'PECTORAL_L_ROOT' },\n 25: { pairId: 24, isNegative: true, axis: 'yaw', node: 'PECTORAL_L_ROOT' }, // Pectoral L Back ↔ Forward\n 24: { pairId: 25, isNegative: false, axis: 'yaw', node: 'PECTORAL_L_ROOT' },\n 23: { pairId: 22, isNegative: true, axis: 'roll', node: 'PECTORAL_R_ROOT' }, // Pectoral R Down ↔ Up\n 22: { pairId: 23, isNegative: false, axis: 'roll', node: 'PECTORAL_R_ROOT' },\n 27: { pairId: 26, isNegative: true, axis: 'yaw', node: 'PECTORAL_R_ROOT' }, // Pectoral R Back ↔ Forward\n 26: { pairId: 27, isNegative: false, axis: 'yaw', node: 'PECTORAL_R_ROOT' },\n\n // Ventral Fins (AU 30-33)\n 31: { pairId: 30, isNegative: true, axis: 'roll', node: 'VENTRAL_L' }, // Ventral L Down ↔ Up\n 30: { pairId: 31, isNegative: false, axis: 'roll', node: 'VENTRAL_L' },\n 33: { pairId: 32, isNegative: true, axis: 'roll', node: 'VENTRAL_R' }, // Ventral R Down ↔ Up\n 32: { pairId: 33, isNegative: false, axis: 'roll', node: 'VENTRAL_R' },\n\n // Head (AU 51-56, matching FACS standard)\n 51: { pairId: 52, isNegative: true, axis: 'yaw', node: 'HEAD' }, // Head Turn Left ↔ Right\n 52: { pairId: 51, isNegative: false, axis: 'yaw', node: 'HEAD' },\n 54: { pairId: 53, isNegative: true, axis: 'pitch', node: 'DORSAL_ROOT' }, // Head Down ↔ Up\n 53: { pairId: 54, isNegative: false, axis: 'pitch', node: 'DORSAL_ROOT' },\n // Note: AU 55/56 (Head Tilt) removed - fish don't have this motion\n\n // Gills (AU 45-46) are NOT in continuum - they're single AUs (0=closed, 1=flared)\n // Each side is independent, not paired opposites\n\n // Eye movement (AU 61-64)\n 61: { pairId: 62, isNegative: true, axis: 'yaw', node: 'HEAD' }, // Eyes Left ↔ Right\n 62: { pairId: 61, isNegative: false, axis: 'yaw', node: 'HEAD' },\n 64: { pairId: 63, isNegative: true, axis: 'pitch', node: 'HEAD' }, // Eyes Down ↔ Up\n 63: { pairId: 64, isNegative: false, axis: 'pitch', node: 'HEAD' },\n};\n\n/**\n * Build continuum label from AU names.\n * Finds common prefix between AU names and extracts the differing part.\n * E.g. \"Head Turn Left\" + \"Head Turn Right\" → \"Head Turn — Left ↔ Right\"\n */\nfunction buildContinuumLabel(negativeAU: AUInfo, positiveAU: AUInfo): string {\n const negName = negativeAU.name;\n const posName = positiveAU.name;\n\n // Find common prefix (word-level)\n const negWords = negName.split(' ');\n const posWords = posName.split(' ');\n\n let commonPrefixWords: string[] = [];\n for (let i = 0; i < Math.min(negWords.length, posWords.length); i++) {\n if (negWords[i] === posWords[i]) {\n commonPrefixWords.push(negWords[i]);\n } else {\n break;\n }\n }\n\n const prefix = commonPrefixWords.join(' ');\n const negSuffix = negWords.slice(commonPrefixWords.length).join(' ');\n const posSuffix = posWords.slice(commonPrefixWords.length).join(' ');\n\n if (prefix && negSuffix && posSuffix) {\n return `${prefix} — ${negSuffix} ↔ ${posSuffix}`;\n }\n\n // Fallback: just combine the names\n return `${negName} ↔ ${posName}`;\n}\n\n/**\n * Get continuum label for a pair, derived from AU_INFO.\n * No need for a separate CONTINUUM_LABELS object.\n */\nexport function getContinuumLabelForPair(negativeId: number, positiveId: number): string {\n const negAU = AU_INFO[String(negativeId)];\n const posAU = AU_INFO[String(positiveId)];\n\n if (!negAU || !posAU) {\n return `AU ${negativeId} ↔ AU ${positiveId}`;\n }\n\n return buildContinuumLabel(negAU, posAU);\n}\n\n/**\n * Build all continuum labels from AU_INFO and CONTINUUM_PAIRS_MAP.\n * This replaces the need for a manually-maintained CONTINUUM_LABELS object.\n */\nexport function buildContinuumLabels(): Record<string, string> {\n const labels: Record<string, string> = {};\n const seen = new Set<string>();\n\n for (const [auIdStr, info] of Object.entries(CONTINUUM_PAIRS_MAP)) {\n if (info.isNegative) {\n const negId = Number(auIdStr);\n const posId = info.pairId;\n const key = `${negId}-${posId}`;\n\n if (!seen.has(key)) {\n seen.add(key);\n labels[key] = getContinuumLabelForPair(negId, posId);\n }\n }\n }\n\n return labels;\n}\n\n// Build labels dynamically from AU_INFO (no separate CONTINUUM_LABELS needed)\nexport const CONTINUUM_LABELS = buildContinuumLabels();\n\n// ============================================================================\n// COMPOSITE ROTATIONS - Defines how AUs map to bone rotation axes\n// This is required for the engine to properly apply bone rotations\n// Uses plain AU ID numbers (animal-agnostic, like CC4 preset)\n// ============================================================================\n\nexport const COMPOSITE_ROTATIONS: CompositeRotation[] = [\n // ========== HEAD & BODY - Combined entry per node (like CC4) ==========\n // AU 51/52 = Head Turn Left/Right (yaw)\n // AU 53/54 = Head Up/Down (pitch) - note: pitch on HEAD is from body AUs 4/5\n // No head tilt for fish - removed AU 55/56\n {\n node: 'HEAD',\n pitch: { aus: [4, 5], axis: 'rx', negative: 5, positive: 4 }, // Body Pitch Up/Down\n yaw: { aus: [51, 52], axis: 'ry', negative: 51, positive: 52 }, // Head Turn Left/Right\n roll: null,\n },\n {\n node: 'BODY_FRONT',\n pitch: { aus: [4, 5], axis: 'rx', negative: 5, positive: 4 }, // Body Pitch Up/Down\n yaw: { aus: [51, 52], axis: 'ry', negative: 51, positive: 52 }, // Head Turn Left/Right\n roll: null,\n },\n {\n node: 'BODY_MID',\n pitch: null,\n yaw: { aus: [51, 52], axis: 'ry', negative: 51, positive: 52 }, // Head Turn Left/Right\n roll: null,\n },\n {\n node: 'BODY_ROOT',\n pitch: null,\n yaw: null,\n roll: { aus: [6, 7], axis: 'rz', negative: 6, positive: 7 }, // Body Roll Left/Right\n },\n\n // ========== TAIL (AU 12-15) ==========\n // Tail sweep uses rz (roll axis) to sweep left/right in fish's local space\n {\n node: 'TAIL_BASE',\n pitch: null,\n yaw: null,\n roll: { aus: [12, 13], axis: 'rz', negative: 13, positive: 12 }, // Tail Sweep Left/Right\n },\n {\n node: 'BODY_BACK',\n pitch: null,\n yaw: null,\n roll: { aus: [12, 13], axis: 'rz', negative: 13, positive: 12 },\n },\n {\n node: 'TAIL_TOP',\n pitch: { aus: [14, 15], axis: 'rx', negative: 15, positive: 14 }, // Tail Fin Spread/Close\n yaw: null,\n roll: { aus: [12, 13], axis: 'rz', negative: 13, positive: 12 },\n },\n {\n node: 'TAIL_MID',\n pitch: null,\n yaw: null,\n roll: { aus: [12, 13], axis: 'rz', negative: 13, positive: 12 },\n },\n // Side tail fins for spread/close\n {\n node: 'TAIL_SIDE_L',\n pitch: { aus: [14, 15], axis: 'rx', negative: 15, positive: 14 },\n yaw: null,\n roll: null,\n },\n {\n node: 'TAIL_SIDE_R',\n pitch: { aus: [14, 15], axis: 'rx', negative: 15, positive: 14 },\n yaw: null,\n roll: null,\n },\n\n // ========== PECTORAL FINS (AU 20-27, head-attached decorative fins) ==========\n {\n node: 'PECTORAL_L_ROOT',\n pitch: null,\n yaw: { aus: [24, 25], axis: 'ry', negative: 25, positive: 24 }, // Pectoral L Forward/Back\n roll: { aus: [20, 21], axis: 'rz', negative: 21, positive: 20 }, // Pectoral L Up/Down\n },\n {\n node: 'PECTORAL_L_CHAIN1',\n pitch: null,\n yaw: null,\n roll: { aus: [20, 21], axis: 'rz', negative: 21, positive: 20 },\n },\n {\n node: 'PECTORAL_L_CHAIN2',\n pitch: null,\n yaw: null,\n roll: { aus: [20, 21], axis: 'rz', negative: 21, positive: 20 },\n },\n {\n node: 'PECTORAL_R_ROOT',\n pitch: null,\n yaw: { aus: [26, 27], axis: 'ry', negative: 27, positive: 26 }, // Pectoral R Forward/Back\n roll: { aus: [22, 23], axis: 'rz', negative: 23, positive: 22 }, // Pectoral R Up/Down\n },\n {\n node: 'PECTORAL_R_ROOT2',\n pitch: null,\n yaw: null,\n roll: { aus: [22, 23], axis: 'rz', negative: 23, positive: 22 },\n },\n {\n node: 'PECTORAL_R_CHAIN1',\n pitch: null,\n yaw: null,\n roll: { aus: [22, 23], axis: 'rz', negative: 23, positive: 22 },\n },\n\n // ========== VENTRAL FINS (AU 30-33, belly fins) ==========\n {\n node: 'VENTRAL_L',\n pitch: null,\n yaw: null,\n roll: { aus: [30, 31], axis: 'rz', negative: 31, positive: 30 }, // Ventral L Up/Down\n },\n {\n node: 'VENTRAL_L_MID',\n pitch: null,\n yaw: null,\n roll: { aus: [30, 31], axis: 'rz', negative: 31, positive: 30 },\n },\n {\n node: 'VENTRAL_R',\n pitch: null,\n yaw: null,\n roll: { aus: [32, 33], axis: 'rz', negative: 33, positive: 32 }, // Ventral R Up/Down\n },\n {\n node: 'VENTRAL_R_MID',\n pitch: null,\n yaw: null,\n roll: { aus: [32, 33], axis: 'rz', negative: 33, positive: 32 },\n },\n\n // ========== DORSAL FIN (AU 53/54 - Head Up/Down via dorsal bones) ==========\n // In this fish model, the dorsal bones control the head's vertical movement\n // No head tilt for fish - AU 55/56 removed\n {\n node: 'DORSAL_ROOT',\n pitch: { aus: [53, 54], axis: 'rx', negative: 54, positive: 53 }, // Head Up/Down\n yaw: null,\n roll: null,\n },\n {\n node: 'DORSAL_L',\n pitch: { aus: [53, 54], axis: 'rx', negative: 54, positive: 53 },\n yaw: null,\n roll: null,\n },\n {\n node: 'DORSAL_R',\n pitch: { aus: [53, 54], axis: 'rx', negative: 54, positive: 53 },\n yaw: null,\n roll: null,\n },\n\n // ========== GILLS (AU 45-46, separate L/R - single AU per side, not continuum) ==========\n // AU 45 controls left side only, AU 46 controls right side only\n // These are intensity-only AUs (0=closed, 1=flared) - no negative partner\n {\n node: 'GILL_L',\n pitch: null,\n yaw: null,\n roll: { aus: [45], axis: 'rz', negative: undefined, positive: 45 }, // Gill L\n },\n {\n node: 'GILL_L_MID',\n pitch: null,\n yaw: null,\n roll: { aus: [45], axis: 'rz', negative: undefined, positive: 45 },\n },\n {\n node: 'GILL_R',\n pitch: null,\n yaw: null,\n roll: { aus: [46], axis: 'rz', negative: undefined, positive: 46 }, // Gill R\n },\n {\n node: 'GILL_R_MID',\n pitch: null,\n yaw: null,\n roll: { aus: [46], axis: 'rz', negative: undefined, positive: 46 },\n },\n\n // ========== EYES (AU 61-64) ==========\n // Single EYES_0 mesh rotates both fish eyes together\n {\n node: 'EYE_L',\n pitch: { aus: [63, 64], axis: 'rx', negative: 64, positive: 63 }, // Eyes Up/Down\n yaw: { aus: [61, 62], axis: 'ry', negative: 62, positive: 61 }, // Eyes Left/Right\n roll: null,\n },\n];\n\n\n// ============================================================================\n// EYE MESH NODES - Fallback for eye rotation when no bone exists\n// Fish has a single combined EYES_0 mesh for both eyes\n// ============================================================================\n\nexport const EYE_MESH_NODES = {\n LEFT: 'EYES_0',\n RIGHT: 'EYES_0', // Same mesh, both eyes rotate together\n} as const;\n\n// ============================================================================\n// MESH SETTINGS - Material settings for fish meshes (depthWrite, blending, etc.)\n// ============================================================================\n\nexport const MESHES: Record<string, MeshInfo> = {\n // Body mesh - main fish body with proper depth and blending\n 'BODY_0': {\n category: 'body' as MeshCategory,\n morphCount: 0, // Fish model has no morphs\n material: {\n renderOrder: 20,\n transparent: true,\n opacity: 1,\n depthWrite: true,\n depthTest: true,\n blending: 'Normal',\n },\n },\n // Eyes mesh - render behind body with proper transparency support\n 'EYES_0': {\n category: 'eye' as MeshCategory,\n morphCount: 0,\n material: {\n renderOrder: 17,\n transparent: true,\n opacity: 1,\n depthWrite: true,\n depthTest: true,\n blending: 'Normal',\n },\n },\n // Hidden helper shell from the source asset; keep it suppressed by default\n // so Betta does not rely on a Firestore-only mesh override.\n 'Cube_0': {\n category: 'body' as MeshCategory,\n morphCount: 0,\n material: {\n renderOrder: -20,\n transparent: true,\n opacity: 0,\n depthWrite: true,\n depthTest: true,\n blending: 'Normal',\n },\n },\n};\n\n// ============================================================================\n// ANNOTATION REGIONS - Camera/marker defaults for the fish preset\n// ============================================================================\n\nexport const ANNOTATION_REGIONS: AnnotationRegion[] = [\n {\n name: 'full_body',\n objects: ['*'],\n paddingFactor: 2.5,\n },\n {\n name: 'head',\n bones: ['HEAD'],\n paddingFactor: 1.8,\n children: ['left_eye', 'right_eye', 'mouth'],\n expandAnimation: 'staggered',\n },\n {\n name: 'left_eye',\n meshes: ['EYES_0'],\n parent: 'head',\n paddingFactor: 1.4,\n cameraAngle: 270,\n },\n {\n name: 'right_eye',\n meshes: ['EYES_0'],\n parent: 'head',\n paddingFactor: 1.4,\n cameraAngle: 90,\n },\n {\n name: 'mouth',\n bones: ['HEAD'],\n parent: 'head',\n paddingFactor: 1.5,\n },\n {\n name: 'body',\n bones: ['BODY_FRONT', 'BODY_MID', 'BODY_BACK'],\n paddingFactor: 1.8,\n },\n {\n name: 'tail',\n bones: ['TAIL_BASE', 'TAIL_TOP', 'TAIL_MID'],\n paddingFactor: 1.6,\n },\n {\n name: 'dorsal_fin',\n bones: ['DORSAL_ROOT', 'DORSAL_L', 'DORSAL_R'],\n paddingFactor: 1.8,\n },\n {\n name: 'pectoral_fins',\n bones: ['PECTORAL_L_ROOT', 'PECTORAL_R_ROOT'],\n paddingFactor: 1.8,\n children: ['pectoral_fin_left', 'pectoral_fin_right'],\n expandAnimation: 'outward',\n },\n {\n name: 'pectoral_fin_left',\n bones: ['PECTORAL_L_ROOT', 'PECTORAL_L_CHAIN1', 'PECTORAL_L_CHAIN2'],\n parent: 'pectoral_fins',\n paddingFactor: 1.6,\n cameraAngle: 270,\n },\n {\n name: 'pectoral_fin_right',\n bones: ['PECTORAL_R_ROOT', 'PECTORAL_R_CHAIN1', 'PECTORAL_R_ROOT2'],\n parent: 'pectoral_fins',\n paddingFactor: 1.6,\n cameraAngle: 90,\n },\n {\n name: 'ventral_fins',\n bones: ['VENTRAL_L', 'VENTRAL_R'],\n paddingFactor: 1.6,\n },\n {\n name: 'gills',\n bones: ['GILL_L', 'GILL_R'],\n paddingFactor: 1.6,\n children: ['gill_left', 'gill_right'],\n expandAnimation: 'outward',\n },\n {\n name: 'gill_left',\n bones: ['GILL_L', 'GILL_L_MID', 'GILL_L_TIP'],\n parent: 'gills',\n paddingFactor: 1.4,\n cameraAngle: 270,\n style: { lineDirection: 'left' },\n },\n {\n name: 'gill_right',\n bones: ['GILL_R', 'GILL_R_MID', 'GILL_R_TIP'],\n parent: 'gills',\n paddingFactor: 1.4,\n cameraAngle: 90,\n style: { lineDirection: 'right' },\n },\n];\n\n// ============================================================================\n// PRESET EXPORT\n// ============================================================================\n\nconst BETTA_FISH_PROFILE: Profile = {\n name: 'Betta Fish',\n animalType: 'fish',\n emoji: '🐟',\n auToBones: BONE_BINDINGS,\n boneNodes: BONE_NODES,\n // Prefix/suffix for bone resolution: 'Bone.' + '001' + '_Armature' = 'Bone.001_Armature'\n bonePrefix: BONE_PREFIX,\n boneSuffix: BONE_SUFFIX,\n // Suffix pattern for fuzzy matching (Sketchfab/Blender exports)\n suffixPattern: '_\\\\d+$|\\\\.\\\\d+$',\n auToMorphs: {} as Record<number, import('../mappings/types').MorphTargetsBySide>,\n morphToMesh: {} as Record<string, string[]>,\n visemeKeys: [] as string[],\n auInfo: AU_INFO,\n compositeRotations: COMPOSITE_ROTATIONS,\n eyeMeshNodes: EYE_MESH_NODES,\n meshes: MESHES,\n annotationRegions: ANNOTATION_REGIONS,\n auMixDefaults: {} as Record<number, number>, // No mixed AUs (morph+bone) in this model\n continuumPairs: CONTINUUM_PAIRS_MAP,\n continuumLabels: CONTINUUM_LABELS,\n};\n\nexport const BETTA_FISH_PRESET = {\n ...BETTA_FISH_PROFILE,\n bones: BONES,\n boneBindings: BONE_BINDINGS,\n actionInfo: AU_INFO,\n};\n\n/**\n * Check if an AU has bilateral bone bindings (L and R nodes)\n * Used to determine if a balance slider should be shown\n */\nexport const hasLeftRightBones = (auId: number): boolean => {\n const bindings = BONE_BINDINGS[auId];\n return checkBindingsForLeftRight(bindings);\n};\n\nexport default BETTA_FISH_PRESET;\n\n// ============================================================================\n// LEGACY ALIASES - For backwards compatibility with existing code\n// ============================================================================\n\n// Deprecated alias: the fish preset is now a single preset object, not a\n// parallel \"mapping config\" that differs from the real preset.\nexport const AU_MAPPING_CONFIG = BETTA_FISH_PRESET;\n\nexport const ACTION_INFO = AU_INFO;\nexport const FISH_BONES = BONES;\nexport const FISH_BONE_NODES = BONE_NODES;\nexport const FISH_BONE_BINDINGS = BONE_BINDINGS;\nexport const FISH_AU_INFO = AU_INFO;\nexport const FISH_ACTION_INFO = ACTION_INFO;\nexport const FISH_CONTINUUM_PAIRS_MAP = CONTINUUM_PAIRS_MAP;\nexport const FISH_CONTINUUM_LABELS = CONTINUUM_LABELS;\nexport const FISH_COMPOSITE_ROTATIONS = COMPOSITE_ROTATIONS;\nexport const FISH_EYE_MESH_NODES = EYE_MESH_NODES;\nexport const FISH_MESHES = MESHES;\nexport const FISH_AU_MAPPING_CONFIG = BETTA_FISH_PRESET;\nexport const fishHasLeftRightBones = hasLeftRightBones;\n"]}
|