@vincentt-xr/sdk 2.0.0-alpha.7 → 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 (639) hide show
  1. package/GROUNDING.md +5651 -82
  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/cache.d.ts +99 -0
  18. package/dist/assets/estimate.d.ts +11 -0
  19. package/dist/assets/gltfLoader.d.ts +16 -0
  20. package/dist/assets/index.d.ts +7 -0
  21. package/dist/assets/loaders.d.ts +43 -0
  22. package/dist/assets/react.d.ts +33 -0
  23. package/dist/body-pose/index.d.ts +521 -0
  24. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  25. package/dist/body-trigger/frame.d.ts +88 -0
  26. package/dist/body-trigger/index.d.ts +6 -0
  27. package/dist/body-trigger/moves.d.ts +235 -0
  28. package/dist/body-trigger/trigger.d.ts +75 -0
  29. package/dist/calibration/calibration.d.ts +75 -0
  30. package/dist/calibration/index.d.ts +6 -0
  31. package/dist/calibration/storage.d.ts +13 -0
  32. package/dist/calibration/types.d.ts +53 -0
  33. package/dist/calibration/useXRCalibration.d.ts +46 -0
  34. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  35. package/dist/camera/devices.d.ts +26 -0
  36. package/dist/camera/index.d.ts +8 -0
  37. package/dist/camera/permission.d.ts +86 -0
  38. package/dist/camera/useCameraPermission.d.ts +35 -0
  39. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  40. package/dist/canonicalFace-C83I225R.cjs +1 -0
  41. package/dist/capabilities/detect.d.ts +45 -0
  42. package/dist/capabilities/index.d.ts +5 -0
  43. package/dist/capabilities/types.d.ts +120 -0
  44. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  45. package/dist/compat/environment.d.ts +5 -0
  46. package/dist/compat/index.d.ts +4 -0
  47. package/dist/compat/run.d.ts +18 -0
  48. package/dist/compat/scenarios.d.ts +10 -0
  49. package/dist/compat/types.d.ts +101 -0
  50. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  51. package/dist/components/BodyInstruction/index.d.ts +69 -0
  52. package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
  53. package/dist/components/BodyTracker/index.d.ts +17 -0
  54. package/dist/components/BodyTrigger/index.d.ts +49 -0
  55. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  56. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  57. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  58. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  59. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  60. package/dist/components/FaceAtlas/index.d.ts +7 -0
  61. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  62. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  63. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  64. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  65. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  66. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  67. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  68. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  69. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  70. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  71. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  72. package/dist/components/FaceCharacter/index.d.ts +18 -0
  73. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  74. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  75. package/dist/components/FaceInset/frame.d.ts +94 -0
  76. package/dist/components/FaceInset/index.d.ts +6 -0
  77. package/dist/components/FaceInset/material.d.ts +40 -0
  78. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  79. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  80. package/dist/components/FaceInstruction/index.d.ts +56 -0
  81. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  82. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  83. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  84. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  85. package/dist/components/FaceLiquify/index.d.ts +10 -0
  86. package/dist/components/FaceLiquify/material.d.ts +39 -0
  87. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  88. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  89. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  90. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  91. package/dist/components/FaceLiquify/target.d.ts +85 -0
  92. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  93. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
  94. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
  95. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
  96. package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
  97. package/dist/components/FaceMesh/index.d.ts +2 -2
  98. package/dist/components/FaceRetouch/Background.d.ts +3 -1
  99. package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
  100. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  101. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  102. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  103. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  104. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  105. package/dist/components/FaceSwap/index.d.ts +13 -0
  106. package/dist/components/FaceSwap/settings.d.ts +300 -0
  107. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  108. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  109. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  110. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  111. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  112. package/dist/components/Faceless/Faceless.d.ts +51 -0
  113. package/dist/components/Faceless/index.d.ts +2 -0
  114. package/dist/components/GestureListener/index.d.ts +11 -0
  115. package/dist/components/HairLock/HairLock.d.ts +39 -0
  116. package/dist/components/HairLock/index.d.ts +2 -0
  117. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  118. package/dist/components/HandCutout/index.d.ts +35 -0
  119. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  120. package/dist/components/HandInstruction/index.d.ts +74 -0
  121. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  122. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  123. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  124. package/dist/components/HandRig/HandOccluder.d.ts +55 -0
  125. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  126. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  127. package/dist/components/HandRig/index.d.ts +101 -0
  128. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  129. package/dist/components/HandRig/wristSolve.d.ts +69 -0
  130. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  131. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  132. package/dist/components/HandTouch/index.d.ts +2 -0
  133. package/dist/components/HandTracker/index.d.ts +10 -0
  134. package/dist/components/HeadBinding/index.d.ts +14 -0
  135. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  136. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  137. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  138. package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
  139. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  140. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  141. package/dist/components/HeadOccluder/index.d.ts +57 -3
  142. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  143. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  144. package/dist/components/HolisticTracker/index.d.ts +69 -0
  145. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  146. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  147. package/dist/components/Instruction/HintStage.d.ts +29 -0
  148. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  149. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  150. package/dist/components/Instruction/ghost.d.ts +129 -0
  151. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  152. package/dist/components/Instruction/hintLook.d.ts +81 -0
  153. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  154. package/dist/components/Instruction/index.d.ts +41 -0
  155. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  156. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  157. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  158. package/dist/components/IrisEffect/index.d.ts +51 -0
  159. package/dist/components/IrisEffect/settings.d.ts +117 -0
  160. package/dist/components/LipEffect/LipEffect.d.ts +27 -1
  161. package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
  162. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  163. package/dist/components/LipEffect/defaults.d.ts +46 -4
  164. package/dist/components/LipEffect/index.d.ts +11 -3
  165. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  166. package/dist/components/LipEffect/settings.d.ts +375 -0
  167. package/dist/components/LipEffect/shader.d.ts +39 -0
  168. package/dist/components/LipEffect/types.d.ts +128 -9
  169. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  170. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  171. package/dist/components/Makeup/Blush.d.ts +18 -0
  172. package/dist/components/Makeup/Brows.d.ts +20 -0
  173. package/dist/components/Makeup/Contour.d.ts +17 -0
  174. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  175. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  176. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  177. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  178. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  179. package/dist/components/Makeup/constants.d.ts +44 -0
  180. package/dist/components/Makeup/design.d.ts +106 -0
  181. package/dist/components/Makeup/designSamples.d.ts +42 -0
  182. package/dist/components/Makeup/eyes.d.ts +114 -0
  183. package/dist/components/Makeup/fields.d.ts +10 -0
  184. package/dist/components/Makeup/geometry.d.ts +106 -0
  185. package/dist/components/Makeup/index.d.ts +26 -0
  186. package/dist/components/Makeup/looks.d.ts +28 -0
  187. package/dist/components/Makeup/material.d.ts +239 -0
  188. package/dist/components/Makeup/settings.d.ts +54 -0
  189. package/dist/components/Makeup/shades.d.ts +143 -0
  190. package/dist/components/Makeup/shapes.d.ts +27 -0
  191. package/dist/components/Makeup/skinTone.d.ts +135 -0
  192. package/dist/components/Makeup/types.d.ts +110 -0
  193. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  194. package/dist/components/Necklace/Necklace.d.ts +44 -0
  195. package/dist/components/Necklace/index.d.ts +1 -0
  196. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  197. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  198. package/dist/components/PersonCutout/index.d.ts +50 -0
  199. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  200. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
  201. package/dist/components/ScreenImage/index.d.ts +3 -1
  202. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
  203. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  204. package/dist/components/ScreenImage/source.d.ts +6 -0
  205. package/dist/components/ScreenImage/types.d.ts +18 -0
  206. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  207. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  208. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  209. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  210. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  211. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  212. package/dist/components/ShoulderOccluder/index.d.ts +43 -0
  213. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
  214. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  215. package/dist/components/SpringSwing/index.d.ts +1 -0
  216. package/dist/components/XRProvider/index.d.ts +16 -2
  217. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  218. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
  219. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
  220. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
  221. package/dist/components/index.d.ts +11 -0
  222. package/dist/config/index.d.ts +0 -1
  223. package/dist/constants/index.d.ts +4 -1
  224. package/dist/context-DTxSQvp4.js +13 -0
  225. package/dist/context-hA0Rb2Xa.cjs +1 -0
  226. package/dist/contexts-BH7PdKFS.cjs +1 -0
  227. package/dist/contexts-jak8-tND.js +667 -0
  228. package/dist/coordinates/feed.d.ts +52 -0
  229. package/dist/coordinates/index.d.ts +7 -0
  230. package/dist/coordinates/side.d.ts +40 -0
  231. package/dist/coordinates/spaces.d.ts +49 -0
  232. package/dist/coordinates/viewport.d.ts +22 -0
  233. package/dist/coordinates/world.d.ts +15 -0
  234. package/dist/debug-ui/default-setting.cjs +2 -2
  235. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  236. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  237. package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
  238. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  239. package/dist/debug-ui/index.d.ts +18 -3
  240. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  241. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  242. package/dist/debug-ui/media-source/index.d.ts +1 -1
  243. package/dist/debug-ui/media-source/session.d.ts +30 -2
  244. package/dist/debug-ui/media-source.cjs +1 -1
  245. package/dist/debug-ui/media-source.js +1 -1
  246. package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
  247. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  248. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
  249. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
  250. package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
  251. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
  252. package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
  253. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  254. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  255. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  256. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  257. package/dist/debug-ui.cjs +3 -3
  258. package/dist/debug-ui.js +2695 -2547
  259. package/dist/detector-K8aej4MB.js +59 -0
  260. package/dist/detector-ijypGtse.cjs +1 -0
  261. package/dist/entries/all.d.ts +3 -1
  262. package/dist/entries/core.d.ts +20 -2
  263. package/dist/entries/face-effects.d.ts +123 -9
  264. package/dist/entries/instructions.d.ts +48 -0
  265. package/dist/entries/internal.d.ts +2 -1
  266. package/dist/entries/low-level.d.ts +49 -3
  267. package/dist/entries/particles.d.ts +11 -0
  268. package/dist/entries/product.d.ts +11 -0
  269. package/dist/entries/tracking.d.ts +60 -2
  270. package/dist/face-atlas/attributes.d.ts +30 -0
  271. package/dist/face-atlas/eyes.d.ts +272 -0
  272. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  273. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  274. package/dist/face-atlas/glsl/common.d.ts +55 -0
  275. package/dist/face-atlas/glsl/design.d.ts +49 -0
  276. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  277. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  278. package/dist/face-atlas/glsl/format.d.ts +4 -0
  279. package/dist/face-atlas/glsl/index.d.ts +59 -0
  280. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  281. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  282. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  283. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  284. package/dist/face-atlas/guide.d.ts +51 -0
  285. package/dist/face-atlas/index.d.ts +25 -0
  286. package/dist/face-atlas/lead.d.ts +117 -0
  287. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  288. package/dist/face-atlas/masks.d.ts +53 -0
  289. package/dist/face-atlas/obj.d.ts +69 -0
  290. package/dist/face-atlas/polylines.d.ts +63 -0
  291. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  292. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  293. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  294. package/dist/face-atlas/probe/constants.d.ts +137 -0
  295. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  296. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  297. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  298. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  299. package/dist/face-atlas/probe/stats.d.ts +143 -0
  300. package/dist/face-atlas/probe/targets.d.ts +70 -0
  301. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  302. package/dist/face-atlas/quality.d.ts +28 -0
  303. package/dist/face-atlas/regions.d.ts +31 -0
  304. package/dist/face-atlas/registry.d.ts +252 -0
  305. package/dist/face-atlas/renderState.d.ts +86 -0
  306. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  307. package/dist/face-atlas/shading.d.ts +406 -0
  308. package/dist/face-atlas/shapes.d.ts +86 -0
  309. package/dist/face-atlas/sides.d.ts +41 -0
  310. package/dist/face-atlas/skinMask.d.ts +35 -0
  311. package/dist/face-atlas/surface.d.ts +155 -0
  312. package/dist/face-atlas/topology.d.ts +44 -0
  313. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  314. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  315. package/dist/face-character/bindFaceModel.d.ts +106 -0
  316. package/dist/face-character/canonicalFace.d.ts +17 -0
  317. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  318. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  319. package/dist/face-character/driveFaceModel.d.ts +57 -0
  320. package/dist/face-character/expressionOutputs.d.ts +45 -0
  321. package/dist/face-character/faceExpressions.d.ts +104 -0
  322. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  323. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  324. package/dist/face-character/faceMorph.d.ts +77 -0
  325. package/dist/face-character/faceMorphs.d.ts +46 -0
  326. package/dist/face-character/facePhoto.d.ts +138 -0
  327. package/dist/face-character/facePiercings.d.ts +116 -0
  328. package/dist/face-character/facePin.d.ts +131 -0
  329. package/dist/face-character/faceReprojection.d.ts +273 -0
  330. package/dist/face-character/faceReprojector.d.ts +171 -0
  331. package/dist/face-character/faceRig.d.ts +176 -0
  332. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  333. package/dist/face-character/faceTexture.d.ts +169 -0
  334. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  335. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  336. package/dist/face-character/faceTextureStats.d.ts +298 -0
  337. package/dist/face-character/faceTransfer.d.ts +396 -0
  338. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  339. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  340. package/dist/face-character/faceWarp3D.d.ts +101 -0
  341. package/dist/face-character/faceless.d.ts +79 -0
  342. package/dist/face-character/featureWarp.d.ts +28 -0
  343. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  344. package/dist/face-character/liveValue.d.ts +12 -0
  345. package/dist/face-character/memo.d.ts +15 -0
  346. package/dist/face-effects.cjs +2324 -1
  347. package/dist/face-effects.js +14208 -2268
  348. package/dist/face-expression/index.d.ts +182 -0
  349. package/dist/face-info/landmarks.d.ts +17 -3
  350. package/dist/face-info/types.d.ts +20 -3
  351. package/dist/gestures/definitions.d.ts +98 -0
  352. package/dist/gestures/detector.d.ts +87 -0
  353. package/dist/gestures/index.d.ts +8 -0
  354. package/dist/gestures/measures.d.ts +114 -0
  355. package/dist/gestures/settings.d.ts +49 -0
  356. package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
  357. package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
  358. package/dist/hand/armFit.d.ts +46 -0
  359. package/dist/hand/armMask.d.ts +178 -0
  360. package/dist/hand/handCutout.d.ts +23 -0
  361. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  362. package/dist/hand/handGestures.d.ts +524 -0
  363. package/dist/hand/handPose.d.ts +98 -0
  364. package/dist/hand/handRigSolver.d.ts +159 -0
  365. package/dist/hand/handTattoo.d.ts +81 -0
  366. package/dist/hand/handTouch.d.ts +240 -0
  367. package/dist/hand/wrist.d.ts +44 -0
  368. package/dist/hand/wristFilter.d.ts +44 -0
  369. package/dist/hooks/selectors.d.ts +76 -1
  370. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  371. package/dist/hooks/useFaceInfo.d.ts +13 -1
  372. package/dist/hooks/useFaceInfos.d.ts +1 -1
  373. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  374. package/dist/hooks/useGesture.d.ts +32 -0
  375. package/dist/hooks/useIrisTracking.d.ts +45 -0
  376. package/dist/hooks/useTrackerContext.d.ts +6 -0
  377. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  378. package/dist/hooks/useXRModel.d.ts +7 -0
  379. package/dist/hooks/useXRSession/facade.d.ts +42 -2
  380. package/dist/hooks/useXRSession/index.d.ts +2 -2
  381. package/dist/hooks/useXRSession/reason.d.ts +3 -1
  382. package/dist/hooks/useXRSession/registry.d.ts +14 -0
  383. package/dist/hooks/useXRSession/store.d.ts +52 -3
  384. package/dist/index-B1_TzJaI.js +1104 -0
  385. package/dist/index-BavF06C6.js +190 -0
  386. package/dist/index-BfFmpddl.cjs +21 -0
  387. package/dist/index-BuBzneeW.cjs +46 -0
  388. package/dist/index-CGsQWodV.cjs +1 -0
  389. package/dist/index-CIe7eCMH.js +3200 -0
  390. package/dist/index-CfSF8LXa.cjs +1 -0
  391. package/dist/index-D5GTzOzD.cjs +1 -0
  392. package/dist/index-DBhQzvVa.js +314 -0
  393. package/dist/index-DE17y0ZI.cjs +1 -0
  394. package/dist/index-JII7huPk.js +442 -0
  395. package/dist/index-tpCr9CLj.cjs +1 -0
  396. package/dist/index-w1S7fI2B.js +1432 -0
  397. package/dist/index-zGaqrz_K.js +188 -0
  398. package/dist/instructions.cjs +30 -0
  399. package/dist/instructions.js +1507 -0
  400. package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
  401. package/dist/internal-Cjinca64.cjs +1 -0
  402. package/dist/internal.cjs +1 -1
  403. package/dist/internal.js +15 -10
  404. package/dist/iris/compute.d.ts +27 -0
  405. package/dist/iris/index.d.ts +4 -0
  406. package/dist/iris/lead.d.ts +19 -0
  407. package/dist/iris/types.d.ts +89 -0
  408. package/dist/landmarkMask-BFDyBnKM.js +224 -0
  409. package/dist/landmarkMask-u7es2k4X.cjs +1 -0
  410. package/dist/landmarks-BlUqf5MZ.cjs +1 -0
  411. package/dist/landmarks-bftdwq6Z.js +76 -0
  412. package/dist/loaders-BGAUACsd.js +363 -0
  413. package/dist/loaders-BJ1_QCHt.cjs +1 -0
  414. package/dist/low-level.cjs +1 -1
  415. package/dist/low-level.js +1190 -675
  416. package/dist/main.cjs +1 -1
  417. package/dist/main.js +1190 -452
  418. package/dist/models/Base/index.d.ts +49 -0
  419. package/dist/models/Body/index.d.ts +3 -1
  420. package/dist/models/Face/constants.d.ts +8 -0
  421. package/dist/models/Face/index.d.ts +4 -12
  422. package/dist/models/Face/rotation.d.ts +18 -3
  423. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  424. package/dist/models/Hand/HandTracking.d.ts +17 -1
  425. package/dist/models/Holistic/index.d.ts +49 -0
  426. package/dist/models/Holistic/result.d.ts +68 -0
  427. package/dist/models/Segmentation/index.d.ts +2 -0
  428. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  429. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  430. package/dist/models/index.d.ts +2 -0
  431. package/dist/models/nodeSource.d.ts +9 -0
  432. package/dist/particles/emission.d.ts +24 -0
  433. package/dist/particles/eyes.d.ts +24 -0
  434. package/dist/particles/glsl.d.ts +14 -0
  435. package/dist/particles/index.d.ts +10 -0
  436. package/dist/particles/motion.d.ts +42 -0
  437. package/dist/particles/presets.d.ts +12 -0
  438. package/dist/particles/ring.d.ts +58 -0
  439. package/dist/particles/selfTest.d.ts +53 -0
  440. package/dist/particles/settings.d.ts +127 -0
  441. package/dist/particles/shapes.d.ts +29 -0
  442. package/dist/particles/spawner.d.ts +60 -0
  443. package/dist/particles/system.d.ts +64 -0
  444. package/dist/particles.cjs +122 -0
  445. package/dist/particles.js +774 -0
  446. package/dist/product/ProductDimensions.d.ts +16 -0
  447. package/dist/product/ProductHotspot.d.ts +16 -0
  448. package/dist/product/ProductViewer.d.ts +9 -0
  449. package/dist/product/details.d.ts +53 -0
  450. package/dist/product/index.d.ts +14 -0
  451. package/dist/product/loadModelViewer.d.ts +4 -0
  452. package/dist/product/types.d.ts +71 -0
  453. package/dist/product/useProductAr.d.ts +37 -0
  454. package/dist/product/useProductDetails.d.ts +60 -0
  455. package/dist/product.cjs +1 -0
  456. package/dist/product.js +414 -0
  457. package/dist/providers-C8rE26Uf.js +366 -0
  458. package/dist/providers-DHsrhDI2.cjs +62 -0
  459. package/dist/quality/XRQualityController.d.ts +25 -0
  460. package/dist/quality/controller.d.ts +33 -0
  461. package/dist/quality/index.d.ts +6 -0
  462. package/dist/quality/types.d.ts +100 -0
  463. package/dist/quality/useXRQuality.d.ts +28 -0
  464. package/dist/render/renderPasses.d.ts +8 -0
  465. package/dist/render/sceneBeforeRender.d.ts +12 -0
  466. package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
  467. package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
  468. package/dist/renderPasses-B6l8IpJv.js +1290 -0
  469. package/dist/renderPasses-dqmkft4P.cjs +158 -0
  470. package/dist/renderState-CJNmj5jz.js +39 -0
  471. package/dist/renderState-apSfg4eR.cjs +1 -0
  472. package/dist/scene-object.cjs +1 -1
  473. package/dist/scene-object.js +2 -2
  474. package/dist/segmentation-Cb3ouK6Z.js +1758 -0
  475. package/dist/segmentation-D9pYO6aR.cjs +1 -0
  476. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  477. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  478. package/dist/segmentation2d/index.d.ts +9 -0
  479. package/dist/segmentation2d/maskUv.d.ts +23 -0
  480. package/dist/segmentation2d/rasterize.d.ts +14 -0
  481. package/dist/segmentation2d/types.d.ts +52 -0
  482. package/dist/select-Ck5LGz-J.cjs +1 -0
  483. package/dist/select-pYRo_win.js +233 -0
  484. package/dist/selectors-C4X71aoD.cjs +1 -0
  485. package/dist/selectors-DmNaKIwE.js +196 -0
  486. package/dist/session-BrH8G7iJ.cjs +31 -0
  487. package/dist/session-DgA_z6O1.js +418 -0
  488. package/dist/settings-BJ7FMBsO.js +111 -0
  489. package/dist/settings-C63FMBlF.cjs +1 -0
  490. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  491. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  492. package/dist/spring/index.d.ts +2 -0
  493. package/dist/spring/spring.d.ts +69 -0
  494. package/dist/spring/swing.d.ts +54 -0
  495. package/dist/subjects/index.d.ts +2 -0
  496. package/dist/subjects/select.d.ts +62 -0
  497. package/dist/subjects/types.d.ts +55 -0
  498. package/dist/tracking-config/apply.d.ts +57 -0
  499. package/dist/tracking-config/index.d.ts +7 -0
  500. package/dist/tracking-config/resolve.d.ts +25 -0
  501. package/dist/tracking-config/storage.d.ts +8 -0
  502. package/dist/tracking-config/types.d.ts +106 -0
  503. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  504. package/dist/tracking.cjs +10 -1
  505. package/dist/tracking.js +1326 -506
  506. package/dist/trigger-D0Pm9noT.cjs +49 -0
  507. package/dist/trigger-IQeys0oS.js +2128 -0
  508. package/dist/types/compositor.d.ts +21 -0
  509. package/dist/types/face.d.ts +20 -1
  510. package/dist/types/hand-tracking.d.ts +9 -0
  511. package/dist/types/holistic.d.ts +121 -0
  512. package/dist/types/index.d.ts +1 -0
  513. package/dist/types/model.d.ts +22 -2
  514. package/dist/types/nodes.d.ts +47 -3
  515. package/dist/types/segmentation.d.ts +24 -0
  516. package/dist/types/session.d.ts +41 -3
  517. package/dist/updateThrottle-BseecYag.js +4 -0
  518. package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
  519. package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
  520. package/dist/useFaceInfo-J4x7LsqL.js +76 -0
  521. package/dist/useFaceResultReader-BvEo5REG.js +61 -0
  522. package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
  523. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  524. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  525. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  526. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  527. package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
  528. package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
  529. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  530. package/dist/utils/fns.d.ts +6 -3
  531. package/dist/utils/headOccluderFit.d.ts +42 -0
  532. package/dist/utils/integrity.d.ts +21 -1
  533. package/dist/utils/resolveNumFaces.d.ts +13 -0
  534. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  535. package/dist/utils/similarityFit.d.ts +23 -0
  536. package/dist/utils/updateThrottle.d.ts +2 -0
  537. package/dist/utils/useStableUniforms.d.ts +18 -0
  538. package/dist/uv-BMFt19bg.cjs +1 -0
  539. package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
  540. package/docs/SDK_DOCUMENTATION.md +1 -2
  541. package/docs/api/adaptive-quality.mdx +104 -0
  542. package/docs/api/asset-lifecycle.mdx +78 -0
  543. package/docs/api/body-instructions.mdx +285 -0
  544. package/docs/api/body-triggers.mdx +234 -0
  545. package/docs/api/camera-permission.mdx +142 -0
  546. package/docs/api/coordinate-spaces.mdx +168 -0
  547. package/docs/api/cross-camera.mdx +89 -0
  548. package/docs/api/debug-ui-scene-editor.mdx +23 -2
  549. package/docs/api/diagnostics-calibration.mdx +97 -0
  550. package/docs/api/external-face-mesh.mdx +231 -0
  551. package/docs/api/face-actions.mdx +20 -16
  552. package/docs/api/face-attribute-expression.mdx +1 -1
  553. package/docs/api/face-binding-anchors.mdx +4 -2
  554. package/docs/api/face-character.mdx +157 -0
  555. package/docs/api/face-effects.mdx +9 -0
  556. package/docs/api/face-expression-controller.mdx +153 -0
  557. package/docs/api/face-info.mdx +17 -11
  558. package/docs/api/face-inset.mdx +204 -0
  559. package/docs/api/face-instructions.mdx +183 -0
  560. package/docs/api/face-liquify.mdx +196 -0
  561. package/docs/api/face-mesh.mdx +8 -9
  562. package/docs/api/face-morph.mdx +117 -0
  563. package/docs/api/face-painting.mdx +7 -0
  564. package/docs/api/face-reprojection.mdx +154 -0
  565. package/docs/api/face-retouching.mdx +18 -10
  566. package/docs/api/face-swap.mdx +350 -0
  567. package/docs/api/face-warp-3d.mdx +166 -0
  568. package/docs/api/faceless.mdx +143 -0
  569. package/docs/api/gestures.mdx +209 -0
  570. package/docs/api/hair.mdx +97 -0
  571. package/docs/api/hand-instructions.mdx +222 -0
  572. package/docs/api/hand-rig.mdx +535 -0
  573. package/docs/api/hand-touch.mdx +162 -0
  574. package/docs/api/head-occluder.mdx +563 -0
  575. package/docs/api/holistic-tracker.mdx +164 -0
  576. package/docs/api/instructions.mdx +323 -0
  577. package/docs/api/iris-tracking.mdx +247 -0
  578. package/docs/api/made-up-camera.mdx +131 -0
  579. package/docs/api/makeup-skin-tone.mdx +135 -0
  580. package/docs/api/makeup.mdx +353 -0
  581. package/docs/api/multi-subject.mdx +98 -0
  582. package/docs/api/particles.mdx +155 -0
  583. package/docs/api/person-cutout.mdx +136 -0
  584. package/docs/api/pin-to-face-mesh.mdx +274 -0
  585. package/docs/api/product-ar.mdx +114 -0
  586. package/docs/api/product-details.mdx +78 -0
  587. package/docs/api/screen-space-coordinates.mdx +4 -1
  588. package/docs/api/segmentation-overlay.mdx +301 -0
  589. package/docs/api/session-lifecycle.mdx +136 -0
  590. package/docs/api/trackers.mdx +5 -0
  591. package/docs/api/tracking-config.mdx +108 -0
  592. package/docs/docs.json +51 -1
  593. package/docs/examples/lip-shaders.mdx +273 -0
  594. package/docs/guides/face-atlas-template.svg +1 -0
  595. package/docs/guides/face-atlas-textures.mdx +186 -0
  596. package/docs/guides/face-texture-template.svg +1 -0
  597. package/docs/guides/harness-debug-ui.mdx +4 -4
  598. package/docs/guides/lip-effect-textures.mdx +368 -0
  599. package/docs/guides/lip-uv-template.png +0 -0
  600. package/docs/guides/lip-uv-template.svg +1 -0
  601. package/docs/guides/makeup-design-textures.mdx +109 -0
  602. package/docs/introduction.mdx +1 -2
  603. package/package.json +23 -1
  604. package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
  605. package/dist/DebuggerUI-BjOMr8q_.js +0 -269
  606. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
  607. package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
  608. package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
  609. package/dist/FaceRetouch-DwbKQJAN.js +0 -551
  610. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  611. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  612. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  613. package/dist/contexts-ByhzppYl.js +0 -663
  614. package/dist/contexts-Dr62It_K.cjs +0 -1
  615. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  616. package/dist/getFaceInfo-C4QpCQIY.js +0 -118
  617. package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
  618. package/dist/index-9dlAQAhy.js +0 -1462
  619. package/dist/index-BjmTe9eM.cjs +0 -1
  620. package/dist/index-BpEf2BBb.cjs +0 -1
  621. package/dist/index-CyUUurQT.cjs +0 -1
  622. package/dist/index-DCiMbxC3.cjs +0 -1
  623. package/dist/index-DXT3WccE.js +0 -2089
  624. package/dist/index-DpI-qo5X.cjs +0 -17
  625. package/dist/index-DyVF4vEW.js +0 -111
  626. package/dist/index-VJ0SJwmG.js +0 -214
  627. package/dist/internal-Cq-TEQ5Y.cjs +0 -1
  628. package/dist/renderLayers-lDtL0_43.cjs +0 -1
  629. package/dist/renderLayers-zrK2pv5O.js +0 -13
  630. package/dist/renderPasses-BOoBSr8z.cjs +0 -21
  631. package/dist/renderPasses-BcquyVtu.js +0 -1500
  632. package/dist/selectors-B8H97CKA.js +0 -59
  633. package/dist/selectors-CZLKT2Iv.cjs +0 -1
  634. package/dist/session-CpkiK5YA.cjs +0 -31
  635. package/dist/session-DLFN_VII.js +0 -363
  636. package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
  637. package/dist/useFaceInfo-Dk426LTu.js +0 -62
  638. package/dist/useFaceResults-CtetsO9M.js +0 -19
  639. package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
