@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
@@ -18,6 +18,6 @@ export declare const useCalibrationFaceTracker: ({ enabled, displayMirrored, ima
18
18
  }) => {
19
19
  activeDelegate: "GPU";
20
20
  faces: import('../types').FaceTrackingResult[];
21
- status: "idle" | "ready" | "error" | "initializing";
21
+ status: "ready" | "error" | "idle" | "initializing";
22
22
  error: string | null;
23
23
  };
@@ -1,7 +1,19 @@
1
1
  import { FaceInfo } from '../face-info';
2
+ import { XRSubjectPolicy } from '../subjects/types';
2
3
  import { UseFaceInfosOptions } from './useFaceInfos';
3
4
  export type UseFaceInfoOptions = UseFaceInfosOptions & {
5
+ /** Result-array position to read (not a persistent identity). Default 0. Ignored when `subject` is set. */
4
6
  faceIndex?: number;
7
+ /**
8
+ * Multi-subject policy: pick the face by `largest`, `nearest-center`,
9
+ * `leftmost`, `rightmost`, or `sticky` (follows the previously selected
10
+ * face by proximity). With a policy and no `numFaces`, the model is asked
11
+ * for `DEFAULT_POLICY_NUM_FACES` (4) faces so the policy has candidates;
12
+ * pass `numFaces` to choose the count.
13
+ */
14
+ subject?: XRSubjectPolicy;
5
15
  };
16
+ /** Faces requested when a `subject` policy is set without `numFaces`. */
17
+ export declare const DEFAULT_POLICY_NUM_FACES = 4;
6
18
  /** Single-face selector over `useFaceInfos`; it does not create another reader loop. */
