@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
@@ -68,8 +68,10 @@ texture, blend, or mask state changes.
68
68
 
69
69
  Material types and shader presets are quick SDK defaults. Use
70
70
  `materialOverride` when the face needs a custom Three.js material or shader.
71
- It accepts a material node or a factory that receives the current camera texture
72
- and geometry key. This prop wins over preset settings and is intentionally not
71
+ It accepts a material node or a factory that receives the current camera texture,
72
+ the geometry key, and `faceUv`: the shared live camera-UV `BufferAttribute`
73
+ (`null` until the canonical mesh loads), also bound to every group's geometry as
74
+ `attribute vec2 faceUv`. This prop wins over preset settings and is intentionally not
73
75
  part of `FaceMeshRendererSettings`, because materials, uniforms, and factories
74
76
  are not serializable scene data.
75
77
 
@@ -106,14 +108,13 @@ subtracts Y while adding X/Z. `DEFAULT_FACE_MESH_TRANSFORM.position.y` is
106
108
  backwards compatibility. New scene-object work should use `FaceMeshRenderer`.
107
109
 
108
110
  ```tsx
109
- import { CanonicalFaceMeshRenderer, FACE_WARP_3D_PRESET } from "@vincentt-xr/sdk/face-effects";
111
+ import { CanonicalFaceMeshRenderer } from "@vincentt-xr/sdk/face-effects";
110
112
 
111
113
  <CanonicalFaceMeshRenderer
112
114
  materialType="shader"
113
115
  shaderPreset="originalFace"
114
116
  textureMap="none"
115
117
  alphaMap="canonical"
116
- faceWarp3D={FACE_WARP_3D_PRESET}
117
118
  />;
118
119
  ```
119
120
 
@@ -124,8 +125,6 @@ import { CanonicalFaceMeshRenderer, FACE_WARP_3D_PRESET } from "@vincentt-xr/sdk
124
125
 
125
126
  ## FaceWarp3D
126
127
 