@@ -0,0 +1,85 @@
1
+ import { FaceLiquifyBounds } from './warp';
2
+ import * as THREE from "three";
3
+ /**
4
+ * Where the face liquify pass can draw (pure): which kind of copy the bound
5
+ * target takes, or why it is drawn unwarped, and the framebuffer box to copy.
6
+ */
7
+ /** The copy's kind: the canvas (with or without alpha) or an 8-bit RGBA render target. */
8
+ export type FaceLiquifySlotKind = "canvas" | "canvas-rgb" | "srgb-target" | "linear-target";
9
+ /** Why an image is drawn without the warp. */
10
+ export type FaceLiquifySkipReason = "xr" | "layout" | "msaa" | "type" | "format" | "broken";
11
+ export type FaceLiquifyTargetVerdict = {
12
+ kind: FaceLiquifySlotKind;
13
+ skip?: undefined;
14
+ warn?: undefined;
15
+ } | {
16
+ kind?: undefined;
17
+ skip: FaceLiquifySkipReason;
18
+ warn: boolean;
19
+ };
20
+ /** What a skip warns, once per pass. */
21
+ export declare const FACE_LIQUIFY_SKIP_MESSAGES: Readonly<Record<FaceLiquifySkipReason, string>>;
22
+ type TargetLike = {
23
+ samples?: number;
24
+ textures?: readonly THREE.Texture[];
25
+ texture?: THREE.Texture;
26
+ isWebGLCubeRenderTarget?: boolean;
27
+ isWebGL3DRenderTarget?: boolean;
28
+ isWebGLArrayRenderTarget?: boolean;
29
+ };
30
+ export type FaceLiquifyTargetInput = {
31
+ /** `renderer.getRenderTarget()`: null for the canvas. */
32
+ target: TargetLike | null;
33
+ camera: THREE.Camera;
34
+ /** `renderer.xr.isPresenting`. */
35
+ xrPresenting: boolean;
36
+ /** The canvas context has an alpha channel. */
37
+ alpha: boolean;
38
+ /** Kinds that failed their one-time GL check. */
39
+ broken: ReadonlySet<FaceLiquifySlotKind>;
40
+ };
41
+ /** The copy kind for the bound target, or why the warp is skipped. */
42
+ export declare const classifyFaceLiquifyTarget: ({ target, camera, xrPresenting, alpha, broken, }: FaceLiquifyTargetInput) => FaceLiquifyTargetVerdict;
43
+ /** The face box's copy, in GL pixels (origin bottom-left). */
44
+ export type FaceLiquifyCopyPlan = {
45
+ /** The padded box (x0, y0 inclusive; x1, y1 exclusive). */
46
+ x0: number;
47
+ y0: number;
48
+ x1: number;
49
+ y1: number;
50
+ /** The copy texture's size: the box rounded up to `FACE_LIQUIFY_COPY_BUCKET`, at most the framebuffer. */
51
+ width: number;
52
+ height: number;
53
+ };
54
+ /** Copy sizes round up to this many pixels, so a moving face rarely reallocates. */
55
+ export declare const FACE_LIQUIFY_COPY_BUCKET = 64;
56
+ /** Pixels of padding around the face box (the bilinear tap at the rim). */
57
+ export declare const FACE_LIQUIFY_COPY_PAD = 2;
58
+ /**
59
+ * The framebuffer box to copy for `bounds` (image uv, y down) on a `W × H`
60
+ * framebuffer, or null when it is empty.
61
+ */
62
+ export declare const planFaceLiquifyCopy: (bounds: FaceLiquifyBounds | null, W: number, H: number) => FaceLiquifyCopyPlan | null;
63
+ /**
64
+ * Where a `texW × texH` copy starts so it holds the box, centred on it and
65
+ * kept inside the `W × H` framebuffer.
66
+ */
67
+ export declare const faceLiquifyCopyOrigin: (plan: FaceLiquifyCopyPlan, texW: number, texH: number, W: number, H: number, out: {
68
+ x: number;
69
+ y: number;
70
+ }) => {
71
+ x: number;
72
+ y: number;
73
+ };
74
+ /** A slot's current copy texture. */
75
+ export type FaceLiquifySlotShape = {
76
+ kind: FaceLiquifySlotKind;
77
+ width: number;
78
+ height: number;
79
+ };
80
+ /**
81
+ * Whether the slot needs a new texture: none yet, another kind, too small for
82
+ * the plan, or larger than the framebuffer (a copy must stay inside it).
83
+ */
84
+ export declare const faceLiquifySlotNeedsRealloc: (slot: FaceLiquifySlotShape | null, kind: FaceLiquifySlotKind, plan: FaceLiquifyCopyPlan, W: number, H: number) => boolean;
85
+ export {};
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Face liquify warps (pure): the five kinds of local warp, their fold limits,
3
+ * and the CPU copy of the shader that applies them.
4
+ *
5
+ * Warps work on the screen image in aspect space: `x` in image heights
6
+ * (`u × aspect`), `y` in image heights, down. Each warp is a backward map
7
+ * (where a screen point samples the image) inside a circle, with the falloff
8
+ * `(1 − r²)²` (1 at the centre, 0 with a flat edge at the rim), so outside
9
+ * its circle the image is untouched. A warp at or under its kind's limit
10
+ * never folds the image over itself (its Jacobian stays positive), and the
11
+ * warps of a face are applied one after another, so together they never fold
12
+ * either.
13
+ */
14
+ /** The warp kinds. */
15
+ export declare const FACE_LIQUIFY_KINDS: readonly ["bulge", "pinch", "push", "stretch", "swirl"];
16
+ export type FaceLiquifyKind = (typeof FACE_LIQUIFY_KINDS)[number];
17
+ /** Each kind's code in the op data (and the shader). */
18
+ export declare const FACE_LIQUIFY_KIND_CODE: Readonly<Record<FaceLiquifyKind, number>>;
19
+ /**
20
+ * Each kind's largest strength (a warp's `strength` 1). Under the fold limit
21
+ * with a margin: bulge and stretch fold at 1 (the centre scale reaches 0),
22
+ * pinch at 1.25, push at 0.65 (`1 / max |w'|`); swirl never folds (it turns
23
+ * by at most half a turn at its centre).
24
+ */
25
+ export declare const FACE_LIQUIFY_KIND_LIMITS: Readonly<Record<FaceLiquifyKind, number>>;
26
+ /** The largest weight: the strongest (cartoon) look, at each warp's full strength. */
27
+ export declare const FACE_LIQUIFY_MAX_WEIGHT = 3;
28
+ /** The weight curve's exponent: weight 1 is a subtle look (about a fifth of the most). */
29
+ export declare const FACE_LIQUIFY_WEIGHT_EXPONENT = 1.5;
30
+ /** Warps per face, at most (the shader's uniform arrays). */
31
+ export declare const FACE_LIQUIFY_MAX_OPS = 32;
32
+ /** Floats per warp in the op data: centre x, y, radius, kind, strength, direction x, y, spare. */
33
+ export declare const FACE_LIQUIFY_OP_FLOATS = 8;
34
+ /**
35
+ * A weight (0..3) → the share of a warp's full strength it applies: 0 at 0,
36
+ * about 0.19 at 1 (subtle), 0.54 at 2, 1 at 3 (the most before folding).
37
+ * Out-of-range and non-finite weights clamp (no negative weights).
38
+ */
39
+ export declare const faceLiquifyAmount: (weight: number) => number;
40
+ /** The falloff at `r` (distance over radius): `(1 − r²)²` inside, 0 outside. */
41
+ export declare const faceLiquifyFalloff: (r: number) => number;
42
+ /** A point in aspect space. */
43
+ export type FaceLiquifyPoint2 = {
44
+ x: number;
45
+ y: number;
46
+ };
47
+ /**
48
+ * One warp's backward map: the point `(x, y)` on screen samples the image at
49
+ * the returned point (aspect space). `ops` holds warps of
50
+ * `FACE_LIQUIFY_OP_FLOATS` floats; `i` is the warp. For `push` and `stretch`
51
+ * the direction is the unit vector the content moves along; for `swirl` its
52
+ * x is the turn's sign on screen.
53
+ */
54
+ export declare const applyFaceLiquifyOp: (ops: ArrayLike<number>, i: number, x: number, y: number, out: FaceLiquifyPoint2) => FaceLiquifyPoint2;
55
+ /**
56
+ * Where the screen point `(x, y)` samples the image under all `count` warps
57
+ * (aspect space), as the shader does: the warps apply in list order to the
58
+ * image, so the screen point goes through them last to first.
59
+ */
60
+ export declare const sampleFaceLiquify: (ops: ArrayLike<number>, count: number, x: number, y: number, out?: FaceLiquifyPoint2) => FaceLiquifyPoint2;
61
+ /** The screen box the warps can change, in image uv (0..1, y down), or null with none. */
62
+ export type FaceLiquifyBounds = {
63
+ minX: number;
64
+ minY: number;
65
+ maxX: number;
66
+ maxY: number;
67
+ };
68
+ /**
69
+ * The image-uv box (clamped to 0..1) holding every warp's circle: outside it
70
+ * the warps change nothing. `aspect` is the image's width / height.
71
+ */
72
+ export declare const faceLiquifyBounds: (ops: ArrayLike<number>, count: number, aspect: number, out?: FaceLiquifyBounds) => FaceLiquifyBounds | null;
@@ -1,7 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { Transform3DSettings } from '../../Transform3D';
3
- import { FaceWarp3DSettings } from '../../FaceWarp3D';
4
3
  import { FaceMeshAlphaMap, FaceMeshBlendMode, FaceMeshMaskTextureSource, FaceMeshMaterialType, FaceMeshShaderPreset, FaceMeshSide, FaceMeshTextureMap } from '../material/types';