7
- export declare const useFaceInfo: ({ faceIndex, numFaces, ...options }?: UseFaceInfoOptions) => FaceInfo | null;
19
+ export declare const useFaceInfo: ({ faceIndex, numFaces, subject, ...options }?: UseFaceInfoOptions) => FaceInfo | null;
@@ -2,7 +2,7 @@ import { FaceInfo } from '../face-info';
2
2
  export type UseFaceInfosOptions = {
3
3
  /** Pauses this consumer's model interest when false. Default true. */
4
4
  active?: boolean;
5
- /** Maximum faces requested from the shared model. Default 1. */
5
+ /** Maximum faces requested from the shared model. Default 1, capped at 10 (`XR_MAX_SUBJECTS.face.max`). */
6
6
  numFaces?: number;
7
7
  /** Optional inference-rate cap. */
8
8
  targetFps?: number;
@@ -0,0 +1,38 @@
1
+ import { XRModelNodeFaceTracking } from '../types/nodes';
2
+ /**
3
+ * The face-model start rule shared by every component that starts the face
4
+ * model itself when no `FaceTracker` (or face rig) is above it: the
5
+ * face-atlas surfaces (makeup) and the live faces (face swap). Pair with
6
+ * `resolveNumFaces` (`lib/utils/resolveNumFaces.ts`) for the count.
7
+ */
8
+ /**
9
+ * Starts the shared face model (`useXRModel`'s acquire, without its
10
+ * re-render on readiness) while `enabled`, asking for `numFaces` faces.
11
+ * The first component to start the model sets its count; later ones share
12
+ * it. The acquire waits for the end of the commit's effects (a microtask),
13
+ * so a `FaceTracker` mounted beside the component in the same commit
14
+ * acquires first and its `numFaces` / `targetFps` win, as they did when face
15
+ * layers never started the model (alpha.8). Nothing outside an `XRProvider`.
16
+ */
17
+ export declare const useFaceModelAcquisition: (enabled: boolean, numFaces: number) => void;
18
+ /**
19
+ * True when the face model behind `node` was started with too few faces to
20
+ * ever report face `faceIndex` (`XRModelNodeFaceTracking.numFaces`). False
21
+ * while the node or its count is unknown.
22
+ */
23
+ export declare const faceModelMissesFace: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number) => boolean;
24
+ /**
25
+ * Warns once per face model and face index when the face model was started with
26
+ * fewer faces than `faceIndex + 1`: the face is then never tracked and the
27
+ * component draws nothing. `who` names the component in the message.
28
+ * Returns whether it warned now. Not gated on dev builds: a library build
29
+ * replaces `import.meta.env.DEV` with false, so a gated warning would never
30
+ * reach an app.
31
+ */
32
+ export declare const warnFaceModelMissesFace: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number, who: string) => boolean;
33
+ /**
34
+ * `warnFaceModelMissesFace` from React: checks whenever the face model's
35
+ * node (a new model) or the face index changes, while `enabled`. No per-frame
36
+ * cost: the node's `numFaces` is fixed once the node is published.
37
+ */
38
+ export declare const useFaceModelFaceCheck: (node: Pick<XRModelNodeFaceTracking, "numFaces"> | null | undefined, faceIndex: number, who: string, enabled?: boolean) => void;
@@ -0,0 +1,32 @@
1
+ import { GestureDetectorOptions, GestureState } from '../gestures/detector';
2
+ import { GestureRef } from '../gestures/definitions';
3
+ export type UseGestureOptions = Partial<GestureDetectorOptions> & {
4
+ /** Pause measuring (the tracker interest is released too). Default true. */
5
+ active?: boolean;
6
+ /** Face gestures: result-array index of the face. Default 0. */
7
+ faceIndex?: number;
8
+ /** Face gestures: faces to request from the shared model (first acquirer wins). */
9
+ numFaces?: number;
10
+ /** Hand gestures: prefer this hand when present. */
11
+ hand?: "left" | "right";
12
+ /** Hand gestures: positional fallback. Default 0. */
13
+ handIndex?: number;
14
+ /** Body gestures: pose index. Default 0. */
15
+ bodyIndex?: number;
16
+ /** Optional inference cap for the underlying model. */
17
+ targetFps?: number;
18
+ /** Lifecycle events; called from the frame loop with the state of that frame. */
19
+ onBegin?: (state: GestureState) => void;
20
+ onEnd?: (state: GestureState) => void;
21
+ onChange?: (state: GestureState) => void;
22
+ };
23
+ /**
24
+ * Detect one gesture from the tracker it needs. Acquires the shared face,
25
+ * hand or body model (no second detector), measures the definition every
26
+ * frame, and runs the gesture engine: enter/exit hysteresis, hold,
27
+ * cooldown, a confidence gate and a loss grace window. Returns React state
28
+ * that changes only when the gesture's state changes; `onBegin` / `onEnd` /
29
+ * `onChange` fire from the frame loop. Must run inside `XRProvider` and the
30
+ * R3F canvas.
31
+ */
32
+ export declare const useGesture: (gesture: GestureRef, options?: UseGestureOptions) => GestureState;
@@ -0,0 +1,45 @@
1
+ import { IrisResult } from '../iris/types';
2
+ export type IrisTrackingStatus = "loading" | "ready" | "error";
3
+ export type UseIrisTrackingOptions = {
4
+ /** Result-array index of the face to read. Default 0. */
5
+ faceIndex?: number;
6
+ /** Maximum faces requested from the shared face model (first acquirer wins). Default `faceIndex + 1`. */
7
+ numFaces?: number;
8
+ /** Pauses this consumer's model interest when false. Default true. */
9
+ active?: boolean;
10
+ /** Optional inference-rate cap for the shared face model. */
11
+ targetFps?: number;
12
+ /** Keep the last iris data for this long (ms) after the face drops. Default 250. */
13
+ holdMs?: number;
14
+ /** While held, extrapolate along the last velocity for up to this long (ms). Default 0. */
15
+ predictMs?: number;
16
+ /**
17
+ * One Euro smoothing of the iris centers and radius, same scale as
18
+ * `TrackingAnchor`'s `smoothing` (~15 is a good default; 0 = raw). Resets on
19
+ * re-acquire so the iris never slides in from a stale position.
20
+ */
21
+ smoothing?: number;
22
+ /**
23
+ * Inference runs below the render rate (24 fps by default against 60+
24
+ * rendered), so the iris would hold then jump on each sample. Between
25
+ * samples the centers are advanced along their last velocity for at most
26
+ * this long (ms), which keeps fast head motion continuous. Default 80;
27
+ * 0 disables.
28
+ */
29
+ leadMs?: number;
30
+ };
31
+ export type IrisTrackingHandle = {
32
+ /** Stable object, updated in place every frame. Read it inside `useFrame`. */
33
+ result: IrisResult;
34
+ /** True once the shared face model is registered without error. */
35
+ ready: boolean;
36
+ status: IrisTrackingStatus;
37
+ error: Error | null;
38
+ };
39
+ /**
40
+ * Per-frame iris reader over the shared face tracker: no second detector,
41
+ * the same `faceIndex` / `numFaces` selection as `useFaceInfo`, the SDK's
42
+ * one dropout bridge (`FaceTrackMemory`, hold 250 / predict 0) and optional
43
+ * One Euro smoothing. Must run inside `XRProvider` and the R3F canvas.
44
+ */
45
+ export declare const useIrisTracking: ({ faceIndex, numFaces, active, targetFps, holdMs, predictMs, smoothing, leadMs, }?: UseIrisTrackingOptions) => IrisTrackingHandle;
@@ -25,6 +25,12 @@ export type TrackerContextValue = {
25
25
  * `useFrame`.
26
26
  */
27
27
  resolveLandmark: TrackerLandmarkResolver;
28
+ /**
29
+ * The tracked subject this tracker binds to (`FaceTracker`'s `faceIndex`).
30
+ * Fitted children (`CanonicalHeadFrame`, `HeadAttachment`, `HeadOccluder`)
31
+ * default to it, so a subtree under `faceIndex={1}` follows face 1.
32
+ */
33
+ faceIndex?: number;
28
34
  };