127
- `FACE_WARP_3D_PRESET`, `DEFAULT_FACE_WARP_3D_SETTINGS`, and
128
- `FaceWarp3DSettings` cover face, forehead, cheek, eye, nose, mouth, jaw, and
129
- chin proportions with normalized values around zero. Use `faceWarp3D` on
130
- `CanonicalFaceMeshRenderer` or `FaceMeshRenderer` settings instead of writing a
131
- second landmark deformation path.
128
+ To reshape the face (bigger eyes, a longer nose), use [`FaceWarp3D`](/api/face-warp-3d). It applies
129
+ blend shapes on the live face, with the camera image itself as the texture. It replaces the old
130
+ proportion sliders and `CanonicalFaceMeshRenderer`'s `faceWarp3D` prop.
@@ -0,0 +1,117 @@
1
+ ---
2
+ title: "Face Morph"
3
+ description: "The person's face morphs into another shape (a sphere, a cube, a character), wearing their live camera face all the way."
4
+ sidebarTitle: "Face Morph"
5
+ icon: "wand-magic-sparkles"
6
+ ---
7
+
8
+ `FaceMorph` morphs the person's face into another shape: a sphere, a cube, or a character. The shape
9
+ wears their live camera face all the way, as in Snap Lens Studio's Face Morph.
10
+
11
+ - `weight` 0 is the live face itself, so the image is unchanged.
12
+ - `weight` 1 is the shape, which still moves with the person's expression.
13
+
14
+ Animate the weight for the transformation.
15
+
16
+ It is part of the face-character pipeline ([#194](https://github.com/vincentt-xr/sdk/issues/194)).
17
+ Import from `@vincentt-xr/sdk/face-effects`.
18
+
19
+ ## Quick start
20
+
21
+ ```tsx
22
+ import { FaceMorph } from "@vincentt-xr/sdk/face-effects";
23
+ import { FaceTracker } from "@vincentt-xr/sdk/tracking";
24
+
25
+ <FaceTracker>
26
+ <FaceMorph shape="sphere" weight={0.8} />
27
+ </FaceTracker>;
28
+ ```
29
+
30
+ ## FaceMorph or FaceWarp3D?
31
+
32
+ `FaceMorph` turns the face into another object (a ball, a box, a stylised character) that wears the camera
33
+ face. To reshape the person's real face instead (bigger eyes, a longer nose, a cartoon's proportions,
34
+ photoreal, with their own hair and skin), use [`FaceWarp3D`](/api/face-warp-3d). On a realistic head model,
35
+ `FaceMorph` shows the model's own material on the skull and ears, while `FaceWarp3D` keeps the person's
36
+ real hair. Use one face effect per face.
37
+
38
+ ## Shapes
39
+
40
+ - **Built-in `"sphere"` and `"cube"`.** These are the face itself, with the eyes and mouth closed
41
+ over, subdivided and pushed out onto the shape. They fade out at the edge of the face.
42
+ - **Your own model**, authored in the canonical head frame (centimetres, as for
43
+ [`ExternalFaceMesh`](/api/external-face-mesh)). Two things matter:
44
+
45
+ - its **base positions**: where it sits on a face. These bind it.
46
+ - a **shape key** named `"morph"` (`morphKey`): what it becomes.
47
+
48
+ In Blender, start from a mesh fitted to the face (the basis), sculpt the shape key, and export
49
+ glTF. A model without the key is its own base. For example, facecap morphs into its own shape.
50
+
51
+ Every vertex is bound through its base pose to its closest point on the face, within `falloff` cm:
52
+
53
+ - A vertex beyond that keeps to the shape, so a skull or the back of a head stays put.
54
+ - Parts named `eye…` wear your eyes.
55
+ - Teeth keep their own material.
56
+
57
+ ## Props
58
+
59
+ | Prop | Default | What it does |
60
+ | ----------------------------------- | --------- | ---------------------------------------------------------------------------------------------------- |
61
+ | `shape` | — | `"sphere"`, `"cube"`, or a model (`THREE.Object3D`). |
62
+ | `weight` | `1` | 0 = the live face, 1 = the shape. Also a ref (`LiveValue`), read every frame. |
63
+ | `expression` | `1` | How strongly the shape takes the expression (Snap's Expression Multiplier). Also a ref. |
64
+ | `scale` | `1` | Scale of the shape around the head (Snap's External Scale). |
65
+ | `morphKey` | `"morph"` | The shape key a model morphs into. |
66
+ | `faceTexture` | `1` | How much of the camera face it wears: 0 shows the model's own material (a character's skin). |
67
+ | `region` | `"face"` | `"face"`, `"eyes"`, `"mouth"` or `"eyesAndMouth"` (see [Face Reprojection](/api/face-reprojection)). |
68
+ | `shading` | `"unlit"` | `"unlit"`: the camera's colours. `"lit"`: shaded by the scene lights. |
69
+ | `color` | `#f1c6a8` | A built-in shape's colour where it shows no face. |
70
+ | `subdivisions` | `2` | Smoothness of a built-in shape. |
71
+ | `falloff` | `[1, 3]` | How far from the face (cm, base pose) a vertex still morphs and wears it. |
72
+ | `facing`, `fps`, `unwrapResolution` | — | As for Face Reprojection. |
73
+ | rig props | — | `faceIndex`, `smoothing`, `holdMs`, `neutral` … (when it runs its own `FaceRig`). |
74
+
75
+ ## How it works
76
+
77
+ 1. **Live face.** Every frame, the live face (`FaceRigState.local`) and its expression
78
+ (`residual`) are read on the filled canonical face. The eye and mouth centres are the
79
+ averages of their rings.
80
+ 2. **Blend.** Each vertex blends from its bound point on the live face to its shape position plus
81
+ the expression, by `weight` and by how close it is to the face.
82
+ 3. **Texture.** The face texture is the reprojector's unwrap, the camera face in the canonical
83
+ layout. Each vertex reads it through its `faceUv` / `faceCoverage` attributes, so no remap pass
84
+ is needed.
85
+
86
+ **Pure pieces:** `createFaceMorphShape`, `createFaceMorphLive`, `writeFaceMorphLive` and
87
+ `stepFaceMorph`.
88
+
89
+ ## Example
90
+
91
+ `/face-morph` offers four shapes:
92
+
93
+ - the sphere;
94
+ - the cube;
95
+ - a **Lens Studio-style head**, sculpted from Snap's face + skull + ears mesh (a "chibi" shape key
96
+ with a bigger skull, puffed cheeks, a small chin and bigger ears);
97
+ - the **facecap** character.
98
+
99
+ The last two are local, git-ignored files. The page has controls for weight (or a looping
100
+ animation), expression, scale, face texture, region and shading.
101
+
102
+ ## Manual visual test plan
103
+
104
+ Open `/face-morph` on the webcam.
105
+
106
+ 1. **Weight 0**: nothing changes. The mesh is exactly your face, with no edge or band.
107
+ 2. **Sphere / cube at 1**: your face is on a ball or a box, sharp and centred. The edges fade into
108
+ the camera image.
109
+ 3. **Animate**: the face swells into the shape and back, smoothly and without popping.
110
+ 4. **Expressions**: at weight 1, open your mouth, smile, blink and raise your brows. The shape does
111
+ too, and `expression` scales it.
112
+ 5. **Lens Studio head**: the skull, cheeks and ears grow as the weight rises. Your face stays on it
113
+ and the ears stay on the head.
114
+ 6. **facecap + face texture**: lower "face texture" and your face fades into facecap's skin. Your
115
+ eyes stay on its eyeballs until it is fully faded.
116
+ 7. **Head turn and dropout**: the shape turns with the head, holds through a short dropout, hides
117
+ when the face is lost, and comes back.
@@ -31,3 +31,10 @@ inspector controls to show for the active material state.
31
31
  Geometry visibility is grouped by FaceMesh part: left eye, right eye, mouth,
32
32
  and nose. Use `CANONICAL_FACE_MESH_GEOMETRY_SPECS` when an inspector needs the
33
33
  runtime group order instead of hardcoding another list.
34
+
35
+ The `showLeftEye…` / `showRightEye…` settings are the person's own eyes on
36
+ every feed (GROUNDING "Left and right"). The mesh's `"left-eye"` /
37
+ `"right-eye"` groups are screen sides (`"left-eye"` is always the eye on the
38
+ screen's left); the renderer maps the settings onto them with
39
+ `resolveFaceMeshEyeVisibility(person, mirrored)`, which swaps them on
40
+ unmirrored feeds.
@@ -0,0 +1,154 @@
1
+ ---
2
+ title: "Face Reprojection"
3
+ description: "The live camera face, worn by a face model in the model's own UV layout: the whole face, or only the eyes and mouth on a character."
4
+ sidebarTitle: "Face Reprojection"
5
+ icon: "masks-theater"
6
+ ---
7
+
8
+ `FaceReprojection` puts the person's real face from the camera onto a face model
9
+ ([`ExternalFaceMesh`](/api/external-face-mesh)). The model can use any UV atlas.
10
+
11
+ - **The whole face:** the person's face on the character's head.
12
+ - **Only the eyes and / or mouth:** the classic talking-character effect.
13
+ - **The eyes on the eyeballs** as well, if you choose.
14
+
15
+ It is part of the face-character pipeline ([#194](https://github.com/vincentt-xr/sdk/issues/194),
16
+ #199). Import from `@vincentt-xr/sdk/face-effects`.
17
+
18
+ ## Quick start
19
+
20
+ ```tsx
21
+ import { ExternalFaceMesh, FaceReprojection } from "@vincentt-xr/sdk/face-effects";
22
+ import { FaceTracker } from "@vincentt-xr/sdk/tracking";
23
+
24
+ <FaceTracker>
25
+ <ExternalFaceMesh model={gltf.scene}>
26
+ <FaceReprojection region="eyesAndMouth" />
27
+ </ExternalFaceMesh>
28
+ </FaceTracker>;
29
+ ```
30
+
31
+ ## How it works
32
+
33
+ Two offscreen passes run per camera frame (at most `fps` a second):
34
+
35
+ 1. **Unwrap.** The camera face is laid out in the canonical face UV layout.
36
+ - Every landmark samples the camera image where it was tracked.
37
+ - The eye and mouth openings, which are holes in the canonical surface, are filled. So the eyes
38
+ and the inside of the mouth come along.
39
+ - Skin seen edge-on (a cheek in a profile view) fades out instead of smearing, and so does the
40
+ outer edge of the face.
41
+ 2. **Remap.** Every vertex of the model is bound once to its closest point on that filled canonical
42
+ face. The model is drawn in its own UV layout and reads the unwrap there. A few pixels of edge
43
+ padding stop seams at the edges of UV islands.
44
+
45
+ The result is applied to the model's meshes through a patched clone of each material:
46
+
47
+ - **unlit** (default): as the camera saw it;
48
+ - **lit**: as the base colour, shaded by the scene lights.
49
+
50
+ **Mirroring, aspect and resize** need nothing. The camera image and the landmarks share one space (a
51
+ mirrored webcam is mirrored before tracking), and the unwrap follows the anatomy rather than the
52
+ screen.
53
+
54
+ ## Props
55
+
56
+ | Prop | Default | What it does |
57
+ | ------------------ | ------------- | -------------------------------------------------------------------------------------------------------- |
58
+ | `meshes` | skin parts | Which meshes wear it, by object name. They must share one atlas. Add the eyeballs for real eyes. |
59
+ | `region` | `"face"` | `"face"`, `"eyes"`, `"mouth"` or `"eyesAndMouth"` (soft areas around the openings, lids and lips in). |
60
+ | `amount` | `1` | How much of the camera face shows, 0..1. |
61
+ | `shading` | `"unlit"` | `"unlit"`: the camera's colours. `"lit"`: shaded by the scene lights. |
62
+ | `mask` | — | Red channel, in the model's UV layout (load it like the model's map; glTF textures use `flipY = false`). |
63
+ | `canonicalMask` | — | Red channel, in the canonical face UV layout. |
64
+ | `resolution` | `1024` | Output texture size, px (mipmapped). |
65
+ | `unwrapResolution` | `512` | Canonical-layout texture size, px. |
66
+ | `padding` | `2` | Edge padding around UV islands, px (0–4). |
67
+ | `fps` | `30` | The most updates a second (`0` = every new camera frame). |
68
+ | `facing` | `[0.05, 0.3]` | Cosines: skin turned further than the first is hidden, fully kept from the second. |
69
+ | `falloff` | `[1, 3]` | Distance from the canonical face (cm) over which a vertex stops taking the face. |
70
+ | `apply` | `true` | Patch the meshes' materials. With `false`, only render; use `onTexture` with your own material. |
71
+ | `onTexture` | — | Receives `{ texture, unwrap }` once they exist. |
72
+
73
+ **Eyes and lids.** Eyeballs (parts named `eye…`) read the eye openings. Skin and teeth read the face
74
+ and the mouth opening, never the eyes. A lid's edge sits in the eye opening, and wearing the eye there
75
+ would show when a blink morph closes the lid.
76
+
77
+ **Face index and tracking.**
78
+
79
+ - It uses the enclosing rig's face (`FaceRigState.faceIndex`, from `FaceRig` / `ExternalFaceMesh`
80
+ `faceIndex`).
81
+ - It updates only on frames where that face is tracked, and keeps the last texture through a
82
+ dropout.
83
+ - Both textures are freed on unmount.
84
+
85
+ ## Your own material or pipeline
86
+
87
+ - **Your own material.** Pass `apply={false}` and use `onTexture`, or patch any built-in material
88
+ with `patchFaceReprojectionMaterial(material, createFaceReprojectionUniforms())`. The textures
89
+ hold premultiplied alpha.
90
+ - **Without React.** `FaceReprojector` is the GPU engine:
91
+
92
+ - `setTargets([{ geometry, canonical, openings }])`;
93
+ - `render(renderer, cameraTexture, landmarks)` once per frame;
94
+ - read `texture` / `unwrapTexture`;
95
+ - `dispose()` when done.
96
+
97
+ It takes five more options for the unwrap, all off by default:
98
+
99
+ | Option | Default | Meaning |
100
+ | --------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
101
+ | `uvs` | `CANONICAL_FACE_UVS` | The unwrap's layout, one `[u, v]` per landmark. `FACE_ATLAS_UVS` unwraps into the face atlas; a `canonicalMask` must then be in that layout. |
102
+ | `unwrapMipmaps` | `false` | Mipmap the unwrap, for reading it smaller than it is. |
103
+ | `mirrorFill` | `false` | Fill the far side of a turned face from the other side, once per unwrap; only where the mirror twin was seen clearly better. Points outside the image are filled from their twin too. |
104
+ | `inFrame` | on with `mirrorFill` | Drop the parts of the face outside the image instead of stretching the edge pixels over them. |
105
+ | `unwrapPadding` | `0` | Padding of the unwrap, px (0–16). It pads alpha too: coverage grows at the face's edge and into unseen holes, so padded texels count as seen. |
106
+
107
+ With `uvs`, `texture` (the remap into `setTargets`' own atlas) follows the layout, but the
108
+ canonical paths do not: `bindFaceReprojection(...).canonicalUv`, a `faceUv` attribute and
109
+ `patchFaceReprojectionMaterial(..., { attributes: true })` read the unwrap in the canonical
110
+ layout and would wear a scrambled face. Convert the binding first:
111
+ `writeFaceReprojectionLayoutUv(binding, FACE_ATLAS_UVS)` is the `faceUv` for that unwrap.
112
+
113
+ - **Pure helpers.** `getFaceUnwrapMesh`, `getFaceUnwrapUvs` (the unwrap's UVs in a layout),
114
+ `writeFaceUnwrapFrame`, `writeFaceFacing` (how squarely each of the 471 unwrap vertices faces
115
+ the camera), `bindFaceReprojection`, `writeFaceReprojectionLayoutUv` and the region helpers.
116
+
117
+ ## Face swap and mirror
118
+
119
+ To put a face on another live face instead of on a model, use [Face Swap](/api/face-swap):
120
+ `FaceSwap` swaps two people's faces or puts a photo or painted face on every face, and
121
+ `FaceMirror` mirrors your own face. They unwrap the face with the same `FaceReprojector`, into the
122
+ face atlas (`FACE_ATLAS_UVS`) rather than the canonical layout, and draw it back on the tracked face
123
+ in screen space. `/face-reprojection?mode=swap` and `?mode=mirror` show them.
124
+
125
+ ## Example
126
+
127
+ `/face-reprojection` runs on the local facecap character (see
128
+ [External Face Mesh](/api/external-face-mesh#example)). It has controls for region, shading,
129
+ amount, facing, fps, resolution and face index, and an option to put your eyes on the eyeballs. It
130
+ previews both textures in the top-right corner: the remap in the model's atlas, and the unwrap. Without the
131
+ local model, only the unwrap shows.
132
+
133
+ ## Manual visual test plan
134
+
135
+ Open `/face-reprojection` on the webcam with the local facecap model.
136
+
137
+ 1. **Whole face**: your face is on the character's skin, sharp and aligned, with no seam at the
138
+ edge. The ears, the scalp and the back of the head keep the character's own skin, and the edge
139
+ fades softly.
140
+ 2. **Head turn**: turn your head. The cheek turning away fades to the character's skin instead of
141
+ smearing. The near side stays sharp.
142
+ 3. **Expressions**: open your mouth (your teeth and tongue show in the character's mouth), smile and
143
+ raise your brows. Blink: the character blinks (its own morph) and the lids show your lids.
144
+ 4. **Eyes + mouth**: switch region to "eyes + mouth". Only your eyes and lips show, with soft edges,
145
+ on the character's grey skin. Tick "your eyes on the eyeballs" and your eyes move with your gaze.
146
+ 5. **Shading**: switch to "lit". The face takes the scene lighting. The amount slider fades it.
147
+ 6. **Mirror and source**: switch between the webcam and the sample videos and image. Each real eye
148
+ lands on the character's eye in front of it, on every source (mesh to mesh; GROUNDING "Left and
149
+ right").
150
+ 7. **Resolution / fps**: change the resolution (the previews resize) and the fps (lower updates
151
+ less often). Nothing leaks: switching back and forth keeps the frame rate.
152
+ 8. **Dropout**: cover the camera briefly. The face holds, then the character hides and comes back
153
+ with a fresh face.
154
+ 9. **Second face**: with two people, "second face" puts the second person's face on the character.
@@ -52,22 +52,30 @@ space. They default to the full frame. The legacy compare demo uses
52
52
 
53
53
  For multiple people, render one `FaceRetouch` per person and pass `faceIndex`.
54
54
  `numFaces` defaults to `faceIndex + 1`, so `<FaceRetouch faceIndex={1} />`
55
- requests tracking for at least two faces. Multiple passes are transparent
56
- outside their own face mask, so they can be stacked over the same camera
57
- background.
55
+ requests tracking for at least two faces. Each pass is see-through outside
56
+ its own face mask, so they stack over the same camera background at the same
57
+ draw order.
58
58
 
59
59
  ```tsx
60
60
  const faceCount = 2;
61
61
 
62
62
  {
63
63
  Array.from({ length: faceCount }, (_, faceIndex) => (
64
- <FaceRetouch
65
- key={faceIndex}
66
- {...controls}
67
- faceIndex={faceIndex}
68
- numFaces={faceCount}
69
- renderOrder={-1000 + faceIndex}
70
- />
64
+ <FaceRetouch key={faceIndex} {...controls} faceIndex={faceIndex} numFaces={faceCount} />
71
65
  ));
72
66
  }
73
67
  ```
68
+
69
+ ## Draw order
70
+
71
+ `FaceRetouch` draws in the opaque face layer at `FACE_RETOUCH_RENDER_ORDER`
72
+ (-2.5, from `@vincentt-xr/sdk/face-effects`), with depth testing:
73
+
74
+ - after the camera background (-1000) and `HandCutout` (-900), so a hand in
75
+ front of the face stays sharp instead of being smoothed;
76
+ - before the face effects (`FaceWarp3D`, `FaceMorph`, characters at -2) and
77
+ makeup (-1.99 to -1.55), which draw over the retouched skin.
78
+
79
+ Mount it at the top of the scene, not inside a tracker group (a group's
80
+ render order would move it). Override `renderOrder` only to place a custom
81
+ effect between the retouch and the face.