@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (639) hide show
  1. package/GROUNDING.md +5651 -82
  2. package/README.md +1 -0
  3. package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
  4. package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
  5. package/dist/DebuggerUI-7ngnJsBe.js +275 -0
  6. package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
  7. package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
  8. package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
  12. package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
  13. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  14. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  15. package/dist/TextLabel-XE0rQSDn.cjs +2 -0
  16. package/dist/TextLabel-c9BCucOI.js +961 -0
  17. package/dist/assets/cache.d.ts +99 -0
  18. package/dist/assets/estimate.d.ts +11 -0
  19. package/dist/assets/gltfLoader.d.ts +16 -0
  20. package/dist/assets/index.d.ts +7 -0
  21. package/dist/assets/loaders.d.ts +43 -0
  22. package/dist/assets/react.d.ts +33 -0
  23. package/dist/body-pose/index.d.ts +521 -0
  24. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  25. package/dist/body-trigger/frame.d.ts +88 -0
  26. package/dist/body-trigger/index.d.ts +6 -0
  27. package/dist/body-trigger/moves.d.ts +235 -0
  28. package/dist/body-trigger/trigger.d.ts +75 -0
  29. package/dist/calibration/calibration.d.ts +75 -0
  30. package/dist/calibration/index.d.ts +6 -0
  31. package/dist/calibration/storage.d.ts +13 -0
  32. package/dist/calibration/types.d.ts +53 -0
  33. package/dist/calibration/useXRCalibration.d.ts +46 -0
  34. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  35. package/dist/camera/devices.d.ts +26 -0
  36. package/dist/camera/index.d.ts +8 -0
  37. package/dist/camera/permission.d.ts +86 -0
  38. package/dist/camera/useCameraPermission.d.ts +35 -0
  39. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  40. package/dist/canonicalFace-C83I225R.cjs +1 -0
  41. package/dist/capabilities/detect.d.ts +45 -0
  42. package/dist/capabilities/index.d.ts +5 -0
  43. package/dist/capabilities/types.d.ts +120 -0
  44. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  45. package/dist/compat/environment.d.ts +5 -0
  46. package/dist/compat/index.d.ts +4 -0
  47. package/dist/compat/run.d.ts +18 -0
  48. package/dist/compat/scenarios.d.ts +10 -0
  49. package/dist/compat/types.d.ts +101 -0
  50. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  51. package/dist/components/BodyInstruction/index.d.ts +69 -0
  52. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  53. package/dist/components/BodyTracker/index.d.ts +17 -0
  54. package/dist/components/BodyTrigger/index.d.ts +49 -0
  55. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  56. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  57. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  58. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  59. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  60. package/dist/components/FaceAtlas/index.d.ts +7 -0
  61. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  62. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  63. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  64. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  65. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  66. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  67. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  68. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  69. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  70. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  71. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  72. package/dist/components/FaceCharacter/index.d.ts +18 -0
  73. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  74. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  75. package/dist/components/FaceInset/frame.d.ts +94 -0
  76. package/dist/components/FaceInset/index.d.ts +6 -0
  77. package/dist/components/FaceInset/material.d.ts +40 -0
  78. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  79. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  80. package/dist/components/FaceInstruction/index.d.ts +56 -0
  81. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  82. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  83. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  84. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  85. package/dist/components/FaceLiquify/index.d.ts +10 -0
  86. package/dist/components/FaceLiquify/material.d.ts +39 -0
  87. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  88. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  89. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  90. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  91. package/dist/components/FaceLiquify/target.d.ts +85 -0
  92. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  93. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
  94. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  95. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
  96. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  97. package/dist/components/FaceMesh/index.d.ts +2 -2
  98. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  99. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  100. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  101. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  102. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  103. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  104. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  105. package/dist/components/FaceSwap/index.d.ts +13 -0
  106. package/dist/components/FaceSwap/settings.d.ts +300 -0
  107. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  108. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  109. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  110. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  111. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  112. package/dist/components/Faceless/Faceless.d.ts +51 -0
  113. package/dist/components/Faceless/index.d.ts +2 -0
  114. package/dist/components/GestureListener/index.d.ts +11 -0
  115. package/dist/components/HairLock/HairLock.d.ts +39 -0
  116. package/dist/components/HairLock/index.d.ts +2 -0
  117. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  118. package/dist/components/HandCutout/index.d.ts +35 -0
  119. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  120. package/dist/components/HandInstruction/index.d.ts +74 -0
  121. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  122. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  123. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  124. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  125. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  126. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  127. package/dist/components/HandRig/index.d.ts +101 -0
  128. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  129. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  130. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  131. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  132. package/dist/components/HandTouch/index.d.ts +2 -0
  133. package/dist/components/HandTracker/index.d.ts +10 -0
  134. package/dist/components/HeadBinding/index.d.ts +14 -0
  135. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  136. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  137. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  138. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  139. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  140. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  141. package/dist/components/HeadOccluder/index.d.ts +57 -3
  142. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  143. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  144. package/dist/components/HolisticTracker/index.d.ts +69 -0
  145. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  146. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  147. package/dist/components/Instruction/HintStage.d.ts +29 -0
  148. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  149. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  150. package/dist/components/Instruction/ghost.d.ts +129 -0
  151. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  152. package/dist/components/Instruction/hintLook.d.ts +81 -0
  153. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  154. package/dist/components/Instruction/index.d.ts +41 -0
  155. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  156. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  157. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  158. package/dist/components/IrisEffect/index.d.ts +51 -0
  159. package/dist/components/IrisEffect/settings.d.ts +117 -0
  160. package/dist/components/LipEffect/LipEffect.d.ts +27 -1
  161. package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
  162. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  163. package/dist/components/LipEffect/defaults.d.ts +46 -4
  164. package/dist/components/LipEffect/index.d.ts +11 -3
  165. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  166. package/dist/components/LipEffect/settings.d.ts +375 -0
  167. package/dist/components/LipEffect/shader.d.ts +39 -0
  168. package/dist/components/LipEffect/types.d.ts +128 -9
  169. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  170. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  171. package/dist/components/Makeup/Blush.d.ts +18 -0
  172. package/dist/components/Makeup/Brows.d.ts +20 -0
  173. package/dist/components/Makeup/Contour.d.ts +17 -0
  174. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  175. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  176. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  177. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  178. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  179. package/dist/components/Makeup/constants.d.ts +44 -0
  180. package/dist/components/Makeup/design.d.ts +106 -0
  181. package/dist/components/Makeup/designSamples.d.ts +42 -0
  182. package/dist/components/Makeup/eyes.d.ts +114 -0
  183. package/dist/components/Makeup/fields.d.ts +10 -0
  184. package/dist/components/Makeup/geometry.d.ts +106 -0
  185. package/dist/components/Makeup/index.d.ts +26 -0
  186. package/dist/components/Makeup/looks.d.ts +28 -0
  187. package/dist/components/Makeup/material.d.ts +239 -0
  188. package/dist/components/Makeup/settings.d.ts +54 -0
  189. package/dist/components/Makeup/shades.d.ts +143 -0
  190. package/dist/components/Makeup/shapes.d.ts +27 -0
  191. package/dist/components/Makeup/skinTone.d.ts +135 -0
  192. package/dist/components/Makeup/types.d.ts +110 -0
  193. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  194. package/dist/components/Necklace/Necklace.d.ts +44 -0
  195. package/dist/components/Necklace/index.d.ts +1 -0
  196. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  197. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  198. package/dist/components/PersonCutout/index.d.ts +50 -0
  199. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  200. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  201. package/dist/components/ScreenImage/index.d.ts +3 -1
  202. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  203. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  204. package/dist/components/ScreenImage/source.d.ts +6 -0
  205. package/dist/components/ScreenImage/types.d.ts +18 -0
  206. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  207. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  208. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  209. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  210. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  211. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  212. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  213. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  214. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  215. package/dist/components/SpringSwing/index.d.ts +1 -0
  216. package/dist/components/XRProvider/index.d.ts +16 -2
  217. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  218. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  219. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  220. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  221. package/dist/components/index.d.ts +11 -0
  222. package/dist/config/index.d.ts +0 -1
  223. package/dist/constants/index.d.ts +4 -1
  224. package/dist/context-DTxSQvp4.js +13 -0
  225. package/dist/context-hA0Rb2Xa.cjs +1 -0
  226. package/dist/contexts-BH7PdKFS.cjs +1 -0
  227. package/dist/contexts-jak8-tND.js +667 -0
  228. package/dist/coordinates/feed.d.ts +52 -0
  229. package/dist/coordinates/index.d.ts +7 -0
  230. package/dist/coordinates/side.d.ts +40 -0
  231. package/dist/coordinates/spaces.d.ts +49 -0
  232. package/dist/coordinates/viewport.d.ts +22 -0
  233. package/dist/coordinates/world.d.ts +15 -0
  234. package/dist/debug-ui/default-setting.cjs +2 -2
  235. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  236. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  237. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  238. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  239. package/dist/debug-ui/index.d.ts +18 -3
  240. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  241. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  242. package/dist/debug-ui/media-source/index.d.ts +1 -1
  243. package/dist/debug-ui/media-source/session.d.ts +30 -2
  244. package/dist/debug-ui/media-source.cjs +1 -1
  245. package/dist/debug-ui/media-source.js +1 -1
  246. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  247. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  248. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  249. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  250. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  251. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  252. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  253. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  254. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  255. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  256. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  257. package/dist/debug-ui.cjs +3 -3
  258. package/dist/debug-ui.js +2695 -2547
  259. package/dist/detector-K8aej4MB.js +59 -0
  260. package/dist/detector-ijypGtse.cjs +1 -0
  261. package/dist/entries/all.d.ts +3 -1
  262. package/dist/entries/core.d.ts +20 -2
  263. package/dist/entries/face-effects.d.ts +123 -9
  264. package/dist/entries/instructions.d.ts +48 -0
  265. package/dist/entries/internal.d.ts +2 -1
  266. package/dist/entries/low-level.d.ts +49 -3
  267. package/dist/entries/particles.d.ts +11 -0
  268. package/dist/entries/product.d.ts +11 -0
  269. package/dist/entries/tracking.d.ts +60 -2
  270. package/dist/face-atlas/attributes.d.ts +30 -0
  271. package/dist/face-atlas/eyes.d.ts +272 -0
  272. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  273. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  274. package/dist/face-atlas/glsl/common.d.ts +55 -0
  275. package/dist/face-atlas/glsl/design.d.ts +49 -0
  276. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  277. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  278. package/dist/face-atlas/glsl/format.d.ts +4 -0
  279. package/dist/face-atlas/glsl/index.d.ts +59 -0
  280. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  281. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  282. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  283. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  284. package/dist/face-atlas/guide.d.ts +51 -0
  285. package/dist/face-atlas/index.d.ts +25 -0
  286. package/dist/face-atlas/lead.d.ts +117 -0
  287. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  288. package/dist/face-atlas/masks.d.ts +53 -0
  289. package/dist/face-atlas/obj.d.ts +69 -0
  290. package/dist/face-atlas/polylines.d.ts +63 -0
  291. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  292. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  293. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  294. package/dist/face-atlas/probe/constants.d.ts +137 -0
  295. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  296. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  297. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  298. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  299. package/dist/face-atlas/probe/stats.d.ts +143 -0
  300. package/dist/face-atlas/probe/targets.d.ts +70 -0
  301. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  302. package/dist/face-atlas/quality.d.ts +28 -0
  303. package/dist/face-atlas/regions.d.ts +31 -0
  304. package/dist/face-atlas/registry.d.ts +252 -0
  305. package/dist/face-atlas/renderState.d.ts +86 -0
  306. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  307. package/dist/face-atlas/shading.d.ts +406 -0
  308. package/dist/face-atlas/shapes.d.ts +86 -0
  309. package/dist/face-atlas/sides.d.ts +41 -0
  310. package/dist/face-atlas/skinMask.d.ts +35 -0
  311. package/dist/face-atlas/surface.d.ts +155 -0
  312. package/dist/face-atlas/topology.d.ts +44 -0
  313. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  314. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  315. package/dist/face-character/bindFaceModel.d.ts +106 -0
  316. package/dist/face-character/canonicalFace.d.ts +17 -0
  317. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  318. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  319. package/dist/face-character/driveFaceModel.d.ts +57 -0
  320. package/dist/face-character/expressionOutputs.d.ts +45 -0
  321. package/dist/face-character/faceExpressions.d.ts +104 -0
  322. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  323. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  324. package/dist/face-character/faceMorph.d.ts +77 -0
  325. package/dist/face-character/faceMorphs.d.ts +46 -0
  326. package/dist/face-character/facePhoto.d.ts +138 -0
  327. package/dist/face-character/facePiercings.d.ts +116 -0
  328. package/dist/face-character/facePin.d.ts +131 -0
  329. package/dist/face-character/faceReprojection.d.ts +273 -0
  330. package/dist/face-character/faceReprojector.d.ts +171 -0
  331. package/dist/face-character/faceRig.d.ts +176 -0
  332. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  333. package/dist/face-character/faceTexture.d.ts +169 -0
  334. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  335. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  336. package/dist/face-character/faceTextureStats.d.ts +298 -0
  337. package/dist/face-character/faceTransfer.d.ts +396 -0
  338. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  339. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  340. package/dist/face-character/faceWarp3D.d.ts +101 -0
  341. package/dist/face-character/faceless.d.ts +79 -0
  342. package/dist/face-character/featureWarp.d.ts +28 -0
  343. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  344. package/dist/face-character/liveValue.d.ts +12 -0
  345. package/dist/face-character/memo.d.ts +15 -0
  346. package/dist/face-effects.cjs +2324 -1
  347. package/dist/face-effects.js +14208 -2268
  348. package/dist/face-expression/index.d.ts +182 -0
  349. package/dist/face-info/landmarks.d.ts +17 -3
  350. package/dist/face-info/types.d.ts +20 -3
  351. package/dist/gestures/definitions.d.ts +98 -0
  352. package/dist/gestures/detector.d.ts +87 -0
  353. package/dist/gestures/index.d.ts +8 -0
  354. package/dist/gestures/measures.d.ts +114 -0
  355. package/dist/gestures/settings.d.ts +49 -0
  356. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  357. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  358. package/dist/hand/armFit.d.ts +46 -0
  359. package/dist/hand/armMask.d.ts +178 -0
  360. package/dist/hand/handCutout.d.ts +23 -0
  361. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  362. package/dist/hand/handGestures.d.ts +524 -0
  363. package/dist/hand/handPose.d.ts +98 -0
  364. package/dist/hand/handRigSolver.d.ts +159 -0
  365. package/dist/hand/handTattoo.d.ts +81 -0
  366. package/dist/hand/handTouch.d.ts +240 -0
  367. package/dist/hand/wrist.d.ts +44 -0
  368. package/dist/hand/wristFilter.d.ts +44 -0
  369. package/dist/hooks/selectors.d.ts +76 -1
  370. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  371. package/dist/hooks/useFaceInfo.d.ts +13 -1
  372. package/dist/hooks/useFaceInfos.d.ts +1 -1
  373. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  374. package/dist/hooks/useGesture.d.ts +32 -0
  375. package/dist/hooks/useIrisTracking.d.ts +45 -0
  376. package/dist/hooks/useTrackerContext.d.ts +6 -0
  377. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  378. package/dist/hooks/useXRModel.d.ts +7 -0
  379. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  380. package/dist/hooks/useXRSession/index.d.ts +2 -2
  381. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  382. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  383. package/dist/hooks/useXRSession/store.d.ts +52 -3
  384. package/dist/index-B1_TzJaI.js +1104 -0
  385. package/dist/index-BavF06C6.js +190 -0
  386. package/dist/index-BfFmpddl.cjs +21 -0
  387. package/dist/index-BuBzneeW.cjs +46 -0
  388. package/dist/index-CGsQWodV.cjs +1 -0
  389. package/dist/index-CIe7eCMH.js +3200 -0
  390. package/dist/index-CfSF8LXa.cjs +1 -0
  391. package/dist/index-D5GTzOzD.cjs +1 -0
  392. package/dist/index-DBhQzvVa.js +314 -0
  393. package/dist/index-DE17y0ZI.cjs +1 -0
  394. package/dist/index-JII7huPk.js +442 -0
  395. package/dist/index-tpCr9CLj.cjs +1 -0
  396. package/dist/index-w1S7fI2B.js +1432 -0
  397. package/dist/index-zGaqrz_K.js +188 -0
  398. package/dist/instructions.cjs +30 -0
  399. package/dist/instructions.js +1507 -0
  400. package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
  401. package/dist/internal-Cjinca64.cjs +1 -0
  402. package/dist/internal.cjs +1 -1
  403. package/dist/internal.js +15 -10
  404. package/dist/iris/compute.d.ts +27 -0
  405. package/dist/iris/index.d.ts +4 -0
  406. package/dist/iris/lead.d.ts +19 -0
  407. package/dist/iris/types.d.ts +89 -0
  408. package/dist/landmarkMask-BFDyBnKM.js +224 -0
  409. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  410. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  411. package/dist/landmarks-bftdwq6Z.js +76 -0
  412. package/dist/loaders-BGAUACsd.js +363 -0
  413. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  414. package/dist/low-level.cjs +1 -1
  415. package/dist/low-level.js +1190 -675
  416. package/dist/main.cjs +1 -1
  417. package/dist/main.js +1190 -452
  418. package/dist/models/Base/index.d.ts +49 -0
  419. package/dist/models/Body/index.d.ts +3 -1
  420. package/dist/models/Face/constants.d.ts +8 -0
  421. package/dist/models/Face/index.d.ts +4 -12
  422. package/dist/models/Face/rotation.d.ts +18 -3
  423. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  424. package/dist/models/Hand/HandTracking.d.ts +17 -1
  425. package/dist/models/Holistic/index.d.ts +49 -0
  426. package/dist/models/Holistic/result.d.ts +68 -0
  427. package/dist/models/Segmentation/index.d.ts +2 -0
  428. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  429. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  430. package/dist/models/index.d.ts +2 -0
  431. package/dist/models/nodeSource.d.ts +9 -0
  432. package/dist/particles/emission.d.ts +24 -0
  433. package/dist/particles/eyes.d.ts +24 -0
  434. package/dist/particles/glsl.d.ts +14 -0
  435. package/dist/particles/index.d.ts +10 -0
  436. package/dist/particles/motion.d.ts +42 -0
  437. package/dist/particles/presets.d.ts +12 -0
  438. package/dist/particles/ring.d.ts +58 -0
  439. package/dist/particles/selfTest.d.ts +53 -0
  440. package/dist/particles/settings.d.ts +127 -0
  441. package/dist/particles/shapes.d.ts +29 -0
  442. package/dist/particles/spawner.d.ts +60 -0
  443. package/dist/particles/system.d.ts +64 -0
  444. package/dist/particles.cjs +122 -0
  445. package/dist/particles.js +774 -0
  446. package/dist/product/ProductDimensions.d.ts +16 -0
  447. package/dist/product/ProductHotspot.d.ts +16 -0
  448. package/dist/product/ProductViewer.d.ts +9 -0
  449. package/dist/product/details.d.ts +53 -0
  450. package/dist/product/index.d.ts +14 -0
  451. package/dist/product/loadModelViewer.d.ts +4 -0
  452. package/dist/product/types.d.ts +71 -0
  453. package/dist/product/useProductAr.d.ts +37 -0
  454. package/dist/product/useProductDetails.d.ts +60 -0
  455. package/dist/product.cjs +1 -0
  456. package/dist/product.js +414 -0
  457. package/dist/providers-C8rE26Uf.js +366 -0
  458. package/dist/providers-DHsrhDI2.cjs +62 -0
  459. package/dist/quality/XRQualityController.d.ts +25 -0
  460. package/dist/quality/controller.d.ts +33 -0
  461. package/dist/quality/index.d.ts +6 -0
  462. package/dist/quality/types.d.ts +100 -0
  463. package/dist/quality/useXRQuality.d.ts +28 -0
  464. package/dist/render/renderPasses.d.ts +8 -0
  465. package/dist/render/sceneBeforeRender.d.ts +12 -0
  466. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
  467. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  468. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  469. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  470. package/dist/renderState-CJNmj5jz.js +39 -0
  471. package/dist/renderState-apSfg4eR.cjs +1 -0
  472. package/dist/scene-object.cjs +1 -1
  473. package/dist/scene-object.js +2 -2
  474. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  475. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  476. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  477. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  478. package/dist/segmentation2d/index.d.ts +9 -0
  479. package/dist/segmentation2d/maskUv.d.ts +23 -0
  480. package/dist/segmentation2d/rasterize.d.ts +14 -0
  481. package/dist/segmentation2d/types.d.ts +52 -0
  482. package/dist/select-Ck5LGz-J.cjs +1 -0
  483. package/dist/select-pYRo_win.js +233 -0
  484. package/dist/selectors-C4X71aoD.cjs +1 -0
  485. package/dist/selectors-DmNaKIwE.js +196 -0
  486. package/dist/session-BrH8G7iJ.cjs +31 -0
  487. package/dist/session-DgA_z6O1.js +418 -0
  488. package/dist/settings-BJ7FMBsO.js +111 -0
  489. package/dist/settings-C63FMBlF.cjs +1 -0
  490. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  491. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  492. package/dist/spring/index.d.ts +2 -0
  493. package/dist/spring/spring.d.ts +69 -0
  494. package/dist/spring/swing.d.ts +54 -0
  495. package/dist/subjects/index.d.ts +2 -0
  496. package/dist/subjects/select.d.ts +62 -0
  497. package/dist/subjects/types.d.ts +55 -0
  498. package/dist/tracking-config/apply.d.ts +57 -0
  499. package/dist/tracking-config/index.d.ts +7 -0
  500. package/dist/tracking-config/resolve.d.ts +25 -0
  501. package/dist/tracking-config/storage.d.ts +8 -0
  502. package/dist/tracking-config/types.d.ts +106 -0
  503. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  504. package/dist/tracking.cjs +10 -1
  505. package/dist/tracking.js +1326 -506
  506. package/dist/trigger-D0Pm9noT.cjs +49 -0
  507. package/dist/trigger-IQeys0oS.js +2128 -0
  508. package/dist/types/compositor.d.ts +21 -0
  509. package/dist/types/face.d.ts +20 -1
  510. package/dist/types/hand-tracking.d.ts +9 -0
  511. package/dist/types/holistic.d.ts +121 -0
  512. package/dist/types/index.d.ts +1 -0
  513. package/dist/types/model.d.ts +22 -2
  514. package/dist/types/nodes.d.ts +47 -3
  515. package/dist/types/segmentation.d.ts +24 -0
  516. package/dist/types/session.d.ts +41 -3
  517. package/dist/updateThrottle-BseecYag.js +4 -0
  518. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  519. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  520. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  521. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  522. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  523. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  524. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  525. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  526. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  527. package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
  528. package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
  529. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  530. package/dist/utils/fns.d.ts +6 -3
  531. package/dist/utils/headOccluderFit.d.ts +42 -0
  532. package/dist/utils/integrity.d.ts +21 -1
  533. package/dist/utils/resolveNumFaces.d.ts +13 -0
  534. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  535. package/dist/utils/similarityFit.d.ts +23 -0
  536. package/dist/utils/updateThrottle.d.ts +2 -0
  537. package/dist/utils/useStableUniforms.d.ts +18 -0
  538. package/dist/uv-BMFt19bg.cjs +1 -0
  539. package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
  540. package/docs/SDK_DOCUMENTATION.md +1 -2
  541. package/docs/api/adaptive-quality.mdx +104 -0
  542. package/docs/api/asset-lifecycle.mdx +78 -0
  543. package/docs/api/body-instructions.mdx +285 -0
  544. package/docs/api/body-triggers.mdx +234 -0
  545. package/docs/api/camera-permission.mdx +142 -0
  546. package/docs/api/coordinate-spaces.mdx +168 -0
  547. package/docs/api/cross-camera.mdx +89 -0
  548. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  549. package/docs/api/diagnostics-calibration.mdx +97 -0
  550. package/docs/api/external-face-mesh.mdx +231 -0
  551. package/docs/api/face-actions.mdx +20 -16
  552. package/docs/api/face-attribute-expression.mdx +1 -1
  553. package/docs/api/face-binding-anchors.mdx +4 -2
  554. package/docs/api/face-character.mdx +157 -0
  555. package/docs/api/face-effects.mdx +9 -0
  556. package/docs/api/face-expression-controller.mdx +153 -0
  557. package/docs/api/face-info.mdx +17 -11
  558. package/docs/api/face-inset.mdx +204 -0
  559. package/docs/api/face-instructions.mdx +183 -0
  560. package/docs/api/face-liquify.mdx +196 -0
  561. package/docs/api/face-mesh.mdx +8 -9
  562. package/docs/api/face-morph.mdx +117 -0
  563. package/docs/api/face-painting.mdx +7 -0
  564. package/docs/api/face-reprojection.mdx +154 -0
  565. package/docs/api/face-retouching.mdx +18 -10
  566. package/docs/api/face-swap.mdx +350 -0
  567. package/docs/api/face-warp-3d.mdx +166 -0
  568. package/docs/api/faceless.mdx +143 -0
  569. package/docs/api/gestures.mdx +209 -0
  570. package/docs/api/hair.mdx +97 -0
  571. package/docs/api/hand-instructions.mdx +222 -0
  572. package/docs/api/hand-rig.mdx +535 -0
  573. package/docs/api/hand-touch.mdx +162 -0
  574. package/docs/api/head-occluder.mdx +563 -0
  575. package/docs/api/holistic-tracker.mdx +164 -0
  576. package/docs/api/instructions.mdx +323 -0
  577. package/docs/api/iris-tracking.mdx +247 -0
  578. package/docs/api/made-up-camera.mdx +131 -0
  579. package/docs/api/makeup-skin-tone.mdx +135 -0
  580. package/docs/api/makeup.mdx +353 -0
  581. package/docs/api/multi-subject.mdx +98 -0
  582. package/docs/api/particles.mdx +155 -0
  583. package/docs/api/person-cutout.mdx +136 -0
  584. package/docs/api/pin-to-face-mesh.mdx +274 -0
  585. package/docs/api/product-ar.mdx +114 -0
  586. package/docs/api/product-details.mdx +78 -0
  587. package/docs/api/screen-space-coordinates.mdx +4 -1
  588. package/docs/api/segmentation-overlay.mdx +301 -0
  589. package/docs/api/session-lifecycle.mdx +136 -0
  590. package/docs/api/trackers.mdx +5 -0
  591. package/docs/api/tracking-config.mdx +108 -0
  592. package/docs/docs.json +51 -1
  593. package/docs/examples/lip-shaders.mdx +273 -0
  594. package/docs/guides/face-atlas-template.svg +1 -0
  595. package/docs/guides/face-atlas-textures.mdx +186 -0
  596. package/docs/guides/face-texture-template.svg +1 -0
  597. package/docs/guides/harness-debug-ui.mdx +4 -4
  598. package/docs/guides/lip-effect-textures.mdx +368 -0
  599. package/docs/guides/lip-uv-template.png +0 -0
  600. package/docs/guides/lip-uv-template.svg +1 -0
  601. package/docs/guides/makeup-design-textures.mdx +109 -0
  602. package/docs/introduction.mdx +1 -2
  603. package/package.json +23 -1
  604. package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
  605. package/dist/DebuggerUI-BjOMr8q_.js +0 -269
  606. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  607. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  608. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  609. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  610. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  611. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  612. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  613. package/dist/contexts-ByhzppYl.js +0 -663
  614. package/dist/contexts-Dr62It_K.cjs +0 -1
  615. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  616. package/dist/getFaceInfo-C4QpCQIY.js +0 -118
  617. package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
  618. package/dist/index-9dlAQAhy.js +0 -1462
  619. package/dist/index-BjmTe9eM.cjs +0 -1
  620. package/dist/index-BpEf2BBb.cjs +0 -1
  621. package/dist/index-CyUUurQT.cjs +0 -1
  622. package/dist/index-DCiMbxC3.cjs +0 -1
  623. package/dist/index-DXT3WccE.js +0 -2089
  624. package/dist/index-DpI-qo5X.cjs +0 -17
  625. package/dist/index-DyVF4vEW.js +0 -111
  626. package/dist/index-VJ0SJwmG.js +0 -214
  627. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  628. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  629. package/dist/renderLayers-zrK2pv5O.js +0 -13
  630. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  631. package/dist/renderPasses-BcquyVtu.js +0 -1500
  632. package/dist/selectors-B8H97CKA.js +0 -59
  633. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  634. package/dist/session-CpkiK5YA.cjs +0 -31
  635. package/dist/session-DLFN_VII.js +0 -363
  636. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  637. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  638. package/dist/useFaceResults-CtetsO9M.js +0 -19
  639. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -0,0 +1,155 @@