4
+ import { shouldSkipUpdate } from '../../../utils/updateThrottle';
5
5
  import { ParsedCanonicalMesh } from './parseCanonicalFaceModel';
6
6
  import { CanonicalFaceMeshGeometryKey } from './geometryGroups';
7
7
  import * as THREE from "three";
@@ -21,11 +21,15 @@ export type CanonicalFaceMeshRendererProps = {
21
21
  showOverlayMask?: boolean;
22
22
  showMouthMask?: boolean;
23
23
  showEyeMask?: boolean;
24
+ /** Mask the person's own left eye (on every feed; the webcam's screen-left eye). */
24
25
  showLeftEyeMask?: boolean;
26
+ /** Mask the person's own right eye (on every feed). */
25
27
  showRightEyeMask?: boolean;
26
28
  showNoseMask?: boolean;
27
29
  showEyeGeometry?: boolean;
30
+ /** Draw the person's own left eye geometry (on every feed; the webcam's screen-left eye). */
28
31
  showLeftEyeGeometry?: boolean;
32
+ /** Draw the person's own right eye geometry (on every feed). */
29
33
  showRightEyeGeometry?: boolean;
30
34
  showMouthGeometry?: boolean;
31
35
  showLipsGeometry?: boolean;
@@ -39,7 +43,6 @@ export type CanonicalFaceMeshRendererProps = {
39
43
  faceTextureStyle2Url?: string;
40
44
  faceAlphaMaskUrl?: string;
41
45
  compositeShading?: boolean;
42
- faceWarp3D?: Partial<FaceWarp3DSettings>;
43
46
  transform?: Transform3DSettings;
44
47
  renderOrder?: number;
45
48
  externalScale?: number;
@@ -54,18 +57,47 @@ export type CanonicalFaceMeshRendererProps = {
54
57
  meshUrl?: string;
55
58
  /** Optional material override, rendered for every visible geometry group. */
56
59
  materialOverride?: FaceMeshMaterialOverride;
60
+ /**
61
+ * Cap how often vertex positions follow the landmarks (updates per second).
62
+ * Visibility still tracks face presence every frame. Omit for every frame.
63
+ */
64
+ maxUpdateFps?: number;
65
+ /**
66
+ * Keep the mesh on its last landmarks for this long (ms) when the tracker
67
+ * drops the face, bridging the one- or two-frame dropouts small or fast
68
+ * faces cause. Default 250, matching `useFaceInfos`. 0 hides the mesh on
69
+ * the first missing frame.
70
+ */
71
+ holdMs?: number;
72
+ /**
73
+ * While held, move the landmarks along their last smoothed velocity for up
74
+ * to this long (ms) so the mesh keeps pace with a moving subject. Default 0.
75
+ */
76
+ predictMs?: number;
57
77
  };
58
78
  export type FaceMeshMaterialOverrideContext = {
59
79
  cameraTexture: THREE.Texture | null;
60
80
  geometryKey: CanonicalFaceMeshGeometryKey;
81
+ /**
82
+ * Live per-vertex camera-texture UVs, shared by every geometry group and
83
+ * bound to the geometry as the `faceUv` attribute. `null` until the
84
+ * canonical mesh has loaded.
85
+ */
86
+ faceUv: THREE.BufferAttribute | null;
87
+ /** Static per-vertex lip band position (`attribute float lipEdge`); `null` until the mesh has loaded. */
88
+ lipEdge: THREE.BufferAttribute | null;
61
89
  };
90
+ /** A material node, or a three.js material instance to set on the mesh directly (shareable). */
91
+ export type FaceMeshMaterialOverrideResult = ReactNode | THREE.Material;
62
92
  /**
63
93
  * Runtime-only material escape hatch. Preset settings remain serializable;
64
- * pass a material node or factory here from JSX or a scene host instead.
94
+ * pass a material node, a material instance, or a factory here from JSX or a
95
+ * scene host instead.
65
96
  */
66
- export type FaceMeshMaterialOverride = ReactNode | ((context: FaceMeshMaterialOverrideContext) => ReactNode);
97
+ export type FaceMeshMaterialOverride = FaceMeshMaterialOverrideResult | ((context: FaceMeshMaterialOverrideContext) => FaceMeshMaterialOverrideResult);
98
+ export { shouldSkipUpdate };
67
99
  /**
68
100
  * @deprecated Use `FaceMeshRenderer` for scene-object/editor integrations.
69
101
  * This remains as the low-level canonical mesh renderer for existing imports.
70
102
  */
71
- export declare const CanonicalFaceMeshRenderer: ({ faceIndex, baseColor, color, opacity, materialType, shaderPreset, textureMap, alphaMap, alphaOpacity, side, blendMode, blendOpacity, showOverlayMask, showMouthMask, showEyeMask, showLeftEyeMask, showRightEyeMask, showNoseMask, showEyeGeometry, showLeftEyeGeometry, showRightEyeGeometry, showMouthGeometry, showLipsGeometry, showBaseGeometry, showNoseGeometry, maskTextureSource, maskSourceUrl, maskColor, maskOpacity, faceTextureUrl, faceTextureStyle2Url, faceAlphaMaskUrl, compositeShading, faceWarp3D, transform, renderOrder, externalScale, mesh, meshUrl, materialOverride, }: CanonicalFaceMeshRendererProps) => import("react/jsx-runtime").JSX.Element;
103
+ export declare const CanonicalFaceMeshRenderer: ({ faceIndex, baseColor, color, opacity, materialType, shaderPreset, textureMap, alphaMap, alphaOpacity, side, blendMode, blendOpacity, showOverlayMask, showMouthMask, showEyeMask, showLeftEyeMask, showRightEyeMask, showNoseMask, showEyeGeometry, showLeftEyeGeometry, showRightEyeGeometry, showMouthGeometry, showLipsGeometry, showBaseGeometry, showNoseGeometry, maskTextureSource, maskSourceUrl, maskColor, maskOpacity, faceTextureUrl, faceTextureStyle2Url, faceAlphaMaskUrl, compositeShading, transform, renderOrder, externalScale, mesh, meshUrl, materialOverride, maxUpdateFps, holdMs, predictMs, }: CanonicalFaceMeshRendererProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,11 @@
1
1
  import { ParsedCanonicalMesh } from './parseCanonicalFaceModel';
2
+ /**
3
+ * The canonical face mesh's geometry groups. The eye groups name SCREEN
4
+ * sides of the mesh: `"left-eye"` is the landmark-33 ring (MediaPipe's right
5
+ * eye, canonical −X), on the screen's left on every feed; `"right-eye"` the
6
+ * landmark-263 ring. The `show…Eye…` props name the person's own eyes and are
7
+ * mapped onto these per feed (`resolveFaceMeshEyeVisibility`).
8
+ */
2
9
  export type CanonicalFaceMeshGeometryKey = "base" | "mouth" | "lips" | "left-eye" | "right-eye" | "nose" | "mouth-mask" | "left-eye-mask" | "right-eye-mask" | "nose-mask";
3
10
  export type CanonicalFaceMeshGeometrySpec = {
4
11
  key: CanonicalFaceMeshGeometryKey;
@@ -7,3 +14,17 @@ export type CanonicalFaceMeshGeometrySpec = {
7
14
  renderOrderOffset: number;
8
15
  };
9
16
  export declare const CANONICAL_FACE_MESH_GEOMETRY_SPECS: CanonicalFaceMeshGeometrySpec[];
17
+ /** The person's own eyes, as the `showLeftEye…` / `showRightEye…` props name them. */
18
+ export type FaceMeshEyeVisibility = {
19
+ leftEye: boolean;
20
+ rightEye: boolean;
21
+ leftEyeMask: boolean;
22
+ rightEyeMask: boolean;
23
+ };
24
+ /**
25
+ * Maps the person's own eyes onto the mesh's screen-side eye groups for this
26
+ * feed (#298). The screen-left eye (`"left-eye"`) is the person's left on the
27
+ * mirrored webcam (`feedMirrored`) and their right on an unmirrored feed
28
+ * (rear camera, image, video), where the groups swap.
29
+ */
30
+ export declare const resolveFaceMeshEyeVisibility: (person: FaceMeshEyeVisibility, feedMirrored: boolean) => Record<"left-eye" | "right-eye" | "left-eye-mask" | "right-eye-mask", boolean>;
@@ -2,17 +2,38 @@ export type ParsedCanonicalMesh = {
2
2
  baseIndices: Uint16Array;
3
3
  mouthIndices: Uint16Array;
4
4
  lipIndices: Uint16Array;
5
+ /**
6
+ * Per-vertex position across the lip band: 0 on the outer lip ring, 1 on
7
+ * the inner ring (mouth line), interpolated in between; 1 elsewhere. Bound
8
+ * to the geometry as `attribute float lipEdge` for feathering and tints.
9
+ */
10
+ lipEdgeDistance: Float32Array;
11
+ /**
12
+ * The eye on the SCREEN's left on every feed: the landmark-33 ring
13
+ * (MediaPipe's right eye, canonical −X) — the person's left eye on the
14
+ * mirrored webcam, their right on unmirrored feeds (GROUNDING "Left and
15
+ * right"). `FaceMesh`'s `showLeftEye…` props resolve the person's eye.
16
+ */
5
17
  leftEyeIndices: Uint16Array;
18
+ /** The eye on the screen's right: the landmark-263 ring (MediaPipe's left eye). */
6
19
  rightEyeIndices: Uint16Array;
7
20
  eyeIndices: Uint16Array;
8
21
  noseIndices: Uint16Array;
9
22
  uvs: Float32Array;
10
23
  vertexCount: number;
11
24
  };
25
+ export declare const CANONICAL_OUTER_LIP_RING: number[];
26
+ export declare const CANONICAL_INNER_LIP_RING: number[];
27
+ /** OBJ face indices (0-based `f` records) of the two nostril openings. */
28
+ export declare const CANONICAL_NOSTRIL_FACE_INDICES: number[];
12
29
  /**
13
30
  * Parse the MediaPipe canonical face OBJ into vertex/UV/index buffers
14
31
  * grouped by anatomical region (base / mouth / eye / nose).
15
32
  *
33
+ * `lipIndices` is an effect-only overlay: the lip-surface triangles between
34
+ * the outer and inner lip rings. They are also kept in `baseIndices`, so the
35
+ * region groups still tile the whole face.
36
+ *
16
37
  * Indices are emitted as Uint16Array — the canonical model has 468
17
38
  * vertices and ~900 faces, well within range.
18
39
  */
@@ -1,2 +1,2 @@
1
1
  export declare const COMPOSITE_VERTEX_SHADER = "\n attribute vec2 faceUv;\n varying vec2 vUv;\n varying vec2 vFaceUv;\n varying vec3 vNormal;\n\n void main() {\n vUv = uv;\n vFaceUv = faceUv;\n vNormal = normalize(normalMatrix * normal);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n";
2
- export declare const COMPOSITE_FRAGMENT_SHADER = "\n uniform sampler2D cameraTexture;\n uniform sampler2D canonicalTexture;\n uniform sampler2D alphaMask;\n uniform vec3 textureTint;\n uniform float opacity;\n uniform int blendMode;\n uniform float blendOpacity;\n uniform float useCanonicalTexture;\n uniform float useAlphaMask;\n uniform float alphaOpacity;\n uniform float compositeShading;\n uniform vec3 lightDirection;\n uniform float ambientStrength;\n uniform float directionalStrength;\n varying vec2 vUv;\n varying vec2 vFaceUv;\n varying vec3 vNormal;\n\n vec3 linearToSrgb(vec3 value) {\n vec3 low = value * 12.92;\n vec3 high = 1.055 * pow(max(value, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055;\n return mix(high, low, step(value, vec3(0.0031308)));\n }\n\n vec3 srgbToLinear(vec3 value) {\n vec3 low = value / 12.92;\n vec3 high = pow(max((value + 0.055) / 1.055, vec3(0.0)), vec3(2.4));\n return mix(high, low, step(value, vec3(0.04045)));\n }\n\n float overlayChannel(float base, float blend) {\n return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);\n }\n\n float hardLightChannel(float base, float blend) {\n return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);\n }\n\n float softLightChannel(float base, float blend) {\n if (blend <= 0.5) {\n return base - (1.0 - 2.0 * blend) * base * (1.0 - base);\n }\n\n float d = base <= 0.25\n ? ((16.0 * base - 12.0) * base + 4.0) * base\n : sqrt(base);\n\n return base + (2.0 * blend - 1.0) * (d - base);\n }\n\n vec3 applyBlendMode(vec3 base, vec3 blend, int mode) {\n if (mode == 0) return blend;\n if (mode == 1) return min(base + blend, 1.0);\n if (mode == 2) return max(base - blend, 0.0);\n if (mode == 3) return base * blend;\n if (mode == 4) return 1.0 - (1.0 - base) * (1.0 - blend);\n if (mode == 5) {\n return vec3(\n overlayChannel(base.r, blend.r),\n overlayChannel(base.g, blend.g),\n overlayChannel(base.b, blend.b)\n );\n }\n if (mode == 6) {\n return vec3(\n softLightChannel(base.r, blend.r),\n softLightChannel(base.g, blend.g),\n softLightChannel(base.b, blend.b)\n );\n }\n if (mode == 7) {\n return vec3(\n hardLightChannel(base.r, blend.r),\n hardLightChannel(base.g, blend.g),\n hardLightChannel(base.b, blend.b)\n );\n }\n if (mode == 8) return max(base, blend);\n if (mode == 9) return min(base, blend);\n if (mode == 10) return abs(base - blend);\n return base + blend - 2.0 * base * blend;\n }\n\n void main() {\n vec3 base = linearToSrgb(texture2D(cameraTexture, vFaceUv).rgb);\n vec4 textureSample = texture2D(canonicalTexture, vUv);\n vec3 blend = linearToSrgb(textureSample.rgb) * textureTint;\n float light = ambientStrength + max(dot(normalize(vNormal), normalize(lightDirection)), 0.0) * directionalStrength;\n blend *= mix(1.0, clamp(light, 0.35, 1.35), compositeShading);\n float maskSample = texture2D(alphaMask, vUv).r;\n float mask = useAlphaMask > 0.5 ? mix(1.0, maskSample, alphaOpacity) : 1.0;\n float textureAlpha = useCanonicalTexture > 0.5 ? textureSample.a : 1.0;\n vec3 blended = applyBlendMode(base, blend, blendMode);\n vec3 color = useCanonicalTexture > 0.5 ? mix(base, blended, blendOpacity) : base;\n gl_FragColor = vec4(srgbToLinear(color), opacity * mask * textureAlpha);\n }\n";
2
+ export declare const COMPOSITE_FRAGMENT_SHADER = "\n uniform sampler2D cameraTexture;\n uniform sampler2D canonicalTexture;\n uniform sampler2D alphaMask;\n uniform vec3 textureTint;\n uniform float opacity;\n uniform int blendMode;\n uniform float blendOpacity;\n uniform float useCanonicalTexture;\n uniform float useAlphaMask;\n uniform float alphaOpacity;\n uniform float compositeShading;\n uniform vec3 lightDirection;\n uniform float ambientStrength;\n uniform float directionalStrength;\n varying vec2 vUv;\n varying vec2 vFaceUv;\n varying vec3 vNormal;\n\n vec3 linearToSrgb(vec3 value) {\n vec3 low = value * 12.92;\n vec3 high = 1.055 * pow(max(value, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055;\n return mix(high, low, step(value, vec3(0.0031308)));\n }\n\n vec3 srgbToLinear(vec3 value) {\n vec3 low = value / 12.92;\n vec3 high = pow(max((value + 0.055) / 1.055, vec3(0.0)), vec3(2.4));\n return mix(high, low, step(value, vec3(0.04045)));\n }\n\n float overlayChannel(float base, float blend) {\n return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);\n }\n\n float hardLightChannel(float base, float blend) {\n return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);\n }\n\n float softLightChannel(float base, float blend) {\n if (blend <= 0.5) {\n return base - (1.0 - 2.0 * blend) * base * (1.0 - base);\n }\n\n float d = base <= 0.25\n ? ((16.0 * base - 12.0) * base + 4.0) * base\n : sqrt(base);\n\n return base + (2.0 * blend - 1.0) * (d - base);\n }\n\n vec3 applyBlendMode(vec3 base, vec3 blend, int mode) {\n if (mode == 0) return blend;\n if (mode == 1) return min(base + blend, 1.0);\n if (mode == 2) return max(base - blend, 0.0);\n if (mode == 3) return base * blend;\n if (mode == 4) return 1.0 - (1.0 - base) * (1.0 - blend);\n if (mode == 5) {\n return vec3(\n overlayChannel(base.r, blend.r),\n overlayChannel(base.g, blend.g),\n overlayChannel(base.b, blend.b)\n );\n }\n if (mode == 6) {\n return vec3(\n softLightChannel(base.r, blend.r),\n softLightChannel(base.g, blend.g),\n softLightChannel(base.b, blend.b)\n );\n }\n if (mode == 7) {\n return vec3(\n hardLightChannel(base.r, blend.r),\n hardLightChannel(base.g, blend.g),\n hardLightChannel(base.b, blend.b)\n );\n }\n if (mode == 8) return max(base, blend);\n if (mode == 9) return min(base, blend);\n if (mode == 10) return abs(base - blend);\n return base + blend - 2.0 * base * blend;\n }\n\n void main() {\n vec3 base = linearToSrgb(texture2D(cameraTexture, vFaceUv).rgb);\n vec4 textureSample = texture2D(canonicalTexture, vUv);\n vec3 blend = linearToSrgb(textureSample.rgb) * textureTint;\n float light = ambientStrength + max(dot(normalize(vNormal), normalize(lightDirection)), 0.0) * directionalStrength;\n blend *= mix(1.0, clamp(light, 0.35, 1.35), compositeShading);\n float maskSample = texture2D(alphaMask, vUv).r;\n float mask = useAlphaMask > 0.5 ? mix(1.0, maskSample, alphaOpacity) : 1.0;\n float textureAlpha = useCanonicalTexture > 0.5 ? textureSample.a : 1.0;\n vec3 blended = applyBlendMode(base, blend, blendMode);\n vec3 color = useCanonicalTexture > 0.5 ? mix(base, blended, blendOpacity) : base;\n gl_FragColor = vec4(srgbToLinear(color), opacity * mask * textureAlpha);\n // Blending above runs in sRGB; the result is linear here and three only\n // encodes built-in materials, so encode for the output colour space.\n #include <colorspace_fragment>\n }\n";
@@ -1,11 +1,11 @@
1
1
  export { FaceMesh, FACE_LANDMARK_Z_SCALE_FACTOR } from './FaceMesh';
2
2
  export { CanonicalFaceMeshRenderer } from './canonical/CanonicalFaceMeshRenderer';
3
- export type { CanonicalFaceMeshRendererProps, FaceMeshMaterialOverride, FaceMeshMaterialOverrideContext, } from './canonical/CanonicalFaceMeshRenderer';
3
+ export type { CanonicalFaceMeshRendererProps, FaceMeshMaterialOverride, FaceMeshMaterialOverrideContext, FaceMeshMaterialOverrideResult, } from './canonical/CanonicalFaceMeshRenderer';
4
4
  export { FaceMeshMaterial } from './canonical/FaceMeshMaterial';
5
5
  export type { FaceMeshMaterialProps } from './canonical/FaceMeshMaterial';
6
6
  export { DEFAULT_FACE_MESH_TRANSFORM, DEFAULT_FACE_MESH_RENDERER, FaceMeshRenderer, mapFaceMeshRendererProps, mapFaceMeshRendererSettingsToProps, resolveFaceMeshRendererSettings, type FaceMeshRendererSettings, type FaceMeshRendererProps, } from './FaceMeshRenderer';
7
7
  export { useCanonicalFaceMesh } from './canonical/useCanonicalFaceMesh';
8
8
  export { canonicalFaceAlphaMaskUrl, canonicalFaceTextureStyle2Url, canonicalFaceTextureUrl, } from './canonical/assets';
9
9
  export { parseCanonicalFaceModel, type ParsedCanonicalMesh, } from './canonical/parseCanonicalFaceModel';
10
- export { CANONICAL_FACE_MESH_GEOMETRY_SPECS, type CanonicalFaceMeshGeometryKey, type CanonicalFaceMeshGeometrySpec, } from './canonical/geometryGroups';
10
+ export { CANONICAL_FACE_MESH_GEOMETRY_SPECS, resolveFaceMeshEyeVisibility, type CanonicalFaceMeshGeometryKey, type CanonicalFaceMeshGeometrySpec, type FaceMeshEyeVisibility, } from './canonical/geometryGroups';
11
11
  export * from './material';
@@ -15,6 +15,8 @@ export type FaceRetouchBackgroundProps = {
15
15
  /**
16
16
  * Full-screen plane that composites the live camera texture with a
17
17
  * landmark-driven skin retouch. Pair with `useFaceRetouchMask` to drive the
18
- * mask.
18
+ * mask. Drawn in the opaque face layer (`FACE_RETOUCH_RENDER_ORDER`, -2.5)
19
+ * with depth testing, so `HandCutout` keeps hands over the face sharp and
20
+ * the face effects (-2) and makeup draw over it.
19
21
  */
20
22
  export declare const FaceRetouchBackground: ({ retouchMask, retouchAmount, blurRadius, detailPreservation, blemishReduction, blemishRadius, previewMask, protectLandmarks, clipMinX, clipMaxX, renderOrder, }: FaceRetouchBackgroundProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -39,6 +39,11 @@ export type FaceRetouchProps = {
39
39
  previewMask?: FaceRetouchControls["previewMask"];
40
40
  clipMinX?: number;
41
41
  clipMaxX?: number;
42
+ /**
43
+ * Draw order. Default `FACE_RETOUCH_RENDER_ORDER` (-2.5): in the opaque face
44
+ * layer, after the camera background and `HandCutout` (hands over the face
45
+ * stay sharp), before the face effects (-2) and makeup.
46
+ */
42
47
  renderOrder?: number;
43
48
  };
44
49
  export declare const FACE_RETOUCH_DEFAULT_CONTROLS: FaceRetouchControls;
@@ -0,0 +1,19 @@
1
+ import { FACE_RETOUCH_RENDER_ORDER } from '../../face-atlas/renderState';
2
+ export { FACE_RETOUCH_RENDER_ORDER };
3
+ /**
4
+ * The retouch plane's material state: drawn in the opaque pass at
5
+ * `FACE_RETOUCH_RENDER_ORDER` (after the camera background and
6
+ * `HandCutout`), blended by its face mask, and depth-tested so the hand
7
+ * cut-out's near depth keeps hands over the face sharp. It writes no depth.
8
+ */
9
+ export declare const FACE_RETOUCH_MATERIAL_STATE: Readonly<{
10
+ transparent: false;
11
+ depthTest: true;
12
+ depthWrite: false;
13
+ toneMapped: false;
14
+ blending: 5;
15
+ blendSrc: 204;
16
+ blendDst: 205;
17
+ blendSrcAlpha: 201;
18
+ blendDstAlpha: 205;
19
+ }>;
@@ -0,0 +1,46 @@
1
+ import { FaceSwapQuality } from '../../face-character/liveFaceRegistry';
2
+ import { LiveValue } from '../../face-character/liveValue';
3
+ import { FaceMirrorSettings, FaceMirrorVariant } from './settings';
4
+ export type FaceMirrorProps = Partial<Omit<FaceMirrorSettings, "variant" | "amount">> & {
5
+ /**
6
+ * Required. Left and right are the person's OWN sides on every feed:
7
+ * - `leftLeft`: both halves are the person's own left half;
8
+ * - `rightRight`: both halves are the person's own right half;
9
+ * - `flip`: left and right swapped (a left wink shows on the right);
10
+ * - `upsideDown`: each eye and the mouth flipped top to bottom in place
11
+ * (the Thatcher effect); the rest of the face is unchanged.
12
+ */
13
+ variant: FaceMirrorVariant;
14
+ /** Overall strength, 0..1, or a ref read every frame (fades without re-rendering). Default 1. */
15
+ amount?: LiveValue<number>;
16
+ /** Only this tracked face. Default: every tracked face. */
17
+ faceIndex?: number;
18
+ /** Faces to start the face model with when this starts it: default 1 (at least `faceIndex + 1`). */
19
+ numFaces?: number;
20
+ /** `"auto"` (default) follows the session's quality tier: mesh level, map size, statistics rate. */
21
+ quality?: FaceSwapQuality;
22
+ /** `false` hides it and stops its passes. Default true. */
23
+ active?: boolean;
24
+ };
25
+ /**
26
+ * Your own face, mirrored, on the live camera: `leftLeft` and `rightRight`
27
+ * build a symmetric face from one half, `flip` swaps the halves (a left
28
+ * wink shows on the right), `upsideDown` turns each eye and the mouth upside
29
+ * down in place. Left and right are always the person's own sides, on the
30
+ * mirrored webcam, the rear camera and videos alike. The face's own eyes and
31
+ * mouth are part of every variant, so they are always drawn from the
32
+ * mirrored face. `matchLighting` (default 1) keeps the real side light where
33
+ * it falls; 0 shows the raw mirrored pixels.
34
+ *
35
+ * Mount it anywhere in `<XRScene>` (it draws in screen space, in the face
36
+ * layer at render order −2, so use one face effect per face). It starts the
37
+ * face model itself (1 face, or `numFaces`) when no `FaceTracker` above
38
+ * does, and draws on every tracked face, or only `faceIndex`. Hands stay in
39
+ * front with `HandCutout`.
40
+ *
41
+ * ```tsx
42
+ * <FaceMirror variant="leftLeft" />
43
+ * <FaceMirror variant="upsideDown" matchLighting={0} />
44
+ * ```
45
+ */
46
+ export declare const FaceMirror: ({ variant, amount, faceIndex, numFaces: numFacesProp, quality, active, ...settingsProps }: FaceMirrorProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,58 @@
1
+ import { FaceSwapQuality } from '../../face-character/liveFaceRegistry';
2
+ import { LiveValue } from '../../face-character/liveValue';
3
+ import { FaceSwapSource, FaceSwapStatus } from './faceSwapPlan';
4
+ import { FaceSwapSettings } from './settings';
5
+ export type FaceSwapProps = Partial<Omit<FaceSwapSettings, "amount">> & {
6
+ /**
7
+ * The face drawn. Default `{ kind: "eachOther" }`: two tracked people swap
8
+ * faces. A photo (`{ kind: "photo", src }`, found once, then baked), a
9
+ * painted face (`{ kind: "canonicalTexture", src }`, in the face atlas) or
10
+ * a `FaceTexture` you made (`{ kind: "faceTexture", face }`) goes on every
11
+ * tracked face (or only `faceIndex`).
12
+ */
13
+ source?: FaceSwapSource;
14
+ /** Overall strength, 0..1, or a ref read every frame (fades without re-rendering). Default 1. */
15
+ amount?: LiveValue<number>;
16
+ /** Photo, painted and `faceTexture` sources: only this tracked face. Default: every tracked face. Ignored for `eachOther`. */
17
+ faceIndex?: number;
18
+ /**
19
+ * Faces to start the face model with when this starts it: default 2 for
20
+ * `eachOther` (at least 2), else 1 (at least `faceIndex + 1`). The first
21
+ * component to start the model sets its count.
22
+ */
23
+ numFaces?: number;
24
+ /** `"auto"` (default) follows the session's quality tier: mesh level, map size, mirror fill, statistics rate. */
25
+ quality?: FaceSwapQuality;
26
+ /** `false` hides it and stops its passes and its face model, but keeps a loaded photo. Default true. */
27
+ active?: boolean;
28
+ /** Called with the status whenever it changes (not every frame). */
29
+ onStatus?: (status: FaceSwapStatus) => void;
30
+ };
31
+ /**
32
+ * Swaps faces on the live camera. With no source, two people swap faces: it
33
+ * starts by itself once both faces have been tracked for 5 inference
34
+ * results, fades in over 200 ms, holds through a dropout of up to 250 ms,
35
+ * then fades back to the plain camera (one face shows the normal camera).
36
+ * MediaPipe reordering the faces changes nothing; where the faces overlap,
37
+ * the larger draws on top; with three or more faces only faces 0 and 1
38
+ * swap. A photo or painted face goes on every tracked face instead (or only
39
+ * `faceIndex`), each fading in and out with its own face.
40
+ *
41
+ * The target's expression moves the drawn face. By default it takes the
42
+ * target's skin tone and light (`natural`; painted faces default to
43
+ * `keepColors` and a 0.1 cm feature rim) and keeps the target's own live
44
+ * eyes and mouth (`ownEyes`, `ownMouth`). Settings are flat: spread a
45
+ * `FACE_SWAP_PRESETS` entry or set the fields (see `resolveFaceSwapSettings`).
46
+ *
47
+ * Mount it anywhere in `<XRScene>` (it draws in screen space, in the face
48
+ * layer at render order −2, so use one face effect per face). It starts the
49
+ * face model itself (2 faces for `eachOther`, else 1) when no `FaceTracker`
50
+ * above does; no `FaceRig` is needed. Hands stay in front with `HandCutout`.
51
+ *
52
+ * ```tsx
53
+ * <FaceSwap onStatus={(s) => setSwapping(s.active)} />
54
+ * <FaceSwap source={{ kind: "photo", src: file }} onStatus={(s) => setWarnings(s.warnings)} />
55
+ * <FaceSwap source={{ kind: "canonicalTexture", src: paintedUrl }} />
56
+ * ```
57
+ */
58
+ export declare const FaceSwap: ({ source, amount, faceIndex, numFaces: numFacesProp, quality, active, onStatus, ...settingsProps }: FaceSwapProps) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,72 @@
1
+ import { FaceTexture, FaceTextureStatistics } from '../../face-character/faceTexture';
2
+ import { FaceTextureLayout, FaceTransferUnseen } from '../../face-character/faceTransfer';
3
+ import { FaceSwapQuality } from '../../face-character/liveFaceRegistry';
4
+ import { LiveValue } from '../../face-character/liveValue';
5
+ import { FaceSwapSettings } from './settings';
6
+ export type FaceTextureLayerProps = Partial<Omit<FaceSwapSettings, "amount">> & {
7
+ /** The face to draw (`useFaceTexture`, `useLiveFaceTexture`, `createFaceTexture`). Nothing is drawn while null or not ready. */
8
+ face: FaceTexture | null;
9
+ /**
10
+ * How the face is laid on the target (left and right are the person's own
11
+ * sides). Default `"asIs"`. `upsideDown`, and any layout other than
12
+ * `asIs` of the target's own live face, draws the face's eyes and mouth
13
+ * too: `ownEyes` and `ownMouth` default to false there (pass them to keep
14
+ * the real ones).
15
+ */
16
+ layout?: FaceTextureLayout;
17
+ /** The tracked face drawn on. Default: the enclosing `FaceTracker`'s, else 0. */
18
+ faceIndex?: number;
19
+ /**
20
+ * The target's skin statistics the colour matches. Default (undefined):
21
+ * the live statistics of `faceIndex`. `null` draws nothing.
22
+ */
23
+ targetStats?: FaceTextureStatistics | null;
24
+ /** Overall strength, 0..1, or a ref read every frame (fades without re-rendering). Default 1. */
25
+ amount?: LiveValue<number>;
26
+ /** Default `FACE_SURFACE_RENDER_ORDER` (−2): this is "the face" layer. */
27
+ renderOrder?: number;
28
+ /** `"auto"` (default) follows the session's quality tier: mesh level and statistics rate. */
29
+ quality?: FaceSwapQuality;
30
+ /**
31
+ * Faces to start the face model with when this starts it (no `FaceTracker`
32
+ * above): at least `faceIndex + 1`, and by default enough for a live
33
+ * `face` from another tracked face too. The first component to start the
34
+ * model sets its count, so pass it whenever the face comes from another
35
+ * tracked face and something else may start the model first.
36
+ */
37
+ numFaces?: number;
38
+ /**
39
+ * The parts of the face the camera sees edge-on (nostril undersides, the
40
+ * lips' seam, the far side of the nose): `"fade"` (default) leaves them to
41
+ * the camera; `"cover"` draws the face there too, for a fill that must
42
+ * hide the features (`<Faceless>` does).
43
+ */
44
+ unseen?: FaceTransferUnseen;
45
+ };
46
+ /**
47
+ * Draws a face texture on a tracked face, in screen space (`FaceTransfer`):
48
+ * the target's expression moves it, it takes the target's skin tone and
49
+ * light (`matchSkinTone`, `matchLighting`; painted faces default to
50
+ * `keepColors`), fades in centimetres inside the face edge, and by default
51
+ * keeps the target's own live eyes and mouth (not in `upsideDown`, nor in a
52
+ * mirror layout of the target's own face). It fades in when the target
53
+ * face is tracked and out 250 ms after it is lost; a live face from
54
+ * another tracked face must be tracked too (when that person leaves, the
55
+ * layer fades out instead of keeping their last frame).
56
+ *
57
+ * Mount it anywhere in `<XRScene>` (it draws in a plain group, in the face
58
+ * layer at render order −2); with no `FaceTracker` above it starts the face
59
+ * model itself, one commit after it mounts, so a `useLiveFaceTexture(1)`
60
+ * above it starts the model first with the two faces it needs. Hands stay
61
+ * in front with `HandCutout`.
62
+ *
63
+ * ```tsx
64
+ * const painted = useFaceTexture({ kind: "canonicalTexture", src: paintedUrl });
65
+ * <FaceTextureLayer face={painted.face} />
66
+ * // your own face, mirrored left to left
67
+ * <FaceTextureLayer face={useLiveFaceTexture(0)} layout="leftLeft" />
68
+ * // the second person's face on the first
69
+ * <FaceTextureLayer face={useLiveFaceTexture(1)} faceIndex={0} numFaces={2} />
70
+ * ```
71
+ */
72
+ export declare const FaceTextureLayer: ({ face, layout, faceIndex: faceIndexProp, targetStats, amount, renderOrder, quality, numFaces, unseen, ...settingsProps }: FaceTextureLayerProps) => import("react/jsx-runtime").JSX.Element;