29
35
  export declare const TrackerContext: import('react').Context<TrackerContextValue | null>;
30
36
  /**
@@ -0,0 +1,81 @@
1
+ import { XRModel, XRMediaSource } from '../constants';
2
+ import { XRModelDiagnostics } from '../models/Base';
3
+ import { XRSessionSourceKind } from '../types/compositor';
4
+ import { SessionFacade } from './useXRSession';
5
+ import { SessionLifecycleState, XRSessionError } from './useXRSession/store';
6
+ /** One tracker's health, merged from the registry and the model instance. */
7
+ export type XRModelDiagnosticsEntry = XRModelDiagnostics & {
8
+ model: XRModel;
9
+ /** Short human label (`face`, `hand`, …). */
10
+ label: string;
11
+ /**
12
+ * `unavailable`: nothing acquired it. `loading`: acquired, initializing.
13
+ * `ready`: running. `paused`: initialized but no active owner (or the
14
+ * session is stopped / paused). `error`: initialize or inference failed.
15
+ */
16
+ state: "unavailable" | "loading" | "ready" | "paused" | "error";
17
+ /** Inference-rate cap requested for this model (`null` = uncapped / unknown). */
18
+ targetFps: number | null;
19
+ /** Owners holding the model and those that want it running. */
20
+ owners: {
21
+ refs: string[];
22
+ active: string[];
23
+ };
24
+ };
25
+ export type XRSessionDiagnostics = {
26
+ lifecycle: SessionLifecycleState;
27
+ ready: boolean;
28
+ error: XRSessionError | undefined;
29
+ source: XRMediaSource | undefined;
30
+ sourceKind: XRSessionSourceKind | undefined;
31
+ /** Native media size. */
32
+ sourceWidth: number;
33
+ sourceHeight: number;
34
+ /** Tracker feed / render size. */
35
+ renderWidth: number;
36
+ renderHeight: number;
37
+ /** Frames the session blitted into the tracker feed per second (0 while paused). */
38
+ feedFps: number;
39
+ /** Total feed frames since the provider mounted. */
40
+ feedFrames: number;
41
+ };
42
+ export type XRDiagnostics = {
43
+ session: XRSessionDiagnostics;
44
+ /** Adaptive-quality tier (`null` when no controller is mounted). */
45
+ quality: {
46
+ tier: string;
47
+ index: number;
48
+ locked: boolean;
49
+ reason: string;
50
+ } | null;
51
+ models: XRModelDiagnosticsEntry[];
52
+ /** Sum of the last inference time of every running model (ms). */
53
+ inferenceMsTotal: number;
54
+ /** `performance.now()` when this sample was taken. */
55
+ sampledAt: number;
56
+ };
57
+ export type UseXRDiagnosticsOptions = {
58
+ /** Sampling period in ms (default 250). Diagnostics never sample per frame. */
59
+ intervalMs?: number;
60
+ /** Models to report; default every `XRModel`, so unacquired ones show as `unavailable`. */
61
+ models?: XRModel[];
62
+ /** `false` stops sampling (the last sample stays). Default `true`. */
63
+ enabled?: boolean;
64
+ };
65
+ export declare const XR_MODEL_LABELS: Record<XRModel, string>;
66
+ /**
67
+ * Take one diagnostics sample from a session. Pure over the session's current
68
+ * state; `previous` supplies the frame baseline for the feed fps.
69
+ */
70
+ export declare const sampleXRDiagnostics: (session: SessionFacade, models: XRModel[], previous: {
71
+ feedFrames: number;
72
+ sampledAt: number;
73
+ } | null, now?: number) => XRDiagnostics;
74
+ /**
75
+ * Opt-in tracking diagnostics: session lifecycle, source and feed size, feed
76
+ * frame rate, and per-model readiness, inference time and rate, skipped
77
+ * frames, detections, confidence and errors. Sampled on an interval (never per
78
+ * frame) only while a consumer is mounted, so it costs nothing in production
79
+ * until you render it. Requires an `<XRProvider>`.
80
+ */
81
+ export declare const useXRDiagnostics: (options?: UseXRDiagnosticsOptions) => XRDiagnostics;
@@ -1,4 +1,5 @@
1
1
  import { XRModel } from '../constants';
