@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,85 @@
1
+ /**
2
+ * When a face swap shows (FACE-2). A two-person swap starts by itself once
3
+ * two faces have been tracked for a few inference results in a row, fades
4
+ * in, holds through a short dropout, then fades back to the plain camera.
5
+ * Presence reads only how many faces are tracked, never which index is
6
+ * which, so MediaPipe reordering the faces does not toggle it (the draw
7
+ * rank below is per index: see `rankFacesBySize`). Pure and
8
+ * allocation-free: the state is mutated in place, once per rendered frame.
9
+ */
10
+ export declare const FACE_SWAP_PRESENCE: {
11
+ /** Faces needed: 2 for a two-person swap. */
12
+ readonly required: 2;
13
+ /** Consecutive inference results with enough faces before it starts. */
14
+ readonly frames: 5;
15
+ /** Fade in and out (ms). */
16
+ readonly fadeMs: 200;
17
+ /** How long it holds from the first result with too few faces (ms), before it fades out. */
18
+ readonly holdMs: 250;
19
+ /**
20
+ * With no new result at all for this long after the last one with enough
21
+ * faces (ms), it fades out: the model stopped. Slow inference (a weak
22
+ * device running two faces) stays on.
23
+ */
24
+ readonly staleMs: 1000;
25
+ };
26
+ export type FaceSwapPresenceOptions = Partial<Record<keyof typeof FACE_SWAP_PRESENCE, number>>;
27
+ export type FaceSwapPresence = {
28
+ /** Consecutive inference results with enough faces. */
29
+ streak: number;
30
+ /** Time (ms) of the last inference result with enough faces; null before any. */
31
+ lastSeenMs: number | null;
32
+ /** Time (ms) of the first result with too few faces since the last good one; null while none. */
33
+ lostSinceMs: number | null;
34
+ /** Wanted: on once the streak is long enough, off after the hold. */
35
+ on: boolean;
36
+ /** The fade, 0..1: the alpha the swap draws with (multiply into `amount`). */
37
+ fade: number;
38
+ /** Time (ms) of the last step; null before the first. */
39
+ lastStepMs: number | null;
40
+ };
41
+ export declare const createFaceSwapPresence: () => FaceSwapPresence;
42
+ export type FaceSwapPresenceInput = {
43
+ /** Now (ms), e.g. `performance.now()`. */
44
+ nowMs: number;
45
+ /** A new inference result arrived since the last step. Camera-only frames pass false. */
46
+ inference: boolean;
47
+ /** Faces tracked in the newest result (read only when `inference` is true). */
48
+ faces: number;
49
+ /** Everything it draws with exists (the source is loaded, the first statistics are done). Default true. */
50
+ ready?: boolean;
51
+ };
52
+ /**
53
+ * Advance one rendered frame. The streak counts inference results, not
54
+ * frames. A result with too few faces breaks the streak but not the swap: it
55
+ * keeps showing for `holdMs` from that result, so a 200 ms dropout is
56
+ * invisible, then fades out. Results that are merely slow (further apart
57
+ * than `holdMs`) do not count as a dropout; only `staleMs` without any new
58
+ * result does. It never shows while `ready` is false. Returns `state`.
59
+ */
60
+ export declare const stepFaceSwapPresence: (state: FaceSwapPresence, input: FaceSwapPresenceInput, options?: FaceSwapPresenceOptions) => FaceSwapPresence;
61
+ /** Drawn now: fading in, shown or fading out. */
62
+ export declare const isFaceSwapPresenceActive: (state: FaceSwapPresence) => boolean;
63
+ /** Drop everything (the source changed, the component re-mounted): hidden, streak 0. */
64
+ export declare const resetFaceSwapPresence: (state: FaceSwapPresence) => FaceSwapPresence;
65
+ /**
66
+ * A face keeps its place in the draw order until another face is this much
67
+ * larger, so two faces of about the same size don't flicker.
68
+ */
69
+ export declare const FACE_SWAP_RANK_MARGIN = 0.05;
70
+ /**
71
+ * Draw rank per face: 0 draws first, `n − 1` last (on top). Larger faces
72
+ * draw later, so where two faces overlap the larger (nearer) one is on top.
73
+ * `sizes` is any size measure per face (face height, box area); a missing or
74
+ * non-finite size counts as 0. With `previous` ranks, each rank step is worth
75
+ * `margin`, so the order only changes once a face is clearly larger. Ties go
76
+ * to the lower index first.
77
+ *
78
+ * Ranks are per face INDEX. When MediaPipe reorders two faces (the registry
79
+ * reports reason `"jump"` on both), swap their entries in `previous` before
80
+ * ranking, so the margin stays with the person and not the index.
81
+ *
82
+ * Pass `out` every frame (it may be `previous`, updated in place): without
83
+ * it a new array is allocated per call.
84
+ */
85
+ export declare const rankFacesBySize: (sizes: ArrayLike<number>, previous?: ArrayLike<number> | null, out?: number[], margin?: number) => number[];
@@ -0,0 +1,169 @@
1
+ import { FacePhotoSource } from './faceImageLandmarker';
2
+ import { FacePhotoPick } from './facePhoto';
3
+ import { FaceImageLandmark } from './faceReprojection';
4
+ import type * as THREE from "three";
5
+ /**
6
+ * Where a face texture came from:
7
+ * - `live`: a tracked face, unwrapped from the camera on every new landmark
8
+ * result (`useLiveFaceTexture`);
9
+ * - `photo`: a face found in a still photo, baked once (`createFaceTexture`);
10
+ * - `canonical`: a face painted in the face atlas, baked once.
11
+ */
12
+ export type FaceTextureKind = "live" | "photo" | "canonical";
13
+ /**
14
+ * One face laid flat in the face atlas, ready to be drawn on any face
15
+ * (`FaceTransfer`, `<FaceTextureLayer>`). The textures keep their identity
16
+ * for the object's life (bind them once); a live face texture is updated in
17
+ * place and its `version` increases.
18
+ */
19
+ export type FaceTexture = {
20
+ readonly kind: FaceTextureKind;
21
+ /**
22
+ * The face in the face atlas (`FACE_ATLAS_UVS`, v up): premultiplied by
23
+ * coverage (alpha 0 where the face was not seen), sRGB, mipmapped, the eye
24
+ * and mouth openings filled. `null`: statistics only.
25
+ */
26
+ readonly map: THREE.Texture | null;
27
+ /**
28
+ * Skin-only low-frequency colour (`FaceTextureStats.low`): 64², linear,
29
+ * premultiplied by how much skin was seen, features filled from the skin
30
+ * around them.
31
+ */
32
+ readonly low: THREE.Texture;
33
+ /** Mean skin colour (`FaceTextureStats.mean`): 1×1, linear, premultiplied. */
34
+ readonly mean: THREE.Texture;
35
+ /**
36
+ * true when canonical +X (landmark 263, atlas u > 0.5) is the person's own
37
+ * RIGHT: a live face on the mirrored webcam, or a selfie saved mirrored.
38
+ * false for a photo as stored, a painted face and a live face on an
39
+ * unmirrored feed. See `resolveFaceSourceMirror`.
40
+ */
41
+ readonly mirrored: boolean;
42
+ /** Photo: the detected points (478, normalized image space, y down). Otherwise null. */
43
+ readonly landmarks: ReadonlyArray<FaceImageLandmark> | null;
44
+ /** Live: the tracked face's index. Otherwise null. */
45
+ readonly faceIndex: number | null;
46
+ /** 0 until the texture holds a face; increases with every update. */
47
+ readonly version: number;
48
+ /**
49
+ * The map (when there is one) and the statistics hold this face. False
50
+ * before the first update and after `dispose`.
51
+ */
52
+ readonly ready: boolean;
53
+ };
54
+ /** A face's skin statistics (the target side of a transfer). */
55
+ export type FaceTextureStatistics = Pick<FaceTexture, "low" | "mean">;
56
+ /**
57
+ * A face to bake into a `FaceTexture` (`createFaceTexture`, `useFaceTexture`):
58
+ * - `photo`: any photo (URL, File or Blob, `<img>`, canvas, ImageBitmap).
59
+ * The face is found once (`detectFacePhoto`), unwrapped into the face
60
+ * atlas, the hidden half of a turned face filled from the other side.
61
+ * `mirrored`: the photo itself is mirrored (some phones save selfies so);
62
+ * `pick`: `"largest"` (default) or the n-th face from the left; `maxSize`:
63
+ * the photo is analysed at most this large (default 1280).
64
+ * - `canonicalTexture`: a face already painted in the face atlas
65
+ * (`FACE_ATLAS_UVS`): upright, image left = the person's own right,
66
+ * straight alpha. A URL, or a texture as `TextureLoader` gives it (baked
67
+ * once its image has loaded; untagged, `NoColorSpace`, it is read as
68
+ * sRGB). `mirrored`: painted as seen in a mirror (default false).
69
+ */
70
+ export type FaceTextureSource = {
71
+ kind: "photo";
72
+ src: FacePhotoSource;
73
+ mirrored?: boolean;
74
+ pick?: FacePhotoPick;
75
+ maxSize?: number;
76
+ } | {
77
+ kind: "canonicalTexture";
78
+ src: string | THREE.Texture;
79
+ mirrored?: boolean;
80
+ };
81
+ /**
82
+ * Face textures (FACE-2): one face laid flat in the face atlas
83
+ * (`FACE_ATLAS_UVS`, the canonical face OBJ's `vt` layout that LipEffect and
84
+ * makeup designs use; not `CANONICAL_FACE_UVS`), whether it was unwrapped
85
+ * from the live camera, from a photo, or painted.
86
+ *
87
+ * This file is the side half: which side of a face texture is which, and how
88
+ * a face is mirrored. Sides are never mirrored by `u → 1 − u` (the atlas is
89
+ * symmetric only to about 0.001 in u) and no canvas is flipped: a face is
90
+ * mirrored through the exact landmark mirror map, and a source's sides are
91
+ * matched to a target's through `resolveFaceSourceMirror`.
92
+ *
93
+ * A face texture's `mirrored` flag says which canonical side is the person's
94
+ * own left:
95
+ * - `false`: canonical +X (landmark 263, atlas u > 0.5) is the person's own
96
+ * LEFT. A photo as stored, a painted face (the atlas guide's "person's
97
+ * LEFT" half), and a live face on an unmirrored feed (rear camera, video).
98
+ * - `true`: canonical +X is the person's own RIGHT. A live face on the
99
+ * mirrored front webcam, or a selfie the phone saved mirrored.
100
+ *
101
+ * It is the same convention as a feed's mirroring: the person's own left lies
102
+ * along canonical X × `personLeftSign(mirrored)` (lib/coordinates/side.ts).
103
+ */
104
+ /**
105
+ * The unwrap vertices of the canonical face (`getFaceUnwrapMesh()`: the 468
106
+ * surface landmarks, then the centres of the +X eye, the −X eye and the
107
+ * mouth openings).
108
+ */
109
+ export declare const FACE_UNWRAP_VERTEX_COUNT: number;
110
+ /**
111
+ * `FACE_UNWRAP_MIRROR[i]`: the unwrap vertex at `(−x, y, z)` of unwrap vertex
112
+ * `i` (471 entries). Exact: the canonical face is symmetric to 0 cm, so a
113
+ * mirrored point keeps its mirror twin's barycentric weights. Its own
114
+ * inverse; 263 ↔ 33, 61 ↔ 291; the 28 midline landmarks and the mouth centre
115
+ * map to themselves; the two eye centres swap.
116
+ */
117
+ export declare const FACE_UNWRAP_MIRROR: Int32Array;
118
+ /** The tracker's landmark count with irises: 468 surface points, then 468–472 and 473–477. */
119
+ export declare const FACE_LANDMARK_COUNT_WITH_IRISES = 478;
120
+ /**
121
+ * `FACE_LANDMARK_MIRROR[i]`: the tracker landmark at `(−x, y, z)` of landmark
122
+ * `i` on the canonical face (478 entries: the 468 surface landmarks through
123
+ * the atlas's exact mirror map, then the irises by role). Its own inverse.
124
+ * Index space of the tracker's landmarks, not of the unwrap vertices
125
+ * (`FACE_UNWRAP_MIRROR`), whose 468–470 are opening centres.
126
+ */
127
+ export declare const FACE_LANDMARK_MIRROR: Int32Array;
128
+ /**
129
+ * The face's landmarks with every point moved to its mirror twin's place:
130
+ * `out[i]` is a copy of `landmarks[FACE_LANDMARK_MIRROR[i]]`. Positions stay
131
+ * in image space; only which landmark sits where changes, so an unwrap of the
132
+ * result reads each point of the face from its twin on the other side (the
133
+ * mirror fill of a turned face, `leftLeft` / `rightRight` sources). Applying
134
+ * it twice gives the landmarks back.
135
+ *
136
+ * `landmarks` has 468 points or more (478 with irises); with fewer than 478
137
+ * only the surface points are mirrored, and points past the mirrored range
138
+ * are copied as they are. `out` is reused when given, so a per-frame caller
139
+ * allocates nothing once it is filled; it must not be `landmarks`, nor share
140
+ * point objects with it.
141
+ */
142
+ export declare const mirrorFaceLandmarks: (landmarks: ArrayLike<FaceImageLandmark>, out?: FaceImageLandmark[]) => FaceImageLandmark[];
143
+ /**
144
+ * Whether a source face texture must be read mirrored (at `uvMirror`) so
145
+ * that its person's own left lands on the target person's own left. True
146
+ * when the two place the person's own left on different canonical sides:
147
+ * `personLeftSign(sourceMirrored) !== personLeftSign(targetFeedMirrored)`.
148
+ *
149
+ * | Source → target | Mirrored read |
150
+ * |---|---|
151
+ * | photo or painted (`false`) → mirrored webcam (`true`) | yes |
152
+ * | photo or painted → rear camera, video or picture (`false`) | no |
153
+ * | live face → its own feed | no |
154
+ * | live webcam face (`true`) → a picture (`false`, FACE-6) | yes |
155
+ *
156
+ * `sourceMirrored` is the face texture's `mirrored` flag; `targetFeedMirrored`
157
+ * is the mirroring of the feed (or picture) the face is drawn on
158
+ * (`useXRMirrored()`).
159
+ */
160
+ export declare const resolveFaceSourceMirror: (sourceMirrored: boolean, targetFeedMirrored: boolean) => boolean;
161
+ /**
162
+ * The face atlas UV (v up) of every unwrap vertex (471 × 2): `FACE_ATLAS_UVS`
163
+ * for the 468 landmarks, and each opening's centre at the average of its
164
+ * ring's UVs. An unwrap drawn with these UVs (FaceReprojector's atlas
165
+ * layout) and the transfer mesh's `uv` (`getFaceTransferGeometry`) are the
166
+ * same piecewise-linear map, so a live face drawn back with `asIs` lands
167
+ * where it was. Shared: do not mutate.
168
+ */
169
+ export declare const getFaceUnwrapAtlasUvs: () => Float32Array;
@@ -0,0 +1,86 @@
1
+ import { XRAssetCache } from '../assets/cache';
2
+ import { FacePhotoDetection } from './faceImageLandmarker';
3
+ import { FacePhotoWarning } from './facePhoto';
4
+ import { FaceTexture, FaceTextureSource } from './faceTexture';
5
+ import * as THREE from "three";
6
+ /**
7
+ * Still face textures (FACE-2): a photo or a painted face baked once into
8
+ * the face atlas (`FACE_ATLAS_UVS`), with its skin statistics, ready for
9
+ * `FaceTransfer` / `<FaceTextureLayer>`.
10
+ *
11
+ * - **Photo:** decoded upright into one canvas (at most 1280 px), the face
12
+ * found by the still-image detector (`detectFacePhoto`: the same face
13
+ * model, IMAGE mode), unwrapped by `FaceReprojector` with the hidden half
14
+ * of a turned face filled from the other side (`mirrorFill`) and padded,
15
+ * copied into the texture's own mipmapped target; the statistics come from
16
+ * the skin pass over the photo (only skin that was seen counts). The
17
+ * canvas and its texture are freed after the bake.
18
+ * - **Painted** (`canonicalTexture`): a face already painted in the face
19
+ * atlas, straight alpha. Premultiplied and mipmapped into the texture's
20
+ * own target; the statistics read that map through the skin mask. A URL
21
+ * loads through the SDK asset cache (a failed download rejects with
22
+ * `cors`, bytes that are not an image with `decode`). A texture is baked
23
+ * once its image has loaded (`TextureLoader.load` fills it in later); an
24
+ * untagged one (`NoColorSpace`) is read as sRGB.
25
+ */
26
+ /** Sizes a still face texture can be baked at (px, square): a 128 × 2^k size the statistics read whole levels of. */
27
+ export declare const FACE_TEXTURE_RESOLUTIONS: readonly [512, 1024];
28
+ export type FaceTextureResolution = (typeof FACE_TEXTURE_RESOLUTIONS)[number];
29
+ /** How a photo is unwrapped. */
30
+ export declare const FACE_PHOTO_BAKE: {
31
+ /** A photo's turned-away skin is dropped below these facing cosines, then filled from the other side. */
32
+ readonly facing: readonly [0.2, 0.5];
33
+ /** Edge padding of the unwrap (px), so the mipmaps of the face's rim do not darken. */
34
+ readonly unwrapPadding: 8;
35
+ };
36
+ /** A baked face texture: its warnings and face count, and `dispose()` (yours to call). */
37
+ export type BakedFaceTexture = FaceTexture & {
38
+ /** Photo warnings (`FACE_PHOTO_WARNINGS` order); empty for a painted face. */
39
+ readonly warnings: readonly FacePhotoWarning[];
40
+ /** Faces found in the photo (1 for a painted face). */
41
+ readonly faceCount: number;
42
+ /** Frees the map and the statistics; `ready` turns false. Safe to call twice. */
43
+ dispose(): void;
44
+ };
45
+ export type CreateFaceTextureOptions = {
46
+ /** The map's size (px, square). Default 1024. */
47
+ resolution?: FaceTextureResolution;
48
+ /** Cancels the load; the promise then rejects with code `aborted`. */
49
+ signal?: AbortSignal;
50
+ /** The asset cache a painted face's URL loads through. Default the SDK's shared cache. */
51
+ assetCache?: XRAssetCache;
52
+ };
53
+ /** What the photo bake needs of a detection (`FacePhotoDetection`). */
54
+ export type FacePhotoBakeInput = Pick<FacePhotoDetection, "canvas" | "width" | "height" | "detection" | "detections" | "warnings" | "mirrored">;
55
+ /**
56
+ * The photo bake after detection: unwraps `photo.canvas` at the detected
57
+ * landmarks into a new face texture. Frees the canvas (its size becomes 0).
58
+ * Internal (the GPU self-test drives it with known landmarks).
59
+ */
60
+ export declare const bakeFacePhoto: (renderer: THREE.WebGLRenderer, photo: FacePhotoBakeInput, resolution?: FaceTextureResolution) => BakedFaceTexture;
61
+ /** How long a painted face's texture may wait for its image (ms), and how often it looks. */
62
+ export declare const FACE_TEXTURE_IMAGE_WAIT: {
63
+ readonly timeoutMs: 30000;
64
+ readonly pollMs: 50;
65
+ };
66
+ /**
67
+ * Bakes a photo or a painted face into a `FaceTexture` (see the module
68
+ * comment). Needs the renderer; no React. The result is yours to
69
+ * `dispose()`. Rejects with a `FaceTextureError`-shaped error: `noFace`,
70
+ * `decode`, `cors`, `model` or `aborted`.
71
+ *
72
+ * ```ts
73
+ * const face = await createFaceTexture(renderer, { kind: "photo", src: file });
74
+ * transfer.setSource(face);
75
+ * // later
76
+ * face.dispose();
77
+ * ```
78
+ */
79
+ export declare const createFaceTexture: (renderer: THREE.WebGLRenderer, source: FaceTextureSource, options?: CreateFaceTextureOptions) => Promise<BakedFaceTexture>;
80
+ /**
81
+ * A stable key for a source, so an inline `{ kind: "photo", src: file }`
82
+ * re-made on every render bakes once: the kind, the URL (or the identity of
83
+ * the File, image, canvas, bitmap or texture), the options and the
84
+ * resolution. `null` for no source.
85
+ */
86
+ export declare const faceTextureSourceKey: (source: FaceTextureSource | null | undefined, resolution?: number) => string | null;
@@ -0,0 +1,106 @@
1
+ import { FaceSwapPresetKey } from '../components/FaceSwap/settings';
2
+ export type FaceTextureGuideOptions = {
3
+ /** Pixel size of the square canvas the guide represents. Default 1024. */
4
+ size?: number;
5
+ /** Fill the canvas with a colour. Omit for a transparent background. */
6
+ background?: string;
7
+ /** Draw the triangle wireframe. Default true. */
8
+ wireframe?: boolean;
9
+ /** Draw the title, legend and side labels. Default true. */
10
+ labels?: boolean;
11
+ /** UV grid spacing (0.1 = every tenth of the atlas). 0 draws no grid. Default 0.1. */
12
+ grid?: number;
13
+ /**
14
+ * The FaceSwap preset whose edge fade the guide shows, named in the legend.
15
+ * Default `"keepColors"`, the preset painted faces start from.
16
+ */
17
+ preset?: FaceSwapPresetKey;
18
+ /** cm: where the edge fade starts inside the outline. Default FaceSwap's `edgeInset` (0.3). */
19
+ edgeInset?: number;
20
+ /** cm: width of the edge fade. Default the preset's `edgeSoftness` (keepColors: 1). */
21
+ edgeSoftness?: number;
22
+ /**
23
+ * cm: the rim outside the eye and inner-lip rings over which the paint fades
24
+ * into the wearer's own eyes and mouth (`ownEyes` / `ownMouth`, on by
25
+ * default). Default FaceSwap's `featureSoftness` (0.25).
26
+ */
27
+ featureSoftness?: number;
28
+ };
29
+ /** Line colours of the face-texture guide (the atlas guide's colours for the rest). */
30
+ export declare const FACE_TEXTURE_GUIDE_COLORS: {
31
+ readonly outline: "#0f172a";
32
+ readonly fade: "#dc2626";
33
+ readonly band: "#ea580c";
34
+ readonly own: "#2563eb";
35
+ readonly midline: "#475569";
36
+ readonly grid: "#e2e8f0";
37
+ readonly gridText: "#94a3b8";
38
+ };
39
+ /** The distances FaceSwap fades by, in cm. */
40
+ export type FaceTextureFadeField =
41
+ /** Inside the smoothed face outline (negative outside it): the edge fade and colour band. */
42
+ "edge"
43
+ /** Outside the nearer smoothed eye ring (negative inside the opening): the rim around kept eyes. */
44
+ | "eye"
45
+ /** Outside the smoothed inner-lip ring (negative inside the opening): the rim around a kept mouth. */
46
+ | "mouth";
47
+ /**
48
+ * Where one of FaceSwap's fade distances (`FaceTextureFadeField`) equals
49
+ * `levelCm`, as polylines in atlas UV: `[u0, v0, u1, v1, …]`, a closed line
50
+ * ending on its first point. The distances are measured like FaceSwap's
51
+ * transfer geometry (straight-line 3D distance to the smoothed outline, eye
52
+ * rings and inner-lip ring) on the same level-2 subdivision, so the lines lie
53
+ * where the shader's fades are.
54
+ */
55
+ export declare const faceTextureFadeContour: (field: FaceTextureFadeField, levelCm: number) => number[][];
56
+ /**
57
+ * The smoothed face outline FaceSwap measures its edge fade from, in atlas
58
+ * UV: `[u0, v0, u1, v1, …]`, closed (the last sample connects to the first).
59
+ */
60
+ export declare const faceTextureOutline: () => Float64Array;
61
+ /**
62
+ * The creator template for a painted face (face swap's `canonicalTexture`
63
+ * source) as an SVG string, in the face atlas layout. On top of the atlas
64
+ * guide (wireframe, skin statistics area, lips, eye and mouth fills) it draws
65
+ * FaceSwap's fades for the `preset` (default `keepColors`, the preset painted
66
+ * faces start from): the smoothed face outline, where the edge fade starts
67
+ * (`edgeInset`) and where the paint is fully opaque
68
+ * (`edgeInset + edgeSoftness`), the colour band, the eye and inner-lip rings
69
+ * (the wearer's own eyes and mouth show inside them by default) and, at
70
+ * `featureSoftness` outside them, where the paint is opaque again. It adds
71
+ * the midline, a UV grid and the person-side labels. Every fade line is
72
+ * measured as FaceSwap measures it (`faceTextureFadeContour`).
73
+ */
74
+ export declare const createFaceTextureGuideSvg: (options?: FaceTextureGuideOptions) => string;
75
+ /** The face-texture guide as an `image/svg+xml` data URL (an `<img>` or `THREE.TextureLoader`). */
76
+ export declare const createFaceTextureGuideDataUrl: (options?: FaceTextureGuideOptions) => string;
77
+ /**
78
+ * Rasterize the face-texture guide to a PNG `Blob` in the browser, for a
79
+ * download button or as a paint layer. Transparent unless `background` is set.
80
+ */
81
+ export declare const createFaceTextureGuidePngBlob: (options?: FaceTextureGuideOptions) => Promise<Blob>;
82
+ export type FaceTextureSideTestOptions = {
83
+ /** Pixel size of the square texture. Default 1024. */
84
+ size?: number;
85
+ };
86
+ /** Colours of the side-test face. */
87
+ export declare const FACE_TEXTURE_SIDE_TEST_COLORS: {
88
+ readonly skin: "#dcae92";
89
+ readonly brows: "#5b4034";
90
+ readonly lips: "#b4535e";
91
+ readonly sclera: "#f4f0ea";
92
+ readonly iris: "#3f2c22";
93
+ readonly mouth: "#3a1c1f";
94
+ readonly left: "#1d4ed8";
95
+ readonly right: "#c81e1e";
96
+ };
97
+ /**
98
+ * A face texture for checking sides on every feed, in the face atlas layout:
99
+ * flat skin, brows, lips, eyes and mouth, a large "L" on the person's own
100
+ * left cheek (below landmark 263, image right in the atlas) and "R" on their
101
+ * right cheek (below 33), and an arrow along the left brow pointing to the
102
+ * person's left. Worn as a face swap source, the letters read like a sticker
103
+ * on that cheek: correctly on the rear camera, images and videos, mirrored in
104
+ * the mirrored webcam view.
105
+ */
106
+ export declare const createFaceTextureSideTestSvg: (options?: FaceTextureSideTestOptions) => string;