@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,69 @@
1
+ import { ArmTracker } from '../../hand/armMask';
2
+ import { HandRigBinding } from '../../hand/handRigSolver';
3
+ import { WristSize } from '../../hand/wrist';
4
+ import { WristRotationFilter } from '../../hand/wristFilter';
5
+ import { ArmMask } from './useArmMask';
6
+ import * as THREE from "three";
7
+ /** The arm found in the mask for one rig (`HandRig`'s `armMask`). */
8
+ export type HandRigArm = {
9
+ tracker: ArmTracker;
10
+ turn: boolean;
11
+ fitWidth: boolean;
12
+ /** The mask it reads (for drawing it). */
13
+ mask: ArmMask | null;
14
+ };
15
+ /** The forearm bone's name in a hand model (optional: made in code when missing). */
16
+ export declare const HAND_RIG_FOREARM = "forearm";
17
+ /**
18
+ * Experimental (vincentt-xr/sdk#319). One rig's wrist and forearm, solved
19
+ * once per frame. The `forearm` bone (a
20
+ * child of `wrist` running up the arm; the model's own, or made in code) is
21
+ * aimed every frame from the wrist point: the hand's wrist frame steadied
22
+ * against edge-on flips (`WristRotationFilter`), then, with `armMask`, turned
23
+ * onto the arm found in the mask and moved onto its middle: aligned in full
24
+ * once the mask is sure, holding its last way while the hand points at the
25
+ * camera, easing back to the hand only when the arm is lost. Wristwear (`WristAttachment`) rides on the forearm bone; the
26
+ * width fit is a scale across the arm (`crossScale`) applied to what rides on
27
+ * it, so the bone itself never takes a shearing scale.
28
+ */
29
+ export declare class HandRigWrist {
30
+ readonly binding: HandRigBinding;
31
+ readonly forearm: THREE.Object3D;
32
+ readonly filter: WristRotationFilter;
33
+ /** The arm fit (null without `armMask`). */
34
+ arm: HandRigArm | null;
35
+ /** The wrist frame this frame, world (rigid). */
36
+ readonly world: THREE.Matrix4;
37
+ /** Across the arm (X, Z) to fit the arm's width; 1 without a fit. */
38
+ crossScale: number;
39
+ readonly size: WristSize;
40
+ /**
41
+ * The wrist frame in the forearm bone's space (+Y toward the fingers, +Z
42
+ * out of the palm, origin on the wrist joint): where wristwear is authored.
43
+ */
44
+ readonly forearmFrame: THREE.Matrix4;
45
+ private readonly wristFrame;
46
+ /** inverse(wrist frame in the wrist bone) × the forearm's rest (in the wrist bone). */
47
+ private readonly toForearm;
48
+ private frame;
49
+ private solved;
50
+ /** The hand detection behind this frame (`HandPose.timestampMs`), for the filter. */
51
+ private sample;
52
+ /** The arm's way up on screen and the scale it was aimed with, last frame. */
53
+ private readonly last;
54
+ private readonly w;
55
+ /** `forearm`: the rig's forearm bone, at rest, a child of the wrist bone. */
56
+ constructor(binding: HandRigBinding, forearm: THREE.Object3D);
57
+ /** A new frame (the rig moved; `sample`: its detection): the next `solve` works it out again. */
58
+ tick(sample?: number): void;
59
+ /** The hand was lost: the next pose is taken as it is. */
60
+ reset(): void;
61
+ /**
62
+ * Aims the forearm bone for this frame (once; later calls are free) and
63
+ * returns the wrist frame (world), or null without a wrist bone. Call
64
+ * before render, after the rig has posed the hand.
65
+ */
66
+ solve(camera: THREE.Camera, aspect: number, nowMs?: number): THREE.Matrix4 | null;
67
+ }
68
+ /** The rig's forearm bone: the model's `forearm` node, or one made under the wrist bone. */
69
+ export declare const ensureForearmBone: (binding: HandRigBinding) => THREE.Object3D | null;
@@ -0,0 +1,62 @@
1
+ import { MutableRefObject, ReactNode } from 'react';
2
+ import { TouchWorld, HandTouchSettings, TouchBody, TouchEvent, TouchHand, TouchWorldSettings } from '../../hand/handTouch';
3
+ import { Handedness } from '../../types/hand-tracking';
4
+ import * as THREE from "three";
5
+ /** The screen pointer's sphere radius, scene units. */
6
+ export declare const HAND_TOUCH_POINTER_RADIUS = 0.15;
7
+ /** How deep the play box is either side of the hand plane (`z = 0`), scene units. */
8
+ export declare const HAND_TOUCH_DEPTH = 0.6;
9
+ export type HandTouchProps = Partial<TouchWorldSettings> & Partial<HandTouchSettings> & {
10
+ /** Which hands play. Default `"both"`. */
11
+ hands?: "both" | Handedness;
12
+ /**
13
+ * The mouse / touch screen plays as a hand too: it pushes, hovers and
14
+ * taps; press on an object to grab it, let go to throw. `{ radius }` in
15
+ * scene units (default 0.15). Default off.
16
+ */
17
+ pointer?: boolean | {
18
+ radius?: number;
19
+ };
20
+ /** Box depth either side of the hand plane, scene units. Default 0.6. */
21
+ depth?: number;
22
+ /** Raise the floor above the bottom of the screen, scene units. Default 0. */
23
+ floor?: number;
24
+ /** The box the objects stay in, scene units. Default: the screen at the hand plane. */
25
+ bounds?: {
26
+ min: [number, number, number];
27
+ max: [number, number, number];
28
+ };
29
+ /** Draw the hand colliders (the palm and fingertip spheres). */
30
+ showColliders?: boolean;
31
+ /** Everything that happens: grabs, releases, hovers, taps, touches. */
32
+ onEvent?: (event: TouchEvent) => void;
33
+ /** Freeze the objects (the hands still track). */
34
+ paused?: boolean;
35
+ /** `false` pauses the hand model's inference (see `HandTracker`). Default `true`. */
36
+ active?: boolean;
37
+ children?: ReactNode;
38
+ };
39
+ type Registered = {
40
+ object: THREE.Object3D;
41
+ onEvent: MutableRefObject<(event: TouchEvent) => void>;
42
+ };
43
+ export type HandTouchContextValue = {
44
+ world: TouchWorld;
45
+ /** Left, right, pointer: live colliders, updated every frame. */
46
+ hands: readonly TouchHand[];
47
+ /** Used by `Touchable`: the object a body's pose is written to, and its event handler. */
48
+ register: (body: TouchBody, entry: Registered) => () => void;
49
+ };
50
+ export declare const HandTouchContext: import('react').Context<HandTouchContextValue | null>;
51
+ /** The enclosing `HandTouch`'s world and hands (null outside one). */
52
+ export declare const useHandTouch: () => HandTouchContextValue | null;
53
+ /**
54
+ * Touch objects with your hands, no physics engine. Each tracked hand is a
55
+ * palm sphere and five fingertip spheres; `Touchable` children are objects in
56
+ * a box (by default the screen at the hand plane, `depth` deep) with gravity,
57
+ * a floor, walls, bounces and damping. Pinch an object to grab and carry it,
58
+ * let go to throw it, push or poke it, hover and tap it with the index tip.
59
+ * Sits anywhere in the scene (not in a tracker); it runs the hand tracker.
60
+ */
61
+ export declare const HandTouch: ({ hands, pointer, depth, floor, bounds, showColliders, onEvent, paused, active, children, palmRadius, tipRadius, pinchStart, pinchEnd, pinchReady, smoothing, ...worldSettings }: HandTouchProps) => import("react/jsx-runtime").JSX.Element;
62
+ export {};
@@ -0,0 +1,36 @@
1
+ import { ReactNode } from 'react';
2
+ import { TouchBodyOptions, TouchEvent, TouchHandId } from '../../hand/handTouch';
3
+ import * as THREE from "three";
4
+ /** What a `Touchable`'s look can react to. */
5
+ export type TouchableState = {
6
+ hovered: boolean;
7
+ grabbed: boolean;
8
+ /** The hand hovering or holding it. */
9
+ hand: TouchHandId | null;
10
+ };
11
+ type EventOf<T extends TouchEvent["type"]> = Extract<TouchEvent, {
12
+ type: T;
13
+ }>;
14
+ export type TouchableProps = TouchBodyOptions & {
15
+ /** The built-in look's colour (when there are no children). Default `"#f97316"`. */
16
+ color?: THREE.ColorRepresentation;
17
+ onGrab?: (event: EventOf<"grab">) => void;
18
+ /** Let go: `speed` is how fast it was thrown. */
19
+ onRelease?: (event: EventOf<"release">) => void;
20
+ /** The index tip touched it and left quickly. */
21
+ onTap?: (event: EventOf<"tap">) => void;
22
+ /** A hand part started touching it (`part`, `speed`): for sounds. */
23
+ onTouch?: (event: EventOf<"touch">) => void;
24
+ onHoverChange?: (hovered: boolean, hand: TouchHandId) => void;
25
+ /** The look, centred on the object (scene units); a function gets its state. Default a ball or a cube. */
26
+ children?: ReactNode | ((state: TouchableState) => ReactNode);
27
+ };
28
+ /**
29
+ * An object the hands can touch, inside a `HandTouch`: a ball (`shape:
30
+ * "sphere"`) or a cube (`"box"`, `size` = edge), `size` in scene units.
31
+ * `position` and `velocity` are where it starts; after that the world moves
32
+ * it. With no children it draws a ball or a cube in `color` that glows while
33
+ * hovered or held.
34
+ */
35
+ export declare const Touchable: ({ shape, size, position, velocity, mass, bounce, grabbable, pushable, gravity, color, onGrab, onRelease, onTap, onTouch, onHoverChange, children, }: TouchableProps) => import("react/jsx-runtime").JSX.Element;
36
+ export {};
@@ -0,0 +1,2 @@
1
+ export { HAND_TOUCH_DEPTH, HAND_TOUCH_POINTER_RADIUS, HandTouch, HandTouchContext, useHandTouch, type HandTouchContextValue, type HandTouchProps, } from './HandTouch';
2
+ export { Touchable, type TouchableProps, type TouchableState } from './Touchable';
@@ -1,4 +1,13 @@
1
1
  import { PropsWithChildren } from 'react';
