@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,39 @@
1
+ import { SpringSettings } from '../../spring/spring';
2
+ import * as THREE from "three";
3
+ /** A lock of hair swings slower and further than jewellery. */
4
+ export declare const HAIR_LOCK_SPRING: Readonly<SpringSettings>;
5
+ /** A lock's shape when its props leave it out. */
6
+ export declare const HAIR_LOCK_DEFAULTS: Readonly<{
7
+ length: 16;
8
+ segments: 8;
9
+ thickness: readonly [number, number];
10
+ color: "#3b2416";
11
+ }>;
12
+ export type HairLockProps = Partial<SpringSettings> & {
13
+ /** The root, in head centimetres (the canonical head frame: +X MediaPipe's left, +Y up, +Z out of the face). */
14
+ position?: [number, number, number];
15
+ /** The way the lock leaves the root (head frame); it curves down from there. Default straight down. */
16
+ direction?: [number, number, number];
17
+ /** Length, cm. Default 16. */
18
+ length?: number;
19
+ /** Joints along it. Default 8. */
20
+ segments?: number;
21
+ /** Radius at the root and at the tip, cm. Default `[1.2, 0.3]`. */
22
+ thickness?: number | readonly [number, number];
23
+ /** Default a dark brown. */
24
+ color?: THREE.ColorRepresentation;
25
+ /** False: it hangs still at rest. Default true. */
26
+ enabled?: boolean;
27
+ /** The tracked face (when it runs its own head fit). Default 0. */
28
+ faceIndex?: number;
29
+ };
30
+ /**
31
+ * Experimental: its props and look may change in a later alpha.
32
+ *
33
+ * A lock of hair on a tracked head (a pigtail, a ponytail, a strand): a
34
+ * chain of springs from its root that swings with head motion and settles,
35
+ * drawn as a tapered tube. It hangs along the head's own down. Put it in a
36
+ * `HeadBinding` (its occluder hides the part behind the head); inside a
37
+ * `CanonicalHeadFrame` it reuses that fit, otherwise it runs its own.
38
+ */
39
+ export declare const HairLock: (props: HairLockProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { HAIR_LOCK_DEFAULTS, HAIR_LOCK_SPRING, HairLock, type HairLockProps } from './HairLock';
2
+ export { createLockGeometry, writeLock } from './lockGeometry';
@@ -0,0 +1,15 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * A hair lock's mesh (pure): a tube of `rings × sides` vertices plus a tip
4
+ * vertex, rewritten in place every frame along the lock's current points
5
+ * (parallel-transported frames, so it never twists), its radius tapering
6
+ * from root to tip.
7
+ */
8
+ /** A tube geometry with room for `rings` rings of `sides` vertices and a closed tip. */
9
+ export declare const createLockGeometry: (rings: number, sides: number) => THREE.BufferGeometry;
10
+ /**
11
+ * Writes the tube along `points` (one ring each; at least 2) with radii
12
+ * tapering from `rootRadius` to `tipRadius`, into the geometry's positions
13
+ * and normals, and the tip vertex a little past the last point.
14
+ */
15
+ export declare const writeLock: (geometry: THREE.BufferGeometry, points: readonly THREE.Vector3[], sides: number, rootRadius: number, tipRadius: number) => void;
@@ -0,0 +1,35 @@
1
+ import { HandCutoutOptions } from '../../hand/handCutout';
2
+ import * as THREE from "three";
3
+ export type HandCutoutProps = HandCutoutOptions & {
4
+ /** Show the silhouette (translucent magenta) instead of only cutting. Default false. */
5
+ debug?: boolean;
6
+ /**
7
+ * Draw order: before the content it hides. Default -900 (after the camera
8
+ * background). It applies in the scene root's tier, outside the tracker
9
+ * group's, so it holds against content anywhere in the scene.
10
+ */
11
+ renderOrder?: number;
12
+ };
13
+ /**
14
+ * The cut-out's material: depth only, at the near plane. The depth test stays
15
+ * ON with an always-pass function: WebGL writes no depth at all while the
16
+ * depth test is disabled, so `depthTest: false` would draw nothing into the
17
+ * depth buffer and hide nothing.
18
+ */
19
+ export declare const createHandCutoutMaterial: () => THREE.ShaderMaterial;
20
+ /**
21
+ * Hands in front of the face (or of anything 3D): the tracked hands'
22
+ * silhouettes on screen (palm, fingers, forearm) are drawn as depth only at
23
+ * the near plane, so 3D content drawn after them is hidden there and the real
24
+ * hand in the camera image shows through — a hand over a `FaceWarp3D`,
25
+ * `FaceMorph`, character or accessory stays in front. Mount inside a
26
+ * `HandTracker` (it reads the tracker's model; it does not start one), in the
27
+ * same scene as the content. Content must test depth (the default).
28
+ *
29
+ * ```tsx
30
+ * <HandTracker numHands={2}>
31
+ * <HandCutout />
32
+ * </HandTracker>
33
+ * ```
34
+ */
35
+ export declare const HandCutout: ({ inflate, forearm, debug, renderOrder, }: HandCutoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,70 @@
1
+ import { HandDigit, HandGestureDefinition, HandGestureName, HandHintPose } from '../../hand/handGestures';
2
+ import { Handedness } from '../../types/hand-tracking';
3
+ import { HintLook } from '../Instruction/hintLook';
4
+ import { HintLoop } from '../Instruction/hintLoop';
5
+ import * as THREE from "three";
6
+ /** The hand's loop: a `HintLoop` plus the finger stagger. */
7
+ export type HandHintLoop = HintLoop & {
8
+ /**
9
+ * How much later the last digit moves than the first, as a share of the
10
+ * move (pinky first, index last). `0` moves them together. Default 0.21.
11
+ */
12
+ stagger?: number;
13
+ };
14
+ export type HandGestureHintProps = {
15
+ /** A gesture name, your own definition (`defineHandGesture`), or just its hint pose. */
16
+ gesture: HandGestureName | HandGestureDefinition | HandHintPose;
17
+ /** A skinned hand following the rig contract (e.g. the SDK example `hand-v1.glb` scene). */
18
+ model: THREE.Object3D;
19
+ /**
20
+ * Authored poses, one single-key clip per pose (the GLB's `animations`;
21
+ * `hand-v1.glb` ships them). A gesture whose `hint.clip` is here plays it;
22
+ * otherwise its procedural hint is used.
23
+ */
24
+ poses?: readonly THREE.AnimationClip[];
25
+ /** The chirality the model is authored as. Default `"right"`. */
26
+ modelHand?: Handedness;
27
+ /** The hand to show. Default `"right"`; the other chirality is the model mirrored. */
28
+ showHand?: Handedness;
29
+ /** Height of the hand in the parent's units (the hint is fitted to it). Default `1`. */
30
+ height?: number;
31
+ /**
32
+ * Loop timing, merged over `HAND_HINT_LOOP` (2.2 s per cycle, from a
33
+ * relaxed hand, the fingers closing one after another with a small settle).
34
+ */
35
+ loop?: HandHintLoop;
36
+ /** The look, merged over `HAND_HINT_LOOK` (ghost, halo, glow, highlight). */
37
+ look?: HintLook;
38
+ /**
39
+ * Digits drawn brighter (the ones that make the gesture). Default: the
40
+ * hint's `highlight`, else picked from the gesture — the extended digits
41
+ * for a named shape or a count, thumb + index for an OK sign, the thumb for
42
+ * thumbs up / down; none for a fist or an open hand. `false` turns it off.
43
+ */
44
+ highlight?: readonly HandDigit[] | false;
45
+ /**
46
+ * Auto orbit: the hand swings this many degrees to each side about the
47
+ * vertical and back (ping-pong), so it reads as 3D; the pose is untouched.
48
+ * `0` holds the view still. Default `35`.
49
+ */
50
+ orbit?: number;
51
+ /** Seconds per orbit swing (side to side and back). Default `6`. */
52
+ orbitSeconds?: number;
53
+ /** Render order of the hand (keep it above the AR content it may overlap). */
54
+ renderOrder?: number;
55
+ };
56
+ /** The hand's default look: the plain ghost (with the model's wrist fade), a thin halo. */
57
+ export declare const HAND_HINT_LOOK: HintLook;
58
+ /** The hand's default loop. */
59
+ export declare const HAND_HINT_LOOP: HandHintLoop;
60
+ /**
61
+ * A 3D hand showing a gesture — the instruction's demonstration. Poses the
62
+ * model with the gesture's hint (an authored clip from `poses` when the model
63
+ * has it, else a procedural pose — both tested against the detector), turns
64
+ * it to the hint's `yaw` and `roll`, fits it to `height`, and loops relaxed →
65
+ * pose with the fingers closing one after another, while slowly orbiting side
66
+ * to side (`orbit`). Drawn as a ghost (`look`): the gesture's key digits
67
+ * brighter. Place it in the scene where the hint should appear (e.g. inside
68
+ * `ScreenSpaceUI`); `HandInstruction` does this.
69
+ */
70
+ export declare const HandGestureHint: ({ gesture, model, poses, modelHand, showHand, height, loop, look, highlight, orbit, orbitSeconds, renderOrder, }: HandGestureHintProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,74 @@
1
+ import { HandDigit, HandGestureDefinition, HandGestureName, HandShapeLimits } from '../../hand/handGestures';
2
+ import { Handedness } from '../../types/hand-tracking';
3
+ import { HintLook } from '../Instruction/hintLook';
4
+ import { InstructionOptions, InstructionSize, InstructionStatus } from '../Instruction/InstructionCue';
5
+ import { HandHintLoop } from './HandGestureHint';
6
+ import type * as THREE from "three";
7
+ export { HAND_HINT_LOOK, HAND_HINT_LOOP, HandGestureHint } from './HandGestureHint';
8
+ export type { HandGestureHintProps, HandHintLoop } from './HandGestureHint';
9
+ export { useHandGesture } from './useHandGesture';
10
+ export type { UseHandGestureOptions, UseHandGestureResult } from './useHandGesture';
11
+ /** The instruction draws in this renderOrder band, over the AR scene (= `INSTRUCTION_RENDER_ORDER`). */
12
+ export declare const HAND_INSTRUCTION_RENDER_ORDER = 2000;
13
+ /** Default nudge copy when no hand has been seen for `nudgeAfterMs`. */
14
+ export declare const HAND_INSTRUCTION_NUDGE_TEXT = "Show your hand to the camera";
15
+ /**
16
+ * Where the prompt stands: no hand in view, a hand in view but not doing the
17
+ * gesture, doing it (holding), or completed.
18
+ */
19
+ export type HandInstructionStatus = InstructionStatus;
20
+ export type HandInstructionSize = InstructionSize;
21
+ export type HandInstructionProps = InstructionOptions & {
22
+ /** What to ask for: a `HAND_GESTURES` name or your own `defineHandGesture(…)`. */
23
+ gesture: HandGestureName | HandGestureDefinition;
24
+ /** The hint hand: a skinned hand following the rig contract (e.g. `hand-v1.glb`'s scene). */
25
+ model: THREE.Object3D;
26
+ /** The model's authored poses (e.g. `hand-v1.glb`'s `animations`); see `HandGestureHint`. */
27
+ poses?: readonly THREE.AnimationClip[];
28
+ /** Chirality the model is authored as. Default `"right"`. */
29
+ modelHand?: Handedness;
30
+ /** Instruction copy. Default: the gesture's `label` ("Show a peace sign"). */
31
+ text?: string;
32
+ /** Which of the person's hands may do it: `"left"`, `"right"` or `"any"` (default). */
33
+ hand?: Handedness | "any";
34
+ /** Hold time to complete. Default 400 ms. */
35
+ holdMs?: number;
36
+ /** Dropouts shorter than this do not restart the hold. Default 150 ms. */
37
+ graceMs?: number;
38
+ /** Classifier thresholds to override (see `HAND_SHAPE_LIMITS`). */
39
+ limits?: Partial<HandShapeLimits>;
40
+ /** The hint's auto orbit, degrees to each side. Default `35`; `0` = still. */
41
+ orbit?: number;
42
+ /** The hint's look, merged over `HAND_HINT_LOOK`. */
43
+ look?: HintLook;
44
+ /** The hint's loop, merged over `HAND_HINT_LOOP`. */
45
+ loop?: HandHintLoop;
46
+ /** The hint's highlighted digits (default: picked from the gesture); `false` = none. */
47
+ highlight?: readonly HandDigit[] | false;
48
+ /** Called once when the gesture is held long enough. */
49
+ onComplete?: () => void;
50
+ /** `false` hides it and pauses detection. Default `true`. */
51
+ active?: boolean;
52
+ };
53
+ /**
54
+ * A minimal on-screen instruction that asks for a hand gesture and waits for
55
+ * it: the looping ghost hint hand (`HandGestureHint`) with the copy under it —
56
+ * no card, no progress bar. Holding the gesture for `holdMs` completes it
57
+ * (`onComplete`, a small pop and a white ring, then it fades out); with no
58
+ * hand in view for a while it adds a nudge line and the hint pulses. Mount
59
+ * inside the R3F scene (`XRScene`); it draws over the AR content and acquires
60
+ * the hand model itself. Every part is customisable (`look`, `loop`,
61
+ * `textStyle`, `motion`, `renderText` …); for a fully custom one, compose
62
+ * `<Instruction>` with `useHandGesture` and any symbol.
63
+ *
64
+ * ```tsx
65
+ * <HandInstruction
66
+ * gesture="peace"
67
+ * text="Peace to start"
68
+ * model={handGltf.scene}
69
+ * poses={handGltf.animations}
70
+ * onComplete={start}
71
+ * />
72
+ * ```
73
+ */
74
+ export declare const HandInstruction: ({ active, text, ...props }: HandInstructionProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,22 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { HandGestureSpec, HandShape, HandShapeLimits } from '../../hand/handGestures';
3
+ import { Handedness } from '../../types/hand-tracking';
4
+ import { InstructionDetector, InstructionHoldOptions } from '../Instruction/useInstructionHold';
5
+ export type UseHandGestureOptions = InstructionHoldOptions & {
6
+ /** Which hand may perform it: the person's `"left"` / `"right"`, or `"any"` (default). */
7
+ hand?: Handedness | "any";
8
+ /** Classifier thresholds to override for this detector (see `HAND_SHAPE_LIMITS`). */
9
+ limits?: Partial<HandShapeLimits>;
10
+ };
11
+ export type UseHandGestureResult = InstructionDetector & {
12
+ /** The latest analysed shape per hand (for readouts), read in `useFrame`. */
13
+ shapesRef: MutableRefObject<Partial<Record<Handedness, HandShape>>>;
14
+ };
15
+ /**
16
+ * Detects a hand gesture on the tracked hands, with hold-to-complete: a
17
+ * `HAND_GESTURES` name, a rule, a match function `(shape, side) => boolean`
18
+ * or a definition (`defineHandGesture`). Returns an `InstructionDetector`
19
+ * (pass it to `<Instruction detector>`). Mount inside the R3F scene; it
20
+ * acquires the hand model itself.
21
+ */
22
+ export declare const useHandGesture: (gesture: HandGestureSpec, { hand, limits, active, ...hold }?: UseHandGestureOptions) => UseHandGestureResult;
@@ -0,0 +1,29 @@
1
+ import { WristSize } from '../../hand/wrist';
2
+ import * as THREE from "three";
3
+ export type ForearmOccluderOptions = {
4
+ /** How far up the arm, in palm lengths. Default `FOREARM_OCCLUDER_LENGTH` (2.5). */
5
+ length?: number;
6
+ /** Wider (> 1) or narrower than the measured wrist. Default 1. */
7
+ scale?: number;
8
+ };
9
+ export type ForearmOccluderProps = ForearmOccluderOptions & {
10
+ showDebugMaterial?: boolean;
11
+ opacity?: number;
12
+ };
13
+ /**
14
+ * A tapered elliptic tube from the wrist up the forearm, along the hand's own
15
+ * axis (wrist frame, model units): `width × depth` at the wrist, flaring by
16
+ * `FOREARM_OCCLUDER_FLARE` toward the elbow, reaching a little into the hand
17
+ * so there is no gap at the wrist.
18
+ */
19
+ export declare const createForearmGeometry: (wrist: WristSize, { length, scale }?: ForearmOccluderOptions) => THREE.BufferGeometry;
20
+ /**
21
+ * Experimental: its props and behaviour may change in a later alpha
22
+ * (vincentt-xr/sdk#319).
23
+ *
24
+ * A depth-only forearm on the enclosing `HandRig` / `HandOccluder`: the back
25
+ * of a watch strap or bracelet hides behind the arm. On the rig's forearm
26
+ * bone (along the arm found in the mask with `armMask`, else the hand's
27
+ * steadied axis), sized from the wrist.
28
+ */
29
+ export declare const ForearmOccluder: ({ length, scale, showDebugMaterial, opacity, }: ForearmOccluderProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ import { HandAttachmentJoint } from '../../hand/handRigSolver';
3
+ export type HandAttachmentProps = {
4
+ /**
5
+ * The finger bone to ride on, named by the joint it starts at:
6
+ * `indexMcp` = the base segment of the index finger (MCP → PIP), `indexPip`
7
+ * the middle one, `indexDip` the last; the thumb's are `thumbCmc`,
8
+ * `thumbMcp`, `thumbIp`.
9
+ */
10
+ joint: HandAttachmentJoint;
11
+ /** Where along that segment, 0 = at the joint, 1 = at the next one. Default `0.5`. */
12
+ along?: number;
13
+ /**
14
+ * Adjustment in the attachment frame (+Y toward the fingertip, +Z out of the
15
+ * palm, −Z = back of the hand): `position` in model units (cm for the SDK's
16
+ * `hand-v1`), `rotation` in radians, `scale` as a multiplier.
17
+ */
18
+ offset?: {
19
+ position?: [number, number, number];
20
+ rotation?: [number, number, number];
21
+ scale?: number;
22
+ };
23
+ children?: ReactNode;
24
+ };
25
+ /**
26
+ * Puts its children on a finger of the enclosing `HandRig` / `HandOccluder`:
27
+ * a ring around a segment, a nail on a tip, a watch on the wrist bone's
28
+ * neighbour. Children are authored in the attachment frame, in the model's
29
+ * units (centimetres for the SDK hand): a ring around +Y with its stone at −Z
30
+ * sits on the back of the finger. They follow the bone, its tracked length,
31
+ * the hand's visibility and its mirroring (on the other chirality the content
32
+ * is mirrored too — symmetric pieces such as rings are unaffected).
33
+ */
34
+ export declare const HandAttachment: ({ joint, along, offset, children }: HandAttachmentProps) => JSX.Element | null;
@@ -0,0 +1,55 @@
1
+ import { ForearmOccluderOptions } from './ForearmOccluder';
2
+ import { HandRigProps } from './index';
3
+ import * as THREE from "three";
4
+ /** Drawn before everything in the scene so its depth is in place for the attachments. */
5
+ export declare const HAND_OCCLUDER_RENDER_ORDER = -1;
6
+ /**
7
+ * Pushes every vertex along its (skinned) normal by the `inflate` uniform, in
8
+ * model units, after skinning — so the posed fingers grow or shrink evenly.
9
+ *
10
+ * Coupled to three's MeshBasicMaterial vertex shader text (pinned
11
+ * `three@0.173.0`; the test patches the real shader): it needs the
12
+ * `void main() {` and `#include <skinning_vertex>` tokens. If either is missing
13
+ * it returns the shader UNCHANGED (no inflate) rather than half-patched — a
14
+ * uniform used but never declared would fail to compile and lose the occluder.
15
+ */
16
+ export declare const patchHandOccluderInflate: (vertexShader: string) => string;
17
+ /**
18
+ * A depth-only material for a skinned hand, with an `inflate` (model units)
19
+ * uniform in `userData.inflate`. With `debug` it draws as a translucent grey.
20
+ */
21
+ export declare const createHandOccluderMaterial: () => THREE.MeshBasicMaterial;
22
+ export type HandOccluderProps = Omit<HandRigProps, "material"> & {
23
+ /**
24
+ * Grow (+) or shrink (−) the occluder along its normals, in model units
25
+ * (centimetres for the SDK hand). Real fingers vary; a ring must stay
26
+ * OUTSIDE the occluder or its front is hidden too, so shrink rather than
27
+ * grow when in doubt. Default `0`.
28
+ */
29
+ inflate?: number;
30
+ /** Draw the occluder (translucent grey) instead of depth only — for calibration. */
31
+ showDebugMaterial?: boolean;
32
+ /** Debug material opacity. Default `0.5`. */
33
+ opacity?: number;
34
+ /**
35
+ * Experimental. A forearm too (`ForearmOccluder`): `true`, or options
36
+ * (`length` in palm lengths, `scale`), so the back of a watch strap or
37
+ * bracelet hides behind the arm. Default off.
38
+ */
39
+ forearm?: boolean | ForearmOccluderOptions;
40
+ };
41
+ /**
42
+ * A depth-only hand: the `HandRig` fit (position, rotation, size, finger pose
43
+ * and lengths) applied to a hand model that writes depth but no colour, drawn
44
+ * first (`HAND_OCCLUDER_RENDER_ORDER`). Whatever is behind the tracked hand —
45
+ * the back half of a ring, the far side of a watch — fails the depth test and
46
+ * disappears, while the camera image shows the real hand. Put the jewellery in
47
+ * as `HandAttachment` children so it rides on the same fit:
48
+ *
49
+ * ```tsx
50
+ * <HandOccluder hand="right" model={handGltf.scene}>
51
+ * <HandAttachment joint="ringMcp" along={0.6}><primitive object={ring} /></HandAttachment>
52
+ * </HandOccluder>
53
+ * ```
54
+ */
55
+ export declare const HandOccluder: ({ inflate, showDebugMaterial, opacity, onModel, forearm, children, ...rig }: HandOccluderProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,61 @@
1
+ import { HandTattooPlacement } from '../../hand/handTattoo';
2
+ import * as THREE from "three";
3
+ /** How the art meets the skin. */
4
+ export type HandTattooBlend = "multiply" | "normal";
5
+ /**
6
+ * Sets a tattoo material's blending: `"multiply"` darkens the surface by the
7
+ * art (ink: skin shading shows through, white leaves the skin as is);
8
+ * `"normal"` lays the art's own colours over it (stickers, light ink).
9
+ */
10
+ export declare const setHandTattooBlend: (material: THREE.ShaderMaterial, blend: HandTattooBlend) => void;
11
+ /**
12
+ * The tattoo material: projects `uniforms.map` through `uniforms.decalMatrix`
13
+ * (`handTattooMatrix`) from the mesh's rest surface; works on skinned and
14
+ * plain meshes. Blends over the depth already drawn (no depth writes, pulled
15
+ * forward with a polygon offset so it wins on the same surface).
16
+ */
17
+ export declare const createHandTattooMaterial: (blend?: HandTattooBlend) => THREE.ShaderMaterial;
18
+ export type HandTattooProps = {
19
+ /**
20
+ * The art: an image URL (loaded here, sRGB) or a texture you own (set its
21
+ * `colorSpace` to `THREE.SRGBColorSpace`). Dark ink on transparent (or on
22
+ * white, with `blend="multiply"`).
23
+ */
24
+ src: string | THREE.Texture;
25
+ /** `"back"` (default) of the hand or `"palm"`. */
26
+ placement?: HandTattooPlacement;
27
+ /**
28
+ * Art width in model units (cm for the SDK hand); the height follows the
29
+ * image's aspect. Default `HAND_TATTOO_DEFAULT_SIZE` palm lengths (≈ 4.8 cm).
30
+ */
31
+ size?: number;
32
+ /** `[towardThumb, towardFingers]` from the centre of that side, model units. Default `[0, 0]`. */
33
+ offset?: readonly [number, number];
34
+ /** Radians, counter-clockwise as seen looking at that side with the fingers up. Default `0`. */
35
+ rotation?: number;
36
+ /** 0..1. Default `0.9`. */
37
+ opacity?: number;
38
+ /** `"multiply"` (default: ink, skin shading shows through) or `"normal"` (the art's own colours). */
39
+ blend?: HandTattooBlend;
40
+ /** Default `HAND_TATTOO_RENDER_ORDER` (1): after the hand model. */
41
+ renderOrder?: number;
42
+ };
43
+ /**
44
+ * Art on the hand's skin (#271): projected onto the enclosing `HandRig` /
45
+ * `HandOccluder` model's surface in its rest pose, so it bends, stretches and
46
+ * turns with the fingers and the palm. Inside a `HandOccluder` it inks the
47
+ * real hand in the camera image (the occluder's depth hides it where the hand
48
+ * covers itself, e.g. curled fingers over a palm tattoo); inside a visible
49
+ * `HandRig` it prints on that model (a glove, a skin).
50
+ *
51
+ * ```tsx
52
+ * <HandOccluder hand="right" model={handGltf.scene} inflate={-0.1}>
53
+ * <HandTattoo src="/tattoos/rose.png" placement="back" size={5} opacity={0.85} />
54
+ * </HandOccluder>
55
+ * ```
56
+ *
57
+ * Needs no UVs: placement is measured from the rig's joints. On the mirrored
58
+ * chirality the placement mirrors with the hand (`offset[0]` stays toward the
59
+ * thumb) but the art itself never reads mirrored.
60
+ */
61
+ export declare const HandTattoo: ({ src, placement, size, offset, rotation, opacity, blend, renderOrder, }: HandTattooProps) => null;
@@ -0,0 +1,34 @@
1
+ import { ReactNode } from 'react';
2
+ import { WristSize } from '../../hand/wrist';
3
+ export type WristAttachmentProps = {
4
+ /** How far up the forearm from the wrist joint, model units (cm for the SDK hand). Default 1. */
5
+ along?: number;
6
+ /** A nudge in the wrist frame: `position` (model units), `rotation` (radians), `scale`. */
7
+ offset?: {
8
+ position?: [number, number, number];
9
+ rotation?: [number, number, number];
10
+ scale?: number;
11
+ };
12
+ /** In the wrist frame; a function gets the wrist's size (`WristSize`, model units). */
13
+ children?: ReactNode | ((wrist: WristSize) => ReactNode);
14
+ };
15
+ /**
16
+ * Experimental: its props and behaviour may change in a later alpha
17
+ * (vincentt-xr/sdk#319).
18
+ *
19
+ * Puts its children on the wrist of the enclosing `HandRig` or
20
+ * `HandOccluder`, riding on the rig's `forearm` bone: a watch, a bracelet, a
21
+ * cuff. The wrist frame: +Y toward the
22
+ * fingers (−Y up the forearm), +Z out of the palm (−Z is the back of the
23
+ * wrist, where a watch face sits), +X across; model units, centimetres for
24
+ * the SDK hand. It rides on the rig's fit, so it turns and scales with the
25
+ * tracked hand. A function child gets the wrist's size, to fit a strap.
26
+ *
27
+ * The frame is steadied against the flips an edge-on hand can cause (a
28
+ * sudden turn is taken only once it lasts). With the rig's `armMask` it also
29
+ * follows the arm found in the mask: turned about the camera ray through the
30
+ * wrist onto the arm's direction on screen, moved across onto its middle,
31
+ * and scaled across (X, Z, gently) toward the arm's width; easing back to the
32
+ * hand's own axis when the arm can't be found.
33
+ */
34
+ export declare const WristAttachment: ({ along, offset, children }: WristAttachmentProps) => JSX.Element | null;
@@ -0,0 +1,101 @@
1
+ import { ReactNode } from 'react';
2
+ import { ArmFitSettings, ArmMeasureOptions } from '../../hand/armMask';
3
+ import { HandRigBinding } from '../../hand/handRigSolver';
4
+ import { Handedness } from '../../types/hand-tracking';
5
+ import { ArmMaskKind } from './useArmMask';
6
+ import { HandRigWrist } from './wristSolve';
7
+ import * as THREE from "three";
8
+ export { HAND_RIG_FOREARM, HandRigWrist, ensureForearmBone, type HandRigArm } from './wristSolve';
9
+ export type HandRigProps = {
10
+ /** The person's hand to follow (anatomical, on every source). */
11
+ hand: Handedness;
12
+ /**
13
+ * A skinned hand following the rig contract (`HAND_RIG_REQUIRED_JOINTS`),
14
+ * e.g. a loaded `gltf.scene`. It is cloned (skeleton included) per rig, so
15
+ * one loaded model can drive both hands; materials are shared — swap them
16
+ * on `model` or in `onModel`.
17
+ */
18
+ model: THREE.Object3D;
19
+ /** The chirality the model is authored as. Default `"right"`; the other is drawn mirrored. */
20
+ modelHand?: Handedness;
21
+ /** Per-frame EMA factor for the hand and finger poses, `1` = none. Default `0.5`. */
22
+ smoothing?: number;
23
+ /**
24
+ * `"tracked"` (default): each finger segment takes the tracked hand's length
25
+ * (`applyHandRigLengths`: lengthened along the bone only, so fingers keep the
26
+ * model's thickness; ratios clamped to `HAND_RIG_LENGTH_RANGE`). `"model"`:
27
+ * keep the model's own proportions (only the whole hand is scaled).
28
+ */
29
+ fingerLengths?: "tracked" | "model";
30
+ /** Keep drawing a lost hand during the short hold (`HandPose.held`). Default `true`. */
31
+ showHeld?: boolean;
32
+ /** Fires once on found (`true`) and once on lost (`false`). */
33
+ onTrackingChange?: (tracked: boolean) => void;
34
+ /**
35
+ * Replaces every mesh material of this rig's clone (e.g. a glove, a ghost
36
+ * or a different skin tone per hand). Omit to keep the model's own. The
37
+ * caller owns (and disposes) it.
38
+ */
39
+ material?: THREE.Material;
40
+ /**
41
+ * Called once with this rig's clone (e.g. to set shadows or render order).
42
+ * Attachments and tattoo layers may already be inside it; the model's own meshes carry
43
+ * `userData[HAND_RIG_MODEL_MESH]`.
44
+ */
45
+ onModel?: (clone: THREE.Object3D) => void;
46
+ /** `false` pauses the hand model's inference (see `HandTracker`). Default `true`. */
47
+ active?: boolean;
48
+ /**
49
+ * Experimental (vincentt-xr/sdk#319). Find the forearm in a segmentation
50
+ * mask, so `WristAttachment` content
51
+ * (and the forearm occluder) follows the real arm on screen and fits its
52
+ * width, not just the hand's axis: `"skin"` (the multiclass segmenter's
53
+ * bare skin, apart from the face and clothes) or `"portrait"` (the person
54
+ * mask: no edges where the arm is in front of the body), or options.
55
+ * Default off.
56
+ */
57
+ armMask?: ArmMaskKind | HandRigArmMaskOptions;
58
+ /** `HandAttachment`s (rings, nails, watches …) on its bones and `HandTattoo`s on its skin. */
59
+ children?: ReactNode;
60
+ };
61
+ /** `armMask` with options: the mask, what to fit, the measure and the easing. */
62
+ export type HandRigArmMaskOptions = Partial<ArmFitSettings> & ArmMeasureOptions & {
63
+ /** Default `"skin"`: the arm's bare skin, apart from the face and the clothes. */
64
+ kind?: ArmMaskKind;
65
+ /** Turn wristwear onto the arm's direction. Default true. */
66
+ turn?: boolean;
67
+ /** Fit wristwear to the arm's width (and centre it on the arm). Default true. */
68
+ fitWidth?: boolean;
69
+ };
70
+ /**
71
+ * The enclosing rig's wrist (`HandRigWrist`): its frame, steadied and fitted
72
+ * to the arm, solved once per frame for every `WristAttachment` on it.
73
+ */
74
+ export declare const HandRigWristContext: import('react').Context<HandRigWrist | null>;
75
+ /**
76
+ * `userData` flag on the hand model's own meshes in a rig's clone. The clone
77
+ * also carries `HandAttachment` content (portaled into its bones) and
78
+ * `HandTattoo` layers (siblings of the model meshes); check this
79
+ * flag to touch only the hand.
80
+ */
81
+ export declare const HAND_RIG_MODEL_MESH = "vincenttHandRigModelMesh";
82
+ /** The binding of the enclosing `HandRig` / `HandOccluder`, for `HandAttachment` / `HandTattoo`. */
83
+ export declare const HandRigContext: import('react').Context<HandRigBinding | null>;
84
+ /**
85
+ * Drives a skinned hand model from a tracked hand (#165). Place it anywhere in
86
+ * the scene (not inside a tracker): it reads both hands from the shared hand
87
+ * model, fits the model's palm to the live palm (position, rotation, size) and
88
+ * swings every finger bone toward its live child joint, measured from the
89
+ * model's own rest pose. Mount one per hand:
90
+ *
91
+ * ```tsx
92
+ * <HandRig hand="left" model={gltf.scene} />
93
+ * <HandRig hand="right" model={gltf.scene} />
94
+ * ```
95
+ *
96
+ * Identity is anatomical and sticky (`assignHandPoses`): a hand that drops out
97
+ * is held briefly, then hidden, and comes back on the same rig — never the
98
+ * other one — snapped to its new pose. On the mirrored webcam a right hand
99
+ * looks like a left hand, so a right-hand model is mirrored onto it.
100
+ */
101
+ export declare const HandRig: ({ hand, model, modelHand, smoothing, fingerLengths, showHeld, onTrackingChange, material, onModel, active, armMask, children, }: HandRigProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import { ArmMaskSource } from '../../hand/armMask';
2
+ /**
3
+ * Which mask the arm is looked for in: `"portrait"` (the person, from the
4
+ * portrait segmenter; sleeves count, an arm in front of the body has no
5
+ * edges) or `"skin"` (bare skin, the multiclass segmenter's `body_skin`;
6
+ * works in front of clothes, not over a sleeve).
7
+ */
8
+ export type ArmMaskKind = "portrait" | "skin";
9
+ export type ArmMask = ArmMaskSource & {
10
+ readonly kind: ArmMaskKind;
11
+ /** Bumped on every new mask; 0 until the first one. */
12
+ readonly version: number;
13
+ /** `performance.now()` of the frame the mask comes from, when known. */
14
+ readonly timestampMs: number | undefined;
15
+ /**
16
+ * Pulls the segmenter's latest mask (in place, no copy); true when it is
17
+ * new. Call once per frame; reads back from the GPU at most `maxFps` times
18
+ * a second (portrait).
19
+ */
20
+ refresh: (nowMs: number) => boolean;
21
+ };
22
+ /**
23
+ * Experimental (vincentt-xr/sdk#319). The arm mask for wristwear: acquires the portrait or the multiclass
24
+ * segmenter while `kind` is set (`false` acquires nothing) and reads its mask
25
+ * where it lives. The multiclass segmenter shares
26
+ * `XRModel.SEMANTIC_SEGMENTATION` with the hair mask: the first acquirer in a
27
+ * session picks the preset, so `"skin"` needs it not to be the hair one.
28
+ */
29
+ export declare const useArmMask: (kind: ArmMaskKind | false) => ArmMask | null;