@vincentt-xr/sdk 2.0.0-alpha.8 → 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 (517) hide show
  1. package/GROUNDING.md +4643 -170
  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/gltfLoader.d.ts +16 -0
  18. package/dist/assets/loaders.d.ts +16 -1
  19. package/dist/body-pose/index.d.ts +521 -0
  20. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  21. package/dist/body-trigger/frame.d.ts +88 -0
  22. package/dist/body-trigger/index.d.ts +6 -0
  23. package/dist/body-trigger/moves.d.ts +235 -0
  24. package/dist/body-trigger/trigger.d.ts +75 -0
  25. package/dist/calibration/calibration.d.ts +11 -6
  26. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  27. package/dist/canonicalFace-C83I225R.cjs +1 -0
  28. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  29. package/dist/components/BodyInstruction/index.d.ts +69 -0
  30. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  31. package/dist/components/BodyTracker/index.d.ts +10 -2
  32. package/dist/components/BodyTrigger/index.d.ts +49 -0
  33. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  34. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  35. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  36. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  37. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  38. package/dist/components/FaceAtlas/index.d.ts +7 -0
  39. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  40. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  41. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  42. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  43. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  44. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  45. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  46. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  47. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  48. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  49. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  50. package/dist/components/FaceCharacter/index.d.ts +18 -0
  51. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  52. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  53. package/dist/components/FaceInset/frame.d.ts +94 -0
  54. package/dist/components/FaceInset/index.d.ts +6 -0
  55. package/dist/components/FaceInset/material.d.ts +40 -0
  56. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  57. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  58. package/dist/components/FaceInstruction/index.d.ts +56 -0
  59. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  60. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  61. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  62. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  63. package/dist/components/FaceLiquify/index.d.ts +10 -0
  64. package/dist/components/FaceLiquify/material.d.ts +39 -0
  65. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  66. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  67. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  68. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  69. package/dist/components/FaceLiquify/target.d.ts +85 -0
  70. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  71. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
  72. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  73. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
  74. package/dist/components/FaceMesh/index.d.ts +1 -1
  75. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  76. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  77. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  78. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  79. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  80. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  81. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  82. package/dist/components/FaceSwap/index.d.ts +13 -0
  83. package/dist/components/FaceSwap/settings.d.ts +300 -0
  84. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  85. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  86. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  87. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  88. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  89. package/dist/components/Faceless/Faceless.d.ts +51 -0
  90. package/dist/components/Faceless/index.d.ts +2 -0
  91. package/dist/components/HairLock/HairLock.d.ts +39 -0
  92. package/dist/components/HairLock/index.d.ts +2 -0
  93. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  94. package/dist/components/HandCutout/index.d.ts +35 -0
  95. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  96. package/dist/components/HandInstruction/index.d.ts +74 -0
  97. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  98. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  99. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  100. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  101. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  102. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  103. package/dist/components/HandRig/index.d.ts +101 -0
  104. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  105. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  106. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  107. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  108. package/dist/components/HandTouch/index.d.ts +2 -0
  109. package/dist/components/HeadBinding/index.d.ts +14 -0
  110. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  111. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  112. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  113. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  114. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  115. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  116. package/dist/components/HeadOccluder/index.d.ts +57 -3
  117. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  118. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  119. package/dist/components/Instruction/HintStage.d.ts +29 -0
  120. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  121. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  122. package/dist/components/Instruction/ghost.d.ts +129 -0
  123. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  124. package/dist/components/Instruction/hintLook.d.ts +81 -0
  125. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  126. package/dist/components/Instruction/index.d.ts +41 -0
  127. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  128. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  129. package/dist/components/LipEffect/LipEffect.d.ts +22 -2
  130. package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
  131. package/dist/components/LipEffect/LipEffects.d.ts +5 -2
  132. package/dist/components/LipEffect/defaults.d.ts +21 -2
  133. package/dist/components/LipEffect/index.d.ts +1 -1
  134. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  135. package/dist/components/LipEffect/settings.d.ts +117 -13
  136. package/dist/components/LipEffect/shader.d.ts +39 -0
  137. package/dist/components/LipEffect/types.d.ts +82 -10
  138. package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
  139. package/dist/components/LipEffect/uvGuide.d.ts +31 -16
  140. package/dist/components/Makeup/Blush.d.ts +18 -0
  141. package/dist/components/Makeup/Brows.d.ts +20 -0
  142. package/dist/components/Makeup/Contour.d.ts +17 -0
  143. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  144. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  145. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  146. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  147. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  148. package/dist/components/Makeup/constants.d.ts +44 -0
  149. package/dist/components/Makeup/design.d.ts +106 -0
  150. package/dist/components/Makeup/designSamples.d.ts +42 -0
  151. package/dist/components/Makeup/eyes.d.ts +114 -0
  152. package/dist/components/Makeup/fields.d.ts +10 -0
  153. package/dist/components/Makeup/geometry.d.ts +106 -0
  154. package/dist/components/Makeup/index.d.ts +26 -0
  155. package/dist/components/Makeup/looks.d.ts +28 -0
  156. package/dist/components/Makeup/material.d.ts +239 -0
  157. package/dist/components/Makeup/settings.d.ts +54 -0
  158. package/dist/components/Makeup/shades.d.ts +143 -0
  159. package/dist/components/Makeup/shapes.d.ts +27 -0
  160. package/dist/components/Makeup/skinTone.d.ts +135 -0
  161. package/dist/components/Makeup/types.d.ts +110 -0
  162. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  163. package/dist/components/Necklace/Necklace.d.ts +44 -0
  164. package/dist/components/Necklace/index.d.ts +1 -0
  165. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  166. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  167. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  168. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  169. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  170. package/dist/components/SpringSwing/index.d.ts +1 -0
  171. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  172. package/dist/components/index.d.ts +8 -0
  173. package/dist/config/index.d.ts +0 -1
  174. package/dist/context-DTxSQvp4.js +13 -0
  175. package/dist/context-hA0Rb2Xa.cjs +1 -0
  176. package/dist/contexts-BH7PdKFS.cjs +1 -0
  177. package/dist/contexts-jak8-tND.js +667 -0
  178. package/dist/coordinates/index.d.ts +2 -0
  179. package/dist/coordinates/side.d.ts +40 -0
  180. package/dist/debug-ui/default-setting.cjs +2 -2
  181. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  182. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  183. package/dist/debug-ui/index.d.ts +4 -3
  184. package/dist/debug-ui/media-source/index.d.ts +1 -1
  185. package/dist/debug-ui/media-source/session.d.ts +30 -2
  186. package/dist/debug-ui/media-source.cjs +1 -1
  187. package/dist/debug-ui/media-source.js +1 -1
  188. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  189. package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
  190. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  191. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  192. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  193. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  194. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  195. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  196. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  197. package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
  198. package/dist/debug-ui.cjs +3 -3
  199. package/dist/debug-ui.js +2250 -2472
  200. package/dist/entries/all.d.ts +3 -1
  201. package/dist/entries/core.d.ts +3 -2
  202. package/dist/entries/face-effects.d.ts +114 -8
  203. package/dist/entries/instructions.d.ts +48 -0
  204. package/dist/entries/internal.d.ts +2 -1
  205. package/dist/entries/low-level.d.ts +28 -1
  206. package/dist/entries/particles.d.ts +11 -0
  207. package/dist/entries/tracking.d.ts +37 -2
  208. package/dist/face-atlas/attributes.d.ts +30 -0
  209. package/dist/face-atlas/eyes.d.ts +272 -0
  210. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  211. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  212. package/dist/face-atlas/glsl/common.d.ts +55 -0
  213. package/dist/face-atlas/glsl/design.d.ts +49 -0
  214. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  215. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  216. package/dist/face-atlas/glsl/format.d.ts +4 -0
  217. package/dist/face-atlas/glsl/index.d.ts +59 -0
  218. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  219. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  220. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  221. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  222. package/dist/face-atlas/guide.d.ts +51 -0
  223. package/dist/face-atlas/index.d.ts +25 -0
  224. package/dist/face-atlas/lead.d.ts +117 -0
  225. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  226. package/dist/face-atlas/masks.d.ts +53 -0
  227. package/dist/face-atlas/obj.d.ts +69 -0
  228. package/dist/face-atlas/polylines.d.ts +63 -0
  229. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  230. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  231. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  232. package/dist/face-atlas/probe/constants.d.ts +137 -0
  233. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  234. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  235. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  236. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  237. package/dist/face-atlas/probe/stats.d.ts +143 -0
  238. package/dist/face-atlas/probe/targets.d.ts +70 -0
  239. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  240. package/dist/face-atlas/quality.d.ts +28 -0
  241. package/dist/face-atlas/regions.d.ts +31 -0
  242. package/dist/face-atlas/registry.d.ts +252 -0
  243. package/dist/face-atlas/renderState.d.ts +86 -0
  244. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  245. package/dist/face-atlas/shading.d.ts +406 -0
  246. package/dist/face-atlas/shapes.d.ts +86 -0
  247. package/dist/face-atlas/sides.d.ts +41 -0
  248. package/dist/face-atlas/skinMask.d.ts +35 -0
  249. package/dist/face-atlas/surface.d.ts +155 -0
  250. package/dist/face-atlas/topology.d.ts +44 -0
  251. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  252. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  253. package/dist/face-character/bindFaceModel.d.ts +106 -0
  254. package/dist/face-character/canonicalFace.d.ts +17 -0
  255. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  256. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  257. package/dist/face-character/driveFaceModel.d.ts +57 -0
  258. package/dist/face-character/expressionOutputs.d.ts +45 -0
  259. package/dist/face-character/faceExpressions.d.ts +104 -0
  260. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  261. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  262. package/dist/face-character/faceMorph.d.ts +77 -0
  263. package/dist/face-character/faceMorphs.d.ts +46 -0
  264. package/dist/face-character/facePhoto.d.ts +138 -0
  265. package/dist/face-character/facePiercings.d.ts +116 -0
  266. package/dist/face-character/facePin.d.ts +131 -0
  267. package/dist/face-character/faceReprojection.d.ts +273 -0
  268. package/dist/face-character/faceReprojector.d.ts +171 -0
  269. package/dist/face-character/faceRig.d.ts +176 -0
  270. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  271. package/dist/face-character/faceTexture.d.ts +169 -0
  272. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  273. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  274. package/dist/face-character/faceTextureStats.d.ts +298 -0
  275. package/dist/face-character/faceTransfer.d.ts +396 -0
  276. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  277. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  278. package/dist/face-character/faceWarp3D.d.ts +101 -0
  279. package/dist/face-character/faceless.d.ts +79 -0
  280. package/dist/face-character/featureWarp.d.ts +28 -0
  281. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  282. package/dist/face-character/liveValue.d.ts +12 -0
  283. package/dist/face-character/memo.d.ts +15 -0
  284. package/dist/face-effects.cjs +2252 -83
  285. package/dist/face-effects.js +14234 -1231
  286. package/dist/face-expression/index.d.ts +182 -0
  287. package/dist/face-info/landmarks.d.ts +17 -3
  288. package/dist/face-info/types.d.ts +20 -3
  289. package/dist/gestures/definitions.d.ts +15 -2
  290. package/dist/gestures/index.d.ts +1 -1
  291. package/dist/gestures/measures.d.ts +21 -8
  292. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  293. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  294. package/dist/hand/armFit.d.ts +46 -0
  295. package/dist/hand/armMask.d.ts +178 -0
  296. package/dist/hand/handCutout.d.ts +23 -0
  297. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  298. package/dist/hand/handGestures.d.ts +524 -0
  299. package/dist/hand/handPose.d.ts +98 -0
  300. package/dist/hand/handRigSolver.d.ts +159 -0
  301. package/dist/hand/handTattoo.d.ts +81 -0
  302. package/dist/hand/handTouch.d.ts +240 -0
  303. package/dist/hand/wrist.d.ts +44 -0
  304. package/dist/hand/wristFilter.d.ts +44 -0
  305. package/dist/hooks/selectors.d.ts +8 -0
  306. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  307. package/dist/hooks/useTrackerContext.d.ts +6 -0
  308. package/dist/index-B1_TzJaI.js +1104 -0
  309. package/dist/index-BavF06C6.js +190 -0
  310. package/dist/index-BfFmpddl.cjs +21 -0
  311. package/dist/index-BuBzneeW.cjs +46 -0
  312. package/dist/index-CGsQWodV.cjs +1 -0
  313. package/dist/index-CIe7eCMH.js +3200 -0
  314. package/dist/index-CfSF8LXa.cjs +1 -0
  315. package/dist/index-D5GTzOzD.cjs +1 -0
  316. package/dist/index-DBhQzvVa.js +314 -0
  317. package/dist/index-DE17y0ZI.cjs +1 -0
  318. package/dist/index-JII7huPk.js +442 -0
  319. package/dist/index-tpCr9CLj.cjs +1 -0
  320. package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
  321. package/dist/index-zGaqrz_K.js +188 -0
  322. package/dist/instructions.cjs +30 -0
  323. package/dist/instructions.js +1507 -0
  324. package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
  325. package/dist/internal-Cjinca64.cjs +1 -0
  326. package/dist/internal.cjs +1 -1
  327. package/dist/internal.js +15 -10
  328. package/dist/iris/compute.d.ts +7 -5
  329. package/dist/iris/types.d.ts +6 -4
  330. package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
  331. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  332. package/dist/landmarks-bftdwq6Z.js +76 -0
  333. package/dist/loaders-BGAUACsd.js +363 -0
  334. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  335. package/dist/low-level.cjs +1 -1
  336. package/dist/low-level.js +666 -602
  337. package/dist/main.cjs +1 -1
  338. package/dist/main.js +866 -1182
  339. package/dist/models/Body/index.d.ts +2 -0
  340. package/dist/models/Face/constants.d.ts +8 -0
  341. package/dist/models/Face/index.d.ts +3 -11
  342. package/dist/models/Face/rotation.d.ts +18 -3
  343. package/dist/models/Hand/HandTracking.d.ts +17 -1
  344. package/dist/models/Segmentation/index.d.ts +2 -0
  345. package/dist/models/nodeSource.d.ts +9 -0
  346. package/dist/particles/emission.d.ts +24 -0
  347. package/dist/particles/eyes.d.ts +24 -0
  348. package/dist/particles/glsl.d.ts +14 -0
  349. package/dist/particles/index.d.ts +10 -0
  350. package/dist/particles/motion.d.ts +42 -0
  351. package/dist/particles/presets.d.ts +12 -0
  352. package/dist/particles/ring.d.ts +58 -0
  353. package/dist/particles/selfTest.d.ts +53 -0
  354. package/dist/particles/settings.d.ts +127 -0
  355. package/dist/particles/shapes.d.ts +29 -0
  356. package/dist/particles/spawner.d.ts +60 -0
  357. package/dist/particles/system.d.ts +64 -0
  358. package/dist/particles.cjs +122 -0
  359. package/dist/particles.js +774 -0
  360. package/dist/product.cjs +1 -1
  361. package/dist/product.js +29 -29
  362. package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
  363. package/dist/providers-DHsrhDI2.cjs +62 -0
  364. package/dist/render/renderPasses.d.ts +8 -0
  365. package/dist/render/sceneBeforeRender.d.ts +12 -0
  366. package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
  367. package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  368. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  369. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  370. package/dist/renderState-CJNmj5jz.js +39 -0
  371. package/dist/renderState-apSfg4eR.cjs +1 -0
  372. package/dist/scene-object.cjs +1 -1
  373. package/dist/scene-object.js +2 -2
  374. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  375. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  376. package/dist/segmentation2d/types.d.ts +6 -0
  377. package/dist/select-Ck5LGz-J.cjs +1 -0
  378. package/dist/select-pYRo_win.js +233 -0
  379. package/dist/selectors-C4X71aoD.cjs +1 -0
  380. package/dist/selectors-DmNaKIwE.js +196 -0
  381. package/dist/session-BrH8G7iJ.cjs +31 -0
  382. package/dist/session-DgA_z6O1.js +418 -0
  383. package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
  384. package/dist/settings-C63FMBlF.cjs +1 -0
  385. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  386. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  387. package/dist/spring/index.d.ts +2 -0
  388. package/dist/spring/spring.d.ts +69 -0
  389. package/dist/spring/swing.d.ts +54 -0
  390. package/dist/tracking.cjs +10 -1
  391. package/dist/tracking.js +1002 -855
  392. package/dist/trigger-D0Pm9noT.cjs +49 -0
  393. package/dist/trigger-IQeys0oS.js +2128 -0
  394. package/dist/types/face.d.ts +20 -1
  395. package/dist/types/hand-tracking.d.ts +9 -0
  396. package/dist/types/nodes.d.ts +20 -1
  397. package/dist/types/segmentation.d.ts +5 -0
  398. package/dist/updateThrottle-BseecYag.js +4 -0
  399. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  400. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  401. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  402. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  403. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  404. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  405. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  406. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  407. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  408. package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
  409. package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
  410. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  411. package/dist/utils/headOccluderFit.d.ts +42 -0
  412. package/dist/utils/integrity.d.ts +17 -0
  413. package/dist/utils/resolveNumFaces.d.ts +13 -0
  414. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  415. package/dist/utils/similarityFit.d.ts +23 -0
  416. package/dist/uv-BMFt19bg.cjs +1 -0
  417. package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
  418. package/docs/SDK_DOCUMENTATION.md +1 -2
  419. package/docs/api/adaptive-quality.mdx +1 -1
  420. package/docs/api/body-instructions.mdx +285 -0
  421. package/docs/api/body-triggers.mdx +234 -0
  422. package/docs/api/camera-permission.mdx +1 -1
  423. package/docs/api/coordinate-spaces.mdx +7 -4
  424. package/docs/api/cross-camera.mdx +3 -2
  425. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  426. package/docs/api/external-face-mesh.mdx +231 -0
  427. package/docs/api/face-actions.mdx +20 -16
  428. package/docs/api/face-attribute-expression.mdx +1 -1
  429. package/docs/api/face-binding-anchors.mdx +4 -2
  430. package/docs/api/face-character.mdx +157 -0
  431. package/docs/api/face-effects.mdx +3 -0
  432. package/docs/api/face-expression-controller.mdx +153 -0
  433. package/docs/api/face-info.mdx +17 -11
  434. package/docs/api/face-inset.mdx +204 -0
  435. package/docs/api/face-instructions.mdx +183 -0
  436. package/docs/api/face-liquify.mdx +196 -0
  437. package/docs/api/face-mesh.mdx +4 -7
  438. package/docs/api/face-morph.mdx +117 -0
  439. package/docs/api/face-painting.mdx +7 -0
  440. package/docs/api/face-reprojection.mdx +154 -0
  441. package/docs/api/face-retouching.mdx +18 -10
  442. package/docs/api/face-swap.mdx +350 -0
  443. package/docs/api/face-warp-3d.mdx +166 -0
  444. package/docs/api/faceless.mdx +143 -0
  445. package/docs/api/gestures.mdx +68 -32
  446. package/docs/api/hair.mdx +97 -0
  447. package/docs/api/hand-instructions.mdx +222 -0
  448. package/docs/api/hand-rig.mdx +535 -0
  449. package/docs/api/hand-touch.mdx +162 -0
  450. package/docs/api/head-occluder.mdx +563 -0
  451. package/docs/api/holistic-tracker.mdx +6 -1
  452. package/docs/api/instructions.mdx +323 -0
  453. package/docs/api/iris-tracking.mdx +24 -19
  454. package/docs/api/made-up-camera.mdx +131 -0
  455. package/docs/api/makeup-skin-tone.mdx +135 -0
  456. package/docs/api/makeup.mdx +353 -0
  457. package/docs/api/multi-subject.mdx +4 -1
  458. package/docs/api/particles.mdx +155 -0
  459. package/docs/api/person-cutout.mdx +1 -1
  460. package/docs/api/pin-to-face-mesh.mdx +274 -0
  461. package/docs/api/product-ar.mdx +5 -2
  462. package/docs/api/segmentation-overlay.mdx +1 -1
  463. package/docs/docs.json +29 -1
  464. package/docs/examples/lip-shaders.mdx +82 -33
  465. package/docs/guides/face-atlas-template.svg +1 -0
  466. package/docs/guides/face-atlas-textures.mdx +186 -0
  467. package/docs/guides/face-texture-template.svg +1 -0
  468. package/docs/guides/harness-debug-ui.mdx +4 -4
  469. package/docs/guides/lip-effect-textures.mdx +178 -102
  470. package/docs/guides/lip-uv-template.png +0 -0
  471. package/docs/guides/lip-uv-template.svg +1 -1
  472. package/docs/guides/makeup-design-textures.mdx +109 -0
  473. package/docs/introduction.mdx +1 -2
  474. package/package.json +11 -1
  475. package/dist/DebuggerUI-C-ldiozL.js +0 -269
  476. package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
  477. package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
  478. package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
  479. package/dist/FaceRetouch-C7h7x9kd.js +0 -683
  480. package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
  481. package/dist/GLTFLoader-C5q63sKO.js +0 -1633
  482. package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
  483. package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
  484. package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
  485. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  486. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  487. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  488. package/dist/contexts-CO0sd4JQ.cjs +0 -1
  489. package/dist/contexts-FzlnnMYD.js +0 -669
  490. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  491. package/dist/getFaceInfo-BkZfaQs-.js +0 -118
  492. package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
  493. package/dist/index--RgGzZ6X.cjs +0 -47
  494. package/dist/index-CHVbH0hz.js +0 -214
  495. package/dist/index-CeVkgsag.cjs +0 -1
  496. package/dist/index-CnGox6Xr.js +0 -3054
  497. package/dist/index-DKBAh6hV.cjs +0 -1
  498. package/dist/index-DsZwTfG0.cjs +0 -1
  499. package/dist/index-Dw6tj2Mi.js +0 -144
  500. package/dist/index-OCPjOaeP.cjs +0 -1
  501. package/dist/index-s9pF4zkG.js +0 -2053
  502. package/dist/internal-BYza1h8_.cjs +0 -1
  503. package/dist/measures-9dQPdw96.js +0 -154
  504. package/dist/measures-KfJzpvod.cjs +0 -1
  505. package/dist/providers-YNwkmNeK.cjs +0 -62
  506. package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
  507. package/dist/screenTransform-BenfCtZt.js +0 -44
  508. package/dist/screenTransform-BiXdpVf0.cjs +0 -1
  509. package/dist/segmentation-9PhSvc-R.cjs +0 -1
  510. package/dist/segmentation-CeOTKemr.js +0 -5
  511. package/dist/selectors-C5G1PMYL.js +0 -195
  512. package/dist/selectors-Du_PsVnW.cjs +0 -1
  513. package/dist/session-BBr0yN8h.cjs +0 -31
  514. package/dist/session-Cy0m7l7-.js +0 -363
  515. package/dist/settings-DRR7-snV.cjs +0 -1
  516. package/dist/useFaceInfo-Blf7FCu3.js +0 -303
  517. package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
@@ -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;
@@ -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 {};