1
+ import { FaceAtlasRegionSelection } from './regions';
2
+ import * as THREE from "three";
3
+ /**
4
+ * `FaceAtlasSurface`: one live face in the face atlas topology (468
5
+ * landmarks, `FACE_ATLAS_TRIANGLES`), shared by every layer drawn on that
6
+ * face (makeup regions, LipEffect, face swap, faceless, custom layers).
7
+ *
8
+ * Its vertex attributes are written once per frame and shared by every
9
+ * layer's geometry (each layer only has its own index buffer):
10
+ *
11
+ * | Attribute | |
12
+ * | --- | --- |
13
+ * | `position` | the live point (canonical cm, in the rig's smoothed-pose frame) plus any `FaceWarp3D` / `FaceMorph` offset |
14
+ * | `basePosition` | the live point without offsets: where the person's skin is in the camera image |
15
+ * | `normal` | live normals over all 898 triangles, smoothed over time |
16
+ * | `uv` | `FACE_ATLAS_UVS` |
17
+ * | `restPosition`, `restNormal`, `edge`, `lipEdge`, `eyeRing` | `getFaceAtlasAttributes()` |
18
+ * | `faceUv` | the camera-image uv of `basePosition`, written only while requested |
19
+ *
20
+ * Draw it through a group posed by the rig (`FaceRigState.pose`); the
21
+ * registry does this for you. Pure three.js, no React: `update` is
22
+ * allocation-free.
23
+ */
24
+ /** Tuning of `FaceAtlasSurface`. */
25
+ export declare const FACE_ATLAS_SURFACE: Readonly<{
26
+ /** Per-frame blend of the new normals into the smoothed ones (1 = none). */
27
+ normalSmoothing: 0.5;
28
+ /** Fade in (ms) when the face is found. */
29
+ fadeInMs: 150;
30
+ /** Fade out (ms) once the face is lost (after the rig's hold). */
31
+ fadeOutMs: 120;
32
+ }>;
33
+ /** Where the rig stands: `FaceRigTracking`. A held face keeps its last points. */
34
+ export type FaceAtlasSurfaceTracking = "tracked" | "held" | "lost";
35
+ /** One frame's input to `FaceAtlasSurface.update`. */
36
+ export type FaceAtlasSurfaceInput = {
37
+ /**
38
+ * The live landmarks in the drawn frame, canonical cm, flat 468 × 3:
39
+ * `FaceRigState.view` (the smoothed pose's frame, so they sit on the
40
+ * camera image when drawn through the pose).
41
+ */
42
+ view: ArrayLike<number>;
43
+ /** Per-landmark displacement of the surface (`FaceSurfaceState.offsets`), or `null`. */
44
+ offsets?: ArrayLike<number> | null;
45
+ tracking: FaceAtlasSurfaceTracking;
46
+ /** Time since the last update (ms), for the fades. */
47
+ dtMs: number;
48
+ };
49
+ /**
50
+ * Which triangles a layer draws: atlas regions (one or a union), or explicit
51
+ * triangle indices into `FACE_ATLAS_TRIANGLES`, drawn in the order given
52
+ * (back-to-front lists for layers without depth writes).
53
+ */
54
+ export type FaceAtlasTriangleSelection = FaceAtlasRegionSelection | {
55
+ triangles: ArrayLike<number>;
56
+ };
57
+ /** Names of the attributes every surface geometry shares. */
58
+ export declare const FACE_ATLAS_SURFACE_ATTRIBUTES: readonly ["position", "basePosition", "normal", "uv", "restPosition", "restNormal", "edge", "lipEdge", "eyeRing", "faceUv"];
59
+ export type FaceAtlasSurfaceAttributeName = (typeof FACE_ATLAS_SURFACE_ATTRIBUTES)[number];
60
+ /** Flat landmark indices of a triangle selection. */
61
+ export declare const faceAtlasSelectionIndices: (selection: FaceAtlasTriangleSelection) => Uint16Array;
62
+ /**
63
+ * Writes unit vertex normals of `positions` over `FACE_ATLAS_TRIANGLES`
64
+ * (area-weighted) into `out`. Allocation-free.
65
+ */
66
+ export declare const writeFaceAtlasNormals: (positions: ArrayLike<number>, out: Float32Array) => void;
67
+ /**
68
+ * The live face in the face atlas topology. Create one per face (the
69
+ * face-atlas registry does), `update` it once per frame, and draw any number
70
+ * of layers from `createGeometry`.
71
+ */
72
+ export declare class FaceAtlasSurface {
73
+ /** The shared attributes (see the table above). Read-only for layers. */
74
+ readonly attributes: Readonly<Record<FaceAtlasSurfaceAttributeName, THREE.BufferAttribute>>;
75
+ /** The whole face (every triangle, fills included), for custom effects. Owned by the surface. */
76
+ readonly geometry: THREE.BufferGeometry;
77
+ /** 0..1: fades in when the face is found, out once it is lost. */
78
+ presence: number;
79
+ /** Whether the face shows at all (`presence > 0`): hide layers when false. */
80
+ visible: boolean;
81
+ /** Bumped on every update that moved the points. */
82
+ version: number;
83
+ /** Where the rig stood at the last update. */
84
+ tracking: FaceAtlasSurfaceTracking;
85
+ private readonly normalScratch;
86
+ private normalsReady;
87
+ private faceUvRequests;
88
+ private readonly geometries;
89
+ private isDisposed;
90
+ /** The last update moved `position` off `basePosition` (a warp's offsets). */
91
+ private offsetsApplied;
92
+ /** `position` while `setUnwarped(true)` holds `basePosition` in it (made on first use). */
93
+ private warpedPositions;
94
+ /** `normal` while `setUnwarped(true)` holds the unwarped normals in it (made on first use). */
95
+ private warpedNormals;
96
+ /** Smoothed normals of `basePosition`, kept only while unwarped passes run (made on first use). */
97
+ private baseNormals;
98
+ /** The `version` `baseNormals` were last smoothed at (-1: never). */
99
+ private baseNormalsVersion;
100
+ private unwarped;
101
+ constructor();
102
+ /** True once `dispose` ran (the face's last layer went): make no more geometries from it. */
103
+ get disposed(): boolean;
104
+ /** Whether some layer asked for `faceUv` (`requestFaceUv`). */
105
+ get wantsFaceUv(): boolean;
106
+ /**
107
+ * A new geometry for a layer: the shared attributes plus its own index
108
+ * (regions, or explicit triangles in draw order) and any `extra`
109
+ * per-landmark attributes (468 items each, e.g. a face swap's mirror uv).
110
+ * Give it back with `releaseGeometry`, never `dispose()` it yourself: the
111
+ * attributes are shared with the other layers.
112
+ */
113
+ createGeometry(selection?: FaceAtlasTriangleSelection, extra?: Record<string, THREE.BufferAttribute>): THREE.BufferGeometry;
114
+ /**
115
+ * Releases a geometry from `createGeometry`. Its own index and extra
116
+ * attributes are freed; the shared attributes stay on the GPU while
117
+ * another geometry that has been drawn still uses them.
118
+ */
119
+ releaseGeometry(geometry: THREE.BufferGeometry): void;
120
+ /**
121
+ * The next update takes the fresh normals instead of blending them into
122
+ * the smoothed ones (a new camera source: another face).
123
+ */
124
+ snapNormals(): void;
125
+ /** Counts a layer that reads `faceUv`; returns its release. */
126
+ requestFaceUv(): () => void;
127
+ /**
128
+ * One frame: writes `position` (view + offsets) and `basePosition` (view),
129
+ * smooths the live normals, and steps the presence fade. A held face keeps
130
+ * its points; a lost face keeps its last points while it fades out; a face
131
+ * found again snaps its normals.
132
+ */
133
+ update({ view, offsets, tracking, dtMs }: FaceAtlasSurfaceInput): void;
134
+ /**
135
+ * For a pass that draws the face where the camera sees it (the made-up
136
+ * camera): while on, `position` holds `basePosition` (no warp offsets);
137
+ * off puts the warped points back. Does nothing when no offsets apply, so
138
+ * an unwarped face costs no upload. The next `update` ends it.
139
+ */
140
+ setUnwarped(on: boolean): void;
141
+ /**
142
+ * The normals of `basePosition`, smoothed as the live ones are: once per
143
+ * surface update, snapped when the last unwarped pass was not on the
144
+ * previous update (a made-up camera held again) or the face was found again.
145
+ */
146
+ private unwarpedNormals;
147
+ /**
148
+ * Writes `faceUv` (the camera-image uv of each `basePosition`) through
149
+ * `clipFromLocal` = projection × view × the pose group's world matrix.
150
+ * Only while requested; returns whether it wrote.
151
+ */
152
+ updateFaceUv(clipFromLocal: THREE.Matrix4): boolean;
153
+ /** Frees every geometry it made and the shared attributes. The surface is unusable after. */
154
+ dispose(): void;
155
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Pure graph helpers over a triangle list (vertex indices, three per
3
+ * triangle). No atlas data is imported here, so `parseCanonicalFaceModel`
4
+ * can use them without pulling the atlas tables into a bundle; the atlas's
5
+ * own static attributes are in `attributes.ts`.
6
+ */
7
+ /**
8
+ * The triangles between two closed vertex rings (an annulus such as the lip
9
+ * band between the outer and inner lip rings), as sorted triangle indices.
10
+ * Flood-fills the triangle adjacency from a triangle on the outside of the
11
+ * inner ring without crossing an edge of either ring.
12
+ *
13
+ * Fails closed: when the filled region is not sealed by exactly the two
14
+ * rings (different topology), it returns no triangles rather than leaking
15
+ * across the face.
16
+ */
17
+ export declare const collectRingBandTriangles: (triangles: ArrayLike<number>, outerRing: readonly number[], innerRing: readonly number[]) => number[];
18
+ /**
19
+ * Hop-count position of every vertex of a ring band between its two rings:
20
+ * `hopsToOuter / (hopsToOuter + hopsToInner)`, so outer-ring vertices are 0,
21
+ * inner-ring vertices 1 and a middle row 0.5; vertices outside the band are
22
+ * 1. `bandTriangles` is flat vertex indices (three per triangle). This is
23
+ * the `lipEdge` attribute for the lip rings, and the same measure for any
24
+ * other ring pair.
25
+ */
26
+ export declare const computeRingDistance: (bandTriangles: ArrayLike<number>, vertexCount: number, outerRing: readonly number[], innerRing: readonly number[]) => Float32Array;
27
+ /**
28
+ * Breadth-first hop count from `sources` over the edges of `triangles`.
29
+ * Unreachable vertices get `Infinity`.
30
+ */
31
+ export declare const computeHopDistance: (triangles: ArrayLike<number>, vertexCount: number, sources: readonly number[]) => Float32Array;
32
+ /**
33
+ * Shortest distance along mesh edges from `sources`, in the units of
34
+ * `positions` (Dijkstra; edge length = straight-line distance). Unreachable
35
+ * vertices get `Infinity`.
36
+ */
37
+ export declare const computeEdgeDistance: (positions: ArrayLike<number>, triangles: ArrayLike<number>, vertexCount: number, sources: readonly number[]) => Float32Array;
38
+ /**
39
+ * Area-weighted vertex normals of an outward-wound triangle list
40
+ * (counter-clockwise seen from outside), normalised; `[x, y, z, …]`.
41
+ */
42
+ export declare const computeVertexNormals: (positions: ArrayLike<number>, triangles: ArrayLike<number>, vertexCount: number) => Float32Array;
43
+ /** Flat vertex indices (three per triangle) of the given triangle indices. */
44
+ export declare const triangleIdsToVertices: (triangleIds: ArrayLike<number>, triangles: ArrayLike<number>) => Uint16Array;
@@ -0,0 +1,25 @@
1
+ import { FaceImageDetection } from '../facePhoto';
2
+ export type FaceImageFixtureOptions = {
3
+ /** Box centre, normalized. Default 0.5, 0.5. */
4
+ cx?: number;
5
+ cy?: number;
6
+ /** Box width and height, normalized. Default 0.3. */
7
+ size?: number;
8
+ /** Iris-centre distance in pixels of `image`. Default 120. */
9
+ interocularPixels?: number;
10
+ /** The photo canvas the pixels are measured in. Default 1000 × 1000. */
11
+ image?: {
12
+ width: number;
13
+ height: number;
14
+ };
15
+ /** Head yaw in degrees against the optical axis (positive = canonical +Z toward +X). Default 0. */
16
+ yawDegrees?: number;
17
+ /** The matrix translation in cm (camera at the origin looking down −Z). Default 0, 0, −60. */
18
+ position?: [number, number, number];
19
+ /** Omit the matrix (null). */
20
+ noMatrix?: boolean;
21
+ blendshapes?: Record<string, number>;
22
+ /** Landmark count. Default 478 (with irises). */
23
+ count?: number;
24
+ };
25
+ export declare const faceImageFixture: ({ cx, cy, size, interocularPixels, image, yawDegrees, position, noMatrix, blendshapes, count, }?: FaceImageFixtureOptions) => FaceImageDetection;
@@ -0,0 +1,22 @@
1
+ import { NormalizedLandmark } from '@mediapipe/tasks-vision';
2
+ import { XRModelNodeFaceTracking } from '../../types/nodes';
3
+ import * as THREE from "three";
4
+ /**
5
+ * Test fixtures: a face model node reporting the canonical face on the feed,
6
+ * and the scene camera that unprojects it.
7
+ */
8
+ /** The canonical face as MediaPipe would report it: 478 normalised points around (cx, cy). */
9
+ export declare const canonicalFaceLandmarks: ({ cx, cy, scale, aspect, }?: {
10
+ cx?: number;
11
+ cy?: number;
12
+ scale?: number;
13
+ aspect?: number;
14
+ }) => NormalizedLandmark[];
15
+ /** A face node whose `detectionResults` you set per frame (`faces` = one landmark list per face). */
16
+ export declare const createFaceNode: (faces?: NormalizedLandmark[][], blendshapes?: Record<string, number>) => {
17
+ node: XRModelNodeFaceTracking;
18
+ /** A new inference: a new results object (and new landmark arrays). */
19
+ setFaces: (list: NormalizedLandmark[][]) => void;
20
+ };
21
+ /** The SDK's scene camera: perspective, at z = 5, looking down −Z, 4:3. */
22
+ export declare const createSceneCamera: (aspect?: number) => THREE.PerspectiveCamera;
@@ -0,0 +1,106 @@
1
+ import { FaceMeshBinding, FaceMeshBindingMode } from './faceMeshBinding';
2
+ import { FaceMorphRegion } from './faceMorphs';
3
+ import { FaceFeatureAlignment } from './featureWarp';
4
+ import * as THREE from "three";
5
+ /** One of a mesh's morph targets that an expression channel drives. */
6
+ export type FaceMorphTarget = {
7
+ /** Index into the mesh's `morphTargetInfluences`. */
8
+ index: number;
9
+ /** The expression channel (`FACE_MORPH_NAMES` index). */
10
+ channel: number;
11
+ region: FaceMorphRegion;
12
+ };
13
+ /**
14
+ * How one mesh of a face model follows the face's expression:
15
+ * - `"surface"` — every vertex follows its own bound point (a face skin);
16
+ * - `"follow"` — the whole mesh moves as one with the point under its centre,
17
+ * keeping its shape (eyeballs, teeth, a nose ring);
18
+ * - `"rigid"` — only the head pose (a helmet, hair).
19
+ */
20
+ export type ExternalFaceMeshPart = "surface" | "follow" | "rigid";
21
+ /** One bound mesh of a face model. */
22
+ export type ExternalFaceMeshBinding = {
23
+ mesh: THREE.Mesh;
24
+ part: ExternalFaceMeshPart;
25
+ binding: FaceMeshBinding;
26
+ };
27
+ /** A bound mesh plus what the per-frame deformation needs. */
28
+ export type BoundFaceMesh = ExternalFaceMeshBinding & {
29
+ /** The mesh's rest positions (its own frame, plain floats). */
30
+ rest: Float32Array;
31
+ /** The position attribute the deformation writes (replaces the original). */
32
+ position: THREE.BufferAttribute;
33
+ /** Canonical cm → mesh-local vector, row-major 3×3. */
34
+ toLocal: Float32Array;
35
+ /** For `"follow"`: the binding of the mesh's centre point. */
36
+ centre: FaceMeshBinding | null;
37
+ /** The mesh's morph targets that expression channels drive (by name). */
38
+ morphs: FaceMorphTarget[];
39
+ /**
40
+ * For a `"follow"` part named like an eye (`eye…`): which eye it is (by
41
+ * side of the face: +X = `"left"`, landmark 263's side), so the gaze can
42
+ * turn it; else `null`.
43
+ */
44
+ eye: "left" | "right" | null;
45
+ /** The mesh's centre in its own frame (the eyeball's pivot). */
46
+ pivot: THREE.Vector3;
47
+ /** Mesh-local → canonical vector, row-major 3×3 (the inverse of `toLocal`). */
48
+ toModel: Float32Array;
49
+ /** The mesh's rest vertices in the canonical head frame (cm, flat). */
50
+ canonical: Float32Array;
51
+ /**
52
+ * The positions the mesh is bound from: `canonical` moved by the model's
53
+ * feature alignment (`BindFaceModelOptions.align`), or `canonical` itself
54
+ * when there is none. `FaceReprojection` binds the worn face from these too.
55
+ */
56
+ aligned: Float32Array;
57
+ /**
58
+ * Per vertex, how much of the head-size fit it takes (0 on the face, 1 from
59
+ * `FACE_HEAD_FIT_RAMP[1]` cm away: the ears and the back of the head).
60
+ */
61
+ widen: Float32Array;
62
+ };
63
+ /** cm from the face over which the head-size fit ramps in (none on the face, full at the ears). */
64
+ export declare const FACE_HEAD_FIT_RAMP: readonly [number, number];
65
+ /**
66
+ * A face model's width at its ears (canonical cm): the widest extent, across
67
+ * its surface and rigid meshes, of the vertices off the face (past
68
+ * `FACE_HEAD_FIT_RAMP[0]`) within 1 cm of the face side's height (landmark
69
+ * 234). `0` when it has none (a face-only mask).
70
+ */
71
+ export declare const measureFaceModelEarWidth: (meshes: readonly BoundFaceMesh[]) => number;
72
+ /** How a face model's own features are aligned to the canonical face's before binding. */
73
+ export type FaceModelAlignment = FaceFeatureAlignment | "auto" | false;
74
+ /** Auto alignment leaves eyeballs farther than this (cm) from their eye opening alone (a stylised eye). */
75
+ export declare const FACE_AUTO_ALIGN_MAX = 1.5;
76
+ /**
77
+ * The feature alignment `"auto"` finds for a bound model: when it has both
78
+ * eyeballs (`"follow"` eye parts) near the canonical eye openings, each eye
79
+ * opening is moved onto the model's eye (its eyeball centre in x and y), and
80
+ * the mouth, nose and chin stay where they are. So the lids, the eyeballs and
81
+ * a worn face all bind to the model's own eyes. `null` when it has no
82
+ * eyeballs, one is farther than `FACE_AUTO_ALIGN_MAX`, or both already sit on
83
+ * their openings (within 0.5 mm).
84
+ */
85
+ export declare const autoFaceModelAlignment: (meshes: readonly Pick<BoundFaceMesh, "eye" | "canonical">[]) => FaceFeatureAlignment | null;
86
+ export type BindFaceModelOptions = {
87
+ mode?: FaceMeshBindingMode;
88
+ falloff?: readonly [number, number];
89
+ /** Per mesh (object name): its part. Default: inside the head → `"follow"`, else `"surface"`. */
90
+ parts?: Record<string, ExternalFaceMeshPart>;
91
+ /**
92
+ * The model's own features (canonical cm) to bind as if they sat on the
93
+ * canonical face's (see `FaceFeatureAlignment`); `"auto"` (default) takes
94
+ * the eyes from the model's eyeballs (`autoFaceModelAlignment`); `false`
95
+ * binds the model as it is.
96
+ */
97
+ align?: FaceModelAlignment;
98
+ };
99
+ /**
100
+ * Binds every mesh under `root` (a face model in the canonical head frame) to
101
+ * the canonical face, giving each mesh its own geometry copy with a plain
102
+ * float position attribute the deformation writes. Pure apart from that; run
103
+ * once per model (`ExternalFaceMesh` does). The root's own transform is
104
+ * ignored: meshes are measured relative to it.
105
+ */
106
+ export declare const bindFaceModel: (root: THREE.Object3D, { mode, falloff, parts, align }?: BindFaceModelOptions) => BoundFaceMesh[];
@@ -0,0 +1,17 @@
1
+ import { CANONICAL_FACE_POSITIONS } from './canonicalFacePositions';
2
+ export { CANONICAL_FACE_POSITIONS };
3
+ /** Landmarks on the canonical face surface (the iris points 468–477 are not on it). */
4
+ export declare const CANONICAL_FACE_LANDMARK_COUNT = 468;
5
+ /**
6
+ * The canonical face surface: MediaPipe's face mesh triangles (landmark
7
+ * indices, flat). The mouth opening and the eye openings are holes — no
8
+ * triangle spans the inner lip ring or an eye ring — so a lip binds to its
9
+ * own lip, never across the mouth.
10
+ */
11
+ export declare const CANONICAL_FACE_TRIANGLES: Uint16Array;
12
+ /**
13
+ * The canonical face UV layout (flat `[u, v, …]` per landmark, v up: the chin
14
+ * near 0, the forehead near 1). A model whose face UVs follow it can bind by
15
+ * UV; glTF stores v down, which the binding detects.
16
+ */
17
+ export declare const CANONICAL_FACE_UVS: Float32Array;
@@ -0,0 +1,11 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * The canonical face as a mesh to sculpt on: the 468 landmarks as vertices
4
+ * (in landmark order), the canonical triangles, the canonical UV layout and
5
+ * vertex normals — in the canonical head frame (cm, +Y up, +Z out of the
6
+ * face). Shape keys sculpted on it (keeping its vertices and their order) are
7
+ * `FaceWarp3D` blend shapes that apply exactly; export it with three's
8
+ * `GLTFExporter` to sculpt in Blender (the SDK repo ships it as
9
+ * `assets-src/face-character/canonical-face-reference.glb`).
10
+ */
11
+ export declare const createCanonicalFaceGeometry: () => THREE.BufferGeometry;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The 468 MediaPipe canonical face landmarks in the canonical head frame:
3
+ * centimetres, +X to the screen's right on a face looking at the camera, +Y up,
4
+ * +Z out of the face toward the camera (landmark 4 at `(0, -0.46, 7.59)`).
5
+ * Flat `[x, y, z, …]` in landmark order.
6
+ */
7
+ export declare const CANONICAL_FACE_POSITIONS: Float32Array;
@@ -0,0 +1,57 @@
1
+ import { BoundFaceMesh } from './bindFaceModel';
2
+ import { FaceMorphRegion } from './faceMorphs';
3
+ import { FaceRigState } from './faceRig';
4
+ /**
5
+ * What moves a face model with the expression:
6
+ * - `"landmarks"` — the tracked landmarks bend the mesh (its own shape follows
7
+ * the face: jaw, lips, cheeks, brows, lids);
8
+ * - `"morphs"` — the model's own morph targets, driven by the face's
9
+ * blendshape scores (ARKit names); the mesh keeps the head pose only;
10
+ * - `"hybrid"` — landmarks for the jaw, lips and cheeks, the model's morphs
11
+ * for the eyes and brows (thin, sculpted parts landmarks cannot close
12
+ * cleanly — a blink rolls the authored lid over the eye);
13
+ * - `"auto"` (default) — `"morphs"` when the model has mouth morphs too (a
14
+ * full ARKit set: the authored shapes look best), `"hybrid"` when it has
15
+ * only eye / brow morphs, else `"landmarks"`;
16
+ * - `"none"` — the head pose only.
17
+ */
18
+ export type FaceDriveMode = "auto" | "hybrid" | "morphs" | "landmarks" | "none";
19
+ /** What a resolved drive mode does for one model. */
20
+ export type FaceDrivePlan = {
21
+ mode: Exclude<FaceDriveMode, "auto">;
22
+ /** Whether the landmarks bend the mesh. */
23
+ landmarks: boolean;
24
+ /** The face regions whose morph targets are driven. */
25
+ morphRegions: ReadonlySet<FaceMorphRegion>;
26
+ /**
27
+ * Per landmark, how much of its offset to drop (1 = all): the regions the
28
+ * morphs take over in `"hybrid"`, so the two never fight. `null` = none.
29
+ */
30
+ mask: Float32Array | null;
31
+ /** Whether eyeball parts turn with the gaze. */
32
+ gaze: boolean;
33
+ };
34
+ /** Resolves a drive mode for a bound model (`"auto"` looks at its morph targets). */
35
+ export declare const planFaceDrive: (meshes: readonly BoundFaceMesh[], mode: FaceDriveMode) => FaceDrivePlan;
36
+ export type DriveFaceModelOptions = {
37
+ /** Expression strength: 0 = rest, 1 = the tracked face, > 1 exaggerates. Default 1. */
38
+ expression?: number;
39
+ /** Per expression channel (by `FACE_MORPH_NAMES` index): a gain on its morph. */
40
+ morphGain?: ArrayLike<number> | null;
41
+ /** How far a full look turns an eyeball: [sideways, up/down], degrees. Default [25, 20]. */
42
+ gazeDegrees?: readonly [number, number];
43
+ /**
44
+ * The head-size fit: the model's width at the ears and back of the head as
45
+ * a multiple of its own (1 = as modelled), ramping in from the face
46
+ * (`BoundFaceMesh.widen`). Surface and rigid parts; the face itself keeps its fit.
47
+ */
48
+ headWidth?: number;
49
+ };
50
+ /**
51
+ * One frame of a bound face model: bends the meshes by the landmarks and sets
52
+ * the morph targets and eyeball turns from the rig, as `plan` says. `rig`
53
+ * `null` or lost returns everything to rest. Writes the meshes' position
54
+ * attributes and `morphTargetInfluences`; leaves morph targets no expression
55
+ * channel drives untouched (so your own animation keeps them).
56
+ */
57
+ export declare const driveFaceModel: (meshes: readonly BoundFaceMesh[], plan: FaceDrivePlan, rig: Pick<FaceRigState, "residual" | "morphs" | "tracking"> | null, { expression, morphGain, gazeDegrees, headWidth }?: DriveFaceModelOptions) => void;
@@ -0,0 +1,45 @@
1
+ import { ExpressionRule, ExpressionState } from './faceExpressions';
2
+ import * as THREE from "three";
3
+ /**
4
+ * Where a controller rule writes its value (all optional, any combination),
5
+ * on the object named `target` in the controller's subtree (default: the
6
+ * whole subtree):
7
+ * - `morph` — morph target(s) by name on every mesh under it (an ARKit name
8
+ * also matches its Face Cap / Blender spelling: `eyeBlinkLeft` ↔ `eyeBlink_L`);
9
+ * - `property` — a material uniform (`uniforms[name].value`) or numeric
10
+ * property (`emissiveIntensity`, `opacity`) on every material under it;
11
+ * - `visible` — shown while the value is ≥ `above` (default 0.5) and/or ≤ `below`;
12
+ * - `transform` — an offset from the target's rest at value 1 (`position` in
13
+ * its parent's units, `rotation` in degrees, `scale` as a factor), scaled by
14
+ * the value; several rules on one target add up;
15
+ * - `set` — your own setter, called every frame with the value.
16
+ */
17
+ export type ExpressionOutputs = {
18
+ target?: string;
19
+ morph?: string | readonly string[];
20
+ property?: string;
21
+ visible?: {
22
+ above?: number;
23
+ below?: number;
24
+ };
25
+ transform?: {
26
+ position?: readonly [number, number, number];
27
+ rotation?: readonly [number, number, number];
28
+ scale?: number;
29
+ };
30
+ set?: (value: number) => void;
31
+ };
32
+ /** A rule with outputs (what `FaceExpressionController` takes). */
33
+ export type ExpressionOutputRule = ExpressionRule & ExpressionOutputs;
34
+ /**
35
+ * The outputs of a rule set on a subtree: binds each rule's targets (morph
36
+ * slots, materials, the transform target's rest) and writes the values every
37
+ * frame. `resolve()` again when the subtree changes (`FaceExpressionController`
38
+ * does it every second, so late-loading children are picked up).
39
+ */
40
+ export declare const createExpressionOutputs: (root: THREE.Object3D) => {
41
+ /** Binds `rules` to the subtree; with `warn`, reports targets it cannot find (once each). */
42
+ resolve(rules: readonly ExpressionOutputRule[], warn?: boolean): void;
43
+ /** Writes this frame's values (`state` from `stepExpressions`). */
44
+ apply(rules: readonly ExpressionOutputRule[], state: ExpressionState): void;
45
+ };
@@ -0,0 +1,104 @@
1
+ import { FaceActionName } from '../face-action';
2
+ import { FaceInfo } from '../face-info';
3
+ import { FaceMorphName } from './faceMorphs';
4
+ import { FaceRigState } from './faceRig';
5
+ /** What a face rig exposes to expression rules, per frame. */
6
+ export type ExpressionFrame = {
7
+ /** The 51 blendshape channels, 0..1, the person's neutral removed (`FaceRigState.morphs`). */
8
+ morphs: ArrayLike<number>;
9
+ /** The raw face (blendshapes as MediaPipe reports them, head rotation), or `null`. */
10
+ face: FaceInfo | null;
11
+ /** Whether a face drives the rules this frame (tracked or held). */
12
+ live: boolean;
13
+ };
14
+ /**
15
+ * What a rule reads:
16
+ * - a blendshape channel by ARKit name (`"jawOpen"`), neutral removed;
17
+ * - several combined: `{ channels: ["mouthSmileLeft", "mouthSmileRight"], combine: "avg" }`
18
+ * (`"max"` default, `"min"`, `"avg"`, `"sum"`);
19
+ * - a Face Action's value (`{ action: "mouthOpen" }`, as `useFaceAction` reads it:
20
+ * raw blendshapes, head turns in radians; left / right are the person's own);
21
+ * - your own function of the frame.
22
+ */
23
+ export type ExpressionInput = FaceMorphName | {
24
+ channels: readonly FaceMorphName[];
25
+ combine?: "max" | "min" | "avg" | "sum";
26
+ } | {
27
+ action: FaceActionName;
28
+ } | ((frame: ExpressionFrame) => number);
29
+ /**
30
+ * How a rule turns its input into a value, every frame:
31
+ * `input → range (→ 0..1) → curve → × multiplier → clamp → smoothing`.
32
+ */
33
+ export type ExpressionShape = {
34
+ /**
35
+ * The input span mapped onto 0..1: below the first value reads 0, above the
36
+ * second reads 1 (a dead zone and a saturation). Default `[0, 1]`.
37
+ */
38
+ range?: readonly [number, number];
39
+ /** Exponent on the 0..1 value: > 1 eases in (subtle until strong), < 1 eases out. Default 1. */
40
+ curve?: number;
41
+ /** Scale after the curve (exaggerate > 1, tone down < 1). Default 1. */
42
+ multiplier?: number;
43
+ /** Limits after the multiplier. Default `[0, max(1, multiplier)]`. */
44
+ clamp?: readonly [number, number];
45
+ /**
46
+ * Per-frame EMA toward the target, `1` = none: one factor, or separate
47
+ * `attack` (rising) and `release` (falling) — e.g. a snappy blink that
48
+ * reopens softly. Default 0.6.
49
+ */
50
+ smoothing?: number | {
51
+ attack: number;
52
+ release: number;
53
+ };
54
+ /** The value at rest: on face loss (with `onLost: "rest"`) and after a reset. Default 0. */
55
+ rest?: number;
56
+ /** On face loss: ease back to `rest` (default) or `"hold"` the last value. */
57
+ onLost?: "rest" | "hold";
58
+ };
59
+ /**
60
+ * One rule: an input, its shaping, and (in `FaceExpressionController`) the
61
+ * outputs it drives. `id` names it in readouts and `useExpressionValues`.
62
+ */
63
+ export type ExpressionRule = ExpressionShape & {
64
+ id?: string;
65
+ input: ExpressionInput;
66
+ /**
67
+ * Edge events with hysteresis: `onStart` when the value rises to
68
+ * `trigger[0]`, `onEnd` when it falls back to `trigger[1]`. Default
69
+ * `[0.5, 0.35]`.
70
+ */
71
+ trigger?: readonly [number, number];
72
+ onStart?: () => void;
73
+ onEnd?: () => void;
74
+ };
75
+ /** A rule's live state. */
76
+ export type ExpressionValue = {
77
+ /** The shaped, smoothed value. */
78
+ value: number;
79
+ /** The shaped value before smoothing (this frame's target). */
80
+ target: number;
81
+ /** Whether the trigger is on (between `onStart` and `onEnd`). */
82
+ active: boolean;
83
+ };
84
+ export type ExpressionState = {
85
+ values: ExpressionValue[];
86
+ };
87
+ /** A rule's input, compiled to a reader (unknown names read 0 and warn once). */
88
+ type Reader = (frame: ExpressionFrame) => number;
89
+ export declare const compileExpressionInput: (input: ExpressionInput) => Reader;
90
+ /** Shapes a raw input value (no smoothing): range → curve → multiplier → clamp. */
91
+ export declare const shapeExpressionValue: (raw: number, shape?: ExpressionShape) => number;
92
+ export declare const createExpressionState: (rules: readonly ExpressionRule[]) => ExpressionState;
93
+ /** Puts every rule back at rest (and ends any active trigger, firing `onEnd`). */
94
+ export declare const resetExpressions: (state: ExpressionState, rules: readonly ExpressionRule[]) => void;
95
+ /**
96
+ * One frame of a rule set: reads each input from `frame`, shapes it, smooths
97
+ * it (attack / release) and fires its trigger edges. Readers come from
98
+ * `compileExpressionInput` (cache them with the rules). Pure apart from
99
+ * the callbacks; allocation-free.
100
+ */
101
+ export declare const stepExpressions: (state: ExpressionState, rules: readonly ExpressionRule[], readers: readonly Reader[], frame: ExpressionFrame) => ExpressionState;
102
+ /** Builds the frame a rule set reads from a face rig (and its raw face). */
103
+ export declare const expressionFrame: (rig: Pick<FaceRigState, "morphs" | "tracking" | "face"> | null, out?: ExpressionFrame) => ExpressionFrame;
104
+ export {};