@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,143 @@
1
+ import { MakeupAutoShadeRegion, MakeupRegion } from './constants';
2
+ /**
3
+ * Curated shade palettes per region: generic camelCase names (no brand or
4
+ * product names) to sRGB hex. Shades are relative to the person's own skin,
5
+ * so an opaque shade renders as its nominal colour on average skin under
6
+ * settled light, on every skin tone.
7
+ */
8
+ export declare const MAKEUP_SHADES: {
9
+ readonly lips: {
10
+ readonly nude: "#b9826f";
11
+ readonly rosewood: "#9e5a5a";
12
+ readonly mauve: "#a0606e";
13
+ readonly softPink: "#d88a95";
14
+ readonly coral: "#e0645a";
15
+ readonly peach: "#e8907a";
16
+ readonly classicRed: "#a3202d";
17
+ readonly brick: "#8e3b2c";
18
+ readonly berry: "#7b2846";
19
+ readonly plum: "#5e2a45";
20
+ readonly wine: "#5a1a28";
21
+ readonly chocolate: "#5b3a2e";
22
+ };
23
+ readonly contour: {
24
+ readonly fair: "#c9a08a";
25
+ readonly light: "#b48a72";
26
+ readonly medium: "#98705a";
27
+ readonly tan: "#7f5a45";
28
+ readonly deep: "#5e4032";
29
+ readonly rich: "#432c22";
30
+ readonly bronzeLight: "#b9805a";
31
+ readonly bronzeDeep: "#8a5532";
32
+ };
33
+ readonly blush: {
34
+ readonly softPink: "#e8a0a8";
35
+ readonly rose: "#d97a85";
36
+ readonly peach: "#f0a07c";
37
+ readonly coral: "#ec7b67";
38
+ readonly apricot: "#f2a86b";
39
+ readonly mauve: "#c0828f";
40
+ readonly berry: "#b04a68";
41
+ readonly brick: "#b4574a";
42
+ readonly terracotta: "#c4694c";
43
+ readonly plum: "#8f4a68";
44
+ };
45
+ readonly highlighter: {
46
+ readonly pearl: "#f6eee6";
47
+ readonly champagne: "#f2dcc0";
48
+ readonly gold: "#e9c27a";
49
+ readonly roseGold: "#eab3a0";
50
+ readonly bronzeGlow: "#d29a66";
51
+ readonly lilacPearl: "#e6d6ef";
52
+ };
53
+ readonly eyeshadow: {
54
+ readonly ivory: "#f3e6d3";
55
+ readonly champagne: "#e9d2b0";
56
+ readonly sand: "#d2b48c";
57
+ readonly taupe: "#8f7a6e";
58
+ readonly warmBrown: "#8b5a3c";
59
+ readonly coolBrown: "#6e5a50";
60
+ readonly espresso: "#3e2a22";
61
+ readonly charcoal: "#3a3a3c";
62
+ readonly black: "#141414";
63
+ readonly bronze: "#a8743f";
64
+ readonly copper: "#b5653a";
65
+ readonly gold: "#d4ae5a";
66
+ readonly roseGold: "#d49a8a";
67
+ readonly plum: "#6b3a5a";
68
+ readonly burgundy: "#6e2433";
69
+ readonly olive: "#6f6a3a";
70
+ readonly navy: "#23314f";
71
+ readonly emerald: "#1f6b52";
72
+ readonly teal: "#1f6f73";
73
+ readonly lilac: "#b8a0cf";
74
+ readonly silver: "#c5c7cb";
75
+ };
76
+ readonly eyeliner: {
77
+ readonly black: "#0d0d0d";
78
+ readonly brownBlack: "#231a16";
79
+ readonly brown: "#4a3226";
80
+ readonly charcoal: "#33343a";
81
+ readonly navy: "#1c2848";
82
+ readonly plum: "#4f2442";
83
+ readonly emerald: "#145a44";
84
+ readonly bronze: "#8a5a2e";
85
+ readonly gold: "#c9a14e";
86
+ readonly white: "#f5f3ef";
87
+ };
88
+ readonly brows: {
89
+ readonly blonde: "#a88a62";
90
+ readonly taupe: "#7c6a5c";
91
+ readonly softBrown: "#6b4f3c";
92
+ readonly mediumBrown: "#57402f";
93
+ readonly darkBrown: "#3d2c22";
94
+ readonly softBlack: "#252020";
95
+ readonly auburn: "#7a4030";
96
+ readonly grey: "#8a8580";
97
+ };
98
+ };
99
+ /** A named shade of one region's palette, e.g. `MakeupShadeName<"lips">` is `"nude" | "rosewood" | …`. */
100
+ export type MakeupShadeName<R extends MakeupRegion> = Extract<keyof (typeof MAKEUP_SHADES)[R], string>;
101
+ /**
102
+ * What a region's `shade` field accepts: a palette name, `"custom"` (the
103
+ * `color` field as given) and, for lips, blush, contour, highlighter and
104
+ * brows, `"auto"` (from the person's own colouring).
105
+ */
106
+ export type MakeupShadeSetting<R extends MakeupRegion> = MakeupShadeName<R> | "custom" | (R extends MakeupAutoShadeRegion ? "auto" : never);
107
+ /** The palette names per region, in palette order. */
108
+ export declare const MAKEUP_SHADE_NAMES: {
109
+ readonly [R in MakeupRegion]: readonly MakeupShadeName<R>[];
110
+ };
111
+ /** True when `region`'s `shade` accepts `"auto"`. */
112
+ export declare const supportsAutoMakeupShade: (region: MakeupRegion) => region is MakeupAutoShadeRegion;
113
+ export declare const isMakeupShadeName: <R extends MakeupRegion>(region: R, value: unknown) => value is MakeupShadeName<R>;
114
+ /**
115
+ * A shade name to its sRGB hex; `"auto"` stays `"auto"` where the region
116
+ * supports it (the colour is computed on the GPU). `undefined` for
117
+ * `"custom"` and for names that are not in the region's palette.
118
+ */
119
+ export declare function resolveMakeupShade(region: MakeupRegion, shade: string): string | undefined;
120
+ /**
121
+ * Resolves one `shade` / `color` pair (the region's main pair, or eyeshadow's
122
+ * crease and inner pairs). The shade comes from the explicit value, else the
123
+ * base (defaults then shape). A palette shade sets the colour; an explicit
124
+ * colour that differs from it wins and the shade becomes `"custom"`. With
125
+ * `"auto"` the colour keeps the base colour as the fallback shown until the
126
+ * person's own colour is measured. Re-resolving a resolved pair is a no-op.
127
+ *
128
+ * Exception: when both are explicit and the colour is one a shade produced
129
+ * (any colour of the region's palette, or the base colour), the explicit
130
+ * named or `"auto"` shade wins. That colour was carried over from a resolved
131
+ * object, so `{ ...resolved, shade: "coral" }` gives coral.
132
+ */
133
+ export declare const resolveMakeupShadePair: <R extends MakeupRegion>(region: R, shadeInput: unknown, colorInput: unknown, baseShade: MakeupShadeSetting<R>, baseColor: string) => {
134
+ shade: MakeupShadeSetting<R>;
135
+ color: string;
136
+ };
137
+ /** `"classicRed"` → `"Classic red"`. */
138
+ export declare const makeupNameLabel: (name: string) => string;
139
+ /** Select options for a region's shade field: custom, auto (where supported), then the palette. */
140
+ export declare const makeupShadeOptions: <R extends MakeupRegion>(region: R) => {
141
+ label: string;
142
+ value: string;
143
+ }[];
@@ -0,0 +1,27 @@
1
+ import { MakeupRegion } from './constants';
2
+ import { MakeupSettings } from './types';
3
+ /**
4
+ * Placement presets per region, in display order. Lips use the `LipEffect`
5
+ * presets (their `preset` field plays the part of `shape`).
6
+ */
7
+ export declare const MAKEUP_SHAPE_NAMES: {
8
+ readonly lips: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient", "shimmer", "glitter"];
9
+ readonly contour: readonly ["soft", "sculpted", "bronzed", "nose"];
10
+ readonly blush: readonly ["apples", "lifted", "draped", "sunKissed"];
11
+ readonly highlighter: readonly ["cheekbones", "strobe", "glow", "nose"];
12
+ readonly eyeshadow: readonly ["lid", "crease", "smoky", "cutCrease", "halo", "winged"];
13
+ readonly eyeliner: readonly ["tightline", "classic", "winged", "catEye", "smudged", "kohl"];
14
+ readonly brows: readonly ["natural", "softArch", "straight", "highArch", "bold", "thin"];
15
+ };
16
+ /** A placement preset of one region, e.g. `MakeupShape<"blush">` is `"apples" | "lifted" | …`. */
17
+ export type MakeupShape<R extends MakeupRegion> = (typeof MAKEUP_SHAPE_NAMES)[R][number];
18
+ /**
19
+ * What each shape sets. Shapes set placement (geometry fields), `softness`
20
+ * and `coverage`; the shade and finish stay the caller's. Resolution order is
21
+ * defaults → shape → finish → shade → explicit values.
22
+ */
23
+ export declare const MAKEUP_SHAPES: {
24
+ readonly [R in MakeupRegion]: Readonly<Record<MakeupShape<R>, Partial<MakeupSettings[R]>>>;
25
+ };
26
+ /** True when `value` is one of `region`'s shapes (lips: a `LipEffect` preset). */
27
+ export declare const isMakeupShape: <R extends MakeupRegion>(region: R, value: unknown) => value is MakeupShape<R>;
@@ -0,0 +1,135 @@
1
+ import { FaceSkinStats } from '../../face-atlas/probe/stats';
2
+ import { Vec3 } from '../../face-atlas/shading';
3
+ import { MakeupRegion } from './constants';
4
+ import { MakeupShadeName } from './shades';
5
+ /**
6
+ * The skin-tone readout (FACE-1, `useMakeupSkinTone`): skin depth and
7
+ * undertone from the skin probe's settled skin colour, and the curated
8
+ * palette shades closest to what each region would paint on this person.
9
+ * Pure functions: the hook feeds them the probe's stats; a photo's stats
10
+ * (`FaceSkinProbe.renderStill` + `readStats`) work the same way.
11
+ */
12
+ /** Skin depth, lightest to deepest (the contour palette's names). */
13
+ export declare const MAKEUP_SKIN_DEPTHS: readonly ["fair", "light", "medium", "tan", "deep", "rich"];
14
+ export type MakeupSkinDepth = (typeof MAKEUP_SKIN_DEPTHS)[number];
15
+ /** Undertone, from the skin's hue: pinker (cool) to more golden (warm). */
16
+ export declare const MAKEUP_UNDERTONES: readonly ["cool", "neutral", "warm"];
17
+ export type MakeupUndertone = (typeof MAKEUP_UNDERTONES)[number];
18
+ /** The readout's thresholds and defaults. Angles are degrees, lightness and chroma CIELAB units. */
19
+ export declare const MAKEUP_SKIN_TONE: Readonly<{
20
+ /**
21
+ * Lower ITA bound of each depth but the deepest (the Individual Typology
22
+ * Angle, `atan((L* − 50) / b*)`, with Chardon's skin categories: very light
23
+ * > 55°, light > 41°, intermediate > 28°, tan > 10°, brown > −30°, dark).
24
+ */
25
+ readonly depthIta: Readonly<{
26
+ fair: 55;
27
+ light: 41;
28
+ medium: 28;
29
+ tan: 10;
30
+ deep: -30;
31
+ }>;
32
+ /** Skin hue (CIELAB `h_ab`) under this is cool (at `undertoneKneeL` and lighter). */
33
+ readonly coolHue: 50;
34
+ /** Skin hue over this is warm; between `coolHue` and it, neutral. */
35
+ readonly warmHue: 60;
36
+ /**
37
+ * Skin lightness (CIELAB `L*`) under which both hue cuts move down: deeper
38
+ * skin has a lower hue whatever its undertone.
39
+ */
40
+ readonly undertoneKneeL: 50;
41
+ /** How far both hue cuts move down per `L*` unit under `undertoneKneeL`, degrees. */
42
+ readonly undertoneHueShift: 0.25;
43
+ /** Skin chroma (CIELAB `C*ab`) under this reads neutral whatever its hue (a grey or washed-out image). */
44
+ readonly minUndertoneChroma: 6;
45
+ /** Lip or brow colour used once the probe saw at least this share of their taps (else derived from the skin). */
46
+ readonly minFeatureSeen: 0.25;
47
+ /** Shades recommended per region. */
48
+ readonly recommendations: 3;
49
+ /** `useMakeupSkinTone`: ms between reads of the probe (2 a second). */
50
+ readonly readbackMs: 500;
51
+ /** `useMakeupSkinTone`: the shortest `intervalMs` it accepts. */
52
+ readonly minReadbackMs: 200;
53
+ }>;
54
+ /** Each region's recommended palette shades, best first. */
55
+ export type MakeupShadeRecommendations = {
56
+ readonly [R in MakeupRegion]: readonly MakeupShadeName<R>[];
57
+ };
58
+ /** What `computeMakeupSkinTone` reads off the stats (a `FaceSkinStats` fits). */
59
+ export type MakeupSkinToneInput = Pick<FaceSkinStats, "skinSlow" | "ready" | "lip" | "lipSeen" | "brow" | "browSeen">;
60
+ export type MakeupSkinTone = {
61
+ /** The settled skin colour as the camera shows it, sRGB hex. */
62
+ skin: string;
63
+ /** Its CIELAB (D65) `[L*, a*, b*]`. */
64
+ lab: readonly [number, number, number];
65
+ depth: MakeupSkinDepth;
66
+ /** The Individual Typology Angle, degrees: higher is lighter (`MAKEUP_SKIN_TONE.depthIta`). */
67
+ ita: number;
68
+ undertone: MakeupUndertone;
69
+ /** The skin's CIELAB hue angle `h_ab`, degrees (skin is usually 40–70). */
70
+ hue: number;
71
+ /** The skin's CIELAB chroma `C*ab`. */
72
+ chroma: number;
73
+ /** The person's own lip colour, sRGB hex, or null while too little lip was seen. */
74
+ lips: string | null;
75
+ /** The person's own brow-hair colour, sRGB hex, or null while too little brow was seen. */
76
+ brows: string | null;
77
+ /** Palette shades per region, best first: the shades nearest what each region would paint on this person. */
78
+ recommendations: MakeupShadeRecommendations;
79
+ };
80
+ export type ComputeMakeupSkinToneOptions = {
81
+ /** Shades per region. Default `MAKEUP_SKIN_TONE.recommendations` (3). */
82
+ count?: number;
83
+ };
84
+ type MVec3 = [number, number, number];
85
+ /** Linear sRGB → CIELAB (D65), `[L*, a*, b*]`. */
86
+ export declare const linearSrgbToLab: (c: Vec3) => MVec3;
87
+ /** `#rrggbb` → linear sRGB. */
88
+ export declare const hexToLinearSrgb: (hex: string) => MVec3;
89
+ /** Linear sRGB → `#rrggbb` (clamped). */
90
+ export declare const linearSrgbToHex: (c: Vec3) => string;
91
+ /** The Individual Typology Angle of a CIELAB colour, degrees: `atan2(L* − 50, b*)`. */
92
+ export declare const skinTypologyAngle: (lab: Vec3) => number;
93
+ /** Skin depth from the ITA (`MAKEUP_SKIN_TONE.depthIta`). */
94
+ export declare const classifyMakeupSkinDepth: (ita: number) => MakeupSkinDepth;
95
+ /**
96
+ * Undertone from the skin's CIELAB hue and chroma (`MAKEUP_SKIN_TONE`). With
97
+ * its `lightness` (`L*`), the hue cuts move down for skin deeper than
98
+ * `undertoneKneeL`, so deep skin is not read as cool for its lower hue.
99
+ */
100
+ export declare const classifyMakeupUndertone: (hue: number, chroma: number, lightness?: number) => MakeupUndertone;
101
+ /**
102
+ * What each region would paint on this person (linear colours): the GPU's
103
+ * `shade: "auto"` recipes (`makeupAutoShade`) on the settled skin, lip and
104
+ * brow colours, plus a soft transition shade for eyeshadow (the skin
105
+ * deepened) and a liner from the brow hair (darkened). Blush, highlighter
106
+ * and eyeshadow then lean toward the undertone's hues (warm: peach, gold,
107
+ * bronze; cool: rose, pearl, taupe). Lips and brows fall back to colours
108
+ * derived from the skin while too little of them was seen.
109
+ */
110
+ export declare const makeupToneTargets: (skin: Vec3, lip: Vec3 | null, brow: Vec3 | null, undertone?: MakeupUndertone) => { readonly [R in MakeupRegion]: MVec3; };
111
+ /** The `count` palette shades of `region` nearest (CIELAB ΔE) to a linear colour, best first. */
112
+ export declare const nearestMakeupShades: <R extends MakeupRegion>(region: R, target: Vec3, count?: number) => MakeupShadeName<R>[];
113
+ /**
114
+ * The skin-tone readout from the probe's stats (`FaceSkinStats`, e.g.
115
+ * `readFaceSkinStats` of `FaceSkinProbe.readStatsAsync`): skin depth (ITA),
116
+ * undertone (CIELAB hue) and palette shades per region. `null` until the
117
+ * probe is ready (`ready` past `MAKEUP_SKIN_READY`) or while the skin reads black.
118
+ *
119
+ * It measures the image, not the person: the camera's white balance moves
120
+ * the hue (a warm room reads warm), and its exposure moves the depth.
121
+ */
122
+ /**
123
+ * `ready` at or above this counts as ready. It ramps to 1, but the packed
124
+ * 8-bit stats some GPUs fall back to (no float render targets) top out at
125
+ * 255/256, so an exact 1 never comes there (the probe's self-test uses the same).
126
+ */
127
+ export declare const MAKEUP_SKIN_READY = 0.99;
128
+ export declare const computeMakeupSkinTone: (stats: MakeupSkinToneInput, options?: ComputeMakeupSkinToneOptions) => MakeupSkinTone | null;
129
+ /**
130
+ * Whether two readouts differ enough to tell the app (`useMakeupSkinTone`
131
+ * re-renders only then): another depth, undertone, recommendation, or a
132
+ * skin, lip or brow colour that moved by a step of the sRGB hex.
133
+ */
134
+ export declare const makeupSkinToneChanged: (previous: MakeupSkinTone | null, next: MakeupSkinTone | null) => boolean;
135
+ export {};
@@ -0,0 +1,110 @@
1
+ import { LipEffectSettings } from '../LipEffect/settings';
2
+ import { MakeupFaceRegion, MakeupFinish, MakeupRegion, MakeupSide } from './constants';
3
+ import { MakeupShadeSetting } from './shades';
4
+ import { MakeupShape } from './shapes';
5
+ /**
6
+ * Fields every makeup region shares (lips use `LipEffectSettings`). Flat and
7
+ * serializable: a settings object can live in a store, a URL or a panel.
8
+ */
9
+ export type MakeupRegionSettings<R extends MakeupFaceRegion> = {
10
+ /** `false` draws nothing and costs nothing. Looks use it for unused regions. */
11
+ enabled: boolean;
12
+ /**
13
+ * Placement preset from `MAKEUP_SHAPES[region]`; it sets the geometry
14
+ * fields and `coverage`. `"custom"` applies no preset: the placement is the
15
+ * region's default shape's (contour `soft`, blush `apples`, highlighter
16
+ * `cheekbones`, eyeshadow `lid`, eyeliner `classic`, brows `natural`) with
17
+ * the fields as given.
18
+ */
19
+ shape: MakeupShape<R> | "custom";
20
+ /**
21
+ * A named colour from `MAKEUP_SHADES[region]` (sets `color`), `"auto"`
22
+ * where supported (from the person's own colouring; `color` is the
23
+ * fallback until it is measured) or `"custom"` (`color` as given).
24
+ */
25
+ shade: MakeupShadeSetting<R>;
26
+ /** CSS colour. An explicit colour that differs from the shade wins and the shade becomes `"custom"`. */
27
+ color: string;
28
+ /** Linear amount, 0..1: 0.8 renders 80 %. */
29
+ opacity: number;
30
+ /** 0 = sheer (filters the person's own colour, never lightens), 1 = opaque (covers the skin). */
31
+ coverage: number;
32
+ /** How the product reflects light. Choosing a finish sets `shine` and the sparkle fields. */
33
+ finish: MakeupFinish;
34
+ /** Strength of the finish highlight, 0..1. */
35
+ shine: number;
36
+ /** Flake colour for `shimmer` / `glitter`; `""` derives it from the shade. */
37
+ sparkleColor: string;
38
+ /** Flake density, 0..1 (`shimmer` and `glitter` only). */
39
+ sparkleDensity: number;
40
+ /** Flake size in millimetres, 0.1..1.5. */
41
+ sparkleSize: number;
42
+ /** Edge feather, 0..1. */
43
+ softness: number;
44
+ /** The person's own side(s) to paint, on every feed. */
45
+ side: MakeupSide;
46
+ };
47
+ export type BlushSettings = MakeupRegionSettings<"blush"> & {
48
+ /** Scale of the placement, 0.5..1.5. */
49
+ size: number;
50
+ /** −1..1: 0 sits on the cheek, positive lifts toward the temple, negative drops toward the apples. */
51
+ lift: number;
52
+ };
53
+ export type ContourSettings = MakeupRegionSettings<"contour"> & {
54
+ /** Scale of the placement, 0.5..1.5. */
55
+ size: number;
56
+ };
57
+ export type HighlighterSettings = MakeupRegionSettings<"highlighter"> & {
58
+ /** Scale of the placement, 0.5..1.5. */
59
+ size: number;
60
+ };
61
+ export type EyeshadowSettings = MakeupRegionSettings<"eyeshadow"> & {
62
+ /** How far the lid colour reaches, 0..1: lash line (0) to brow (1). */
63
+ height: number;
64
+ /** Strength of the crease band, 0..1. */
65
+ crease: number;
66
+ /** Crease colour by name; `creaseColor` wins when it differs. */
67
+ creaseShade: MakeupShadeSetting<"eyeshadow">;
68
+ creaseColor: string;
69
+ /** Shadow along the lower lash line, 0..1. */
70
+ lower: number;
71
+ /** Inner-corner highlight, 0..1. */
72
+ inner: number;
73
+ /** Inner-corner colour by name; `innerColor` wins when it differs. */
74
+ innerShade: MakeupShadeSetting<"eyeshadow">;
75
+ innerColor: string;
76
+ };
77
+ export type EyelinerSettings = MakeupRegionSettings<"eyeliner"> & {
78
+ /** Line width at its thickest, in millimetres, 0.2..4. */
79
+ thickness: number;
80
+ /** Wing length past the outer corner, in millimetres, 0..15. */
81
+ wing: number;
82
+ /** Wing angle in degrees, 0..45, upward in the person's frame. */
83
+ wingAngle: number;
84
+ /** Lower lash line, 0..1 (fades while blinking). */
85
+ lower: number;
86
+ /** Softens and widens the line, 0..1. */
87
+ smudge: number;
88
+ };
89
+ export type BrowsSettings = MakeupRegionSettings<"brows"> & {
90
+ /** 0..1; 0.5 follows the person's own brow, higher is thicker and darker. */
91
+ boldness: number;
92
+ /** 0 tints only the real hairs, 1 fills a full powder shape. */
93
+ fill: number;
94
+ /** Procedural hair strokes, 0..1. */
95
+ strokes: number;
96
+ };
97
+ /** Settings per region: `MakeupSettings["blush"]` is `BlushSettings`, lips are `LipEffectSettings`. */
98
+ export type MakeupSettings = {
99
+ lips: LipEffectSettings;
100
+ contour: ContourSettings;
101
+ blush: BlushSettings;
102
+ highlighter: HighlighterSettings;
103
+ eyeshadow: EyeshadowSettings;
104
+ eyeliner: EyelinerSettings;
105
+ brows: BrowsSettings;
106
+ };
107
+ /** Partial settings per region, as looks and overrides carry them. */
108
+ export type MakeupSettingsInput = {
109
+ [R in MakeupRegion]?: Partial<MakeupSettings[R]>;
110
+ };
@@ -0,0 +1,40 @@
1
+ import { FaceSkinQuality } from '../../face-atlas/probe/constants';
2
+ import { MakeupSkinTone } from './skinTone';
3
+ export type UseMakeupSkinToneOptions = {
4
+ /** Which tracked face. Default: the nearest `FaceRig` / `FaceTracker`'s face, else 0. */
5
+ faceIndex?: number;
6
+ /** Faces to start the face model with when this starts it (no `FaceTracker` above). */
7
+ numFaces?: number;
8
+ /**
9
+ * Milliseconds between reads of the probe, at least
10
+ * `MAKEUP_SKIN_TONE.minReadbackMs` (200). Default 500 (two reads a second).
11
+ */
12
+ intervalMs?: number;
13
+ /** Shades recommended per region. Default 3. */
14
+ count?: number;
15
+ /** The skin probe's quality (`useFaceSkin`). Default `"auto"`. */
16
+ quality?: FaceSkinQuality;
17
+ /** `false` stops reading and releases the probe. Default true. */
18
+ enabled?: boolean;
19
+ };
20
+ /**
21
+ * The person's skin tone for shade-finder UIs: skin depth (`fair` … `rich`),
22
+ * undertone (`cool`, `neutral`, `warm`), the measured skin, lip and brow
23
+ * colours, and the curated palette shades nearest what each region would
24
+ * paint on them (`MakeupSkinTone`). `null` until the face's skin probe has
25
+ * settled.
26
+ *
27
+ * It reads the shared skin probe of the face (the one makeup uses; it starts
28
+ * one if none runs) back from the GPU without stalling it, at most every
29
+ * `intervalMs` (default 500 ms), and re-renders only when the readout
30
+ * changes. Works alone (it starts the face model when no `FaceTracker` is
31
+ * above). The camera's white balance moves the undertone and its exposure
32
+ * the depth: it describes the image, not the person, so offer it as a
33
+ * suggestion, never a label.
34
+ *
35
+ * ```tsx
36
+ * const tone = useMakeupSkinTone();
37
+ * <Blush shade={tone?.recommendations.blush[0] ?? "rose"} />
38
+ * ```
39
+ */
40
+ export declare const useMakeupSkinTone: (options?: UseMakeupSkinToneOptions) => MakeupSkinTone | null;
@@ -0,0 +1,44 @@
1
+ import { ReactNode } from 'react';
2
+ import { SpringSwingOptions } from '../../spring/swing';
3
+ import { CanonicalOffset } from '../HeadOccluder/useLandmarkPoseFit';
4
+ import { CanonicalTorsoFitOptions } from '../ShoulderOccluder/useCanonicalTorsoFit';
5
+ import type * as THREE from "three";
6
+ /** Nodes whose name contains one of these swing (`*_pendant`, `*_charm`). */
7
+ export declare const NECKLACE_SWING_NODES: readonly string[];
8
+ /** A pendant lies on the chest: it swings less far than an earring. */
9
+ export declare const NECKLACE_SWING_DEFAULTS: Readonly<SpringSwingOptions>;
10
+ export type NecklaceProps = Omit<CanonicalTorsoFitOptions, "offset"> & {
11
+ /**
12
+ * The necklace, authored in the torso frame: centimetres, origin between
13
+ * the shoulder joints, +X screen right, +Y up, +Z toward the camera, the
14
+ * chain on the neck base and upper chest. A pendant is a child node named
15
+ * `…pendant…` (or `…charm…`) with its origin on its bail. Cloned, so pass a
16
+ * loaded GLB's scene (or one of its nodes) as it is.
17
+ */
18
+ model?: THREE.Object3D | null;
19
+ /** JSX in the same frame (it does not swing). */
20
+ children?: ReactNode;
21
+ /**
22
+ * The pendants swing on a spring about their bail as the body moves, then
23
+ * settle: `true` (default) for the gentle default, `SpringSwingOptions`, or
24
+ * `false` (rigid). They hang along the torso's own down.
25
+ */
26
+ swing?: boolean | SpringSwingOptions;
27
+ /** Name parts of the nodes that swing. Default `NECKLACE_SWING_NODES`. */
28
+ swingNodes?: readonly string[];
29
+ /** Hide the chain behind the neck and shoulders (a `ShoulderOccluder`). Default true. */
30
+ occluder?: boolean;
31
+ /** The occluder's mesh (`ShoulderOccluder` `url`); default the SDK's CDN copy. */
32
+ occluderUrl?: string;
33
+ /** Nudge on top of the fit, in torso centimetres. */
34
+ offset?: CanonicalOffset;
35
+ };
36
+ /**
37
+ * A necklace on a tracked body: the chain sits on the neck base and upper
38
+ * chest (the canonical torso fit), its pendants swing, and the shoulder
39
+ * occluder hides the chain behind the neck. Inside a `BodyTracker` it uses
40
+ * that body; anywhere else it tracks the body itself (`bodyIndex`). Hidden
41
+ * while the body is lost. Under a `HeadOccluder` (a `HeadBinding`) the chin
42
+ * hides the chain behind it too.
43
+ */
44
+ export declare const Necklace: ({ model, children, swing, swingNodes, occluder, occluderUrl, offset, bodyIndex, ...fit }: NecklaceProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export { NECKLACE_SWING_DEFAULTS, NECKLACE_SWING_NODES, Necklace, type NecklaceProps, } from './Necklace';
@@ -0,0 +1,69 @@
1
+ import { Euler, Vector3 } from '@react-three/fiber';
2
+ import { ReactNode } from 'react';
3
+ import { ParticleEmitterTarget } from '../../particles/eyes';
4
+ import { ParticlePreset } from '../../particles/presets';
5
+ import { ParticleSettings } from '../../particles/settings';
6
+ import { ParticleSystem } from '../../particles/system';
7
+ import type * as THREE from "three";
8
+ export type ParticleEmitterProps = Partial<ParticleSettings> & {
9
+ /** A built-in look the other settings go on top of (`PARTICLE_PRESETS`). */
10
+ preset?: ParticlePreset;
11
+ /**
12
+ * Emit from the person's own left eye, right eye, or both (two emitters),
13
+ * straight out of the face. `position`, `rotation` and `scale` then apply
14
+ * about the eye, in the head's centimetres. Inside a `FaceTracker` it
15
+ * follows that tracker's face; anywhere else it tracks the face itself.
16
+ */
17
+ target?: ParticleEmitterTarget;
18
+ /** With `target`: the face (default: the enclosing `FaceTracker`'s, else 0). */
19
+ faceIndex?: number;
20
+ /** With `target` and no enclosing `FaceTracker`: faces the face model tracks when this starts it. */
21
+ numFaces?: number;
22
+ /** New particles keep coming. False stops emitting; the particles already out live on. Default true. */
23
+ emitting?: boolean;
24
+ /** The particles' render order (they draw in the transparent pass). Default 0. */
25
+ renderOrder?: number;
26
+ /** The emitter's place in its parent (its +Z is forward). */
27
+ position?: Vector3;
28
+ rotation?: Euler;
29
+ scale?: Vector3;
30
+ /** Called with each emitter's `ParticleSystem` when it is made, and with null when it goes. */
31
+ onSystem?: (system: ParticleSystem | null) => void;
32
+ children?: ReactNode;
33
+ };
34
+ /**
35
+ * Emits particles from where it is: put it anywhere in the scene, inside a
36
+ * tracker to follow a face or a hand, or give it a `target` (the eyes).
37
+ * Particles are drawn in world space and keep their own path once out; they
38
+ * live on when the emitter stops or its tracker hides (it emits only while
39
+ * shown). Settings are props (any subset of `ParticleSettings`, over a
40
+ * `preset`), in the emitter's units: inside a head frame (and with
41
+ * `target`), centimetres. The ref is the emitter's group (with two eyes, the
42
+ * person's left one).
43
+ */
44
+ export declare const ParticleEmitter: import('react').ForwardRefExoticComponent<Partial<ParticleSettings> & {
45
+ /** A built-in look the other settings go on top of (`PARTICLE_PRESETS`). */
46
+ preset?: ParticlePreset;
47
+ /**
48
+ * Emit from the person's own left eye, right eye, or both (two emitters),
49
+ * straight out of the face. `position`, `rotation` and `scale` then apply
50
+ * about the eye, in the head's centimetres. Inside a `FaceTracker` it
51
+ * follows that tracker's face; anywhere else it tracks the face itself.
52
+ */
53
+ target?: ParticleEmitterTarget;
54
+ /** With `target`: the face (default: the enclosing `FaceTracker`'s, else 0). */
55
+ faceIndex?: number;
56
+ /** With `target` and no enclosing `FaceTracker`: faces the face model tracks when this starts it. */
57
+ numFaces?: number;
58
+ /** New particles keep coming. False stops emitting; the particles already out live on. Default true. */
59
+ emitting?: boolean;
60
+ /** The particles' render order (they draw in the transparent pass). Default 0. */
61
+ renderOrder?: number;
62
+ /** The emitter's place in its parent (its +Z is forward). */
63
+ position?: Vector3;
64
+ rotation?: Euler;
65
+ scale?: Vector3;
66
+ /** Called with each emitter's `ParticleSystem` when it is made, and with null when it goes. */
67
+ onSystem?: (system: ParticleSystem | null) => void;
68
+ children?: ReactNode;
69
+ } & import('react').RefAttributes<THREE.Group<THREE.Object3DEventMap>>>;
@@ -0,0 +1 @@
1
+ export { ParticleEmitter, type ParticleEmitterProps } from './ParticleEmitter';
@@ -0,0 +1,43 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { CanonicalOffset } from '../HeadOccluder/useLandmarkPoseFit';
3
+ import { CanonicalTorsoFitOptions } from './useCanonicalTorsoFit';
4
+ export { CANONICAL_TORSO_FIT_DEFAULT_SMOOTHING, useCanonicalTorsoFit, } from './useCanonicalTorsoFit';
5
+ export type { CanonicalTorsoFitOptions } from './useCanonicalTorsoFit';
6
+ /** The canonical-frame shoulder / upper-torso mesh. */
7
+ export declare const SHOULDER_OCCLUDER_V1_PATH = "/assets/xr/3d-models/shoulder-occluder-v1.glb";
8
+ export declare const SHOULDER_OCCLUDER_DEFAULT_OPACITY = 1;
9
+ export declare const shoulderOccluderUrl: () => string;
10
+ export type ShoulderOccluderProps = {
11
+ /** Which tracked body feeds the fit. Matches the parent `BodyTracker`'s `bodyIndex`. */
12
+ bodyIndex?: number;
13
+ /** Adjustments on top of the fit, in torso centimetres. */
14
+ offset?: CanonicalOffset;
15
+ /** Override the mesh. The fit expects a torso-frame mesh. */
16
+ url?: string;
17
+ /** Draw the mesh visibly (calibration). Production keeps it depth-only. */
18
+ showDebugMaterial?: boolean;
19
+ opacity?: number;
20
+ /** Per-frame EMA factor for the fitted pose, `1` = no smoothing. */
21
+ smoothing?: number;
22
+ onFit?: CanonicalTorsoFitOptions["onFit"];
23
+ };
24
+ /**
25
+ * Depth-only shoulder and upper-torso mesh under a `BodyTracker`, so
26
+ * accessories around the neck and shoulders (necklaces, scarves, straps,
27
+ * wings, capes) pass behind the body. Same contract as `HeadOccluder`:
28
+ * `colorWrite: false`, `depthWrite: true`, `renderOrder: -1`,
29
+ * `frustumCulled: false`, fitted every frame from the two shoulder
30
+ * landmarks only (selfie mode; nothing below them is read). Mount it beside a `HeadBinding` / `HeadOccluder` for a full
31
+ * head-and-shoulders occluder; the two necks overlap on purpose.
32
+ */
33
+ export declare const ShoulderOccluder: ({ bodyIndex, offset, url, showDebugMaterial, opacity, smoothing, onFit, }: ShoulderOccluderProps) => import("react/jsx-runtime").JSX.Element | null;
34
+ export type CanonicalTorsoFrameProps = PropsWithChildren<CanonicalTorsoFitOptions>;
35
+ /**
36
+ * A group, inside a `BodyTracker`, whose children are authored in torso
37
+ * centimetres: origin between the shoulder joints, +X screen right (the
38
+ * person's right in the mirrored selfie view), +Y up, +Z toward the camera;
39
+ * shoulders at `x = ±18`. Fitted with
40
+ * the same solver as `ShoulderOccluder`, so a necklace placed here sits where
41
+ * the occluder expects it.
42
+ */
43
+ export declare const CanonicalTorsoFrame: ({ children, ...options }: CanonicalTorsoFrameProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { CanonicalOffset, LandmarkPoseFit } from '../HeadOccluder/useLandmarkPoseFit';
3
+ import * as THREE from "three";
4
+ export type CanonicalTorsoFitOptions = {
5
+ /** Which tracked body feeds the fit. Matches the parent `BodyTracker`'s `bodyIndex`. */
6
+ bodyIndex?: number;
7
+ offset?: CanonicalOffset;
8
+ /** Per-frame EMA factor for the fitted pose, `1` = no smoothing. */
9
+ smoothing?: number;
10
+ enabled?: boolean;
11
+ onFit?: (fit: LandmarkPoseFit) => void;
12
+ /** Fires once on body found (`true`) and once on body lost (`false`). */
13
+ onTrackingChange?: (tracked: boolean) => void;
14
+ };
15
+ export declare const CANONICAL_TORSO_FIT_DEFAULT_SMOOTHING = 0.5;
16
+ /**
17
+ * Drives `target` (a child of a `BodyTracker` group) with the canonical torso
18
+ * pose from the two shoulder joints: scale from their distance, roll from the
19
+ * line between them, yaw from their depth difference, no pitch. Nothing below
20
+ * the shoulders is read (selfie mode: the hips are out of frame and their
21
+ * predicted positions inflated the torso at close range). Written as a local
22
+ * transform re-expressed in the parent's frame, like the head fit.
23
+ */
24
+ export declare const useCanonicalTorsoFit: (target: MutableRefObject<THREE.Object3D | null>, { bodyIndex, offset, smoothing, enabled, onFit, onTrackingChange, }?: CanonicalTorsoFitOptions) => void;