2
+ import { HandData } from '../../types/hand-tracking';
3
+ import { HandTarget } from '../../types/tracking';
4
+ import { XRModelNodeHandTracking } from '../../types/nodes';
5
+ /**
6
+ * MediaPipe HandLandmarker joint indices (21 landmarks per hand).
7
+ * Names follow the MediaPipe convention; the underlying tracker may expose
8
+ * multiple hands, so this component selects the requested one when available.
9
+ */
10
+ export declare const HAND_LANDMARK_INDEX: Record<HandTarget, number>;
2
11
  type HandTrackerProps = PropsWithChildren & {
3
12
  /** Which hand to bind to. Prefers the named hand when present. */
4
13
  hand?: "left" | "right";
@@ -20,5 +29,6 @@ type HandTrackerProps = PropsWithChildren & {
20
29
  */
21
30
  active?: boolean;
22
31
  };
32
+ export declare function selectHand(node: XRModelNodeHandTracking | null, hand?: "left" | "right", handIndex?: number): HandData | undefined;
23
33
  export declare const HandTracker: ({ children, hand, handIndex, targetFps, active, }: HandTrackerProps) => import("react/jsx-runtime").JSX.Element;
24
34
  export {};
@@ -1,12 +1,26 @@
1
1
  import { PropsWithChildren } from 'react';
2
+ import { HeadOccluderFit, HeadOccluderOffset, HeadOccluderProps } from '../HeadOccluder';
2
3
  import * as THREE from "three";
3
4
  export type HeadBindingOccluderOptions = {
5
+ /**
6
+ * `"canonical"` (default): the v3 canonical-frame head, fitted from the live
7
+ * landmarks every frame — no tuning. `"manual"`: the legacy sculpted shell
8
+ * placed with `position` / `rotation` / `scale`.
9
+ */
10
+ fit?: HeadOccluderFit;
11
+ /** Canonical-fit adjustments, in canonical centimetres. */
12
+ offset?: HeadOccluderOffset;
13
+ /** Manual-fit transform (ignored by the canonical fit). */
4
14
  position?: [number, number, number];
5
15
  rotation?: [number, number, number];
6
16
  scale?: [number, number, number];
7
17
  url?: string;
8
18
  showDebugMaterial?: boolean;
9
19
  opacity?: number;
20
+ /** Per-frame EMA factor for the fitted pose (rotation, position and scale); `1` = none. */
21
+ smoothing?: number;
22
+ /** Neck and shoulders too: `true` / `"bust"`, or options (`follow: "head" | "torso"`). See `HeadOccluder`'s `neck`. */
23
+ neck?: HeadOccluderProps["neck"];
10
24
  };
11
25
  export type HeadBindingProps = PropsWithChildren & {
12
26
  /** Face index from the shared face-tracking result to bind this subtree to. */
@@ -0,0 +1,22 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { CanonicalHeadFitOptions } from './useCanonicalHeadFit';
3
+ export type CanonicalHeadFrameProps = PropsWithChildren<CanonicalHeadFitOptions>;
4
+ /**
5
+ * Set by `CanonicalHeadFrame` for its subtree: a `HeadAttachment` inside one is
6
+ * a plain offset group in the already-fitted frame (one fit, many points)
7
+ * instead of running a fit of its own.
8
+ */
9
+ export declare const CanonicalHeadFrameContext: import('react').Context<boolean>;
10
+ /**
11
+ * A group, inside a `FaceTracker`, whose children are authored in canonical
12
+ * centimetres: +X toward the screen's right on a face looking at the camera
13
+ * (the person's own right in the mirrored selfie view), +Y up, +Z out of the
14
+ * face toward the camera, origin at the canonical face model's origin
15
+ * (landmark 4 is at `(0, -0.46, 7.59)`, the nose bridge at `z ≈ 5.8`, the ears
16
+ * at `x ≈ ±8.8`; see `HEAD_ATTACHMENT_POINTS`). It is fitted with the same
17
+ * solver as the canonical `HeadOccluder`, so an accessory placed here sits
18
+ * exactly where the occluder expects it, in centimetres a modeller can measure
19
+ * against the shipped `.blend`. Hidden while the face is lost; snaps on
20
+ * reacquire.
21
+ */
22
+ export declare const CanonicalHeadFrame: ({ children, ...options }: CanonicalHeadFrameProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,55 @@
1
+ import { ReactNode } from 'react';
2
+ import { SpringSwingOptions } from '../../spring/swing';
3
+ import { EarringSide } from './earringPlacement';
4
+ import { CanonicalHeadFitOptions } from './useCanonicalHeadFit';
5
+ import { CanonicalOffset } from './useLandmarkPoseFit';
6
+ import type * as THREE from "three";
7
+ export type EarringsProps = Omit<CanonicalHeadFitOptions, "offset"> & {
8
+ /**
9
+ * The earring, authored once in the ear frame: centimetres, origin on the
10
+ * piercing, +X away from the head, +Y up, +Z out of the face (as for the
11
+ * ear at canonical +X, `HEAD_ATTACHMENT_POINTS.leftEarLobe`). Cloned once
12
+ * per ear, so pass a loaded GLB's scene (or one of its nodes) as it is.
13
+ */
14
+ model?: THREE.Object3D | null;
15
+ /**
16
+ * JSX instead of (or as well as) `model`, authored the same way. It mounts
17
+ * once per ear, so it must build its own objects (`<mesh>`, drei `<Clone>`),
18
+ * never one shared `<primitive object>`. A function receives the person's
19
+ * side, for a mismatched pair; both are still authored in the ear frame.
20
+ */
21
+ children?: ReactNode | ((side: EarringSide) => ReactNode);
22
+ /** Wear one on the person's own left ear. Default `true`. */
23
+ left?: boolean;
24
+ /** Wear one on the person's own right ear. Default `true`. */
25
+ right?: boolean;
26
+ /**
27
+ * Nudge on top of the lobe, in the ear frame (mirrored with the earring on
28
+ * the screen-left ear): `position` in centimetres, `rotation` in radians,
29
+ * `scale` as a multiplier, all about the piercing.
30
+ */
31
+ offset?: CanonicalOffset;
32
+ /**
33
+ * Whether the feed is mirrored. Defaults to the session's (`useXRMirrored`:
34
+ * the front webcam is), which is what keeps `left` on the person's own left
35
+ * ear.
36
+ */
37
+ mirrored?: boolean;
38
+ /**
39
+ * Swing on a spring about the piercing as the head moves (drops, hoops),
40
+ * then settle: `true` for the gentle default, or `SpringSwingOptions`
41
+ * (`frequency`, `damping`, `maxAngle`, `length` in cm). Each ear swings on
42
+ * its own. Default off (rigid).
43
+ */
44
+ swing?: boolean | SpringSwingOptions;
45
+ };
46
+ /**
47
+ * A pair of earrings on a tracked head: one earring, authored once in the ear
48
+ * frame, worn on both ear lobes (the one on the screen's left mirrored). `left`
49
+ * / `right` are the person's own ears on every feed. Place it inside a
50
+ * `HeadBinding` (or a `FaceTracker` with a `HeadOccluder`) so the head hides
51
+ * the far earring as the head turns. Inside a `CanonicalHeadFrame` it reuses
52
+ * the frame's fit; on its own it runs one fit for both ears. Hidden while the
53
+ * face is lost, snapped on reacquire.
54
+ */
55
+ export declare const Earrings: ({ model, children, left, right, offset, mirrored, swing, ...fitOptions }: EarringsProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,38 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { HeadAttachmentPoint } from './headAttachmentPoints';
3
+ import { CanonicalHeadFitOptions } from './useCanonicalHeadFit';
4
+ import { CanonicalOffset } from './useLandmarkPoseFit';
5
+ export type HeadAttachmentProps = PropsWithChildren<Omit<CanonicalHeadFitOptions, "offset"> & {
6
+ /**
7
+ * Where on the head the children's origin sits. `leftEar` / `rightEar` /
8
+ * `leftEarLobe` / `rightEarLobe` are the person's own ears on every feed.
9
+ */
10
+ point: HeadAttachmentPoint;
11
+ /**
12
+ * Authored adjustment ON TOP of the point: `position` in canonical
13
+ * centimetres (head axes, relative to the point; for an ear point in the
14
+ * ear frame, +X away from the head), `rotation` in radians and `scale` as
15
+ * a multiplier, both about the point.
16
+ */
17
+ offset?: CanonicalOffset;
18
+ /**
19
+ * Whether the feed is mirrored. Defaults to the session's (`useXRMirrored`:
20
+ * the front webcam is), which is what keeps `leftEar` on the person's own
21
+ * left ear.
22
+ */
23
+ mirrored?: boolean;
24
+ }>;
25
+ /**
26
+ * Attaches its children to a named point on a tracked head — glasses on
27
+ * `noseBridge`, a hat on `crown`, headphones on the ears — with the children
28
+ * authored in canonical centimetres around that point, facing +Z (out of the
29
+ * face). Ear points are the person's own ears and their children are authored
30
+ * in the ear frame (+X away from the head); the ear on the screen's left gets
31
+ * them mirrored. For a pair of earrings use `Earrings`. Place it inside a
32
+ * `FaceTracker` / `HeadBinding`; it follows that tracker's face. Inside a
33
+ * `CanonicalHeadFrame` it reuses the frame's fit (and its smoothing and
34
+ * tracking events); on its own it runs the same canonical fit as the head
35
+ * occluder. Hidden while the face is lost, snapped on reacquire, so nothing is
36
+ * left behind or slides in.
37
+ */
38
+ export declare const HeadAttachment: ({ point, offset, mirrored, children, ...fitOptions }: HeadAttachmentProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,64 @@
1
+ import { CanonicalOffset } from './useLandmarkPoseFit';
2
+ import * as THREE from "three";
3
+ /**
4
+ * Neck and shoulder occluders that go with the head occluder (`neck` on
5
+ * `HeadOccluder` / `HeadBinding`'s `occluder`). `"bust"`: the skinned bust
6
+ * of "Complete 3D Reference - Spark AR" by jepharaujo (CC BY 4.0), in the
7
+ * canonical head frame, its neck a three-bone chain.
8
+ */
9
+ export declare const NECK_OCCLUDER_TYPES: readonly ["bust"];
10
+ export type NeckOccluderType = (typeof NECK_OCCLUDER_TYPES)[number];
11
+ /**
12
+ * What moves it: `"head"` (the head fit, no body tracking: the top of the
13
+ * neck follows the head, the shoulders stay level below it) or `"torso"`
14
+ * (the torso fit from body tracking: the shoulders follow the real ones).
15
+ */
16
+ export declare const NECK_OCCLUDER_FOLLOWS: readonly ["head", "torso"];
17
+ export type NeckOccluderFollow = (typeof NECK_OCCLUDER_FOLLOWS)[number];
18
+ export declare const NECK_OCCLUDER_BUST_PATH = "/assets/xr/3d-models/neck-occluder-bust-v1.glb";
19
+ /** The SDK CDN copy of a neck occluder type's mesh (only `"bust"` so far). */
20
+ export declare const neckOccluderUrl: (type?: NeckOccluderType) => string;
21
+ /**
22
+ * Where the bust sits in the torso frame (`follow: "torso"`), torso cm: its
23
+ * neck base (head cm `(0, -11.86, -5.45)`) on the torso's neck stub, 3 cm
24
+ * lower than the stub's top so the neck stays under the chin (the live torso
25
+ * fit sits a little high).
26
+ */
27
+ export declare const NECK_BUST_TORSO_POSITION: readonly [number, number, number];
28
+ /** With `follow: "head"`: how much of the head's turn (yaw) the shoulders take. */
29
+ export declare const NECK_OCCLUDER_SHOULDER_TURN = 0.25;
30
+ export type NeckOccluderOptions = {
31
+ /** The mesh. Default `"bust"`. */
32
+ type?: NeckOccluderType;
33
+ /** What moves it. Default `"head"`. */
34
+ follow?: NeckOccluderFollow;
35
+ /** With `"head"`: 0..1, how much of the head's turn the shoulders take. Default 0.25. */
36
+ shoulderTurn?: number;
37
+ /** Override the mesh (a bust in the canonical head frame with neck_top / neck_mid / neck_base bones). */
38
+ url?: string;
39
+ /** A nudge: head cm with `"head"`, torso cm with `"torso"`. */
40
+ offset?: CanonicalOffset;
41
+ /** With `"torso"`: the tracked body. Default 0. */
42
+ bodyIndex?: number;
43
+ /** Draw it visibly (calibration). */
44
+ showDebugMaterial?: boolean;
45
+ opacity?: number;
46
+ };
47
+ export type NeckOccluderProps = NeckOccluderOptions & {
48
+ /** With `"head"`: the face (default the parent `FaceTracker`'s). */
49
+ faceIndex?: number;
50
+ };
51
+ /**
52
+ * With `follow: "head"`: the neck's middle and base bones each turn half of
53
+ * what keeps the shoulders level, facing the camera and turned by
54
+ * `shoulderTurn` of the head's yaw; the top bone follows the head. Writes
55
+ * into `out` (the bones' rotation on top of their rest).
56
+ */
57
+ export declare const neckBoneTwist: (headWorld: THREE.Quaternion, cameraWorld: THREE.Quaternion, shoulderTurn: number, out: THREE.Quaternion) => THREE.Quaternion;
58
+ /**
59
+ * The neck and shoulders as a depth-only occluder: the head hides what passes
60
+ * behind the neck and shoulders too (necklace backs, hair, collars). Mounted
61
+ * by `HeadOccluder`'s `neck`; on its own inside a `FaceTracker` (head) or
62
+ * anywhere (torso: it tracks the body itself unless in a `BodyTracker`).
63
+ */
64
+ export declare const NeckOccluder: ({ type, follow, shoulderTurn, url, offset, bodyIndex, faceIndex, showDebugMaterial, opacity, }: NeckOccluderProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,31 @@
1
+ import { CanonicalOffset } from './useLandmarkPoseFit';
2
+ import * as THREE from "three";
3
+ /** The person's own ear, as `leftEarLobe` / `rightEarLobe` name it (#298). */
4
+ export type EarringSide = "left" | "right";
5
+ /** Draw order of an earring's opaque meshes: after the head occluder (-1) and the face effects. */
6
+ export declare const EARRING_RENDER_ORDER = 5;
7
+ /** Transparent earring parts draw after the opaque ones. */
8
+ export declare const EARRING_TRANSPARENT_RENDER_ORDER = 6;
9
+ export type EarringPlacement = {
10
+ position: [number, number, number];
11
+ rotation: [number, number, number];
12
+ scale: [number, number, number];
13
+ };
14
+ /**
15
+ * Where the earring for the person's own `side` ear sits in the canonical head
16
+ * frame on this feed (`mirrored`: the front webcam; default unmirrored): on
17
+ * that ear's lobe, with the authored `offset` on top. Earrings are authored
18
+ * in the ear frame (+X away from the head, the ear at canonical +X); the one on
19
+ * the screen's left (canonical −X) is that mirrored across the head's
20
+ * mid-plane (x → −x): the position's x and the rotation's y / z flip, and the
21
+ * scale's x is negative, so an earring turned out and forward on one ear is
22
+ * turned out and forward on the other too.
23
+ */
24
+ export declare const earringPlacement: (side: EarringSide, offset?: CanonicalOffset, mirrored?: boolean) => EarringPlacement;
25
+ /**
26
+ * One ear's copy of an earring model: a deep clone that shares geometry and
27
+ * materials, never frustum-culled (the fitted head moves every frame), its
28
+ * meshes drawn after the occluder (`EARRING_RENDER_ORDER`, transparent parts
29
+ * one later) unless they already carry a render order.
30
+ */
31
+ export declare const cloneEarringModel: (model: THREE.Object3D) => THREE.Object3D;
@@ -0,0 +1,69 @@
1
+ import { CanonicalOffset } from './useLandmarkPoseFit';
2
+ import * as THREE from "three";
3
+ /**
4
+ * Named places on the head to attach an accessory to. Each is a fixed point in
5
+ * the canonical head frame (`CanonicalHeadFrame`): centimetres, +X toward the
6
+ * screen's right on a face looking at the camera, +Y up, +Z out of the face
7
+ * toward the camera.
8
+ *
9
+ * `leftEar` / `rightEar` (and the lobes) are the person's OWN ears on every
10
+ * feed (#298). The canonical +X ear is MediaPipe's left (landmark 454's side):
11
+ * the person's left ear on an unmirrored feed (rear camera, image, video) and
12
+ * their right ear on the mirrored front webcam, so the table below is given as
13
+ * on an unmirrored feed and `resolveHeadAttachmentPoint` swaps the sided points
14
+ * on a mirrored one.
15
+ */
16
+ export type HeadAttachmentPoint = "headCenter" | "crown" | "forehead" | "noseBridge" | "noseTip" | "chin" | "leftEar" | "rightEar" | "leftEarLobe" | "rightEarLobe";
17
+ /**
18
+ * Canonical centimetres for each `HeadAttachmentPoint`. Face points are the
19
+ * canonical MediaPipe landmarks (the first 468 vertices of the v3 head
20
+ * occluder): `forehead` = 151, `noseBridge` = 6 (the nose ridge where a
21
+ * glasses bridge rests, between the eyes), `noseTip` = 1, `chin` = 152. The
22
+ * skull points are measured on the v3 occluder (`assets-src/head-occluder/
23
+ * head-occluder-v3.blend`): `headCenter` is the skull's centre, `crown` its
24
+ * top, and the ears are the centres of its ear volumes. The ear lobes are the
25
+ * piercing: on the outside of each ear volume, 0.8 cm above its lowest point and
26
+ * a quarter centimetre ahead of its centre, 2 mm clear of its surface, so an
27
+ * earring authored outward from it (+X, away from the head) is never cut by the
28
+ * occluder (`assets-src/accessories/build_earrings.py` checks it).
29
+ *
30
+ * Sided points are given as on an UNMIRRORED feed: the person's left ear at
31
+ * canonical +X (MediaPipe's left). Use `resolveHeadAttachmentPoint(point,
32
+ * mirrored)` for the person's own ear on a given feed.
33
+ */
34
+ export declare const HEAD_ATTACHMENT_POINTS: Readonly<Record<HeadAttachmentPoint, readonly [number, number, number]>>;
35
+ export declare const HEAD_ATTACHMENT_POINT_NAMES: readonly HeadAttachmentPoint[];
36
+ /** A point resolved for one feed (see `resolveHeadAttachmentPoint`). */
37
+ export type ResolvedHeadAttachmentPoint = {
38
+ /** Canonical centimetres of the person's own point on this feed. */
39
+ position: readonly [number, number, number];
40
+ /**
41
+ * `true` for an ear point on the screen's left (canonical −X): its children
42
+ * are mirrored (x → −x) so that +X still points away from the head.
43
+ */
44
+ mirror: boolean;
45
+ };
46
+ /**
47
+ * Where `point` is for the person on this feed. `mirrored` is the feed's
48
+ * mirror state (`useXRMirrored()`; the front webcam is mirrored): there the
49
+ * person's left ear is at canonical −X, on an unmirrored feed at +X.
50
+ * Centre points do not depend on the feed.
51
+ */
52
+ export declare const resolveHeadAttachmentPoint: (point: HeadAttachmentPoint, mirrored?: boolean) => ResolvedHeadAttachmentPoint;
53
+ /**
54
+ * Writes the canonical position (centimetres) of the person's own `point` on
55
+ * this feed into `out` (`mirrored`: see `resolveHeadAttachmentPoint`; default
56
+ * an unmirrored feed, i.e. the table as given).
57
+ */
58
+ export declare const getHeadAttachmentPoint: (point: HeadAttachmentPoint, out?: THREE.Vector3, mirrored?: boolean) => THREE.Vector3;
59
+ /**
60
+ * The fit offset that puts a fitted frame's origin on the person's own
61
+ * `point` for this feed, moved by the authored `offset.position` (canonical
62
+ * centimetres, in the head's axes; for an ear point in the ear frame, +X away
63
+ * from the head) and turned by `offset.rotation` about the point. On a
64
+ * mirrored ear (`mirror`) the offset is mirrored with it: x and the Y / Z
65
+ * rotations negate. `offset.scale` is left out: the fit scales its offset
66
+ * position too, so a scale here would slide the point — `HeadAttachment`
67
+ * applies it (and the ear mirror) on an inner group instead.
68
+ */
69
+ export declare const resolveHeadAttachmentOffset: (point: HeadAttachmentPoint, offset?: CanonicalOffset, mirrored?: boolean) => CanonicalOffset;
@@ -1,13 +1,67 @@
1
- type HeadOccluderProps = {
1
+ import { CanonicalHeadFitOptions, CanonicalHeadOffset } from './useCanonicalHeadFit';
2
+ import { NeckOccluderOptions, NeckOccluderType } from './NeckOccluder';
3
+ export { CanonicalHeadFrame } from './CanonicalHeadFrame';
4
+ export { HeadAttachment } from './HeadAttachment';
5
+ export type { HeadAttachmentProps } from './HeadAttachment';
6
+ export { Earrings } from './Earrings';
7
+ export { NECK_BUST_TORSO_POSITION, NECK_OCCLUDER_BUST_PATH, NECK_OCCLUDER_FOLLOWS, NECK_OCCLUDER_SHOULDER_TURN, NECK_OCCLUDER_TYPES, NeckOccluder, neckBoneTwist, neckOccluderUrl, } from './NeckOccluder';
8
+ export type { NeckOccluderFollow, NeckOccluderOptions, NeckOccluderProps, NeckOccluderType, } from './NeckOccluder';
9
+ export type { EarringsProps } from './Earrings';
10
+ export type { EarringSide } from './earringPlacement';
11
+ export { HEAD_ATTACHMENT_POINTS, HEAD_ATTACHMENT_POINT_NAMES, getHeadAttachmentPoint, resolveHeadAttachmentPoint, } from './headAttachmentPoints';
12
+ export type { HeadAttachmentPoint, ResolvedHeadAttachmentPoint } from './headAttachmentPoints';
13
+ export type { CanonicalHeadFrameProps } from './CanonicalHeadFrame';
14
+ export { CANONICAL_HEAD_FIT_DEFAULT_SMOOTHING, useCanonicalHeadFit } from './useCanonicalHeadFit';
15
+ export { useLandmarkPoseFit, stepLandmarkPoseSmoothing, LANDMARK_POSE_FIT_DEFAULT_SMOOTHING, LANDMARK_POSE_FIT_SNAP_CM, } from './useLandmarkPoseFit';
16
+ export type { CanonicalOffset, LandmarkPoseFit, LandmarkPoseFitOptions, LandmarkPoseSmoothingState, } from './useLandmarkPoseFit';
17
+ export type { CanonicalHeadFitOptions, CanonicalHeadOffset } from './useCanonicalHeadFit';
18
+ /**
19
+ * How the occluder is placed inside its `FaceTracker` group.
20
+ *
21
+ * - `"canonical"` (default): the v3 head, authored in the canonical face frame,
22
+ * is fitted every frame to 31 rigid live landmarks — see
23
+ * `solveCanonicalHeadPose`. Exact for scale, rotation and position; `offset`
24
+ * adjusts on top of the fit in canonical centimetres.
25
+ * - `"manual"`: the legacy path. `position` / `rotation` / `scale` are applied
26
+ * verbatim inside the group, as `HeadBinding` did before v3.
27
+ */
28
+ export type HeadOccluderFit = "canonical" | "manual";
29
+ export type HeadOccluderOffset = CanonicalHeadOffset;
30
+ export type HeadOccluderProps = {
31
+ fit?: HeadOccluderFit;
32
+ /** Which tracked face feeds the canonical fit. Defaults to the parent `FaceTracker`'s `faceIndex`. */
33
+ faceIndex?: number;
34
+ /** Canonical-fit adjustments. Ignored in `"manual"`. */
35
+ offset?: HeadOccluderOffset;
36
+ /** Manual-fit transform. Ignored in `"canonical"`. */
2
37
  position?: [number, number, number];
3
38
  rotation?: [number, number, number];
4
39
  scale?: [number, number, number];
40
+ /** Override the mesh. The canonical fit expects a v3-frame mesh. */
5
41
  url?: string;
42
+ /** Draw the mesh visibly (calibration). Production keeps it depth-only. */
6
43
  showDebugMaterial?: boolean;
7
44
  opacity?: number;
45
+ /** Per-frame EMA factor for the fitted pose, `1` = no smoothing. */
46
+ smoothing?: number;
47
+ /** Per-frame `HeadPoseFit` callback (canonical fit only); no React state at frame rate. */
48
+ onFit?: CanonicalHeadFitOptions["onFit"];
49
+ /**
50
+ * Add a neck and shoulders occluder: `true` or `"bust"` for the bust moved
51
+ * by the head fit (no body tracking), or `NeckOccluderOptions` (`follow:
52
+ * "torso"` moves it with body tracking instead). Default none.
53
+ */
54
+ neck?: boolean | NeckOccluderType | NeckOccluderOptions;
8
55
  };
9
56
  export declare const HEAD_OCCLUDER_DEFAULT_POSITION: [number, number, number];
10
57
  export declare const HEAD_OCCLUDER_DEFAULT_SCALE: [number, number, number];
11
58
  export declare const HEAD_OCCLUDER_DEFAULT_OPACITY = 1;
12
- export declare const HeadOccluder: ({ position: modelPosition, rotation: modelRotation, scale: modelScale, url, showDebugMaterial, opacity, }: HeadOccluderProps) => import("react/jsx-runtime").JSX.Element | null;
13
- export {};
59
+ export declare const HEAD_OCCLUDER_DEFAULT_SMOOTHING = 0.5;
60
+ /** The legacy sculpted shell (`"manual"` fit). */
61
+ export declare const HEAD_OCCLUDER_V2_PATH = "/assets/xr/3d-models/head-occluder-v2.glb";
62
+ /** The canonical-frame head (`"canonical"` fit). */
63
+ export declare const HEAD_OCCLUDER_V3_PATH = "/assets/xr/3d-models/head-occluder-v3.glb";
64
+ /** Drawn before everything in the tracked layer so its depth is in place for the accessories. */
65
+ export declare const HEAD_OCCLUDER_RENDER_ORDER = -1;
66
+ export declare const headOccluderUrl: (fit?: HeadOccluderFit) => string;
67
+ export declare const HeadOccluder: ({ fit, faceIndex, offset, position: modelPosition, rotation: modelRotation, scale: modelScale, url, showDebugMaterial, opacity, smoothing, onFit, neck, }: HeadOccluderProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,36 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { CanonicalOffset, LandmarkPoseFit } from './useLandmarkPoseFit';
3
+ import * as THREE from "three";
4
+ export type CanonicalHeadOffset = CanonicalOffset;
5
+ export type CanonicalHeadFitOptions = {
6
+ /**
7
+ * Which tracked face feeds the fit. Defaults to the parent `FaceTracker`'s
8
+ * (or `HeadBinding`'s) `faceIndex`, so it only needs setting to read a
9
+ * different face than the group it sits in.
10
+ */
11
+ faceIndex?: number;
12
+ offset?: CanonicalHeadOffset;
13
+ /** Per-frame EMA factor for the fitted pose, `1` = no smoothing. */
14
+ smoothing?: number;
15
+ /** `false` leaves the object untouched (and releases the face model). */
16
+ enabled?: boolean;
17
+ /**
18
+ * Called every fitted frame with the raw solver result (world units) — for
19
+ * calibration readouts and tests. Do not set React state in it at frame rate.
20
+ */
21
+ onFit?: (fit: LandmarkPoseFit) => void;
22
+ /** Fires once on face found (`true`) and once on face lost (`false`). */
23
+ onTrackingChange?: (tracked: boolean) => void;
24
+ };
25
+ export declare const CANONICAL_HEAD_FIT_DEFAULT_SMOOTHING = 0.5;
26
+ /**
27
+ * Drives `target` (a child of a `FaceTracker` group) with the canonical head
28
+ * pose every frame: the similarity that maps the canonical rigid landmarks
29
+ * onto the live ones in world space. Anything authored in canonical
30
+ * centimetres under `target` then lands on the head — the v3 occluder, or a
31
+ * creator's accessory. The pose is written as a LOCAL transform (world pose
32
+ * re-expressed in the parent group's frame), so it does not depend on where
33
+ * the group's own heuristic put its origin or how it scaled. Hides the object
34
+ * while the face is not tracked and snaps (no smoothing) on reacquire.
35
+ */
36
+ export declare const useCanonicalHeadFit: (target: MutableRefObject<THREE.Object3D | null>, { faceIndex: faceIndexOption, offset, smoothing, enabled, onFit, onTrackingChange, }?: CanonicalHeadFitOptions) => void;