@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,87 @@
1
+ import { FaceImageLandmark } from '../../face-character/faceReprojection';
2
+ import { FaceSkinStats } from './stats';
3
+ import { FaceSkinProbeFormat, FaceSkinStatsFormat } from './targets';
4
+ import * as THREE from "three";
5
+ /**
6
+ * A GPU self-test of `FaceSkinProbe` on a synthetic face whose answers are
7
+ * known: a canonical face drawn on the CPU (Lambert shading from a known
8
+ * light, a known skin, lip and brow colour), unwrapped and measured on this
9
+ * device's GPU, then read back. It exercises the paths phones disagree on:
10
+ * RGBA16F MRT rendering, ConstantAlpha blending, mipmap generation, the
11
+ * stats ping-pong and its precision, and the RGBA8 fallback. The headless
12
+ * smoke run drives it (`example/smoke/face-skin-probe.spec.ts`); open
13
+ * `/smoke/face-skin-probe.html` on the dev server to run it on a device.
14
+ */
15
+ type Vec3 = [number, number, number];
16
+ /** The synthetic face's truths. */
17
+ export declare const FACE_SKIN_SELF_TEST_SCENE: Readonly<{
18
+ size: 256;
19
+ /** px per canonical cm. */
20
+ scale: 9;
21
+ yawDeg: 8;
22
+ skin: Vec3;
23
+ lip: Vec3;
24
+ brow: Vec3;
25
+ background: 0.2;
26
+ ambient: 0.3;
27
+ diffuse: 0.7;
28
+ /** View space (x right, y up, z toward the camera). */
29
+ light: Vec3;
30
+ /** The second image's gain (the EMA step). */
31
+ gain: 1.25;
32
+ /** Seconds of the second update. */
33
+ dt: 0.25;
34
+ /**
35
+ * The hold: from a still at gain 1, `holdUpdates` live updates `holdDt`
36
+ * apart on an image at `holdGain`. A 2 % step is under what half-float
37
+ * stats can store per update at 15 Hz (the slow skin stalls short of it).
38
+ */
39
+ holdGain: 1.02;
40
+ holdUpdates: 300;
41
+ holdDt: number;
42
+ /** After the hold, `Rs` within this of `Rf` (20 s is 5 τ: 0.7 % of the step is left). */
43
+ holdTolerance: 0.005;
44
+ }>;
45
+ export type FaceSkinSelfTestImage = {
46
+ width: number;
47
+ height: number;
48
+ /** RGBA8, sRGB-encoded, row 0 = image top (a `DataTexture` with `flipY` false). */
49
+ pixels: Uint8Array;
50
+ landmarks: FaceImageLandmark[];
51
+ /** The light, unit, view space. */
52
+ light: Vec3;
53
+ };
54
+ /** Draws the synthetic face (pure, no GPU). `gain` scales its linear colour. */
55
+ export declare const createFaceSkinSelfTestImage: (gain?: number) => FaceSkinSelfTestImage;
56
+ /** The stats read back at each step of one run. */
57
+ export type FaceSkinSelfTestReadings = {
58
+ /** After the still image. */
59
+ still: FaceSkinStats;
60
+ /** After one update on the `gain` image. */
61
+ next: FaceSkinStats;
62
+ /** After a second still at gain 1 (the hold's start). */
63
+ holdStart: FaceSkinStats;
64
+ /** After `holdUpdates` updates on the `holdGain` image. */
65
+ held: FaceSkinStats;
66
+ };
67
+ /** One format's outcome. */
68
+ export type FaceSkinSelfTestRun = {
69
+ format: FaceSkinProbeFormat;
70
+ statsFormat: FaceSkinStatsFormat;
71
+ ok: boolean;
72
+ /** What failed, or a summary. */
73
+ detail: string;
74
+ readings: FaceSkinSelfTestReadings | null;
75
+ };
76
+ /** The checks on one probe's readbacks (pure; tested without a GPU). */
77
+ export declare const judgeFaceSkinSelfTest: ({ still, next, holdStart, held }: FaceSkinSelfTestReadings, light: Vec3) => string[];
78
+ /**
79
+ * Runs the self-test on `renderer` (or a new 1 × 1 one, disposed after) for
80
+ * each format: the device's choice and the RGBA8 fallback. Never throws.
81
+ */
82
+ export declare const runFaceSkinProbeSelfTest: (renderer?: THREE.WebGLRenderer) => {
83
+ ok: boolean;
84
+ runs: FaceSkinSelfTestRun[];
85
+ error: string | null;
86
+ };
87
+ export {};
@@ -0,0 +1,143 @@
1
+ import { MakeupSkinTexel } from '../shading';
2
+ import { FaceSkinStepParams } from './constants';
3
+ /**
4
+ * The probe's stats: one small texture (`lightingMap`) of 8 texels the
5
+ * stats pass rewrites on every update (ping-pong), read by shaders with
6
+ * `texelFetch` (the `FACE_SKIN_STATS_GLSL` reader). This file holds its
7
+ * layout, the probe's sample points, and `stepFaceSkinStats`, the
8
+ * line-for-line TypeScript mirror of the stats pass (tests and docs).
9
+ */
10
+ /** The stats texels (`lightingMap`, read with `faceSkinStat(texel)`). Colours are linear. */
11
+ export declare const FACE_SKIN_STATS: Readonly<{
12
+ /** Texels in the layout (texels 5–7 are reserved, 0). */
13
+ readonly texels: 8;
14
+ /** rgb `Rs`: the person's skin under the settled light (τ 4 s). a: `ready`, 0 → 1 over 0.3 s of data. */
15
+ readonly skinSlow: 0;
16
+ /** rgb `Rf`: the skin under the current light (τ 0.25 s). a: skin coverage now (the skin map's top-mip weight). */
17
+ readonly skinFast: 1;
18
+ /**
19
+ * The light, `lum = a + b · n` over the skin: rgb the gradient `b` in VIEW
20
+ * space (x right, y up, z toward the camera), a the ambient `a`. Direction
21
+ * `normalize(b)`, confidence `|b| / a` (under 0.15 shading uses the key light).
22
+ */
23
+ readonly light: 2;
24
+ /** rgb: the person's own lip colour. a: how much lip the taps saw (0..1). */
25
+ readonly lip: 3;
26
+ /**
27
+ * rgb: the person's own brow-hair colour, `skin + (brow − skin) / 0.6` over
28
+ * the whole brow band, the extrapolation stopped at half the band's colour.
29
+ * a: how much brow the taps saw.
30
+ */
31
+ readonly brow: 4;
32
+ }>;
33
+ /** Where the stats pass samples the maps (atlas UV, v up). */
34
+ export type FaceSkinTaps = {
35
+ /** `LIGHT_FIT_TAPS`: UV (2 per tap), rest normal (3 per tap), `LIGHT_FIT_GROUP` flags. */
36
+ light: {
37
+ uv: Float32Array;
38
+ normal: Float32Array;
39
+ group: Int32Array;
40
+ };
41
+ /**
42
+ * The middle of the lip vermilion: halfway between each outer-ring landmark
43
+ * and its inner-ring partner, away from the corners (2 per tap).
44
+ */
45
+ lip: Float32Array;
46
+ /**
47
+ * Across each brow, upper edge to lower edge, at `FACE_SKIN_BROW_TAP_ROWS`
48
+ * (a sixth, half and five sixths down), both sides (2 per tap).
49
+ */
50
+ brow: Float32Array;
51
+ };
52
+ /**
53
+ * Where the brow taps sit between each upper-edge landmark (0) and its
54
+ * lower-edge partner (1): the centres of three equal strips, so they average
55
+ * the whole band, whose mean holds the hair share
56
+ * `FACE_SKIN_PROBE.browHairShare` assumes (the middle alone is nearly all hair).
57
+ */
58
+ export declare const FACE_SKIN_BROW_TAP_ROWS: readonly number[];
59
+ /** The stats pass's sample points (built once, shared: do not mutate). */
60
+ export declare const getFaceSkinTaps: () => FaceSkinTaps;
61
+ type Vec3 = [number, number, number];
62
+ /** What the stats pass samples, as raw texels of the maps (`(c·w, w)`, or `(w·√c, w)` on RGBA8). */
63
+ export type FaceSkinStatsInput = {
64
+ /** The skin map's top mip (1 × 1): the weighted mean of all the skin seen. */
65
+ skinTop: MakeupSkinTexel;
66
+ /** The skin map at the low-pass mip (`makeupSkinLod(size)`) at each light tap. */
67
+ lightSkin: readonly MakeupSkinTexel[];
68
+ /** The feature map (mip 0) at each lip tap. */
69
+ lipFeature: readonly MakeupSkinTexel[];
70
+ /** The feature map (mip 0) at each brow tap. */
71
+ browFeature: readonly MakeupSkinTexel[];
72
+ /** The skin map at the low-pass mip at each brow tap: the local skin around the brow. */
73
+ browSkin: readonly MakeupSkinTexel[];
74
+ /** The skin map `lowpassCoarseLods` mips coarser at each brow tap (where the low-pass has no skin). */
75
+ browSkinCoarse: readonly MakeupSkinTexel[];
76
+ /** Canonical head frame → view at this update, 3 × 3 column-major (`THREE.Matrix3.elements`). */
77
+ rotation: ArrayLike<number>;
78
+ };
79
+ /** The stats pass's blend factors and flags, plus the maps' encoding. */
80
+ export type FaceSkinStatsParams = FaceSkinStepParams & {
81
+ /** The maps hold `(w·√c, w)` (RGBA8). */
82
+ sqrt: boolean;
83
+ };
84
+ /**
85
+ * The light fit over the light taps, against the rest normals rotated into
86
+ * view space: `[a, bx, by, bz]`, or null when less than `minLightTaps` of
87
+ * skin was seen. Exactly `fitLight` (the CPU reference the GLSL ports) with
88
+ * the tap groups.
89
+ */
90
+ export declare const fitFaceSkinLight: (lightSkin: readonly MakeupSkinTexel[], rotation: ArrayLike<number>, sqrt: boolean) => [number, number, number, number] | null;
91
+ /**
92
+ * The person's brow-hair colour from the brow band's mean colour and the
93
+ * skin around it: the band is `browHairShare` hair, so hair =
94
+ * `skin + (brow − skin) / share`, along the skin → brow line. Dense brows
95
+ * hold more hair than that, and the line would run past black, so the
96
+ * factor stops where any channel reaches `browHairFloor` of the band's
97
+ * colour (or 1 for brows lighter than the skin): a dark brown stays brown.
98
+ */
99
+ export declare const faceSkinBrowHair: (brow: Readonly<Vec3>, skin: Readonly<Vec3>) => Vec3;
100
+ /**
101
+ * One stats update (the stats pass, texel by texel): `previous` and `out`
102
+ * are `FACE_SKIN_STATS.texels × 4` floats in the `FACE_SKIN_STATS` layout.
103
+ *
104
+ * - `Rf` follows the skin map's top mip (already averaged over time on half
105
+ * float; `fastBlend` averages it here on RGBA8), `Rs` follows `Rf` slowly.
106
+ * - Every slow average restarts (factor 1) on a snap, and also when `Rf`'s
107
+ * luminance differs from `Rs`'s by more than `snapJump` (40 %).
108
+ * - With too little skin seen (`minCoverage`), the values hold; on a snap
109
+ * they clear (not ready). Too few light, lip or brow taps hold that value.
110
+ * - Brow hair is `faceSkinBrowHair` of the brow band's mean and the skin
111
+ * around it.
112
+ */
113
+ export declare const stepFaceSkinStats: (previous: ArrayLike<number>, input: FaceSkinStatsInput, params: FaceSkinStatsParams, out?: Float32Array) => Float32Array;
114
+ /** The stats, decoded. Colours are linear RGB. */
115
+ export type FaceSkinStats = {
116
+ /** `Rs`. */
117
+ skinSlow: Vec3;
118
+ /** 0 until the probe has data, then 1. */
119
+ ready: number;
120
+ /** `Rf`. */
121
+ skinFast: Vec3;
122
+ /** The skin coverage at the last update (share of the atlas seen as skin). */
123
+ coverage: number;
124
+ light: {
125
+ /** `b` of `lum = a + b · n`, view space. */
126
+ gradient: Vec3;
127
+ /** `a`. */
128
+ ambient: number;
129
+ /** `normalize(b)` (`[0, 0, 1]` when b is 0). */
130
+ direction: Vec3;
131
+ /** `|b| / a`, capped at 100. Under 0.15 shading uses the key light. */
132
+ confidence: number;
133
+ };
134
+ lip: Vec3;
135
+ lipSeen: number;
136
+ brow: Vec3;
137
+ browSeen: number;
138
+ };
139
+ /** The fit's confidence `|b| / a` (`fitLight`'s rule: capped, and safe for a ≤ 0). */
140
+ export declare const faceSkinLightConfidence: (gradient: ArrayLike<number>, ambient: number) => number;
141
+ /** Decodes `FACE_SKIN_STATS.texels × 4` floats (see `FaceSkinProbe.readStats`). */
142
+ export declare const readFaceSkinStats: (data: ArrayLike<number>) => FaceSkinStats;
143
+ export {};
@@ -0,0 +1,70 @@
1
+ import * as THREE from "three";
2
+ /**
3
+ * The probe's render targets and their formats.
4
+ *
5
+ * Maps (`FaceSkinProbeFormat`):
6
+ * - `"half-float"`: RGBA16F, when the GPU can render to it
7
+ * (`EXT_color_buffer_half_float` or `EXT_color_buffer_float`). The skin and
8
+ * feature maps average over time with ConstantAlpha blending.
9
+ * - `"rgba8"`: the fallback. The maps hold `(w·√c, w)` (the square root
10
+ * before premultiplying keeps dark skin precise; `uSkinSqrt` = 1) and are
11
+ * replaced on every update (8-bit EMAs stall).
12
+ *
13
+ * Stats (`FaceSkinStatsFormat`): the slow averages move by about 1.7 % of
14
+ * the difference per update, which half floats round away (a 2 % step never
15
+ * lands), so the stats are never RGBA16F:
16
+ * - `"float"`: RGBA32F, when the GPU can render to it (`EXT_color_buffer_float`;
17
+ * the stats pass neither blends nor filters, so nothing else is needed);
18
+ * - `"packed"`: RGBA8, each value in three texels (24 bits).
19
+ */
20
+ export type FaceSkinProbeFormat = "half-float" | "rgba8";
21
+ /** How the stats ping-pong stores its values (see `FaceSkinProbeFormat`). */
22
+ export type FaceSkinStatsFormat = "float" | "packed";
23
+ type ExtensionReader = {
24
+ extensions: {
25
+ has: (name: string) => boolean;
26
+ };
27
+ };
28
+ /** Whether `renderer` can render to (and blend into) RGBA16F targets. */
29
+ export declare const canRenderHalfFloat: (renderer: ExtensionReader) => boolean;
30
+ /** Whether `renderer` can render to RGBA32F targets (no blending or filtering needed). */
31
+ export declare const canRenderFloat: (renderer: ExtensionReader) => boolean;
32
+ /** The probe format for a `halfFloat` option: `"auto"` asks the renderer. */
33
+ export declare const resolveFaceSkinProbeFormat: (halfFloat: boolean | "auto", renderer: ExtensionReader | null) => FaceSkinProbeFormat;
34
+ /**
35
+ * The stats format: RGBA32F where the renderer can render to it, else packed.
36
+ * The RGBA8 fallback (`"rgba8"` maps) always packs. Without a renderer it is
37
+ * provisional (`"float"`), settled on the first render.
38
+ */
39
+ export declare const resolveFaceSkinStatsFormat: (format: FaceSkinProbeFormat, renderer: ExtensionReader | null) => FaceSkinStatsFormat;
40
+ /** Logical texels in the stats texture. */
41
+ export declare const FACE_SKIN_STATS_TEXELS = 8;
42
+ /** Texels per value in the packed stats layout (8 bits each: high, middle, low). */
43
+ export declare const FACE_SKIN_STATS_PACKED_TEXELS = 3;
44
+ /** The stats texture's width: 8 texels, or 24 when each value is packed into three. */
45
+ export declare const faceSkinStatsWidth: (format: FaceSkinStatsFormat) => number;
46
+ /**
47
+ * The skin map (texture 0) and the feature map (texture 1), one MRT target:
48
+ * `size`², mipmapped (trilinear), linear data (no colour space), no depth.
49
+ */
50
+ export declare const createFaceSkinMapTarget: (size: number, format: FaceSkinProbeFormat) => THREE.WebGLRenderTarget<THREE.Texture>;
51
+ /** One side of the stats ping-pong: `faceSkinStatsWidth(format)` × 1, nearest, no mips. */
52
+ export declare const createFaceSkinStatsTarget: (format: FaceSkinStatsFormat) => THREE.WebGLRenderTarget<THREE.Texture>;
53
+ /** The stats texel whose rgb is signed (the light gradient), stored as `(x + 1) / 2` when packed. */
54
+ export declare const FACE_SKIN_STATS_SIGNED_TEXEL = 2;
55
+ /**
56
+ * Packs one value in 0..1 into three bytes (high, middle, low), as the
57
+ * shader writes it to an RGBA8 target (which rounds each byte).
58
+ */
59
+ export declare const packFaceSkinValue: (value: number) => [number, number, number];
60
+ /**
61
+ * Decodes stats read back from the GPU into `FACE_SKIN_STATS_TEXELS × 4`
62
+ * floats: float data as is, packed data (bytes, 24 texels) unpacked.
63
+ */
64
+ export declare const decodeFaceSkinStats: (data: ArrayLike<number>, format: FaceSkinStatsFormat, out?: Float32Array) => Float32Array;
65
+ /**
66
+ * Encodes `FACE_SKIN_STATS_TEXELS × 4` floats as the packed stats texture
67
+ * holds them (24 texels of bytes): the inverse of `decodeFaceSkinStats`.
68
+ */
69
+ export declare const encodeFaceSkinStatsPacked: (stats: ArrayLike<number>, out?: Uint8Array) => Uint8Array;
70
+ export {};
@@ -0,0 +1,76 @@
1
+ import { FaceImageLandmark } from '../../face-character/faceReprojection';
2
+ import * as THREE from "three";
3
+ export type FaceSkinUnwrapImage = {
4
+ /** The image's width / height. */
5
+ aspect: number;
6
+ /**
7
+ * The texture keeps the image's top row at `v = 1` (`faceSkinTextureTopAtV1`),
8
+ * so a landmark samples at `(x, 1 − y)`; else at `(x, y)`.
9
+ */
10
+ flipY: boolean;
11
+ };
12
+ /**
13
+ * Where a texture keeps its image's top row: `true` at `v = 1` (three's
14
+ * default `flipY` upload of an image, canvas or video, and anything three
15
+ * rendered into a render target), `false` at `v = 0` (`flipY` false, as a
16
+ * `DataTexture` built top row first, and any `ImageBitmap`: WebGL ignores
17
+ * `flipY` for those uploads).
18
+ */
19
+ export declare const faceSkinTextureTopAtV1: (texture: THREE.Texture) => boolean;
20
+ /**
21
+ * One update of the unwrap: `cameraUv` (2 per landmark) is where each atlas
22
+ * vertex samples the image (texture space), `weight` (1 per landmark) how
23
+ * much it counts: how squarely it faces the camera (each triangle's area on
24
+ * the image over its 3D area, averaged per vertex, the landmarks' own z)
25
+ * times a fade near the image edge. Landmarks are normalized image
26
+ * coordinates (y down), z in x units, as the tracker and the still-image
27
+ * detector give them. Allocation-free.
28
+ */
29
+ export declare const writeFaceSkinUnwrapFrame: (landmarks: ArrayLike<FaceImageLandmark>, image: FaceSkinUnwrapImage, cameraUv: Float32Array, weight: Float32Array) => void;
30
+ /** The head's pose as the probe measures it from landmarks. */
31
+ export type FaceSkinPose = {
32
+ /**
33
+ * Canonical head frame → the face's line-of-sight frame (x right, y up, z
34
+ * from the face toward the camera), as a three.js `Matrix3` (column-major
35
+ * `elements`, ready for a `mat3` uniform). Weak perspective: the landmarks
36
+ * show the head's turn against the ray to the camera, so a face off the
37
+ * optical axis that looks into the lens reads as frontal. The camera's view
38
+ * frame is `lineOfSightToView(ray) · rotation`.
39
+ */
40
+ rotation: THREE.Matrix3;
41
+ /** Head turn left/right against the line of sight, degrees (0 looking into the lens). */
42
+ yawDeg: number;
43
+ /** Head tilt up/down against the line of sight, degrees (0 looking into the lens). */
44
+ pitchDeg: number;
45
+ /** Landmark 10 (forehead) to 152 (chin) on the image, px. */
46
+ faceHeightPx: number;
47
+ };
48
+ export declare const createFaceSkinPose: () => FaceSkinPose;
49
+ /**
50
+ * The rotation from a face's line-of-sight frame to the camera's view frame:
51
+ * the smallest turn of +Z onto the direction from the face back to the
52
+ * camera. `ray` is the direction from the camera to the face in view space
53
+ * (the camera looks down −Z), any length. Identity for a missing, zero or
54
+ * backward ray. Writes `out`; allocation-free.
55
+ */
56
+ export declare const lineOfSightToView: (ray: THREE.Vector3Like | null | undefined, out?: THREE.Matrix3) => THREE.Matrix3;
57
+ /**
58
+ * The view-space direction from a perspective `camera` to a feed point
59
+ * (0..1, y down; the feed fills the camera's frustum, as `feedToWorld`
60
+ * assumes): the `lineOfSight` of `FaceSkinProbe.render`. Null for a camera
61
+ * without perspective (every line of sight is the optical axis there).
62
+ * Writes `out`; allocation-free.
63
+ */
64
+ export declare const feedLineOfSight: (point: {
65
+ x: number;
66
+ y: number;
67
+ }, camera: THREE.Camera, out: THREE.Vector3) => THREE.Vector3 | null;
68
+ /**
69
+ * Fits the head's rotation to the landmarks: the similarity from the
70
+ * canonical rigid landmarks (no mouth or jaw) onto the landmarks in image
71
+ * units, `(x · aspect, −y, −z · aspect)` (MediaPipe's z is smaller toward
72
+ * the camera). Any image works, mirrored or not: the tracker reports a
73
+ * proper rotation of its canonical face either way. `width` and `height`
74
+ * are the image's pixel size.
75
+ */
76
+ export declare const fitFaceSkinPose: (landmarks: ArrayLike<FaceImageLandmark>, width: number, height: number, out?: FaceSkinPose) => FaceSkinPose;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Quality tiers of the face-atlas surface, by the session's adaptive quality
3
+ * tier (`useXRQuality()`: first tier = high, last = low, any between =
4
+ * medium; no controller = high).
5
+ *
6
+ * - `leadCapMs`: the landmark lead of a rig the surface owns, about one
7
+ * inference interval at the tier's rate (30 / 24 / 15 Hz). A borrowed rig
8
+ * (`FaceRig`, `FaceWarp3D`, `FaceMorph`) keeps its own `leadMs`.
9
+ * - `selfOcclusion`: the depth pre-pass and restore (the far cheek stops at
10
+ * the nose); off on the low tier, where only the facing fade applies.
11
+ */
12
+ export declare const FACE_ATLAS_QUALITY: Readonly<{
13
+ readonly high: {
14
+ readonly leadCapMs: 33;
15
+ readonly selfOcclusion: true;
16
+ };
17
+ readonly medium: {
18
+ readonly leadCapMs: 42;
19
+ readonly selfOcclusion: true;
20
+ };
21
+ readonly low: {
22
+ readonly leadCapMs: 66;
23
+ readonly selfOcclusion: false;
24
+ };
25
+ }>;
26
+ export type FaceAtlasQualityKey = keyof typeof FACE_ATLAS_QUALITY;
27
+ /** The face-atlas tier for the session's tier index (`useXRQuality().index`) of `tierCount`. */
28
+ export declare const resolveFaceAtlasQualityKey: (tierIndex: number, tierCount: number) => FaceAtlasQualityKey;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Named parts of the face atlas. `eyes` and `mouth` are the fill triangles
3
+ * over the eye and mouth openings; every other region leaves them and the
4
+ * nostrils out. `lids` is the whole eye surround: from the under-eye row
5
+ * (landmarks 111, 117–121, three rings below the lower lash line) up to the
6
+ * brow's lower edge.
7
+ */
8
+ export declare const FACE_ATLAS_REGIONS: readonly ["face", "skin", "lips", "mouth", "eyes", "lids", "brows", "cheeks", "nose", "forehead", "jaw"];
9
+ export type FaceAtlasRegion = (typeof FACE_ATLAS_REGIONS)[number];
10
+ /** One region or several (their union). */
11
+ export type FaceAtlasRegionSelection = FaceAtlasRegion | readonly FaceAtlasRegion[];
12
+ /** A region's extent in atlas UV (v up). */
13
+ export type FaceAtlasUvBounds = {
14
+ minU: number;
15
+ maxU: number;
16
+ minV: number;
17
+ maxV: number;
18
+ };
19
+ /**
20
+ * Triangle indices (into `FACE_ATLAS_TRIANGLES`) of a region or a union of
21
+ * regions, sorted and without duplicates. Shared and cached: do not mutate.
22
+ */
23
+ export declare const getFaceAtlasRegionTriangles: (selection: FaceAtlasRegionSelection) => Uint16Array;
24
+ /**
25
+ * An index buffer (landmark indices, three per triangle) for a region or a
26
+ * union of regions, ready for `geometry.setIndex(new THREE.BufferAttribute(…, 1))`
27
+ * on a 468-vertex atlas mesh. A new array on every call.
28
+ */
29
+ export declare const getFaceAtlasRegionIndices: (selection: FaceAtlasRegionSelection) => Uint16Array;
30
+ /** UV extent (v up) of a region or a union of regions. */
31
+ export declare const getFaceAtlasRegionBounds: (selection: FaceAtlasRegionSelection) => FaceAtlasUvBounds;