2
+ import { XRFallbackReason } from '../capabilities/types';
2
3
  /**
3
4
  * Serialize model options to a value-stable key. Exported for tests: the
4
5
  * acquire effect must key on this, not on the options object's identity.
@@ -8,6 +9,12 @@ export type UseXRModelResult<T extends Record<string, unknown>> = {
8
9
  ready: boolean;
9
10
  node: T | null;
10
11
  error: Error | null;
12
+ /**
13
+ * Structured cause when `error` is set (`model-unreachable`,
14
+ * `model-integrity`, `model-init-failed`, …); `null` while healthy. Camera
15
+ * failures are session-level: read `useXRError()` / `useXRTrackerStatus()`.
16
+ */
17
+ fallback: XRFallbackReason | null;
11
18
  };
12
19
  export declare function useXRModel<T extends Record<string, unknown>>(modelName: XRModel, options?: Record<string, unknown>,
13
20
  /**
@@ -1,6 +1,8 @@
1
1
  import { Camera, Scene, WebGLRenderer } from 'three';
2
2
  import { XRModel } from '../../constants';
3
- import { RegisterXRPipelineParams, SetFrameSourceParams, SetMediaSourceParams, XRPerfConfig } from '../../types';
3
+ import { XRCameraFacing, XRCameraRequest } from '../../types/compositor';
4
+ import { XRQualityConfig, XRQualityState } from '../../quality/types';
5
+ import { RegisterXRPipelineParams, SetFrameSourceParams, SetMediaSourceParams, XRLifecycleConfig, XRPerfConfig } from '../../types';
4
6
  import { ModelRegistry } from './registry';
5
7
  import { SessionStore } from './store';
6
8
  export type SessionFacade = {
@@ -11,6 +13,15 @@ export type SessionFacade = {
11
13
  start: () => Promise<void>;
12
14
  stop: () => Promise<void>;
13
15
  reset: () => Promise<void>;
16
+ pause: () => void;
17
+ resume: () => Promise<void>;
18
+ /**
19
+ * Open another camera (facing or device) on a live session, keeping every
20
+ * model and the lifecycle: a `setMediaSource({ source: WEBCAM, ...request })`
21
+ * that also starts a `media-bound` / `stopped` session. Resolves to the
22
+ * facing the session ended up with.
23
+ */
24
+ switchCamera: (request?: XRCameraRequest) => Promise<XRCameraFacing>;
14
25
  /** @deprecated prefer `useXRModel` */
15
26
  registerXRPipeline: (params: RegisterXRPipelineParams) => Promise<void>;
16
27
  getModelNode: <T extends Record<string, unknown>>(modelCode: XRModel) => T;
@@ -31,7 +42,36 @@ export type SessionFacade = {
31
42
  /** Update the session perf config (targetFps / camRes). Applied to models on
32
43
  * their next run; camRes takes effect on the next media (re)bind. */
33
44
  _setPerf: (perf: XRPerfConfig | undefined) => void;
45
+ /** Update the lifecycle config (visibility handling). */
46
+ _setLifecycle: (lifecycle: XRLifecycleConfig | undefined) => void;
47
+ /**
48
+ * Re-open the current webcam with the current perf config (a changed
49
+ * `camRes`). Keeps lifecycle and models; no-op for stream / canvas sources.
50
+ */
51
+ _rebindMedia: () => Promise<void>;
52
+ /** Publish adaptive-quality state (the controller owns it). */
53
+ _setQuality: (quality: XRQualityState | null) => void;
54
+ /** Publish the controller's resolved config so `useXRQuality()` resolves tiers against it. */
55
+ _setQualityConfig: (config: XRQualityConfig | null) => void;
56
+ /** Current perf config as applied (`_setPerf` merges tier knobs into it). */
57
+ _getPerf: () => XRPerfConfig | undefined;
58
+ /**
59
+ * Final teardown: `reset()` plus listener removal. The provider calls this
60
+ * on unmount; afterwards every bind/start is rejected until `rearm()`.
61
+ * Idempotent.
62
+ */
63
+ dispose: () => Promise<void>;
64
+ /**
65
+ * Undo `dispose()`'s rejection so the same facade can bind again. The
66
+ * provider calls it on every mount: React StrictMode runs mount → unmount →
67
+ * mount against one memoized facade, so a sticky `disposed` would poison it.
68
+ */
69
+ rearm: () => void;
70
+ /** True after `dispose()` (until `rearm()`). */
71
+ isDisposed: () => boolean;
34
72
  };
73
+ /** The front camera is mirrored unless the caller says otherwise; the rear camera is drawn straight. */
74
+ export declare const resolveWebcamMirror: (facingMode: XRCameraFacing, mirrored?: boolean) => boolean;
35
75
  export declare const resolveSourceCanvasSize: ({ renderHeight, renderWidth, videoHeight, videoWidth, }: {
36
76
  renderHeight: number;
37
77
  renderWidth: number;
@@ -41,4 +81,4 @@ export declare const resolveSourceCanvasSize: ({ renderHeight, renderWidth, vide
41
81
  height: number;
42
82
  width: number;
43
83
  };
44
- export declare const createSessionFacade: (perf?: XRPerfConfig) => SessionFacade;
84
+ export declare const createSessionFacade: (perf?: XRPerfConfig, lifecycle?: XRLifecycleConfig) => SessionFacade;
@@ -1,4 +1,4 @@
1
- import { XRPerfConfig } from '../../types';
1
+ import { XRLifecycleConfig, XRPerfConfig } from '../../types';
2
2
  import { SessionFacade } from './facade';
3
3
  export type { SessionFacade } from './facade';
4
- export declare const useXRSession: (perf?: XRPerfConfig) => SessionFacade;
4
+ export declare const useXRSession: (perf?: XRPerfConfig, lifecycle?: XRLifecycleConfig) => SessionFacade;
@@ -14,6 +14,8 @@
14
14
  * Depends on: nothing.
15
15
  * Depended on by: `facade.ts`, `store.ts`, `../selectors.ts`.
16
16
  */
17
- export type XRErrorReason = "permission-denied" | "camera-in-use" | "no-camera" | "unsupported" | "unknown";
17
+ export type XRErrorReason = "permission-denied" | "camera-in-use" | "no-camera" | "unsupported"
18
+ /** The camera stopped mid-session: unplugged, revoked, or taken by another app. */
19
+ | "camera-lost" | "unknown";
18
20
  export declare const mapDomExceptionToReason: (err: unknown) => XRErrorReason;
19
21
  export declare const MESSAGE_FOR: Record<XRErrorReason, string>;
@@ -2,6 +2,13 @@ import { XRModel } from '../../constants';
2
2
  import { BaseXRModel } from '../../models/Base';
3
3
  import { Class } from '../../types';
4
4
  import { SessionStore } from './store';
5
+ /**
6
+ * Where a model is in its life: `idle` (never acquired, or released),
7
+ * `initializing` (acquired, `initialize()` in flight), `ready` (initialized
8
+ * and published), `error` (the last initialize rejected; the next acquire
9
+ * retries).
10
+ */
11
+ export type ModelRegistryState = "idle" | "initializing" | "ready" | "error";
5
12
  export type ModelRegistry = {
6
13
  /**
7
14
  * Acquire a model by name on behalf of `ownerId`. Increments the refcount,
@@ -50,6 +57,13 @@ export type ModelRegistry = {
50
57
  * Force-release every model. Used by `session.reset()`.
51
58
  */
52
59
  releaseAll: () => void;
60
+ /** Lifecycle state of a model (see `ModelRegistryState`). */
61
+ getState: (modelName: XRModel) => ModelRegistryState;
62
+ /** Owner ids currently holding the model, and those that want it running. */
63
+ getOwners: (modelName: XRModel) => {
64
+ refs: string[];
65
+ active: string[];
66
+ };
53
67
  };
54
68
  export declare const createModelRegistry: (store: SessionStore, modelCodeMap: Record<XRModel, Class<BaseXRModel>>,
55
69
  /**
@@ -1,9 +1,17 @@
1
1
  import { CanvasTexture } from 'three';
2
2
  import { XRMediaSource, XRModel } from '../../constants';
3
- import { XRMediaSourceKind } from '../../types/compositor';
3
+ import { XRCameraFacing, XROrientation, XRSessionSourceKind } from '../../types/compositor';
4
4
  import { BaseXRModel } from '../../models/Base';
5
+ import { XRFallbackReason } from '../../capabilities/types';
6
+ import { XRCameraPermissionState } from '../../camera/permission';
7
+ import { XRQualityConfig, XRQualityState } from '../../quality/types';
5
8
  import { XRErrorReason } from './reason';
6
- export type SessionLifecycleState = "idle" | "media-bound" | "running" | "stopped";
9
+ /**
10
+ * `paused` is a running session whose blit loop and models are suspended by
11
+ * `session.pause()` (or a hidden tab with `lifecycle.pauseWhenHidden`); the
12
+ * media stream stays open and `resume()` continues without a rebind.
13
+ */
14
+ export type SessionLifecycleState = "idle" | "media-bound" | "running" | "paused" | "stopped";
7
15
  /**
8
16
  * `message` is human prose and may be reworded at any time; `reason` is the
9
17
  * stable machine-readable identity. `error` is a legacy constant kept for
@@ -14,6 +22,13 @@ export type XRSessionError = {
14
22
  message: string;
15
23
  reason: XRErrorReason;
16
24
  };
25
+ /** Why a model failed to initialize; cleared when the model is acquired again. */
26
+ export type XRModelError = {
27
+ model: XRModel;
28
+ error: Error;
29
+ /** `performance.now()` when the failure was recorded. */
30
+ at: number;
31
+ };
17
32
  export type SessionState = {
18
33
  lifecycle: SessionLifecycleState;
19
34
  ready: boolean;
@@ -22,13 +37,47 @@ export type SessionState = {
22
37
  renderWidth: number;
23
38
  renderHeight: number;
24
39
  source: XRMediaSource | undefined;
25
- sourceKind: "webcam" | XRMediaSourceKind | undefined;
40
+ sourceKind: XRSessionSourceKind | undefined;
41
+ /** Facing of the bound live camera; `null` for stream / canvas sources. */
42
+ cameraFacing: XRCameraFacing | null;
43
+ /** Device id of the bound live camera when one was requested or reported by the track. */
44
+ cameraDeviceId: string | null;
45
+ /** Current device orientation; updated on `screen.orientation` / resize changes. */
46
+ orientation: XROrientation;
47
+ /** Adaptive-quality controller state (`null` until a controller publishes). */
48
+ quality: XRQualityState | null;
49
+ /** The resolved config the mounted controller runs with (tiers, budget, bounds); `null` without one. */
50
+ qualityConfig: XRQualityConfig | null;
51
+ /** Native pixel size of the bound media frame (0 until bound). */
52
+ sourceWidth: number;
53
+ sourceHeight: number;
54
+ /** Framing zoom the blit loop applies when cover-cropping the source into the feed. */
55
+ cameraZoom: number;
26
56
  /**
27
57
  * Active model instances by `XRModel` code. The Map identity is replaced
28
58
  * (not mutated in place) on every add/remove so subscribers comparing
29
59
  * snapshots see a change.
30
60
  */
31
61
  pipeline: ReadonlyMap<XRModel, BaseXRModel>;
62
+ /**
63
+ * Models whose last `initialize()` rejected. Replaced (not mutated) on every
64
+ * change so subscribers comparing snapshots see it. A successful re-acquire
65
+ * removes the entry.
66
+ */
67
+ modelErrors: ReadonlyMap<XRModel, XRModelError>;
68
+ /**
69
+ * Live camera permission as the session experiences it: `requesting`
70
+ * while a webcam `getUserMedia` is pending, then `granted`, or the
71
+ * classified failure. Stays `unknown` for stream / canvas sources.
72
+ */
73
+ cameraPermission: XRCameraPermissionState;
74
+ cameraPermissionReason: XRFallbackReason | null;
75
+ /**
76
+ * Monotonic count of frames the session blitted into the tracker feed.
77
+ * Diagnostics derive the camera frame rate from its delta; it is not a
78
+ * per-frame React signal (published at most a few times per second).
79
+ */
80
+ feedFrames: number;
32
81
  };
33
82
  export type SessionStore = {
34
83
  getSnapshot: () => SessionState;