@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,273 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * Face reprojection (#199): the live camera face, moved into a face model's
4
+ * own UV layout so the model can wear it as a texture. Two steps:
5
+ *
6
+ * 1. **Unwrap** — the camera face is laid out flat in the canonical face UV
7
+ * layout (`CANONICAL_FACE_UVS`): every landmark samples the camera image
8
+ * where the tracker found it. The eye and mouth openings, holes in the
9
+ * canonical surface, are filled so the eyes and the inside of the mouth
10
+ * come along.
11
+ * 2. **Remap** — every vertex of the model is bound once to its closest point
12
+ * on that (filled) canonical surface; drawn in its own UV layout, it reads
13
+ * the unwrapped face there.
14
+ *
15
+ * This file is the pure part (geometry, per-frame weights, bindings, the
16
+ * material patch); `FaceReprojector` renders it.
17
+ */
18
+ /** An opening in the canonical face surface, filled by the unwrap. */
19
+ export type FaceOpening = "leftEye" | "rightEye" | "mouth";
20
+ /** The canonical face surface with its openings filled, laid out for the unwrap. */
21
+ export type FaceUnwrapMesh = {
22
+ /** Vertices: the 468 landmarks, then one centre per opening. */
23
+ count: number;
24
+ /** Canonical head frame, cm (a centre: the average of its ring). */
25
+ positions: Float32Array;
26
+ /** Canonical UV, v up (a centre: the average of its ring). */
27
+ uvs: Float32Array;
28
+ /** Triangles: the canonical face, then the opening fans. */
29
+ index: Uint16Array;
30
+ /** Triangles of the canonical face itself (the fans follow). */
31
+ faceTriangleCount: number;
32
+ /** Per vertex: 0 on the outer edge of the face, 1 inside (the unwrap fades out at the edge). */
33
+ feather: Float32Array;
34
+ /**
35
+ * Each opening: its landmark ring (in loop order), its centre vertex and its
36
+ * fan's triangles (`[first, count]` in `index / 3`).
37
+ */
38
+ openings: Record<FaceOpening, {
39
+ ring: Int32Array;
40
+ centre: number;
41
+ triangles: [number, number];
42
+ }>;
43
+ };
44
+ /** A landmark as the face tracker reports it: normalized image x / y (0..1, y down), z in x units. */
45
+ export type FaceImageLandmark = {
46
+ x: number;
47
+ y: number;
48
+ z?: number;
49
+ };
50
+ /** The canonical face surface with its eye and mouth openings filled (built once). */
51
+ export declare const getFaceUnwrapMesh: () => FaceUnwrapMesh;
52
+ export type FaceUnwrapFrameOptions = {
53
+ /**
54
+ * How squarely a patch of skin must face the camera to be kept, as the
55
+ * cosine of its turn: fully below the first value (a cheek seen edge-on, its
56
+ * pixels smeared), fully kept above the second. Default `[0.05, 0.3]`.
57
+ */
58
+ facing?: readonly [number, number];
59
+ /**
60
+ * Drop the landmarks outside the image (weight 0): a point past the edge
61
+ * samples the clamped edge pixels, not the face. Each opening's centre
62
+ * follows its ring. `FaceReprojector` also drops every sample past the
63
+ * edge in its shader, so the cut is exact. Default `false`;
64
+ * `FaceReprojector` turns it on with `mirrorFill`, so the mirror twin fills
65
+ * those points.
66
+ */
67
+ inFrame?: boolean;
68
+ };
69
+ /** The default `facing` of the unwrap. */
70
+ export declare const FACE_UNWRAP_FACING: readonly [number, number];
71
+ /**
72
+ * How squarely each unwrap vertex faces the camera, 0..1, for the
73
+ * `getFaceUnwrapMesh().count` (471) vertices: each landmark takes the mean
74
+ * turn of its triangles (on-screen area over 3D area, the cosine of the turn
75
+ * away from the camera), through `smoothstep(facing[0], facing[1], cos)`; each
76
+ * opening's centre takes the mean of its ring. A mirrored image gives the same
77
+ * values (the face's side is the one most of its area shows). `aspect` is the
78
+ * image's width / height; `out` (at least 471 long) is written in place (no
79
+ * allocation). Throws when `out` or `landmarks` is too short.
80
+ */
81
+ export declare const writeFaceFacing: (landmarks: ArrayLike<FaceImageLandmark>, aspect: number, facing: readonly [number, number], out: Float32Array) => void;
82
+ /**
83
+ * One frame of the unwrap: where each unwrap vertex samples the camera image
84
+ * (`cameraUv`, texture space: x right, y up) and how much of it to keep
85
+ * (`weight`: the edge feather times `writeFaceFacing`, 0 outside the image
86
+ * with `inFrame`). The landmarks are the tracker's for this frame, in the
87
+ * camera image's own space (a mirrored webcam is mirrored before tracking,
88
+ * so they match the camera texture as it is). `aspect` is the camera image's
89
+ * width / height. `cameraUv` (942) and `weight` (471) are written in place.
90
+ */
91
+ export declare const writeFaceUnwrapFrame: (landmarks: ArrayLike<FaceImageLandmark>, aspect: number, { facing, inFrame }: FaceUnwrapFrameOptions, cameraUv: Float32Array, weight: Float32Array) => void;
92
+ /**
93
+ * The unwrap mesh's UVs in another per-landmark layout (`uvs`: ≥ 468 `[u, v]`
94
+ * pairs, v up), with each opening's centre at the mean of its ring, so the
95
+ * same mesh unwraps into that layout. `CANONICAL_FACE_UVS` (the default)
96
+ * gives `getFaceUnwrapMesh().uvs`; a layout it returned gives itself back.
97
+ * Cached per array (shared: do not mutate).
98
+ */
99
+ export declare const getFaceUnwrapUvs: (uvs?: ArrayLike<number>) => Float32Array;
100
+ /**
101
+ * Each unwrap vertex's mirror twin, the vertex at `(−x, y, z)`: the 468
102
+ * landmarks by `FACE_ATLAS_MIRROR` (exact, its own inverse), the eye centres
103
+ * swapped and the mouth centre on itself. Shared: do not mutate.
104
+ */
105
+ export declare const getFaceUnwrapMirror: () => Int32Array;
106
+ /**
107
+ * `mirrorFill` fills a point from its mirror twin only where the twin's
108
+ * weight is clearly better: not at all below the first difference, fully
109
+ * above the second (smoothstep between). Small differences (a face turned a
110
+ * few degrees, the two halves' triangulation) keep the point's own pixels,
111
+ * so asymmetric details (a mole, a parting) are not copied across.
112
+ */
113
+ export declare const FACE_MIRROR_FILL_RAMP: readonly [number, number];
114
+ /**
115
+ * The second unwrap draw of `mirrorFill`, from one frame of the first
116
+ * (`writeFaceUnwrapFrame`'s `cameraUv` and `weight`): each vertex samples its
117
+ * mirror twin's camera point, weighted to fill only what the first draw left
118
+ * uncovered. Drawn "under" the first (premultiplied, `dst + (1 − dst.a)·src`),
119
+ * a vertex ends at `w + r·(w_twin − w)`, `r` = `FACE_MIRROR_FILL_RAMP` of the
120
+ * difference (0 where its own weight is the better one):
121
+ * `w′ = r·(w_twin − w) / (1 − w)`. A face seen square on is all but unchanged.
122
+ */
123
+ export declare const writeFaceMirrorFill: (cameraUv: Float32Array, weight: Float32Array, mirrorCameraUv: Float32Array, mirrorWeight: Float32Array) => void;
124
+ /**
125
+ * A binding's per-vertex UV in another unwrap layout: where each vertex reads
126
+ * the unwrap of a `FaceReprojector` made with `uvs` (e.g. `FACE_ATLAS_UVS`).
127
+ * `binding.canonicalUv` is always the canonical layout; this is the same
128
+ * surface point (the barycentric blend of its bound triangle's corners) in
129
+ * `uvs` (≥ 468 `[u, v]` pairs per landmark, or a `getFaceUnwrapUvs` result).
130
+ * Unbound vertices read `(0, 0)`. Writes `out` (2 per vertex; made when not
131
+ * given) and returns it. Use it as the `faceUv` attribute of
132
+ * `patchFaceReprojectionMaterial(..., { attributes: true })` with that
133
+ * reprojector's `unwrapTexture`.
134
+ */
135
+ export declare const writeFaceReprojectionLayoutUv: (binding: Pick<FaceReprojectionBinding, "triangle" | "weights">, uvs: ArrayLike<number>, out?: Float32Array) => Float32Array;
136
+ /** Where each vertex of a face model reads the unwrapped face. Arrays are per vertex. */
137
+ export type FaceReprojectionBinding = {
138
+ /** The bound triangle of the filled canonical face (`getFaceUnwrapMesh().index / 3`), or -1. */
139
+ triangle: Int32Array;
140
+ /** Barycentric weights of its three corners (flat, 3 per vertex). */
141
+ weights: Float32Array;
142
+ /**
143
+ * The canonical UV of its closest point on the (filled) canonical face
144
+ * (flat, v up). Always the canonical layout (`CANONICAL_FACE_UVS`), whatever
145
+ * a reprojector's `uvs`: `writeFaceReprojectionLayoutUv` gives the same
146
+ * point in another layout.
147
+ */
148
+ canonicalUv: Float32Array;
149
+ /** How much of the camera face it takes, 0..1 (fading with distance from that surface). */
150
+ coverage: Float32Array;
151
+ /** Signed distance from that surface point, cm (+ = in front of the face). */
152
+ distance: Float32Array;
153
+ };
154
+ export type FaceReprojectionBindingOptions = {
155
+ /**
156
+ * How far from the canonical face surface (cm, either side) a vertex still
157
+ * takes the camera face: fully up to the first value, not at all beyond the
158
+ * second. Default `[1, 3]` — a character's own proportions (a bigger nose, a
159
+ * deeper brow) still read the face; the back of the head does not. The
160
+ * unwrap already fades out at the edge of the face.
161
+ */
162
+ falloff?: readonly [number, number];
163
+ /**
164
+ * Which filled openings the vertices may bind to (the face skin itself
165
+ * always). Default all. Skin with eyelids that a blink morph closes should
166
+ * leave the eyes out (`["mouth"]`) — else a lid's edge, sitting in the eye
167
+ * opening, wears the eye; eyeballs take `["leftEye", "rightEye"]`.
168
+ */
169
+ openings?: readonly FaceOpening[];
170
+ };
171
+ /** The closest point on a triangle mesh: its triangle (or -1), barycentric weights, squared distance. */
172
+ export type ClosestPoint = {
173
+ triangle: number;
174
+ u: number;
175
+ v: number;
176
+ w: number;
177
+ d2: number;
178
+ };
179
+ /**
180
+ * A closest-point search over a triangle mesh (`positions` flat xyz,
181
+ * `index` flat triangles; `skip[t]` leaves a triangle out). Triangles are
182
+ * bucketed in a uniform grid by their bounding boxes; a query visits cells in
183
+ * growing shells around the point and stops once no unvisited cell can be
184
+ * closer than the best hit — near-constant time per query instead of a scan of
185
+ * every triangle (a 7 500-vertex transfer onto a 4 600-triangle head: ~400 ms
186
+ * → a few ms). The returned function fills `out`.
187
+ */
188
+ export declare const createClosestPointSearch: (positions: Float32Array, index: ArrayLike<number>, skip?: Uint8Array) => (px: number, py: number, pz: number, out: ClosestPoint) => ClosestPoint;
189
+ /**
190
+ * Binds a face model's vertices (canonical head frame, cm, flat) to the
191
+ * filled canonical face: each takes the canonical UV of its closest surface
192
+ * point. Pure; run once per mesh.
193
+ */
194
+ export declare const bindFaceReprojection: (positions: ArrayLike<number>, { falloff, openings }?: FaceReprojectionBindingOptions) => FaceReprojectionBinding;
195
+ /**
196
+ * Which part of the camera face to take: the whole face, or only the eyes
197
+ * and / or the mouth (soft ellipses around the openings, eyelids and lips
198
+ * included) — the classic "your eyes and mouth on a character".
199
+ */
200
+ export type FaceReprojectionRegion = "face" | "eyes" | "mouth" | "eyesAndMouth";
201
+ /**
202
+ * The region ellipses in the canonical head frame (cm): `[x, y, radiusX,
203
+ * radiusY]` for the left eye, the right eye and the mouth.
204
+ */
205
+ export declare const faceReprojectionRegionEllipses: () => [number, number, number, number][];
206
+ /** Region switches `[leftEye, rightEye, mouth, all]` for a `FaceReprojectionRegion`. */
207
+ export declare const faceReprojectionRegionMask: (region: FaceReprojectionRegion) => [number, number, number, number];
208
+ /**
209
+ * How a model's material shows the reprojected face:
210
+ * - `"unlit"` (default) — as it is in the camera image (already lit by the
211
+ * room), so it reads as the real face;
212
+ * - `"lit"` — as the material's base colour, shaded by the scene lights.
213
+ */
214
+ export type FaceReprojectionShading = "unlit" | "lit";
215
+ /** The uniforms a patched material reads (shared, so one update reaches every material). */
216
+ export type FaceReprojectionUniforms = {
217
+ faceReprojectionMap: {
218
+ value: THREE.Texture | null;
219
+ };
220
+ /** 0..1, how much of the camera face shows. */
221
+ faceReprojectionAmount: {
222
+ value: number;
223
+ };
224
+ /** 1 = lit, 0 = unlit. */
225
+ faceReprojectionLit: {
226
+ value: number;
227
+ };
228
+ /** 0..1, skin fill beyond the face (materials patched with `fill`; needs a mipmapped map). */
229
+ faceReprojectionFill: {
230
+ value: number;
231
+ };
232
+ /** cm from the face where the fill has faded out (it fades over the last 20 %). */
233
+ faceReprojectionFillReach: {
234
+ value: number;
235
+ };
236
+ /** The map's texels per cm of canonical face (`faceUnwrapTexelsPerCm`): sets how fast the fill blurs. */
237
+ faceReprojectionFillTexelsPerCm: {
238
+ value: number;
239
+ };
240
+ };
241
+ export declare const createFaceReprojectionUniforms: () => FaceReprojectionUniforms;
242
+ /** Default reach of the skin fill, cm from the face: the whole head and neck of a life-size model. */
243
+ export declare const FACE_REPROJECTION_FILL_REACH = 30;
244
+ /**
245
+ * Texels of an unwrap `resolution` px wide per cm of canonical face (the
246
+ * canonical layout's width in UV over its width in cm). The skin fill blurs
247
+ * by about one texel-cm per cm from the face.
248
+ */
249
+ export declare const faceUnwrapTexelsPerCm: (resolution: number) => number;
250
+ /**
251
+ * Patches a built-in three.js material (standard, physical, lambert, phong,
252
+ * toon, basic …) to wear a reprojected face texture over its own colour: the
253
+ * texture (premultiplied alpha, in the mesh's own UV layout) covers the base
254
+ * colour where its alpha is, unlit as emissive or lit as base colour. Use it
255
+ * on a material you own (clone a shared one first).
256
+ *
257
+ * `{ attributes: true }` reads the UV and the coverage from the geometry's
258
+ * `faceUv` / `faceCoverage` attributes instead (pass the UNWRAP texture as the
259
+ * map): a mesh bound to the face needs no remap pass. `faceUv` must be in the
260
+ * unwrap's layout: `binding.canonicalUv` for the default canonical layout,
261
+ * `writeFaceReprojectionLayoutUv(binding, uvs)` for a reprojector made with
262
+ * `uvs`. A mismatch draws a scrambled face, with no error.
263
+ *
264
+ * `{ attributes: true, fill: true }` also fills the skin beyond the face (the
265
+ * `faceReprojectionFill*` uniforms; see `FACE_REPROJECTION_FILL_GLSL`) and
266
+ * reads a `faceDistance` attribute: each vertex's distance from the
267
+ * canonical face, cm (`Math.abs(binding.distance[i])`). The map must be
268
+ * mipmapped for it.
269
+ */
270
+ export declare const patchFaceReprojectionMaterial: (material: THREE.Material, uniforms: FaceReprojectionUniforms, { attributes, fill }?: {
271
+ attributes?: boolean;
272
+ fill?: boolean;
273
+ }) => void;
@@ -0,0 +1,171 @@
1
+ import { FaceImageLandmark, FaceOpening, FaceReprojectionBindingOptions, FaceReprojectionRegion, FaceUnwrapFrameOptions } from './faceReprojection';
2
+ import * as THREE from "three";
3
+ /** One mesh to reproject onto: its geometry (with a `uv`) and its vertices in the canonical head frame. */
4
+ export type FaceReprojectionTarget = {
5
+ geometry: THREE.BufferGeometry;
6
+ /** The geometry's vertices in the canonical head frame (cm, flat), for the binding. */
7
+ canonical: ArrayLike<number>;
8
+ /** Which filled openings it binds to (see `FaceReprojectionBindingOptions.openings`). Default all. */
9
+ openings?: readonly FaceOpening[];
10
+ };
11
+ export type FaceReprojectorOptions = FaceUnwrapFrameOptions & FaceReprojectionBindingOptions & {
12
+ /** The output texture's size (px, square). Default 1024. */
13
+ resolution?: number;
14
+ /** The unwrapped canonical face texture's size (px, square). Default 512. */
15
+ unwrapResolution?: number;
16
+ /** Edge padding around the model's UV islands, px (0–4). Default 2. */
17
+ padding?: number;
18
+ /**
19
+ * The unwrap's UV layout: one `[u, v]` per landmark (v up, at least 468
20
+ * pairs). Default `CANONICAL_FACE_UVS` (face characters, `FaceMorph`).
21
+ * Pass `FACE_ATLAS_UVS` to unwrap into the face atlas (face swap, makeup
22
+ * art). The remap reads the unwrap in the same layout, so targets
23
+ * (`setTargets`, `texture`) still get their own atlas.
24
+ *
25
+ * The canonical-layout paths do not follow it:
26
+ * `bindFaceReprojection(...).canonicalUv`, a `faceUv` attribute and
27
+ * `patchFaceReprojectionMaterial(..., { attributes: true })` read
28
+ * `unwrapTexture` in the canonical layout. With `uvs`, wear the face
29
+ * through `setTargets` / `texture`, or convert a binding with
30
+ * `writeFaceReprojectionLayoutUv(binding, uvs)`.
31
+ */
32
+ uvs?: ArrayLike<number>;
33
+ /** Mipmap the unwrap, for reading it smaller than it is (sRGB, so the mips average in linear light). Default `false`. */
34
+ unwrapMipmaps?: boolean;
35
+ /**
36
+ * Fill skin the camera does not see (the far side of a turned face) from
37
+ * the other side, once, when the unwrap is made: a second draw samples
38
+ * each point's mirror twin and fills only what the first draw left
39
+ * uncovered, so a face seen square on is unchanged. Points outside the
40
+ * image count as unseen (`inFrame` defaults to on with it), so the twin
41
+ * fills them too. Default `false`.
42
+ */
43
+ mirrorFill?: boolean;
44
+ /**
45
+ * Edge padding of the unwrap, px (0–16). Default 0. It pads alpha as
46
+ * well: coverage grows by up to this many px at the face's edge and into
47
+ * unseen holes (spots that neither the camera nor `mirrorFill` saw), so
48
+ * padded texels count as seen.
49
+ */
50
+ unwrapPadding?: number;
51
+ };
52
+ /** The largest `unwrapPadding` (px). */
53
+ export declare const FACE_UNWRAP_MAX_PADDING = 16;
54
+ /**
55
+ * The filled canonical face laid out in an unwrap layout (see
56
+ * `getFaceUnwrapUvs`): `position` = the layout UV (z 0), `canonical` = the
57
+ * rest position (cm), and per-frame `cameraUv` (2) and `weight` (1), ready
58
+ * for `writeFaceUnwrapFrame`. Shared attributes can be passed to make a
59
+ * second geometry over the same buffers (only `cameraUv` and `weight` are its
60
+ * own). The caller disposes it.
61
+ */
62
+ export declare const createFaceUnwrapGeometry: (uvs?: ArrayLike<number>, share?: THREE.BufferGeometry) => THREE.BufferGeometry;
63
+ /**
64
+ * Renders the live camera face into a face model's own UV layout (see
65
+ * `faceReprojection.ts`): `unwrapTexture` holds the camera face in the
66
+ * unwrap layout (`uvs`, default the canonical face UVs), `texture` the same
67
+ * face in the targets' layout. Both are premultiplied-alpha, transparent
68
+ * where there is no face. Call `render` once per new camera frame (or per new
69
+ * image); `dispose` when done. No React needed.
70
+ */
71
+ export declare class FaceReprojector {
72
+ readonly unwrapTarget: THREE.WebGLRenderTarget;
73
+ readonly target: THREE.WebGLRenderTarget;
74
+ /** The remap before edge padding. */
75
+ private readonly remapTarget;
76
+ /** The unwrap before its edge padding (made on first use). */
77
+ private unwrapRawTarget;
78
+ private readonly padUniforms;
79
+ private readonly padScene;
80
+ private readonly padMaterial;
81
+ private readonly unwrapPadUniforms;
82
+ private readonly unwrapPadScene;
83
+ private readonly unwrapPadMaterial;
84
+ readonly unwrapUniforms: {
85
+ cameraMap: {
86
+ value: THREE.Texture | null;
87
+ };
88
+ regions: {
89
+ value: THREE.Vector4[];
90
+ };
91
+ regionMask: {
92
+ value: THREE.Vector4;
93
+ };
94
+ regionSoftness: {
95
+ value: number;
96
+ };
97
+ /** 1: drop samples past the image's edge (`inFrame`). */
98
+ inFrame: {
99
+ value: number;
100
+ };
101
+ };
102
+ readonly remapUniforms: {
103
+ unwrapMap: {
104
+ value: THREE.Texture | null;
105
+ };
106
+ maskMap: {
107
+ value: THREE.Texture | null;
108
+ };
109
+ useMask: {
110
+ value: number;
111
+ };
112
+ canonicalMaskMap: {
113
+ value: THREE.Texture | null;
114
+ };
115
+ useCanonicalMask: {
116
+ value: number;
117
+ };
118
+ };
119
+ private readonly camera;
120
+ private readonly unwrapScene;
121
+ private readonly remapScene;
122
+ private readonly unwrapGeometry;
123
+ private readonly unwrapMaterial;
124
+ /** `mirrorFill`'s second draw: the same mesh, sampling each vertex's mirror twin. */
125
+ private readonly mirrorGeometry;
126
+ private readonly mirrorMesh;
127
+ private readonly mirrorMaterial;
128
+ private readonly remapMaterial;
129
+ private remapMeshes;
130
+ /** Each remap mesh's binding (to re-lay its `canonicalUv` when `uvs` changes). */
131
+ private remapBindings;
132
+ /** The unwrap layout (`getFaceUnwrapUvs(options.uvs)`). */
133
+ private layout;
134
+ private options;
135
+ /** The frame options `render` passes on (one object, reused). */
136
+ private readonly frame;
137
+ constructor(options?: FaceReprojectorOptions);
138
+ /** The face model's texture: the camera face in the targets' UV layout. */
139
+ get texture(): THREE.Texture;
140
+ /** The camera face in the unwrap layout (`uvs`; default the canonical face UVs). */
141
+ get unwrapTexture(): THREE.Texture;
142
+ /**
143
+ * Changes the options. Sizes resize the textures; `uvs` re-lays the unwrap
144
+ * and the bound targets; a `falloff` change needs `setTargets` again.
145
+ */
146
+ setOptions(options: FaceReprojectorOptions): void;
147
+ /** Which part of the face to take (see `FaceReprojectionRegion`). */
148
+ setRegion(region: FaceReprojectionRegion): void;
149
+ /**
150
+ * Optional masks (their red channel): `mask` in the targets' own UV layout
151
+ * (loaded like the model's own map — glTF textures have `flipY = false`),
152
+ * `canonicalMask` in the unwrap layout (`uvs`; default the canonical face UVs).
153
+ */
154
+ setMasks(mask: THREE.Texture | null, canonicalMask: THREE.Texture | null): void;
155
+ /** The meshes whose UV layout the output follows (they share one atlas). Binds them (once). */
156
+ setTargets(targets: readonly FaceReprojectionTarget[]): void;
157
+ /** A remap mesh's `canonicalUv`: where each vertex reads the unwrap, in its layout. */
158
+ private writeRemapUv;
159
+ /**
160
+ * Renders one frame: `cameraTexture` is the session's camera image (as the
161
+ * tracker saw it), `landmarks` the tracked face's (≥ 468, normalized image
162
+ * space). Any image works the same way (a photo in a `CanvasTexture` with
163
+ * its detected landmarks). Leaves the renderer's target and clear colour as
164
+ * they were.
165
+ */
166
+ render(renderer: THREE.WebGLRenderer, cameraTexture: THREE.Texture, landmarks: ArrayLike<FaceImageLandmark>): void;
167
+ private rawUnwrapTarget;
168
+ private restore;
169
+ private clearTargets;
170
+ dispose(): void;
171
+ }
@@ -0,0 +1,176 @@
1
+ import { LandmarkLead } from '../face-atlas/lead';
2
+ import { FaceInfo, FaceInfoTarget } from '../face-info';
3
+ import { LandmarkPoseSmoothingState } from '../components/HeadOccluder/useLandmarkPoseFit';
4
+ import { XRModelNodeFaceTracking } from '../types/nodes';
5
+ import * as THREE from "three";
6
+ /** Number of expression channels (`FACE_MORPH_NAMES`). */
7
+ export declare const FACE_MORPH_COUNT: number;
8
+ /**
9
+ * Where a face rig stands: following a tracked face, holding its last pose
10
+ * through a short dropout, or lost (hidden).
11
+ */
12
+ export type FaceRigTracking = "tracked" | "held" | "lost";
13
+ export type FaceRigOptions = {
14
+ /**
15
+ * Per-frame EMA factor for the head pose while the head is still, `1` = no
16
+ * smoothing. Adaptive: fast head motion follows immediately (full speed at
17
+ * `FACE_RIG_FAST_TURN_DEG` per frame), so a quick shake does not trail.
18
+ * Default 0.5.
19
+ */
20
+ smoothing?: number;
21
+ /**
22
+ * Per-frame EMA factor for the expression (the per-landmark offsets), `1` =
23
+ * none. MediaPipe's landmark depth is noisy; a little smoothing keeps a
24
+ * bound mesh calm. Default 0.6.
25
+ */
26
+ expressionSmoothing?: number;
27
+ /** Keep the last pose and expression through dropouts shorter than this (ms). Default 250. */
28
+ holdMs?: number;
29
+ /**
30
+ * The face at rest, subtracted from the offsets so a model keeps its OWN
31
+ * shape and only the expression moves it:
32
+ * - `"auto"` (default) — captured over the first `neutralMs` after the face
33
+ * is found (look at the camera with a relaxed face; `recalibrateFaceRig`
34
+ * captures again);
35
+ * - `"none"` — keep the person's face shape too (the mesh conforms to the
36
+ * face: wider eyes, a longer jaw …).
37
+ */
38
+ neutral?: "auto" | "none";
39
+ /** How long the neutral capture averages over (ms). Default 600. */
40
+ neutralMs?: number;
41
+ /**
42
+ * Landmark lead (ms), read by `FaceRig` / `stepFaceRigFromModel` (not by
43
+ * `stepFaceRig`). Inference runs below the render rate, so between two
44
+ * samples the landmarks hold while the camera image moves on. Above 0, the
45
+ * landmarks go through a `LandmarkLead` first: a One Euro filter (steady
46
+ * when still, quick when moving) plus a velocity lead of at most this long,
47
+ * so geometry drawn from the rig keeps up with the camera image. About one
48
+ * inference interval suits (33 ms at 30 Hz). Default 0: the raw landmarks,
49
+ * as before. Makeup's own rigs use 33 / 42 / 66 ms by quality tier.
50
+ */
51
+ leadMs?: number;
52
+ };
53
+ /**
54
+ * One face's live state in the canonical head frame, updated every frame by
55
+ * `stepFaceRig` (`FaceRig` does it from the tracker). Everything a face
56
+ * character needs: where the head is, and how the face has moved within it.
57
+ */
58
+ export type FaceRigState = {
59
+ tracking: FaceRigTracking;
60
+ /** Which tracked face drives it (set by `FaceRig`). */
61
+ faceIndex: number;
62
+ /** Last time a face was seen (ms), or `null`. */
63
+ lastSeenMs: number | null;
64
+ /**
65
+ * The head pose, canonical centimetres → world: `world = position +
66
+ * quaternion · (scale · canonical)`. Smoothed; snaps on (re)acquire.
67
+ */
68
+ pose: LandmarkPoseSmoothingState;
69
+ /**
70
+ * The live landmarks in the head frame of THIS frame's raw fit (canonical
71
+ * cm, flat, 468 × 3): what the expression is measured on.
72
+ */
73
+ local: Float32Array;
74
+ /**
75
+ * The live landmarks in the frame of the SMOOTHED `pose` — where they are
76
+ * on screen once drawn inside the rig (cm, flat, 468 × 3). Content that must
77
+ * sit exactly on the camera image (a warped or morphing face, a pin on the
78
+ * skin) uses these: `local` drawn through the smoothed pose trails a fast
79
+ * turn.
80
+ */
81
+ view: Float32Array;
82
+ /**
83
+ * The expression: live minus the face at rest per landmark (canonical cm,
84
+ * flat, 468 × 3), smoothed — the rest being the captured neutral face (or
85
+ * the canonical face with `neutral: "none"`). Near zero on the rigid
86
+ * landmarks; the jaw, lips, cheeks, brows and lids carry it. Zero while the
87
+ * neutral is being captured and when lost.
88
+ */
89
+ residual: Float32Array;
90
+ /** The captured neutral offsets (person's face shape − canonical, cm, flat). */
91
+ neutral: Float32Array;
92
+ /**
93
+ * The expression channels, 0..1, in `FACE_MORPH_NAMES` order (MediaPipe
94
+ * blendshapes): smoothed, with the person's resting values removed (a
95
+ * resting squint of 0.1 reads 0; a full blink still reads 1). Zero while
96
+ * the neutral is being captured and when lost or without scores.
97
+ */
98
+ morphs: Float32Array;
99
+ /** The resting blendshape scores captured with the neutral. */
100
+ morphNeutral: Float32Array;
101
+ /**
102
+ * The latest raw face (MediaPipe's blendshapes as reported, the head
103
+ * rotation reading, landmarks) — for Face Actions and custom logic; kept
104
+ * through a hold, `null` when lost. `FaceRig` fills it; `stepFaceRig` only
105
+ * clears it.
106
+ */
107
+ face: FaceInfo | null;
108
+ /** `"capturing"` until the neutral is averaged, then `"ready"` (always `"ready"` with `neutral: "none"`). */
109
+ neutralState: "capturing" | "ready";
110
+ /** When the current neutral capture started (ms), or `null` before the first tracked frame. */
111
+ neutralSince: number | null;
112
+ /** Frames averaged into `neutral` so far. */
113
+ neutralFrames: number;
114
+ };
115
+ export declare const createFaceRigState: () => FaceRigState;
116
+ /**
117
+ * Captures the neutral face again from the next tracked frames (call it while
118
+ * the person looks at the camera with a relaxed face). With `neutral: "auto"`
119
+ * this also happens on its own each time the face is found.
120
+ */
121
+ export declare const recalibrateFaceRig: (state: FaceRigState) => void;
122
+ /**
123
+ * Head motion per frame at which the pose stops smoothing and follows the
124
+ * tracker directly: this many degrees of turn, or `FACE_RIG_FAST_MOVE_CM` of
125
+ * travel. In between, the smoothing eases off in proportion.
126
+ */
127
+ export declare const FACE_RIG_FAST_TURN_DEG = 6;
128
+ export declare const FACE_RIG_FAST_MOVE_CM = 1.5;
129
+ /**
130
+ * One frame of a face rig. `world` is the face's 468 landmarks in world space
131
+ * (flat; each unprojected on its own depth plane, as the head fit does), or
132
+ * `null` when no face is tracked this frame. Solves the head pose from the
133
+ * rigid landmarks, smooths it, re-expresses every landmark in the head frame
134
+ * and smooths the per-landmark expression offsets. `scores` are the face's
135
+ * blendshape scores in `FACE_MORPH_NAMES` order (0..1), when the tracker has
136
+ * them. Returns `"found"` / `"lost"` on a tracking edge, else `null`.
137
+ * Allocation-free.
138
+ */
139
+ export declare const stepFaceRig: (state: FaceRigState, world: ArrayLike<number> | null, nowMs: number, { smoothing, expressionSmoothing, holdMs, neutral, neutralMs, }?: FaceRigOptions, scores?: ArrayLike<number> | null) => "found" | "lost" | null;
140
+ /**
141
+ * One rig's working memory for `stepFaceRigFromModel`: the rig state plus
142
+ * the scratch it fills every frame. Create one per rig and keep it.
143
+ */
144
+ export type FaceRigDriver = {
145
+ /** The rig it steps. */
146
+ readonly rig: FaceRigState;
147
+ /** The landmarks in world space, flat 468 × 3 (each on its own depth plane). */
148
+ readonly world: Float64Array;
149
+ /** Blendshape scores in `FACE_MORPH_NAMES` order. */
150
+ readonly scores: Float32Array;
151
+ /** Storage for `rig.face`. */
152
+ readonly faceInfo: FaceInfoTarget;
153
+ /** The landmark lead, created on the first step with `leadMs` > 0. */
154
+ lead: LandmarkLead | null;
155
+ /** The landmark array the lead last observed (a new array = a new inference). */
156
+ leadSample: unknown;
157
+ };
158
+ /** A driver for `rig` (a new rig state by default). */
159
+ export declare const createFaceRigDriver: (rig?: FaceRigState) => FaceRigDriver;
160
+ /**
161
+ * Restarts a driver's rig for another face source (a new camera, another
162
+ * video): captures the neutral again, snaps the pose and the landmark lead.
163
+ */
164
+ export declare const resetFaceRigDriver: (driver: FaceRigDriver) => void;
165
+ /**
166
+ * One frame of a face rig driven by the face model: `FaceRig`'s step without
167
+ * React. Reads face `faceIndex` from `node` (the shared face model's node),
168
+ * unprojects each landmark through `camera` on its own depth plane (the
169
+ * landmark z is in feed-width units around the head centre, as the head fit
170
+ * reads it), runs the landmark lead when `options.leadMs` > 0 (snapping it
171
+ * when a lost face is found again), then
172
+ * `stepFaceRig` with the blendshape scores, and refreshes `rig.face`. Returns
173
+ * `"found"` / `"lost"` on a tracking edge, else `null`. Allocation-free
174
+ * after the lead is created.
175
+ */
176
+ export declare const stepFaceRigFromModel: (driver: FaceRigDriver, node: XRModelNodeFaceTracking | null | undefined, faceIndex: number, camera: THREE.Camera, nowMs: number, options?: FaceRigOptions) => "found" | "lost" | null;