@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,23 @@
1
+ import { TrackerPoint } from '../types/common';
2
+ /** Triangles per hand: palm fan, two per bone, a circle per joint, the forearm quad and cap. */
3
+ /**
4
+ * Frame priority of `HandCutout`'s silhouette update: before the made-up
5
+ * camera's pass (`MADE_UP_CAMERA_FRAME_PRIORITY`, -0.3), so the made-up feed
6
+ * (FaceInset, FaceMorph textures, a face swap's map) cuts this frame's hands,
7
+ * not the last frame's. Negative: it does not take over R3F's render loop.
8
+ */
9
+ export declare const HAND_CUTOUT_FRAME_PRIORITY = -0.5;
10
+ export declare const HAND_CUTOUT_TRIANGLES: number;
11
+ export type HandCutoutOptions = {
12
+ /** Width multiplier for the fingers and palm. Default 1. */
13
+ inflate?: number;
14
+ /** Also cut out the forearm past the wrist (its length in hand sizes, 0 = none). Default 1.4. */
15
+ forearm?: number;
16
+ };
17
+ /**
18
+ * Writes one hand's silhouette into `out` (xy per vertex, 3 vertices per
19
+ * triangle) from its 21 joints in tracker space; `aspect` is the viewport's
20
+ * width / height (widths are round on screen). Returns the vertex count
21
+ * written. Unused room is left untouched.
22
+ */
23
+ export declare const writeHandCutout: (points: ArrayLike<TrackerPoint>, aspect: number, { inflate, forearm }: HandCutoutOptions, out: Float32Array, at?: number) => number;
@@ -0,0 +1,7 @@
1
+ import type * as THREE from "three";
2
+ /** Adds a cut-out's geometry for `scene`; returns the removal. */
3
+ export declare const registerHandCutoutShape: (scene: THREE.Object3D, geometry: THREE.BufferGeometry) => (() => void);
4
+ /** The cut-out geometries registered for `scene` (empty when none). */
5
+ export declare const getHandCutoutShapes: (scene: THREE.Object3D) => ReadonlySet<THREE.BufferGeometry>;
6
+ /** Whether any cut-out for `scene` draws a triangle this frame. */
7
+ export declare const hasHandCutoutShapes: (scene: THREE.Object3D) => boolean;
@@ -0,0 +1,524 @@
1
+ import { TrackerPoint } from '../types/common';
2
+ import { Handedness } from '../types/hand-tracking';
3
+ import { HandJointName } from './handPose';
4
+ import { HandRigBinding } from './handRigSolver';
5
+ import * as THREE from "three";
6
+ /** The five digits, thumb first. */
7
+ export type HandDigit = "thumb" | "index" | "middle" | "ring" | "pinky";
8
+ export declare const HAND_DIGITS: readonly HandDigit[];
9
+ /**
10
+ * A hand's shape from its 21 world joints (`HandPose.world`: centimetres,
11
+ * +X screen right, +Y up, +Z toward the viewer). Orientation-independent
12
+ * except `thumbDirection`, which is relative to the screen's up.
13
+ */
14
+ export type HandShape = {
15
+ /** Digit straightened out. */
16
+ extended: Record<HandDigit, boolean>;
17
+ /** 0 = straight, 1 = fully curled (sum of the joint bends, normalised). */
18
+ curl: Record<HandDigit, number>;
19
+ /** Number of extended digits, thumb included. */
20
+ count: number;
21
+ /** Which way an extended thumb points on screen; `"side"` otherwise. */
22
+ thumbDirection: "up" | "down" | "side";
23
+ /** Thumb tip and index tip touch (an OK sign, a pinch). */
24
+ thumbIndexTouch: boolean;
25
+ };
26
+ /**
27
+ * The classifier's default thresholds. Read-only: tune per call with
28
+ * `analyzeHandShape(world, { limits })` or a hook's `limits` option.
29
+ */
30
+ export declare const HAND_SHAPE_LIMITS: Readonly<{
31
+ /** A finger is extended when its PIP + DIP bends stay under this (radians, ~55°). */
32
+ fingerStraight: number;
33
+ /** … and its MCP bend stays under this (~70°, a finger folded at the knuckle is not up). */
34
+ fingerKnuckle: number;
35
+ /** The thumb is extended when its MCP + IP bends stay under this (~60°) … */
36
+ thumbStraight: number;
37
+ /** … and its tip is at least this many palm widths from the index MCP (tucked thumbs sit closer). */
38
+ thumbReach: 0.75;
39
+ /** |cos| of the thumb's angle to screen-up for "up" / "down" (~45°). */
40
+ thumbVertical: number;
41
+ /** Thumb and index tips touch within this many palm lengths (~1.75 cm). */
42
+ touch: 0.2;
43
+ /** Full curl, radians summed over a finger's three bends (normalises `curl`). */
44
+ fullCurl: number;
45
+ }>;
46
+ /** The classifier thresholds (see `HAND_SHAPE_LIMITS` for each one's meaning). */
47
+ export type HandShapeLimits = Record<keyof typeof HAND_SHAPE_LIMITS, number>;
48
+ export type AnalyzeHandShapeOptions = {
49
+ /** Thresholds to override (the rest keep `HAND_SHAPE_LIMITS`). */
50
+ limits?: Partial<HandShapeLimits>;
51
+ };
52
+ /**
53
+ * Reads extended digits, curl, count, thumb direction and thumb–index touch
54
+ * from a hand's world joints. Pure; needs all 21 joints.
55
+ */
56
+ export declare const analyzeHandShape: (world: readonly TrackerPoint[], { limits }?: AnalyzeHandShapeOptions) => HandShape;
57
+ /** What a gesture requires of a `HandShape`; omitted fields are "any". */
58
+ export type HandGestureRule = {
59
+ /** `true` = must be extended, `false` = must be folded. */
60
+ digits?: Partial<Record<HandDigit, boolean>>;
61
+ /** Exact number of extended digits (thumb included). */
62
+ count?: number;
63
+ thumbDirection?: "up" | "down";
64
+ thumbIndexTouch?: boolean;
65
+ };
66
+ /**
67
+ * How to draw a gesture on the hint hand. `clip` names an authored pose (a
68
+ * model animation, see `applyHandHintPose`); the other fields (values 0..1)
69
+ * pose the hand procedurally, for models without that clip.
70
+ */
71
+ export type HandHintPose = {
72
+ /**
73
+ * Authored pose: the name of a single-key animation clip on the model
74
+ * (`hand-v1.glb` ships one per pose). Used when the clip is passed in;
75
+ * otherwise the procedural fields below are used.
76
+ */
77
+ clip?: string;
78
+ /**
79
+ * Turn about the fingers' axis before showing, in degrees: 0 = palm to
80
+ * the viewer, 180 = the back of the hand, in between brings the thumb side
81
+ * round toward the viewer (an OK sign reads from ~125°).
82
+ */
83
+ yaw?: number;
84
+ /**
85
+ * Then turn in the screen plane, degrees counter-clockwise (after `yaw`):
86
+ * a call-me sign reads held sideways, thumb up and pinky down (~100°).
87
+ */
88
+ roll?: number;
89
+ /** Curl per digit; omitted = 0 (straight). */
90
+ curl?: Partial<Record<HandDigit, number>>;
91
+ /** Fan the fingers apart (0 = together, 1 = wide). */
92
+ spread?: number;
93
+ /** Swing the thumb across the palm (0 = out to the side, 1 = over the fingers). */
94
+ thumbTuck?: number;
95
+ /** Turn the whole hand in the screen plane so the extended thumb points this way. */
96
+ aimThumb?: "up" | "down";
97
+ /**
98
+ * Put the thumb tip HERE (IK on the thumb's three bones, after the fingers
99
+ * are posed): a joint of the posed hand plus an `offset` in palm lengths
100
+ * along [toward the thumb side, toward the fingers, out of the palm]. How a
101
+ * fist wraps the thumb over the curled fingers, or a peace sign holds the
102
+ * ring finger down. Replaces `curl.thumb` / `thumbTuck` as the thumb's pose.
103
+ */
104
+ thumbTo?: {
105
+ joint: HandJointName;
106
+ offset?: [number, number, number];
107
+ };
108
+ /**
109
+ * The digits drawn brighter on the hint. Default: picked from the gesture
110
+ * (its extended digits, thumb + index for a touch, the thumb for a thumb
111
+ * direction).
112
+ */
113
+ highlight?: readonly HandDigit[];
114
+ };
115
+ /**
116
+ * Your own test of a hand shape (any logic, e.g. curl amounts). `side` is the
117
+ * person's hand it is reading.
118
+ */
119
+ export type HandGestureMatch = (shape: HandShape, side?: Handedness) => boolean;
120
+ /**
121
+ * A gesture: its default copy, how it is detected (`rule`, or `match` for
122
+ * logic a rule cannot express; with both, both must pass) and how the hint
123
+ * hand shows it. Make your own with `defineHandGesture`.
124
+ */
125
+ export type HandGestureDefinition = {
126
+ /** Default instruction copy. */
127
+ label: string;
128
+ rule?: HandGestureRule;
129
+ match?: HandGestureMatch;
130
+ hint: HandHintPose;
131
+ };
132
+ /**
133
+ * Anything that names a gesture to detect: a built-in name, a rule, a match
134
+ * function or a full definition.
135
+ */
136
+ export type HandGestureSpec = HandGestureName | HandGestureRule | HandGestureMatch | HandGestureDefinition;
137
+ /**
138
+ * Checks and returns your own gesture definition (it needs a `rule` or a
139
+ * `match`). Pass it anywhere a gesture name goes.
140
+ *
141
+ * ```ts
142
+ * const shaka = defineHandGesture({
143
+ * label: "Hang loose",
144
+ * rule: { digits: { thumb: true, index: false, middle: false, ring: false, pinky: true } },
145
+ * hint: { clip: "callMe" },
146
+ * });
147
+ * ```
148
+ */
149
+ export declare const defineHandGesture: <T extends HandGestureDefinition>(definition: T) => T;
150
+ /**
151
+ * The instruction vocabulary. Counts (`one` … `five`) accept any digits as
152
+ * long as that many are up; named shapes require specific digits. The middle
153
+ * finger shown alone is deliberately absent (offensive in most places).
154
+ */
155
+ export declare const HAND_GESTURES: {
156
+ readonly palm: {
157
+ readonly label: "Show your palm";
158
+ readonly rule: {
159
+ readonly count: 5;
160
+ };
161
+ readonly hint: {
162
+ readonly clip: "palm";
163
+ readonly spread: 0.8;
164
+ readonly thumbTuck: 0;
165
+ };
166
+ };
167
+ readonly fist: {
168
+ readonly label: "Make a fist";
169
+ readonly rule: {
170
+ readonly digits: {
171
+ readonly index: false;
172
+ readonly middle: false;
173
+ readonly ring: false;
174
+ readonly pinky: false;
175
+ readonly thumb: false;
176
+ };
177
+ };
178
+ readonly hint: {
179
+ readonly clip: "fist";
180
+ readonly curl: {
181
+ middle: number;
182
+ index: number;
183
+ thumb: number;
184
+ ring: number;
185
+ pinky: number;
186
+ };
187
+ readonly thumbTuck: 1;
188
+ readonly thumbTo: {
189
+ readonly joint: "indexPip";
190
+ readonly offset: [-0.15, -0.1, 0.13];
191
+ };
192
+ };
193
+ };
194
+ readonly peace: {
195
+ readonly label: "Show a peace sign";
196
+ readonly rule: {
197
+ readonly digits: {
198
+ readonly index: true;
199
+ readonly middle: true;
200
+ readonly ring: false;
201
+ readonly pinky: false;
202
+ };
203
+ };
204
+ readonly hint: {
205
+ readonly clip: "peace";
206
+ readonly curl: {
207
+ middle: number;
208
+ index: number;
209
+ thumb: number;
210
+ ring: number;
211
+ pinky: number;
212
+ };
213
+ readonly spread: 1;
214
+ readonly thumbTuck: 1;
215
+ readonly thumbTo: {
216
+ readonly joint: "ringPip";
217
+ readonly offset: [0, -0.08, 0.12];
218
+ };
219
+ };
220
+ };
221
+ readonly thumbUp: {
222
+ readonly label: "Give a thumbs up";
223
+ readonly rule: {
224
+ readonly digits: {
225
+ readonly index: false;
226
+ readonly middle: false;
227
+ readonly ring: false;
228
+ readonly pinky: false;
229
+ readonly thumb: true;
230
+ };
231
+ readonly thumbDirection: "up";
232
+ };
233
+ readonly hint: {
234
+ readonly clip: "thumbUp";
235
+ readonly curl: {
236
+ middle: number;
237
+ index: number;
238
+ thumb: number;
239
+ ring: number;
240
+ pinky: number;
241
+ };
242
+ readonly thumbTuck: 0;
243
+ readonly aimThumb: "up";
244
+ };
245
+ };
246
+ readonly thumbDown: {
247
+ readonly label: "Give a thumbs down";
248
+ readonly rule: {
249
+ readonly digits: {
250
+ readonly index: false;
251
+ readonly middle: false;
252
+ readonly ring: false;
253
+ readonly pinky: false;
254
+ readonly thumb: true;
255
+ };
256
+ readonly thumbDirection: "down";
257
+ };
258
+ readonly hint: {
259
+ readonly clip: "thumbUp";
260
+ readonly curl: {
261
+ middle: number;
262
+ index: number;
263
+ thumb: number;
264
+ ring: number;
265
+ pinky: number;
266
+ };
267
+ readonly thumbTuck: 0;
268
+ readonly aimThumb: "down";
269
+ };
270
+ };
271
+ readonly point: {
272
+ readonly label: "Point your index finger";
273
+ readonly rule: {
274
+ readonly digits: {
275
+ readonly index: true;
276
+ readonly middle: false;
277
+ readonly ring: false;
278
+ readonly pinky: false;
279
+ };
280
+ };
281
+ readonly hint: {
282
+ readonly clip: "one";
283
+ readonly curl: {
284
+ middle: number;
285
+ index: number;
286
+ thumb: number;
287
+ ring: number;
288
+ pinky: number;
289
+ };
290
+ readonly thumbTuck: 0.6;
291
+ readonly thumbTo: {
292
+ readonly joint: "middlePip";
293
+ readonly offset: [0.1, -0.1, 0.1];
294
+ };
295
+ };
296
+ };
297
+ readonly one: {
298
+ readonly label: "Show 1 finger";
299
+ readonly rule: {
300
+ readonly count: 1;
301
+ };
302
+ readonly hint: {
303
+ readonly clip: "one";
304
+ readonly curl: {
305
+ middle: number;
306
+ index: number;
307
+ thumb: number;
308
+ ring: number;
309
+ pinky: number;
310
+ };
311
+ readonly thumbTuck: 1;
312
+ readonly thumbTo: {
313
+ readonly joint: "middlePip";
314
+ readonly offset: [0, -0.08, 0.12];
315
+ };
316
+ };
317
+ };
318
+ readonly two: {
319
+ readonly label: "Show 2 fingers";
320
+ readonly rule: {
321
+ readonly count: 2;
322
+ };
323
+ readonly hint: {
324
+ readonly clip: "peace";
325
+ readonly curl: {
326
+ middle: number;
327
+ index: number;
328
+ thumb: number;
329
+ ring: number;
330
+ pinky: number;
331
+ };
332
+ readonly spread: 0.6;
333
+ readonly thumbTuck: 1;
334
+ readonly thumbTo: {
335
+ readonly joint: "ringPip";
336
+ readonly offset: [0, -0.08, 0.12];
337
+ };
338
+ };
339
+ };
340
+ readonly three: {
341
+ readonly label: "Show 3 fingers";
342
+ readonly rule: {
343
+ readonly count: 3;
344
+ };
345
+ readonly hint: {
346
+ readonly clip: "three";
347
+ readonly curl: {
348
+ middle: number;
349
+ index: number;
350
+ thumb: number;
351
+ ring: number;
352
+ pinky: number;
353
+ };
354
+ readonly spread: 0.6;
355
+ readonly thumbTuck: 1;
356
+ readonly thumbTo: {
357
+ readonly joint: "pinkyPip";
358
+ readonly offset: [0, -0.08, 0.12];
359
+ };
360
+ };
361
+ };
362
+ readonly four: {
363
+ readonly label: "Show 4 fingers";
364
+ readonly rule: {
365
+ readonly count: 4;
366
+ };
367
+ readonly hint: {
368
+ readonly clip: "four";
369
+ readonly curl: {
370
+ readonly thumb: 1;
371
+ };
372
+ readonly spread: 0.6;
373
+ readonly thumbTuck: 1;
374
+ readonly thumbTo: {
375
+ readonly joint: "ringMcp";
376
+ readonly offset: [0, -0.2, 0.1];
377
+ };
378
+ };
379
+ };
380
+ readonly five: {
381
+ readonly label: "Show 5 fingers";
382
+ readonly rule: {
383
+ readonly count: 5;
384
+ };
385
+ readonly hint: {
386
+ readonly clip: "palm";
387
+ readonly spread: 0.8;
388
+ readonly thumbTuck: 0;
389
+ };
390
+ };
391
+ readonly rock: {
392
+ readonly label: "Rock on";
393
+ readonly rule: {
394
+ readonly digits: {
395
+ readonly index: true;
396
+ readonly middle: false;
397
+ readonly ring: false;
398
+ readonly pinky: true;
399
+ };
400
+ };
401
+ readonly hint: {
402
+ readonly clip: "rock";
403
+ readonly yaw: 180;
404
+ readonly curl: {
405
+ middle: number;
406
+ index: number;
407
+ thumb: number;
408
+ ring: number;
409
+ pinky: number;
410
+ };
411
+ readonly spread: 0.8;
412
+ readonly thumbTuck: 1;
413
+ readonly thumbTo: {
414
+ readonly joint: "middlePip";
415
+ readonly offset: [-0.05, -0.08, 0.12];
416
+ };
417
+ };
418
+ };
419
+ readonly loveYou: {
420
+ readonly label: "Sign I love you";
421
+ readonly rule: {
422
+ readonly digits: {
423
+ readonly thumb: true;
424
+ readonly index: true;
425
+ readonly middle: false;
426
+ readonly ring: false;
427
+ readonly pinky: true;
428
+ };
429
+ };
430
+ readonly hint: {
431
+ readonly clip: "loveYou";
432
+ readonly curl: {
433
+ middle: number;
434
+ index: number;
435
+ thumb: number;
436
+ ring: number;
437
+ pinky: number;
438
+ };
439
+ readonly spread: 0.8;
440
+ readonly thumbTuck: 0;
441
+ };
442
+ };
443
+ readonly callMe: {
444
+ readonly label: "Call me";
445
+ readonly rule: {
446
+ readonly digits: {
447
+ readonly thumb: true;
448
+ readonly index: false;
449
+ readonly middle: false;
450
+ readonly ring: false;
451
+ readonly pinky: true;
452
+ };
453
+ };
454
+ readonly hint: {
455
+ readonly clip: "callMe";
456
+ readonly roll: 103;
457
+ readonly curl: {
458
+ middle: number;
459
+ index: number;
460
+ thumb: number;
461
+ ring: number;
462
+ pinky: number;
463
+ };
464
+ readonly spread: 0.8;
465
+ readonly thumbTuck: 0;
466
+ };
467
+ };
468
+ readonly ok: {
469
+ readonly label: "Make an OK sign";
470
+ readonly rule: {
471
+ readonly thumbIndexTouch: true;
472
+ readonly digits: {
473
+ readonly middle: true;
474
+ readonly ring: true;
475
+ readonly pinky: true;
476
+ };
477
+ };
478
+ readonly hint: {
479
+ readonly clip: "ok";
480
+ readonly yaw: 124;
481
+ readonly curl: {
482
+ readonly thumb: 0.3;
483
+ readonly index: 0.5;
484
+ };
485
+ readonly spread: 0.6;
486
+ readonly thumbTuck: 0.4;
487
+ };
488
+ };
489
+ };
490
+ export type HandGestureName = keyof typeof HAND_GESTURES;
491
+ export declare const HAND_GESTURE_NAMES: HandGestureName[];
492
+ /** The full definition a spec names (`undefined` for a bare rule or match function). */
493
+ export declare const resolveHandGesture: (gesture: HandGestureSpec) => HandGestureDefinition | undefined;
494
+ /**
495
+ * Whether a shape satisfies a gesture: a name from `HAND_GESTURES`, a rule, a
496
+ * match function or a definition. `side` is passed on to match functions.
497
+ */
498
+ export declare const matchHandGesture: (shape: HandShape, gesture: HandGestureSpec, side?: Handedness) => boolean;
499
+ /** Every named gesture a shape satisfies (several can: `two` and `peace`). */
500
+ export declare const matchingHandGestures: (shape: HandShape) => HandGestureName[];
501
+ /** Rig-local bone rotations, by joint name. */
502
+ export type HandClipPose = Partial<Record<HandJointName, THREE.Quaternion>>;
503
+ /**
504
+ * How far into a hint pose: one amount for the whole hand, or one per digit
505
+ * (to stagger the fingers). 0 = rest, 1 = the pose; up to 1.1 overshoots a
506
+ * little (a settle).
507
+ */
508
+ export type HandHintAmount = number | ((digit: HandDigit) => number);
509
+ /**
510
+ * The pose an authored clip holds: the first key of each `<joint>.quaternion`
511
+ * track (a glTF animation targeting the rig's joint nodes). Cached per clip.
512
+ */
513
+ export declare const readHandClipPose: (clip: THREE.AnimationClip) => HandClipPose;
514
+ /**
515
+ * Poses a bound rig (`bindHandRig`) into a gesture's hint at `amount`
516
+ * (0 = the model's rest, 1 = the full hint; or per digit, see
517
+ * `HandHintAmount`). With `clips` holding the hint's
518
+ * `clip` (e.g. the GLB's `animations`), each bone turns from its rest toward
519
+ * the authored pose. Otherwise the pose is built procedurally: bends about
520
+ * axes derived from the rig's own rest pose — flex about (bone direction ×
521
+ * palm normal), spread and thumb tuck about the palm normal — carried down
522
+ * each digit, so any contract rig works. Writes `bone.quaternion`s.
523
+ */
524
+ export declare const applyHandHintPose: (binding: HandRigBinding, hint: HandHintPose, amount?: HandHintAmount, clips?: readonly THREE.AnimationClip[]) => void;
@@ -0,0 +1,98 @@
1
+ import { TrackerPoint } from '../types/common';
2
+ import { Handedness } from '../types/hand-tracking';
3
+ /**
4
+ * The 21 MediaPipe hand joints, in landmark order (index = MediaPipe index).
5
+ * CMC / MCP / PIP / DIP / IP are the knuckles from the wrist outward; the
6
+ * thumb has CMC, MCP, IP, tip, the fingers MCP, PIP, DIP, tip.
7
+ */
8
+ export declare const HAND_JOINT_NAMES: readonly ["wrist", "thumbCmc", "thumbMcp", "thumbIp", "thumbTip", "indexMcp", "indexPip", "indexDip", "indexTip", "middleMcp", "middlePip", "middleDip", "middleTip", "ringMcp", "ringPip", "ringDip", "ringTip", "pinkyMcp", "pinkyPip", "pinkyDip", "pinkyTip"];
9
+ export type HandJointName = (typeof HAND_JOINT_NAMES)[number];
10
+ export declare const HAND_JOINT_INDEX: Readonly<Record<HandJointName, number>>;
11
+ /**
12
+ * One tracked hand, both spaces.
13
+ *
14
+ * - `world`: 21 joints in the hand's own metric frame — CENTIMETRES, origin at
15
+ * MediaPipe's hand centre (roughly the middle of the palm), three.js axes for
16
+ * the feed as displayed: +X screen right, +Y up, +Z toward the viewer. This is
17
+ * the true 3D shape (finger bend, palm facing), independent of distance.
18
+ * - `image`: the same 21 joints in tracker space (centre origin, ±1, Y up; `z`
19
+ * is MediaPipe's relative depth) — what `HandTracker` has always published.
20
+ * Unproject with `trackerToWorld` to place things on screen.
21
+ */
22
+ export type HandPose = {
23
+ /** The person's anatomical hand on every source (mirrored webcam or not). */
24
+ handedness: Handedness;
25
+ /** MediaPipe's handedness confidence, 0..1. */
26
+ score: number;
27
+ world: TrackerPoint[];
28
+ image: TrackerPoint[];
29
+ /** `performance.now()` of the detection this pose came from. */
30
+ timestampMs: number;
31
+ /** True while the hand is lost and this pose is being held (see `holdMs`). */
32
+ held: boolean;
33
+ };
34
+ export type HandPoses = {
35
+ left: HandPose | null;
36
+ right: HandPose | null;
37
+ };
38
+ /** A raw detection before identity assignment. `handedness` is already anatomical. */
39
+ export type HandDetection = {
40
+ handedness: Handedness | undefined;
41
+ score: number;
42
+ world: TrackerPoint[];
43
+ image: TrackerPoint[];
44
+ };
45
+ export type AssignHandPosesOptions = {
46
+ /** Keep a lost hand (marked `held`) this long before dropping it. Default 200 ms. */
47
+ holdMs?: number;
48
+ /**
49
+ * Below this handedness confidence a label that disagrees with where the
50
+ * hand was a moment ago loses to continuity. Default 0.8.
51
+ */
52
+ confidentScore?: number;
53
+ /**
54
+ * Continuity only applies while the previous pose is this recent. Default
55
+ * 500 ms: a hand gone longer than that is assigned by its label alone.
56
+ */
57
+ continuityMs?: number;
58
+ };
59
+ export declare const HAND_POSE_DEFAULT_HOLD_MS = 200;
60
+ /**
61
+ * Assigns this frame's detections to a stable left / right slot.
62
+ *
63
+ * MediaPipe labels each hand independently, so it can call both hands "left",
64
+ * or flip one hand's label for a frame when it turns edge-on. A rig bound to
65
+ * that label would jump to the other hand. The rules, in order:
66
+ *
67
+ * 1. Two hands with different, confident labels: take the labels.
68
+ * 2. Otherwise, when both slots were seen within `continuityMs`, take the
69
+ * pairing that keeps each wrist nearest to where that slot's wrist was.
70
+ * 3. Two hands with the same label and no history: the higher score keeps
71
+ * the label, the other hand gets the other side.
72
+ * 4. One hand: its label, unless the label is not confident and the hand sits
73
+ * where the OTHER slot's hand was a moment ago (it is that hand, mislabeled).
74
+ *
75
+ * A slot with no detection keeps its previous pose for `holdMs` (marked
76
+ * `held`), then becomes `null`. Pure: pass the previous result back in.
77
+ */
78
+ export declare const assignHandPoses: (detections: readonly HandDetection[], previous: HandPoses, nowMs: number, { holdMs, confidentScore, continuityMs, }?: AssignHandPosesOptions) => HandPoses;
79
+ /**
80
+ * MediaPipe's hand landmarker labels the hand AS IT APPEARS in the frame it
81
+ * is given (measured on the SDK's `hand_tracking.task`: an unmirrored right
82
+ * hand reads "Right", the same frame flipped reads "Left" — not the mirrored-
83
+ * selfie assumption some MediaPipe docs describe). The SDK analyzes the feed as
84
+ * displayed: straight for the rear camera, images and video (labels are
85
+ * anatomical), mirrored for the front webcam (labels are swapped). The same
86
+ * rule as every MediaPipe side (`personSide`, GROUNDING "Left and right").
87
+ */
88
+ export declare const anatomicalHandedness: (label: string | undefined, feedMirrored: boolean) => Handedness | undefined;
89
+ /**
90
+ * MediaPipe world landmark (metres, origin at the hand centre, image axes:
91
+ * +X right, +Y down, +Z away from the camera) → SDK hand world joint
92
+ * (centimetres, three.js axes: +X right, +Y up, +Z toward the viewer).
93
+ */
94
+ export declare const handWorldLandmarkToJoint: (landmark: {
95
+ x: number;
96
+ y: number;
97
+ z: number;
98
+ }, target?: TrackerPoint) => TrackerPoint;