@vincentt-xr/sdk 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (885) hide show
  1. package/GROUNDING.md +8066 -120
  2. package/README.md +86 -52
  3. package/dist/CanonicalHeadFrame-CZFvPzN_.cjs +1 -0
  4. package/dist/CanonicalHeadFrame-vn-jM9fG.js +1506 -0
  5. package/dist/DebuggerUI-DDpU-nBF.js +275 -0
  6. package/dist/DebuggerUI-Db-1VtQJ.cjs +1 -0
  7. package/dist/FaceRetouch-D2xH5OpW.js +1071 -0
  8. package/dist/FaceRetouch-DHhn1nSV.cjs +134 -0
  9. package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
  10. package/dist/FaceSurface-DmP9AEeC.js +27 -0
  11. package/dist/SkeletonUtils-C2r90MtN.js +21 -0
  12. package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
  13. package/dist/TextLabel-Ctp-a7g9.cjs +2 -0
  14. package/dist/TextLabel-Dgt-uNN9.js +984 -0
  15. package/dist/assets/cache.d.ts +99 -0
  16. package/dist/assets/estimate.d.ts +11 -0
  17. package/dist/assets/gltfLoader.d.ts +16 -0
  18. package/dist/assets/index.d.ts +7 -0
  19. package/dist/assets/loaders.d.ts +43 -0
  20. package/dist/assets/react.d.ts +33 -0
  21. package/dist/assets/sdkModels.d.ts +22 -0
  22. package/dist/audio/AudioEngine.d.ts +3 -1
  23. package/dist/audio/AudioPlayer.d.ts +29 -0
  24. package/dist/audio/AudioPlayerLogic.d.ts +4 -0
  25. package/dist/audio/index.d.ts +2 -0
  26. package/dist/body/__fixtures__/syntheticRig.d.ts +21 -0
  27. package/dist/body/bodyFlipGuard.d.ts +39 -0
  28. package/dist/body/bodyIdentity.d.ts +72 -0
  29. package/dist/body/bodyMask.d.ts +79 -0
  30. package/dist/body/bodyMaskMaterial.d.ts +15 -0
  31. package/dist/body/bodyPose.d.ts +58 -0
  32. package/dist/body/bodyRigFit.d.ts +148 -0
  33. package/dist/body/bodyRigSolver.d.ts +114 -0
  34. package/dist/body/bodySubject.d.ts +46 -0
  35. package/dist/body-pose/index.d.ts +521 -0
  36. package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
  37. package/dist/body-trigger/frame.d.ts +88 -0
  38. package/dist/body-trigger/index.d.ts +6 -0
  39. package/dist/body-trigger/moves.d.ts +235 -0
  40. package/dist/body-trigger/trigger.d.ts +75 -0
  41. package/dist/bodyMaskMaterial-C3aXItLo.js +207 -0
  42. package/dist/bodyMaskMaterial-Q6rYywwW.cjs +68 -0
  43. package/dist/cache-C85JjyZA.js +212 -0
  44. package/dist/cache-DFqZYsHC.cjs +1 -0
  45. package/dist/calibration/calibration.d.ts +75 -0
  46. package/dist/calibration/index.d.ts +6 -0
  47. package/dist/calibration/storage.d.ts +13 -0
  48. package/dist/calibration/types.d.ts +53 -0
  49. package/dist/calibration/useXRCalibration.d.ts +46 -0
  50. package/dist/camera/CameraPermissionGate.d.ts +26 -0
  51. package/dist/camera/devices.d.ts +26 -0
  52. package/dist/camera/index.d.ts +8 -0
  53. package/dist/camera/permission.d.ts +86 -0
  54. package/dist/camera/useCameraPermission.d.ts +35 -0
  55. package/dist/canonicalFace-BHwyCx1c.js +9 -0
  56. package/dist/canonicalFace-C83I225R.cjs +1 -0
  57. package/dist/capabilities/detect.d.ts +45 -0
  58. package/dist/capabilities/index.d.ts +5 -0
  59. package/dist/capabilities/types.d.ts +120 -0
  60. package/dist/capabilities/useXRCapabilities.d.ts +18 -0
  61. package/dist/compat/environment.d.ts +5 -0
  62. package/dist/compat/index.d.ts +4 -0
  63. package/dist/compat/run.d.ts +18 -0
  64. package/dist/compat/scenarios.d.ts +10 -0
  65. package/dist/compat/types.d.ts +101 -0
  66. package/dist/components/Axes/index.d.ts +6 -0
  67. package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
  68. package/dist/components/BodyInstruction/index.d.ts +76 -0
  69. package/dist/components/BodyInstruction/useBodyPose.d.ts +30 -0
  70. package/dist/components/BodyRig/BodyAttachment.d.ts +28 -0
  71. package/dist/components/BodyRig/BodyOccluder.d.ts +27 -0
  72. package/dist/components/BodyRig/bodyDepth.d.ts +57 -0
  73. package/dist/components/BodyRig/index.d.ts +129 -0
  74. package/dist/components/BodyRig/useBodyDepthTexture.d.ts +40 -0
  75. package/dist/components/BodyTracker/index.d.ts +26 -1
  76. package/dist/components/BodyTrigger/index.d.ts +56 -0
  77. package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
  78. package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
  79. package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
  80. package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
  81. package/dist/components/FaceAtlas/constants.d.ts +8 -0
  82. package/dist/components/FaceAtlas/index.d.ts +7 -0
  83. package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
  84. package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
  85. package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
  86. package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
  87. package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
  88. package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
  89. package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
  90. package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
  91. package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
  92. package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
  93. package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
  94. package/dist/components/FaceCharacter/index.d.ts +18 -0
  95. package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
  96. package/dist/components/FaceInset/FaceInset.d.ts +68 -0
  97. package/dist/components/FaceInset/frame.d.ts +94 -0
  98. package/dist/components/FaceInset/index.d.ts +6 -0
  99. package/dist/components/FaceInset/material.d.ts +40 -0
  100. package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
  101. package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
  102. package/dist/components/FaceInstruction/index.d.ts +56 -0
  103. package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
  104. package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
  105. package/dist/components/FaceLiquify/debug.d.ts +37 -0
  106. package/dist/components/FaceLiquify/frame.d.ts +55 -0
  107. package/dist/components/FaceLiquify/index.d.ts +10 -0
  108. package/dist/components/FaceLiquify/material.d.ts +39 -0
  109. package/dist/components/FaceLiquify/pass.d.ts +49 -0
  110. package/dist/components/FaceLiquify/presence.d.ts +25 -0
  111. package/dist/components/FaceLiquify/presets.d.ts +82 -0
  112. package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
  113. package/dist/components/FaceLiquify/target.d.ts +85 -0
  114. package/dist/components/FaceLiquify/warp.d.ts +72 -0
  115. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +25 -0
  116. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +67 -3
  117. package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
  118. package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
  119. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +30 -0
  120. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +24 -0
  121. package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
  122. package/dist/components/FaceMesh/deform.d.ts +3 -0
  123. package/dist/components/FaceMesh/index.d.ts +6 -1
  124. package/dist/components/FaceMesh/material/defaults.d.ts +70 -0
  125. package/dist/components/FaceMesh/material/index.d.ts +1 -0
  126. package/dist/components/FaceMesh/material/options.d.ts +5 -1
  127. package/dist/components/FaceMesh/material/support.d.ts +7 -2
  128. package/dist/components/FaceMesh/material/textures.d.ts +4 -0
  129. package/dist/components/FaceMesh/material/types.d.ts +2 -2
  130. package/dist/components/FaceRetouch/Background.d.ts +7 -6
  131. package/dist/components/FaceRetouch/FaceRetouch.d.ts +52 -0
  132. package/dist/components/FaceRetouch/index.d.ts +2 -8
  133. package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
  134. package/dist/components/FaceRetouch/renderState.d.ts +19 -0
  135. package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
  136. package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
  137. package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
  138. package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
  139. package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
  140. package/dist/components/FaceSwap/index.d.ts +13 -0
  141. package/dist/components/FaceSwap/settings.d.ts +300 -0
  142. package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
  143. package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
  144. package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
  145. package/dist/components/FaceTracker/index.d.ts +5 -3
  146. package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
  147. package/dist/components/FaceWarp3D/index.d.ts +2 -3
  148. package/dist/components/Faceless/Faceless.d.ts +51 -0
  149. package/dist/components/Faceless/index.d.ts +2 -0
  150. package/dist/components/GestureListener/index.d.ts +11 -0
  151. package/dist/components/HairLock/HairLock.d.ts +39 -0
  152. package/dist/components/HairLock/index.d.ts +2 -0
  153. package/dist/components/HairLock/lockGeometry.d.ts +15 -0
  154. package/dist/components/HandCutout/index.d.ts +35 -0
  155. package/dist/components/HandEffect/index.d.ts +36 -0
  156. package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
  157. package/dist/components/HandInstruction/index.d.ts +74 -0
  158. package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
  159. package/dist/components/HandJoints2D/index.d.ts +1 -1
  160. package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
  161. package/dist/components/HandRig/HandAttachment.d.ts +34 -0
  162. package/dist/components/HandRig/HandNails.d.ts +61 -0
  163. package/dist/components/HandRig/HandOccluder.d.ts +45 -0
  164. package/dist/components/HandRig/HandTattoo.d.ts +61 -0
  165. package/dist/components/HandRig/WristAttachment.d.ts +34 -0
  166. package/dist/components/HandRig/index.d.ts +127 -0
  167. package/dist/components/HandRig/useArmMask.d.ts +29 -0
  168. package/dist/components/HandRig/wristSolve.d.ts +96 -0
  169. package/dist/components/HandTouch/HandTouch.d.ts +62 -0
  170. package/dist/components/HandTouch/Touchable.d.ts +36 -0
  171. package/dist/components/HandTouch/index.d.ts +2 -0
  172. package/dist/components/HandTracker/index.d.ts +10 -0
  173. package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
  174. package/dist/components/HandTracking2D/index.d.ts +1 -1
  175. package/dist/components/HandTracking2DController/index.d.ts +1 -1
  176. package/dist/components/HandTracking3D/index.d.ts +1 -1
  177. package/dist/components/HeadBinding/index.d.ts +14 -0
  178. package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
  179. package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
  180. package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
  181. package/dist/components/HeadOccluder/NeckOccluder.d.ts +67 -0
  182. package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
  183. package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
  184. package/dist/components/HeadOccluder/index.d.ts +57 -3
  185. package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
  186. package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
  187. package/dist/components/HolisticTracker/index.d.ts +69 -0
  188. package/dist/components/HolisticTracker/settings.d.ts +58 -0
  189. package/dist/components/HolisticTracker/signals.d.ts +49 -0
  190. package/dist/components/Instruction/HintStage.d.ts +29 -0
  191. package/dist/components/Instruction/InstructionCue.d.ts +126 -0
  192. package/dist/components/Instruction/gestureHold.d.ts +20 -0
  193. package/dist/components/Instruction/ghost.d.ts +129 -0
  194. package/dist/components/Instruction/hintBlend.d.ts +19 -0
  195. package/dist/components/Instruction/hintLook.d.ts +81 -0
  196. package/dist/components/Instruction/hintLoop.d.ts +36 -0
  197. package/dist/components/Instruction/index.d.ts +41 -0
  198. package/dist/components/Instruction/useGhostModel.d.ts +33 -0
  199. package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
  200. package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
  201. package/dist/components/IrisEffect/index.d.ts +51 -0
  202. package/dist/components/IrisEffect/settings.d.ts +117 -0
  203. package/dist/components/LightObject/index.d.ts +20 -0
  204. package/dist/components/LipEffect/LipEffect.d.ts +28 -0
  205. package/dist/components/LipEffect/LipEffectMaterial.d.ts +98 -0
  206. package/dist/components/LipEffect/LipEffects.d.ts +12 -0
  207. package/dist/components/LipEffect/defaults.d.ts +51 -0
  208. package/dist/components/LipEffect/index.d.ts +12 -0
  209. package/dist/components/LipEffect/lipShading.d.ts +73 -0
  210. package/dist/components/LipEffect/settings.d.ts +375 -0
  211. package/dist/components/LipEffect/shader.d.ts +39 -0
  212. package/dist/components/LipEffect/types.d.ts +141 -0
  213. package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
  214. package/dist/components/LipEffect/uvGuide.d.ts +74 -0
  215. package/dist/components/LookAt/index.d.ts +23 -0
  216. package/dist/components/Makeup/Blush.d.ts +18 -0
  217. package/dist/components/Makeup/Brows.d.ts +20 -0
  218. package/dist/components/Makeup/Contour.d.ts +17 -0
  219. package/dist/components/Makeup/Eyeliner.d.ts +20 -0
  220. package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
  221. package/dist/components/Makeup/Highlighter.d.ts +18 -0
  222. package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
  223. package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
  224. package/dist/components/Makeup/constants.d.ts +44 -0
  225. package/dist/components/Makeup/design.d.ts +106 -0
  226. package/dist/components/Makeup/designSamples.d.ts +42 -0
  227. package/dist/components/Makeup/eyes.d.ts +114 -0
  228. package/dist/components/Makeup/fields.d.ts +10 -0
  229. package/dist/components/Makeup/geometry.d.ts +106 -0
  230. package/dist/components/Makeup/index.d.ts +26 -0
  231. package/dist/components/Makeup/looks.d.ts +28 -0
  232. package/dist/components/Makeup/material.d.ts +239 -0
  233. package/dist/components/Makeup/settings.d.ts +54 -0
  234. package/dist/components/Makeup/shades.d.ts +143 -0
  235. package/dist/components/Makeup/shapes.d.ts +27 -0
  236. package/dist/components/Makeup/skinTone.d.ts +135 -0
  237. package/dist/components/Makeup/types.d.ts +110 -0
  238. package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
  239. package/dist/components/MeshRenderer/index.d.ts +59 -0
  240. package/dist/components/Necklace/Necklace.d.ts +44 -0
  241. package/dist/components/Necklace/index.d.ts +1 -0
  242. package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
  243. package/dist/components/ParticleEmitter/index.d.ts +1 -0
  244. package/dist/components/PersonCutout/index.d.ts +46 -0
  245. package/dist/components/PersonCutout/personCutout.d.ts +16 -0
  246. package/dist/components/PersonCutout/personMask.d.ts +19 -0
  247. package/dist/components/PersonCutout/useBodyMaskTexture.d.ts +35 -0
  248. package/dist/components/PerspectiveCamera/index.d.ts +2 -8
  249. package/dist/components/PinToMesh/index.d.ts +47 -0
  250. package/dist/components/RenderGroupLayer/index.d.ts +6 -0
  251. package/dist/components/SceneObjectRenderer/index.d.ts +23 -0
  252. package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
  253. package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
  254. package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
  255. package/dist/components/Screen2D/index.d.ts +5 -0
  256. package/dist/components/ScreenGlass/defaults.d.ts +3 -0
  257. package/dist/components/ScreenGlass/index.d.ts +5 -0
  258. package/dist/components/ScreenGlass/shaders.d.ts +2 -0
  259. package/dist/components/ScreenGlass/types.d.ts +10 -0
  260. package/dist/components/ScreenGradient/defaults.d.ts +5 -0
  261. package/dist/components/ScreenGradient/index.d.ts +5 -0
  262. package/dist/components/ScreenGradient/shaders.d.ts +2 -0
  263. package/dist/components/ScreenGradient/types.d.ts +19 -0
  264. package/dist/components/ScreenImage/ScreenImage.d.ts +7 -0
  265. package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
  266. package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
  267. package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
  268. package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
  269. package/dist/components/ScreenImage/fit.d.ts +52 -0
  270. package/dist/components/ScreenImage/index.d.ts +10 -87
  271. package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
  272. package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
  273. package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
  274. package/dist/components/ScreenImage/source.d.ts +25 -0
  275. package/dist/components/ScreenImage/types.d.ts +64 -0
  276. package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
  277. package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
  278. package/dist/components/ScreenShape/geometry.d.ts +5 -0
  279. package/dist/components/ScreenShape/index.d.ts +8 -0
  280. package/dist/components/ScreenShape/types.d.ts +54 -0
  281. package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
  282. package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
  283. package/dist/components/ScreenSpaceUI/index.d.ts +3 -0
  284. package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
  285. package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
  286. package/dist/components/ScreenText/constants.d.ts +5 -0
  287. package/dist/components/ScreenText/index.d.ts +9 -20
  288. package/dist/components/ScreenText/types.d.ts +31 -0
  289. package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
  290. package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
  291. package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
  292. package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
  293. package/dist/components/SegmentationOverlay/index.d.ts +9 -0
  294. package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
  295. package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
  296. package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
  297. package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
  298. package/dist/components/ShoulderOccluder/index.d.ts +46 -0
  299. package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +27 -0
  300. package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
  301. package/dist/components/SpringSwing/index.d.ts +1 -0
  302. package/dist/components/TextLabel/TextLabel.d.ts +5 -0
  303. package/dist/components/TextLabel/alignment.d.ts +4 -0
  304. package/dist/components/TextLabel/bend.d.ts +9 -0
  305. package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
  306. package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
  307. package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
  308. package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
  309. package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
  310. package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
  311. package/dist/components/TextLabel/constants.d.ts +2 -0
  312. package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
  313. package/dist/components/TextLabel/index.d.ts +2 -161
  314. package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
  315. package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
  316. package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
  317. package/dist/components/TextLabel/types.d.ts +337 -0
  318. package/dist/components/TrackingAnchor/index.d.ts +18 -2
  319. package/dist/components/Transform3D/index.d.ts +30 -0
  320. package/dist/components/XRMediaSurface/index.d.ts +8 -7
  321. package/dist/components/XRProvider/index.d.ts +16 -2
  322. package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
  323. package/dist/components/XRViewport/XRViewport.d.ts +11 -0
  324. package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
  325. package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
  326. package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
  327. package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
  328. package/dist/components/XRViewport/constants.d.ts +24 -0
  329. package/dist/components/XRViewport/contexts.d.ts +6 -0
  330. package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
  331. package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
  332. package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
  333. package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
  334. package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
  335. package/dist/components/XRViewport/index.d.ts +3 -118
  336. package/dist/components/XRViewport/layout.d.ts +16 -0
  337. package/dist/components/XRViewport/slots.d.ts +16 -0
  338. package/dist/components/XRViewport/types.d.ts +89 -0
  339. package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
  340. package/dist/components/index.d.ts +24 -0
  341. package/dist/components/occluder/skinnedOccluder.d.ts +39 -0
  342. package/dist/config/index.d.ts +1 -1
  343. package/dist/constants/index.d.ts +4 -1
  344. package/dist/context-DTxSQvp4.js +13 -0
  345. package/dist/context-hA0Rb2Xa.cjs +1 -0
  346. package/dist/contexts-B5GODwuV.js +667 -0
  347. package/dist/contexts-CSz9stBV.cjs +1 -0
  348. package/dist/coordinates/feed.d.ts +52 -0
  349. package/dist/coordinates/index.d.ts +7 -0
  350. package/dist/coordinates/side.d.ts +40 -0
  351. package/dist/coordinates/spaces.d.ts +49 -0
  352. package/dist/coordinates/viewport.d.ts +32 -0
  353. package/dist/coordinates/world.d.ts +15 -0
  354. package/dist/debug-ui/component-editor/index.d.ts +19 -0
  355. package/dist/debug-ui/default-setting.cjs +2 -2
  356. package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
  357. package/dist/debug-ui/face-retouch/index.d.ts +11 -0
  358. package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
  359. package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
  360. package/dist/debug-ui/hand-joints-2d/index.d.ts +1 -1
  361. package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
  362. package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
  363. package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
  364. package/dist/debug-ui/hierarchy-panel/index.d.ts +30 -0
  365. package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
  366. package/dist/debug-ui/index.d.ts +43 -5
  367. package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
  368. package/dist/debug-ui/layer-panel/index.d.ts +3 -2
  369. package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
  370. package/dist/debug-ui/media-source/index.d.ts +4 -2
  371. package/dist/debug-ui/media-source/media-preset.d.ts +12 -0
  372. package/dist/debug-ui/media-source/session.d.ts +40 -0
  373. package/dist/debug-ui/media-source.cjs +1 -1
  374. package/dist/debug-ui/media-source.js +8 -4
  375. package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
  376. package/dist/debug-ui/object-inspector-panel/index.d.ts +26 -0
  377. package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
  378. package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
  379. package/dist/debug-ui/scene-editor/context.d.ts +38 -0
  380. package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +11 -0
  381. package/dist/debug-ui/scene-editor/index.d.ts +11 -0
  382. package/dist/debug-ui/scene-editor/inspector-panel.d.ts +9 -0
  383. package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
  384. package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
  385. package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
  386. package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
  387. package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
  388. package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
  389. package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
  390. package/dist/debug-ui/screen-image-settings/index.d.ts +6 -2
  391. package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
  392. package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
  393. package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
  394. package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
  395. package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
  396. package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
  397. package/dist/debug-ui/screen-text-settings/index.d.ts +2 -122
  398. package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
  399. package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
  400. package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
  401. package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
  402. package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
  403. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
  404. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
  405. package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
  406. package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
  407. package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
  408. package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
  409. package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
  410. package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
  411. package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
  412. package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
  413. package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
  414. package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
  415. package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
  416. package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
  417. package/dist/debug-ui/screen-text-settings/types.d.ts +11 -0
  418. package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
  419. package/dist/debug-ui/settings-panel/index.d.ts +6 -1
  420. package/dist/debug-ui/shared/ScreenTransformSection.d.ts +6 -3
  421. package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
  422. package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
  423. package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
  424. package/dist/debug-ui.cjs +3 -13
  425. package/dist/debug-ui.js +8166 -5178
  426. package/dist/detector-K8aej4MB.js +59 -0
  427. package/dist/detector-ijypGtse.cjs +1 -0
  428. package/dist/drawNormalizedCrop-BLfB484W.js +135 -0
  429. package/dist/drawNormalizedCrop-DaGT5mZ5.cjs +1 -0
  430. package/dist/entries/all.d.ts +4 -1
  431. package/dist/entries/core.d.ts +74 -8
  432. package/dist/entries/face-effects.d.ts +130 -12
  433. package/dist/entries/instructions.d.ts +48 -0
  434. package/dist/entries/internal.d.ts +5 -2
  435. package/dist/entries/low-level.d.ts +101 -6
  436. package/dist/entries/particles.d.ts +15 -0
  437. package/dist/entries/product.d.ts +11 -0
  438. package/dist/entries/scene-object.d.ts +10 -0
  439. package/dist/entries/tracking.d.ts +110 -2
  440. package/dist/face-action/index.d.ts +34 -0
  441. package/dist/face-atlas/attributes.d.ts +30 -0
  442. package/dist/face-atlas/eyes.d.ts +272 -0
  443. package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
  444. package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
  445. package/dist/face-atlas/glsl/common.d.ts +55 -0
  446. package/dist/face-atlas/glsl/design.d.ts +49 -0
  447. package/dist/face-atlas/glsl/eyes.d.ts +73 -0
  448. package/dist/face-atlas/glsl/finish.d.ts +24 -0
  449. package/dist/face-atlas/glsl/format.d.ts +4 -0
  450. package/dist/face-atlas/glsl/index.d.ts +59 -0
  451. package/dist/face-atlas/glsl/shading.d.ts +15 -0
  452. package/dist/face-atlas/glsl/shapes.d.ts +66 -0
  453. package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
  454. package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
  455. package/dist/face-atlas/guide.d.ts +51 -0
  456. package/dist/face-atlas/index.d.ts +25 -0
  457. package/dist/face-atlas/lead.d.ts +117 -0
  458. package/dist/face-atlas/madeUpCamera.d.ts +125 -0
  459. package/dist/face-atlas/masks.d.ts +53 -0
  460. package/dist/face-atlas/obj.d.ts +69 -0
  461. package/dist/face-atlas/polylines.d.ts +63 -0
  462. package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
  463. package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
  464. package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
  465. package/dist/face-atlas/probe/constants.d.ts +137 -0
  466. package/dist/face-atlas/probe/glsl.d.ts +43 -0
  467. package/dist/face-atlas/probe/lightFit.d.ts +108 -0
  468. package/dist/face-atlas/probe/schedule.d.ts +44 -0
  469. package/dist/face-atlas/probe/selfTest.d.ts +87 -0
  470. package/dist/face-atlas/probe/stats.d.ts +143 -0
  471. package/dist/face-atlas/probe/targets.d.ts +70 -0
  472. package/dist/face-atlas/probe/unwrap.d.ts +76 -0
  473. package/dist/face-atlas/quality.d.ts +28 -0
  474. package/dist/face-atlas/regions.d.ts +31 -0
  475. package/dist/face-atlas/registry.d.ts +252 -0
  476. package/dist/face-atlas/renderState.d.ts +86 -0
  477. package/dist/face-atlas/selfOcclusion.d.ts +62 -0
  478. package/dist/face-atlas/shading.d.ts +406 -0
  479. package/dist/face-atlas/shapes.d.ts +86 -0
  480. package/dist/face-atlas/sides.d.ts +41 -0
  481. package/dist/face-atlas/skinMask.d.ts +35 -0
  482. package/dist/face-atlas/surface.d.ts +155 -0
  483. package/dist/face-atlas/topology.d.ts +44 -0
  484. package/dist/face-attribute-expression/index.d.ts +10 -0
  485. package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
  486. package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
  487. package/dist/face-character/bindFaceModel.d.ts +106 -0
  488. package/dist/face-character/canonicalFace.d.ts +17 -0
  489. package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
  490. package/dist/face-character/canonicalFacePositions.d.ts +7 -0
  491. package/dist/face-character/driveFaceModel.d.ts +57 -0
  492. package/dist/face-character/expressionOutputs.d.ts +45 -0
  493. package/dist/face-character/faceExpressions.d.ts +104 -0
  494. package/dist/face-character/faceImageLandmarker.d.ts +93 -0
  495. package/dist/face-character/faceMeshBinding.d.ts +62 -0
  496. package/dist/face-character/faceMorph.d.ts +77 -0
  497. package/dist/face-character/faceMorphs.d.ts +46 -0
  498. package/dist/face-character/facePhoto.d.ts +138 -0
  499. package/dist/face-character/facePiercings.d.ts +116 -0
  500. package/dist/face-character/facePin.d.ts +131 -0
  501. package/dist/face-character/faceReprojection.d.ts +273 -0
  502. package/dist/face-character/faceReprojector.d.ts +171 -0
  503. package/dist/face-character/faceRig.d.ts +176 -0
  504. package/dist/face-character/faceSwapPresence.d.ts +85 -0
  505. package/dist/face-character/faceTexture.d.ts +169 -0
  506. package/dist/face-character/faceTextureBaker.d.ts +86 -0
  507. package/dist/face-character/faceTextureGuide.d.ts +106 -0
  508. package/dist/face-character/faceTextureStats.d.ts +298 -0
  509. package/dist/face-character/faceTransfer.d.ts +396 -0
  510. package/dist/face-character/faceTransferGeometry.d.ts +109 -0
  511. package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
  512. package/dist/face-character/faceWarp3D.d.ts +101 -0
  513. package/dist/face-character/faceless.d.ts +79 -0
  514. package/dist/face-character/featureWarp.d.ts +28 -0
  515. package/dist/face-character/liveFaceRegistry.d.ts +370 -0
  516. package/dist/face-character/liveValue.d.ts +12 -0
  517. package/dist/face-character/memo.d.ts +15 -0
  518. package/dist/face-effects.cjs +2271 -289
  519. package/dist/face-effects.js +14240 -3562
  520. package/dist/face-expression/index.d.ts +182 -0
  521. package/dist/face-info/blendshapes.d.ts +3 -0
  522. package/dist/face-info/derive.d.ts +8 -0
  523. package/dist/face-info/drawFaceCrop.d.ts +10 -0
  524. package/dist/face-info/getFaceInfo.d.ts +8 -0
  525. package/dist/face-info/index.d.ts +8 -0
  526. package/dist/face-info/landmarks.d.ts +35 -0
  527. package/dist/face-info/types.d.ts +69 -0
  528. package/dist/footage-input/index.d.ts +46 -0
  529. package/dist/gestures/definitions.d.ts +98 -0
  530. package/dist/gestures/detector.d.ts +87 -0
  531. package/dist/gestures/index.d.ts +8 -0
  532. package/dist/gestures/measures.d.ts +114 -0
  533. package/dist/gestures/settings.d.ts +49 -0
  534. package/dist/getFaceInfo-BbcKq8PJ.cjs +1 -0
  535. package/dist/getFaceInfo-D_tCSQC7.js +62 -0
  536. package/dist/hand/armFit.d.ts +46 -0
  537. package/dist/hand/armMask.d.ts +190 -0
  538. package/dist/hand/forearm.d.ts +114 -0
  539. package/dist/hand/handCutout.d.ts +23 -0
  540. package/dist/hand/handCutoutRegistry.d.ts +7 -0
  541. package/dist/hand/handEffect.d.ts +38 -0
  542. package/dist/hand/handGestures.d.ts +524 -0
  543. package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
  544. package/dist/hand/handNail.d.ts +73 -0
  545. package/dist/hand/handPose.d.ts +98 -0
  546. package/dist/hand/handRigSolver.d.ts +159 -0
  547. package/dist/hand/handTattoo.d.ts +81 -0
  548. package/dist/hand/handTouch.d.ts +240 -0
  549. package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
  550. package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
  551. package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
  552. package/dist/hand/nailImageMask.d.ts +40 -0
  553. package/dist/hand/nailMaskFingers.d.ts +23 -0
  554. package/dist/hand/nailTipRefine.d.ts +37 -0
  555. package/dist/hand/wrist.d.ts +44 -0
  556. package/dist/hand/wristFilter.d.ts +44 -0
  557. package/dist/hooks/faceResults.d.ts +1 -1
  558. package/dist/hooks/selectors.d.ts +77 -4
  559. package/dist/hooks/useBodies.d.ts +39 -0
  560. package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
  561. package/dist/hooks/useFaceAction.d.ts +3 -0
  562. package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
  563. package/dist/hooks/useFaceDetection.d.ts +18 -0
  564. package/dist/hooks/useFaceInfo.d.ts +19 -0
  565. package/dist/hooks/useFaceInfos.d.ts +15 -0
  566. package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
  567. package/dist/hooks/useFaceResultReader.d.ts +10 -0
  568. package/dist/hooks/useFrameCapture.d.ts +18 -0
  569. package/dist/hooks/useGesture.d.ts +39 -0
  570. package/dist/hooks/useIrisTracking.d.ts +45 -0
  571. package/dist/hooks/useMediaRecorder.d.ts +14 -2
  572. package/dist/hooks/useOwnedTexture.d.ts +6 -0
  573. package/dist/hooks/useTrackerContext.d.ts +14 -2
  574. package/dist/hooks/useXRDiagnostics.d.ts +81 -0
  575. package/dist/hooks/useXRModel.d.ts +12 -0
  576. package/dist/hooks/useXRSession/facade.d.ts +47 -2
  577. package/dist/hooks/useXRSession/index.d.ts +2 -2
  578. package/dist/hooks/useXRSession/reason.d.ts +21 -0
  579. package/dist/hooks/useXRSession/registry.d.ts +23 -0
  580. package/dist/hooks/useXRSession/store.d.ts +64 -7
  581. package/dist/index-B9DdHE4u.js +442 -0
  582. package/dist/index-Bxb_UcfF.cjs +46 -0
  583. package/dist/index-CNt8esFO.js +240 -0
  584. package/dist/index-CTqQJj5p.js +3814 -0
  585. package/dist/index-CXaj3tOT.js +1108 -0
  586. package/dist/index-CYwAL_d7.cjs +21 -0
  587. package/dist/index-CelqbDSR.cjs +1 -0
  588. package/dist/index-D10O6vqR.js +190 -0
  589. package/dist/index-DIYaENN3.cjs +1 -0
  590. package/dist/index-DlP4xxaT.js +188 -0
  591. package/dist/index-DzdKBXGE.cjs +1 -0
  592. package/dist/index-J3Qy6hi3.cjs +1 -0
  593. package/dist/index-LC2Xs08E.cjs +1 -0
  594. package/dist/index-WkEZBuB4.js +1432 -0
  595. package/dist/instructions.cjs +30 -0
  596. package/dist/instructions.js +1528 -0
  597. package/dist/internal-DS8Pdlsm.cjs +1 -0
  598. package/dist/{internal-Cae1ps15.js → internal-TD4QhIry.js} +152 -127
  599. package/dist/internal.cjs +1 -1
  600. package/dist/internal.js +16 -9
  601. package/dist/iris/compute.d.ts +27 -0
  602. package/dist/iris/index.d.ts +4 -0
  603. package/dist/iris/lead.d.ts +19 -0
  604. package/dist/iris/types.d.ts +89 -0
  605. package/dist/landmarkMask-CvN-L5NT.cjs +1 -0
  606. package/dist/landmarkMask-DHivVjJm.js +225 -0
  607. package/dist/landmarks-BP6RbRHN.cjs +1 -0
  608. package/dist/landmarks-vLy5QKt6.js +76 -0
  609. package/dist/low-level.cjs +1 -1
  610. package/dist/low-level.js +1766 -85
  611. package/dist/main.cjs +1 -73
  612. package/dist/main.js +1299 -1713
  613. package/dist/material/MaterialFill.d.ts +20 -0
  614. package/dist/material/MeshMaterial.d.ts +14 -0
  615. package/dist/material/index.d.ts +2 -0
  616. package/dist/models/Base/index.d.ts +49 -0
  617. package/dist/models/Body/index.d.ts +30 -1
  618. package/dist/models/Face/constants.d.ts +8 -0
  619. package/dist/models/Face/index.d.ts +5 -12
  620. package/dist/models/Face/rotation.d.ts +18 -0
  621. package/dist/models/Hand/GestureTracking.d.ts +1 -1
  622. package/dist/models/Hand/HandTracking.d.ts +17 -1
  623. package/dist/models/Holistic/index.d.ts +49 -0
  624. package/dist/models/Holistic/result.d.ts +68 -0
  625. package/dist/models/Segmentation/index.d.ts +6 -3
  626. package/dist/models/SemanticSegmentation/index.d.ts +31 -0
  627. package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
  628. package/dist/models/index.d.ts +2 -0
  629. package/dist/models/nodeSource.d.ts +9 -0
  630. package/dist/particles/emission.d.ts +24 -0
  631. package/dist/particles/eyes.d.ts +24 -0
  632. package/dist/particles/glsl.d.ts +14 -0
  633. package/dist/particles/index.d.ts +10 -0
  634. package/dist/particles/motion.d.ts +42 -0
  635. package/dist/particles/presets.d.ts +12 -0
  636. package/dist/particles/ring.d.ts +58 -0
  637. package/dist/particles/selfTest.d.ts +53 -0
  638. package/dist/particles/settings.d.ts +127 -0
  639. package/dist/particles/shapes.d.ts +29 -0
  640. package/dist/particles/spawner.d.ts +71 -0
  641. package/dist/particles/system.d.ts +66 -0
  642. package/dist/particles.cjs +122 -0
  643. package/dist/particles.js +999 -0
  644. package/dist/product/ProductDimensions.d.ts +16 -0
  645. package/dist/product/ProductHotspot.d.ts +16 -0
  646. package/dist/product/ProductViewer.d.ts +9 -0
  647. package/dist/product/details.d.ts +53 -0
  648. package/dist/product/index.d.ts +14 -0
  649. package/dist/product/loadModelViewer.d.ts +4 -0
  650. package/dist/product/types.d.ts +71 -0
  651. package/dist/product/useProductAr.d.ts +37 -0
  652. package/dist/product/useProductDetails.d.ts +60 -0
  653. package/dist/product.cjs +1 -0
  654. package/dist/product.js +414 -0
  655. package/dist/providers-BRSbw214.cjs +62 -0
  656. package/dist/providers-DmJlgrDD.js +424 -0
  657. package/dist/quality/XRQualityController.d.ts +25 -0
  658. package/dist/quality/controller.d.ts +33 -0
  659. package/dist/quality/index.d.ts +6 -0
  660. package/dist/quality/types.d.ts +100 -0
  661. package/dist/quality/useXRQuality.d.ts +28 -0
  662. package/dist/render/renderGroups.d.ts +47 -0
  663. package/dist/render/renderPasses.d.ts +26 -0
  664. package/dist/render/sceneBeforeRender.d.ts +12 -0
  665. package/dist/renderGroups-B0N58SIA.cjs +1 -0
  666. package/dist/renderGroups-BcQYy_J2.js +152 -0
  667. package/dist/renderPasses-Bt8k0dkm.cjs +158 -0
  668. package/dist/renderPasses-DIPTIU_x.js +1290 -0
  669. package/dist/renderState-CJNmj5jz.js +39 -0
  670. package/dist/renderState-apSfg4eR.cjs +1 -0
  671. package/dist/scene-object/index.d.ts +146 -0
  672. package/dist/scene-object/runtimeRegistry.d.ts +14 -0
  673. package/dist/scene-object.cjs +1 -0
  674. package/dist/scene-object.js +40 -0
  675. package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
  676. package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
  677. package/dist/screen2d/coordinates.d.ts +144 -0
  678. package/dist/screen2d/index.d.ts +3 -0
  679. package/dist/screen2d/screenTransform.d.ts +60 -0
  680. package/dist/screen2d/smoothing.d.ts +5 -0
  681. package/dist/segmentation-CZs5aVvY.js +1911 -0
  682. package/dist/segmentation-Cz7oeNcS.cjs +1 -0
  683. package/dist/segmentation2d/faceMemory.d.ts +28 -0
  684. package/dist/segmentation2d/faceRegions.d.ts +24 -0
  685. package/dist/segmentation2d/index.d.ts +9 -0
  686. package/dist/segmentation2d/maskUv.d.ts +23 -0
  687. package/dist/segmentation2d/rasterize.d.ts +14 -0
  688. package/dist/segmentation2d/types.d.ts +52 -0
  689. package/dist/selectors-Bq6tSgOY.cjs +1 -0
  690. package/dist/selectors-K5JKCWxw.js +196 -0
  691. package/dist/services/MetricsCollector/index.d.ts +7 -1
  692. package/dist/services/MetricsCollector/utils.d.ts +1 -1
  693. package/dist/session-3aCMNb8W.cjs +31 -0
  694. package/dist/session-DHBNTyJJ.js +493 -0
  695. package/dist/settings-BJ7FMBsO.js +111 -0
  696. package/dist/settings-C63FMBlF.cjs +1 -0
  697. package/dist/similarityFit-BFqHND2e.cjs +1 -0
  698. package/dist/similarityFit-Bbz-R8AY.js +91 -0
  699. package/dist/spring/index.d.ts +2 -0
  700. package/dist/spring/spring.d.ts +69 -0
  701. package/dist/spring/swing.d.ts +54 -0
  702. package/dist/subjects/index.d.ts +2 -0
  703. package/dist/subjects/select.d.ts +70 -0
  704. package/dist/subjects/types.d.ts +59 -0
  705. package/dist/texture/animatedTexture.d.ts +63 -0
  706. package/dist/texture/animationMath.d.ts +8 -0
  707. package/dist/texture/gifReader.d.ts +17 -0
  708. package/dist/texture/gifTextureSource.d.ts +16 -0
  709. package/dist/texture/sourceResolver.d.ts +30 -0
  710. package/dist/textures-BVwo9Z7z.js +38 -0
  711. package/dist/textures-DAfc61zz.cjs +1 -0
  712. package/dist/tracking/coordinates.d.ts +5 -0
  713. package/dist/tracking-config/apply.d.ts +57 -0
  714. package/dist/tracking-config/index.d.ts +7 -0
  715. package/dist/tracking-config/resolve.d.ts +25 -0
  716. package/dist/tracking-config/storage.d.ts +8 -0
  717. package/dist/tracking-config/types.d.ts +106 -0
  718. package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
  719. package/dist/tracking.cjs +10 -1
  720. package/dist/tracking.js +1529 -317
  721. package/dist/trigger-BwZ81ENx.js +3726 -0
  722. package/dist/trigger-UjeJY5uh.cjs +147 -0
  723. package/dist/types/common.d.ts +11 -1
  724. package/dist/types/compositor.d.ts +21 -0
  725. package/dist/types/face.d.ts +21 -14
  726. package/dist/types/gesture-tracking.d.ts +2 -2
  727. package/dist/types/hand-tracking.d.ts +12 -3
  728. package/dist/types/holistic.d.ts +121 -0
  729. package/dist/types/index.d.ts +1 -1
  730. package/dist/types/model.d.ts +22 -2
  731. package/dist/types/nodes.d.ts +81 -6
  732. package/dist/types/segmentation.d.ts +26 -0
  733. package/dist/types/session.d.ts +50 -4
  734. package/dist/types/tracking.d.ts +8 -2
  735. package/dist/types/util-types.d.ts +1 -1
  736. package/dist/useBodies-BMKHXAOL.js +75 -0
  737. package/dist/useBodies-CXomEo0i.cjs +1 -0
  738. package/dist/useFaceInfo-BEMMiZxw.cjs +1 -0
  739. package/dist/useFaceInfo-BNVdnprN.js +75 -0
  740. package/dist/useFaceResultReader-B15wn6RB.js +61 -0
  741. package/dist/useFaceResultReader-D9qibKmm.cjs +1 -0
  742. package/dist/useInstructionHold-DOu-RpCM.js +53 -0
  743. package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
  744. package/dist/useIrisTracking-CYm-KDIZ.js +6190 -0
  745. package/dist/useIrisTracking-DExhnhlt.cjs +35 -0
  746. package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
  747. package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
  748. package/dist/useXRCapabilities-ClWlG5_Y.js +30 -0
  749. package/dist/useXRCapabilities-D-EhcDzM.cjs +1 -0
  750. package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
  751. package/dist/utils/drawNormalizedCrop.d.ts +22 -0
  752. package/dist/utils/fns.d.ts +6 -3
  753. package/dist/utils/headOccluderFit.d.ts +42 -0
  754. package/dist/utils/integrity.d.ts +25 -26
  755. package/dist/utils/landmarkBounds.d.ts +1 -1
  756. package/dist/utils/logger.d.ts +2 -2
  757. package/dist/utils/resolveNumFaces.d.ts +13 -0
  758. package/dist/utils/shoulderOccluderFit.d.ts +38 -0
  759. package/dist/utils/similarityFit.d.ts +23 -0
  760. package/dist/utils/updateThrottle.d.ts +2 -0
  761. package/dist/utils/useEditOverrides.d.ts +26 -0
  762. package/dist/utils/useStableUniforms.d.ts +18 -0
  763. package/dist/utils/visionWasm.d.ts +18 -0
  764. package/dist/uv-BMFt19bg.cjs +1 -0
  765. package/dist/{index-BGNbrc4C.js → uv-DJU_XfmN.js} +15 -156
  766. package/docs/MIGRATION_GUIDE.md +589 -0
  767. package/docs/SDK_DOCUMENTATION.md +1157 -0
  768. package/docs/api/adaptive-quality.mdx +104 -0
  769. package/docs/api/asset-lifecycle.mdx +78 -0
  770. package/docs/api/audio.mdx +36 -0
  771. package/docs/api/behavior-components.mdx +164 -0
  772. package/docs/api/body-instructions.mdx +287 -0
  773. package/docs/api/body-rig.mdx +384 -0
  774. package/docs/api/body-triggers.mdx +235 -0
  775. package/docs/api/camera-permission.mdx +142 -0
  776. package/docs/api/capture-recording.mdx +111 -0
  777. package/docs/api/coordinate-spaces.mdx +168 -0
  778. package/docs/api/cross-camera.mdx +89 -0
  779. package/docs/api/debug-ui-scene-editor.mdx +270 -0
  780. package/docs/api/diagnostics-calibration.mdx +97 -0
  781. package/docs/api/external-face-mesh.mdx +231 -0
  782. package/docs/api/face-actions.mdx +108 -0
  783. package/docs/api/face-attribute-expression.mdx +87 -0
  784. package/docs/api/face-binding-anchors.mdx +55 -0
  785. package/docs/api/face-character.mdx +157 -0
  786. package/docs/api/face-effects.mdx +28 -0
  787. package/docs/api/face-expression-controller.mdx +153 -0
  788. package/docs/api/face-info.mdx +118 -0
  789. package/docs/api/face-inset.mdx +204 -0
  790. package/docs/api/face-instructions.mdx +183 -0
  791. package/docs/api/face-liquify.mdx +196 -0
  792. package/docs/api/face-mesh.mdx +130 -0
  793. package/docs/api/face-morph.mdx +117 -0
  794. package/docs/api/face-painting.mdx +40 -0
  795. package/docs/api/face-reprojection.mdx +154 -0
  796. package/docs/api/face-retouching.mdx +81 -0
  797. package/docs/api/face-swap.mdx +350 -0
  798. package/docs/api/face-warp-3d.mdx +166 -0
  799. package/docs/api/faceless.mdx +143 -0
  800. package/docs/api/gestures.mdx +210 -0
  801. package/docs/api/hair.mdx +97 -0
  802. package/docs/api/hand-instructions.mdx +222 -0
  803. package/docs/api/hand-rig.mdx +661 -0
  804. package/docs/api/hand-touch.mdx +162 -0
  805. package/docs/api/head-occluder.mdx +563 -0
  806. package/docs/api/holistic-tracker.mdx +164 -0
  807. package/docs/api/instructions.mdx +323 -0
  808. package/docs/api/iris-tracking.mdx +247 -0
  809. package/docs/api/made-up-camera.mdx +131 -0
  810. package/docs/api/makeup-skin-tone.mdx +135 -0
  811. package/docs/api/makeup.mdx +353 -0
  812. package/docs/api/material-render-state.mdx +132 -0
  813. package/docs/api/multi-subject.mdx +185 -0
  814. package/docs/api/particles.mdx +183 -0
  815. package/docs/api/person-cutout.mdx +171 -0
  816. package/docs/api/pin-to-face-mesh.mdx +274 -0
  817. package/docs/api/product-ar.mdx +114 -0
  818. package/docs/api/product-details.mdx +78 -0
  819. package/docs/api/runtime-3d.mdx +316 -0
  820. package/docs/api/scene-object-store.mdx +213 -0
  821. package/docs/api/screen-image.mdx +67 -0
  822. package/docs/api/screen-shape.mdx +64 -0
  823. package/docs/api/screen-space-coordinates.mdx +83 -0
  824. package/docs/api/screen-text.mdx +39 -0
  825. package/docs/api/segmentation-overlay.mdx +301 -0
  826. package/docs/api/session-lifecycle.mdx +165 -0
  827. package/docs/api/texture-sources.mdx +74 -0
  828. package/docs/api/trackers.mdx +65 -0
  829. package/docs/api/tracking-config.mdx +108 -0
  830. package/docs/docs.json +121 -0
  831. package/docs/examples/lip-shaders.mdx +273 -0
  832. package/docs/examples/scene-object-recipes.mdx +194 -0
  833. package/docs/guides/face-atlas-template.svg +1 -0
  834. package/docs/guides/face-atlas-textures.mdx +186 -0
  835. package/docs/guides/face-texture-template.svg +1 -0
  836. package/docs/guides/harness-debug-ui.mdx +139 -0
  837. package/docs/guides/lip-effect-textures.mdx +368 -0
  838. package/docs/guides/lip-uv-template.png +0 -0
  839. package/docs/guides/lip-uv-template.svg +1 -0
  840. package/docs/guides/makeup-design-textures.mdx +109 -0
  841. package/docs/inspector/hierarchy-panel.mdx +51 -0
  842. package/docs/inspector/object-inspector-panel.mdx +51 -0
  843. package/docs/introduction.mdx +120 -0
  844. package/docs/scene-objects/overview.mdx +127 -0
  845. package/docs/scene-objects/render-groups.mdx +77 -0
  846. package/docs/scene-objects/runtime-rendering.mdx +75 -0
  847. package/docs/texture-api-consumer.md +84 -0
  848. package/package.json +69 -9
  849. package/settings.json +2049 -0
  850. package/dist/DebuggerUI-CatYc-RG.cjs +0 -1
  851. package/dist/DebuggerUI-gLMKiVwJ.js +0 -269
  852. package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
  853. package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
  854. package/dist/components/FaceRetouch/defaults.d.ts +0 -13
  855. package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
  856. package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
  857. package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
  858. package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
  859. package/dist/components/FaceWarp3D/warp.d.ts +0 -13
  860. package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
  861. package/dist/defaults-BLpcN3pG.cjs +0 -1
  862. package/dist/defaults-LtY4M7dg.js +0 -55
  863. package/dist/index-BXyObVHF.cjs +0 -1
  864. package/dist/index-CY3bUAcW.js +0 -12
  865. package/dist/index-C_Duh13c.cjs +0 -1
  866. package/dist/index-D8fpPQkC.cjs +0 -1
  867. package/dist/index-DxshgBu0.cjs +0 -1
  868. package/dist/index-O-2crZ3M.js +0 -1102
  869. package/dist/index-safCs_af.js +0 -1341
  870. package/dist/internal-BjyhBP8i.cjs +0 -1
  871. package/dist/modules/XRClient/index.d.ts +0 -9
  872. package/dist/modules/index.d.ts +0 -1
  873. package/dist/screenImageSettings-6NRg4cx9.js +0 -39
  874. package/dist/screenImageSettings-y_B4_767.cjs +0 -1
  875. package/dist/selectors-BLl2JUWW.cjs +0 -1
  876. package/dist/selectors-CXd_x-6t.js +0 -59
  877. package/dist/services/ApiService.d.ts +0 -12
  878. package/dist/types/client.d.ts +0 -3
  879. package/dist/useFaceResults-cpsSmKKc.js +0 -81
  880. package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
  881. package/dist/useXRModel-3DcUa28n.cjs +0 -1
  882. package/dist/useXRModel-BMJE1hrk.js +0 -28
  883. /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
  884. /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
  885. /package/dist/{screenTextPresets.d.ts → screen-text/screenTextPresets.d.ts} +0 -0
@@ -0,0 +1,353 @@
1
+ ---
2
+ title: "Makeup"
3
+ description: "Lipstick, contour, blush, highlighter, eyeshadow, eyeliner, brows and painted designs on the live face, shaded against the person's own skin and light, with looks, shades and six finishes."
4
+ sidebarTitle: "Makeup"
5
+ icon: "brush"
6
+ ---
7
+
8
+ Makeup paints the live face. Each region is its own component, imported from
9
+ `@vincentt-xr/sdk/face-effects`:
10
+
11
+ | Region | Component | Paints |
12
+ | ------------- | -------------- | -------------------------------------------------- |
13
+ | `lips` | `LipEffect` | Lipstick, gloss, tint, lip designs |
14
+ | `contour` | `Contour` | Cheek hollows, jawline, temples, sides of the nose |
15
+ | `blush` | `Blush` | The cheeks |
16
+ | `highlighter` | `Highlighter` | Cheekbones, brow bone, nose bridge, cupid's bow |
17
+ | `eyeshadow` | `Eyeshadow` | The lids, crease, lower lash line and inner corner |
18
+ | `eyeliner` | `Eyeliner` | Upper and lower lash lines, wings |
19
+ | `brows` | `Brows` | The person's own brows, tinted, filled or reshaped |
20
+ | — | `MakeupDesign` | Your own art: freckles, face gems, graphic liner |
21
+
22
+ Paint is shaded relative to the person's own skin, lip colour and light, so a shade reads as its named
23
+ colour on every skin tone and follows the room light. Every edit (look, shade, shape, finish, side) is
24
+ a uniform change, never a shader recompile.
25
+
26
+ ## Quick start
27
+
28
+ ```tsx
29
+ import { VideoBackground, XRScene } from "@vincentt-xr/sdk";
30
+ import {
31
+ Blush,
32
+ Brows,
33
+ Contour,
34
+ Eyeliner,
35
+ Eyeshadow,
36
+ Highlighter,
37
+ LipEffect,
38
+ MAKEUP_LOOKS,
39
+ } from "@vincentt-xr/sdk/face-effects";
40
+
41
+ const look = MAKEUP_LOOKS.softGlam;
42
+
43
+ <XRScene>
44
+ <VideoBackground />
45
+ <Contour {...look.contour} />
46
+ <Blush {...look.blush} shade="coral" />
47
+ <Highlighter {...look.highlighter} />
48
+ <Eyeshadow {...look.eyeshadow} />
49
+ <Eyeliner {...look.eyeliner} />
50
+ <Brows {...look.brows} />
51
+ <LipEffect {...look.lips} />
52
+ </XRScene>;
53
+ ```
54
+
55
+ Spread a look region into its component and put overrides after the spread. No prop is required:
56
+ `<Blush />` paints the default blush. `LipEffect` suspends once on mount, so keep it under a
57
+ `<Suspense>`.
58
+
59
+ ## Where it binds
60
+
61
+ No `FaceTracker` is needed.
62
+
63
+ - **Alone**: the component starts the face model itself, with `numFaces` faces (at least
64
+ `faceIndex + 1`). Pass the same `numFaces` to every face component.
65
+ - **Inside a `FaceTracker`**: it paints that tracker's face.
66
+ - **Nested in a `FaceRig`, `FaceWarp3D` or `FaceMorph`**: it rides that face, warp included. Makeup
67
+ outside a warp does not follow it.
68
+
69
+ Every region on one face shares one live surface and one skin probe. A face lost for under 250 ms
70
+ holds; then the makeup fades out.
71
+
72
+ ## Looks
73
+
74
+ `MAKEUP_LOOKS[name]` holds a `label`, a `description` and partial settings for all seven regions.
75
+ A region a look leaves bare is `{ enabled: false }`.
76
+
77
+ | Look | `MAKEUP_LOOKS` key |
78
+ | ---------- | ------------------ |
79
+ | Natural | `natural` |
80
+ | Soft glam | `softGlam` |
81
+ | Sun-kissed | `sunKissed` |
82
+ | Glam | `glam` |
83
+ | Smoky eye | `smokyEye` |
84
+ | Bold lip | `boldLip` |
85
+ | Editorial | `editorial` |
86
+ | Glitter | `glitter` |
87
+
88
+ `MAKEUP_LOOK_NAMES` lists them in this order. Only `natural` uses `"auto"` shades.
89
+
90
+ ## Settings
91
+
92
+ Every region has flat, serializable settings (`BlushSettings`, `ContourSettings`, …;
93
+ `MakeupSettings[region]` maps each region to its type). They are the component's props.
94
+
95
+ | Field | Meaning |
96
+ | ----------------------------------------------- | ----------------------------------------------------------------------------------------- |
97
+ | `enabled` | `false` draws nothing and holds nothing (default `true`) |
98
+ | `shape` | A placement preset (`MAKEUP_SHAPE_NAMES[region]`) or `"custom"`. Lips: `preset` |
99
+ | `shade` | A `MAKEUP_SHADES[region]` name, `"auto"` where supported, or `"custom"` |
100
+ | `color` | CSS colour. A colour that differs from the shade wins, and `shade` becomes `"custom"` |
101
+ | `opacity` | Linear amount 0..1. `0` hides the region but keeps it ready |
102
+ | `coverage` | 0 sheer (filters the person's own colour, never lightens) … 1 opaque |
103
+ | `finish`, `shine` | One of six finishes (below) and its highlight strength 0..1 |
104
+ | `sparkleColor`, `sparkleDensity`, `sparkleSize` | Flakes for `shimmer` and `glitter`: colour (`""` = from the shade), density 0..1, size mm |
105
+ | `softness` | Edge feather 0..1 |
106
+ | `side` | `"both"`, `"left"` or `"right"`: the person's own side on every feed |
107
+
108
+ Lips have the same fields except `softness` and `side` (`edgeSoftness` sets their edge), with
109
+ `preset` in place of `shape`.
110
+
111
+ Region fields:
112
+
113
+ | Region | `shape` values | Extra fields |
114
+ | ------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
115
+ | `contour` | `soft`, `sculpted`, `bronzed`, `nose` | `size` 0.5..1.5 |
116
+ | `blush` | `apples`, `lifted`, `draped`, `sunKissed` | `size` 0.5..1.5; `lift` −1..1 (positive toward the temple) |
117
+ | `highlighter` | `cheekbones`, `strobe`, `glow`, `nose` | `size` 0.5..1.5 |
118
+ | `eyeshadow` | `lid`, `crease`, `smoky`, `cutCrease`, `halo`, `winged` | `height`, `crease` + `creaseShade`, `lower`, `inner` + `innerShade` (all 0..1) |
119
+ | `eyeliner` | `tightline`, `classic`, `winged`, `catEye`, `smudged`, `kohl` | `thickness` mm 0.2..4; `wing` mm 0..15; `wingAngle` 0..45°; `lower`; `smudge` |
120
+ | `brows` | `natural`, `softArch`, `straight`, `highArch`, `bold`, `thin` | `boldness` (0.5 = their own brow); `fill` (0 tints the hairs only); `strokes` |
121
+ | `lips` | `preset`: `lipstick`, `gloss`, `matte`, `tint`, `metallic`, `gradient`, `shimmer`, `glitter` | The `LipEffect` fields |
122
+
123
+ `shape: "custom"` applies no preset: the region keeps its default placement, with the fields as
124
+ given.
125
+
126
+ ### Resolving and editing
127
+
128
+ Resolution order: defaults, then the shape, then the finish's `shine` and sparkle values, then the
129
+ shade's colour, then explicit values. Numbers are clamped; invalid values fall back.
130
+
131
+ ```tsx
132
+ import {
133
+ patchMakeupSettings,
134
+ resolveMakeupLook,
135
+ resolveMakeupSettings,
136
+ } from "@vincentt-xr/sdk/face-effects";
137
+
138
+ const blush = resolveMakeupSettings("blush", { shape: "lifted", shade: "coral" });
139
+ const glitter = patchMakeupSettings("blush", blush, { finish: "glitter" });
140
+ const look = resolveMakeupLook("softGlam", { eyeliner: { shape: "winged" } });
141
+ ```
142
+
143
+ - Spread-then-override works for partials (a look's regions, your own objects).
144
+ - A resolved object carries the values its shape and finish produced, so `{ ...resolved, finish:
145
+ "glitter" }` changes nothing else. Change resolved settings with `patchMakeupSettings`.
146
+ - `MAKEUP_SETTINGS_FIELDS[region]` (lips: `LIP_EFFECT_SETTINGS_FIELDS`) are typed `SettingsPanel`
147
+ fields for an editing panel. Pass what the panel emits through `patchMakeupSettings`.
148
+
149
+ ## Shades and `"auto"`
150
+
151
+ `MAKEUP_SHADES[region]` maps generic names (`coral`, `champagne`, `softBlack`, …) to sRGB hex;
152
+ `MAKEUP_SHADE_NAMES[region]` lists them in palette order.
153
+
154
+ `shade: "auto"` takes the colour from the person, on the GPU, with no readback:
155
+
156
+ | Region | `"auto"` colour |
157
+ | ------------- | --------------------------------- |
158
+ | `lips` | their own lip colour, deepened |
159
+ | `blush` | their skin hue, moved toward rose |
160
+ | `contour` | their skin, darkened |
161
+ | `highlighter` | their skin, lifted |
162
+ | `brows` | their brow-hair colour |
163
+
164
+ Eyeshadow and eyeliner have no `"auto"`. With `"auto"`, `color` is shown for the first ~0.3 s, until
165
+ the skin probe has measured the colour. To show a shade finder, read the person's depth, undertone
166
+ and best palette shades with [`useMakeupSkinTone`](/api/makeup-skin-tone).
167
+
168
+ ## Finishes
169
+
170
+ | `finish` | Look |
171
+ | ---------- | ----------------------------------------------------------- |
172
+ | `matte` | The skin's own shine removed |
173
+ | `satin` | A soft sheen |
174
+ | `gloss` | A wet highlight that keeps its strength at low opacity |
175
+ | `shimmer` | Satin plus dense fine flakes |
176
+ | `metallic` | A highlight tinted by the shade, from the room light |
177
+ | `glitter` | Sparse large flakes that sparkle with head and light motion |
178
+
179
+ Flakes stick to the skin and fade to their average below 1.5 px, so they never crawl. The low
180
+ quality tier turns shimmer into a smooth sheen and halves glitter density.
181
+
182
+ ## Sides
183
+
184
+ `side` is the person's own side on every feed: the mirrored webcam, the rear camera, images and
185
+ video. `<Blush side="left" />` paints the person's left cheek, which is on the screen's left on the
186
+ mirrored webcam and on the screen's right on the rear camera.
187
+
188
+ ## Hands in front
189
+
190
+ Add `HandCutout` so a hand over the face stays bare and in front of the makeup:
191
+
192
+ ```tsx
193
+ import { HandCutout, HandTracker } from "@vincentt-xr/sdk/tracking";
194
+
195
+ <XRScene>
196
+ <VideoBackground />
197
+ <HandTracker>
198
+ <HandCutout />
199
+ </HandTracker>
200
+ <Blush shade="rose" />
201
+ <LipEffect preset="lipstick" shade="classicRed" />
202
+ </XRScene>;
203
+ ```
204
+
205
+ `HandCutout` draws each hand's silhouette as depth at the near plane before the face layer, so
206
+ makeup is hidden where a hand is.
207
+
208
+ ## Two people
209
+
210
+ Give each component `faceIndex` and the same `numFaces`:
211
+
212
+ ```tsx
213
+ <>
214
+ <Blush shade="rose" faceIndex={0} numFaces={2} />
215
+ <Blush shade="peach" faceIndex={1} numFaces={2} />
216
+ <LipEffects
217
+ maxFaces={2}
218
+ faces={(faceIndex) => (faceIndex === 0 ? { preset: "matte" } : { preset: "gloss" })}
219
+ />
220
+ </>
221
+ ```
222
+
223
+ Inside `<FaceTracker numFaces={2} faceIndex={n}>`, the component paints that tracker's face.
224
+ `LipEffects` draws one lip effect per face; with a single config the faces share one material.
225
+
226
+ ## Draw order
227
+
228
+ Makeup draws in the face layer (`MAKEUP_RENDER_ORDER`):
229
+
230
+ | Order | What |
231
+ | ----- | ---------------------------------------------------------- |
232
+ | −900 | `HandCutout` |
233
+ | −2.5 | `FaceRetouch` |
234
+ | −2 | The face: `FaceWarp3D`, `FaceMorph`, characters, face swap |
235
+ | −1.9 | `contour` |
236
+ | −1.86 | `blush` |
237
+ | −1.83 | `highlighter` |
238
+ | −1.8 | `eyeshadow` |
239
+ | −1.76 | `eyeliner` |
240
+ | −1.72 | `brows` |
241
+ | −1.68 | `design` (`MakeupDesign`) |
242
+ | −1.64 | `lips` |
243
+ | −1.5 | `FaceInset` |
244
+ | −1 | Head occluder |
245
+ | 0+ | Accessories |
246
+
247
+ Hands and glasses draw over makeup. On a turned head the far cheek stops at the nose (high and
248
+ medium quality tiers). Effects that show the camera image (`FaceInset`, `FaceMorph`, `FaceReprojection`, face swap) show
249
+ it without makeup; wrap them in [`MadeUpCamera`](/api/made-up-camera) to include it. `FaceWarp3D`
250
+ always shows the plain camera: nest the makeup in the warp instead.
251
+
252
+ ## Designs
253
+
254
+ `MakeupDesign` paints art you made in the face atlas, shaded like makeup:
255
+
256
+ ```tsx
257
+ import { MakeupDesign } from "@vincentt-xr/sdk/face-effects";
258
+
259
+ <MakeupDesign
260
+ texture="/makeup/freckles.svg"
261
+ region={["cheeks", "nose"]}
262
+ coverage={0.45}
263
+ opacity={0.8}
264
+ />;
265
+ ```
266
+
267
+ The art's alpha is where it paints; its colours are the paint. See
268
+ [Makeup Design Textures](/guides/makeup-design-textures) for painting it and
269
+ [Face Atlas Textures](/guides/face-atlas-textures) for the layout.
270
+
271
+ ## Custom materials
272
+
273
+ Every region component and `MakeupDesign` take `material`: a material node, an instance you own, or
274
+ a factory of `MakeupMaterialContext`. Lips have their own material contract (see
275
+ [Lip Shaders](/examples/lip-shaders)). Pass `ctx.uniforms` (kept current from the settings and bound to the face)
276
+ and build the shader from the `MAKEUP_GLSL` chunks:
277
+
278
+ ```tsx
279
+ import * as THREE from "three";
280
+ import {
281
+ Blush,
282
+ MAKEUP_BLENDING,
283
+ MAKEUP_GLSL,
284
+ type MakeupMaterialContext,
285
+ } from "@vincentt-xr/sdk/face-effects";
286
+
287
+ <Blush
288
+ shape="draped"
289
+ material={(ctx: MakeupMaterialContext) => (
290
+ <shaderMaterial
291
+ glslVersion={THREE.GLSL3}
292
+ {...MAKEUP_BLENDING}
293
+ depthWrite={false}
294
+ uniforms={ctx.uniforms}
295
+ vertexShader={MAKEUP_GLSL.atlasVertex}
296
+ fragmentShader={`${MAKEUP_GLSL.common}${MAKEUP_GLSL.shading}${MAKEUP_GLSL.sparkle}${MAKEUP_GLSL.finish}${MAKEUP_GLSL.shapes}
297
+ void main() {
298
+ MakeupSample s = makeupSampleGeometry();
299
+ float k = blushShape(s.rest) * s.fade * uOpacity;
300
+ if (k < 1.0 / 255.0) discard;
301
+ makeupSampleColor(s);
302
+ makeupOutput(s, makeupDiffuse(s, uColor, uCoverage), k, vec3(0.0));
303
+ }`}
304
+ />
305
+ )}
306
+ />;
307
+ ```
308
+
309
+ - The factory runs once per region and factory, not on edits: read live values from `ctx.uniforms`
310
+ and `ctx.skin`. Keep a factory that returns a `THREE.Material` stable (module scope or
311
+ `useCallback`).
312
+ - To drive one material yourself on every face, make it with `createMakeupMaterial(region)`, edit it
313
+ with `updateMakeupMaterial(material, { settings })` and pass it as `sharedMaterial`. You dispose
314
+ it.
315
+ - The eye masks are in `MAKEUP_GLSL.eyes`; the design sampler is in `MAKEUP_GLSL.design`.
316
+
317
+ ## Cost and limits
318
+
319
+ - One draw per region per face, over only the triangles its shape can reach. Pixels outside the
320
+ shape are discarded before any texture read.
321
+ - One GPU program serves contour, blush and highlighter; each eye region and designs have their own.
322
+ Each is compiled once on first mount; the region shows when it is ready, within 2 s.
323
+ - Eye shapes are placed from MediaPipe's lash and brow landmarks. Very hooded lids, brows under
324
+ bangs, or brow landmarks off the real brow shift them.
325
+ - A long eyeliner wing reads up to ~15 % shorter on the far side of a turned eye.
326
+ - The skin probe needs the face in view. Until it settles, `"auto"` shows `color`.
327
+
328
+ ## Example
329
+
330
+ `/makeup` in the SDK playground has the eight looks and a custom mix, a panel per region, the lip
331
+ effect with designs and custom materials, the skin-tone readout with "apply", one or two faces, a
332
+ compare toggle and hands in front. Settings are kept in the URL: `?look=glam&faces=2&hands=0`.
333
+
334
+ ## Manual visual test plan
335
+
336
+ Open `/makeup` on the webcam, in even light.
337
+
338
+ 1. **Looks**: step through all eight. Each matches its description; nothing flickers or swims while
339
+ you move your head.
340
+ 2. **Compare**: toggle "makeup on". Only the made-up regions change.
341
+ 3. **Skin tones**: on the two-people clip, the same opaque shade reads as the same colour on both
342
+ faces.
343
+ 4. **Auto**: `natural` adapts to your own lips, skin and brows within about a second.
344
+ 5. **Sides**: blush with `side` left paints your real left cheek (the screen's left on the webcam).
345
+ On a clip, it paints the person's left cheek (the screen's right).
346
+ 6. **Hands**: a hand over the mouth and cheek stays bare. Turn "hands in front" off: the makeup
347
+ draws over the hand.
348
+ 7. **Turned head**: the far cheek's blush stops at the nose.
349
+ 8. **Blinks**: close one eye. Its lower liner and lower shadow fade; the other eye's stay.
350
+ 9. **Two faces**: faces "two" paints both people; "second face" gives the second person its own look.
351
+ 10. **Finishes**: glitter flakes stick to the skin and sparkle with head motion; gloss shows a moving
352
+ highlight.
353
+ 11. **Dropout**: cover the camera. The makeup holds briefly, then fades out.
@@ -0,0 +1,132 @@
1
+ ---
2
+ title: "Material Render State API"
3
+ description: "MeshRenderer material draw-state controls: depth, color mask, culling, blending, and polygon offset."
4
+ sidebarTitle: "Material Render State"
5
+ icon: "sliders"
6
+ ---
7
+
8
+ Material render state lives on `MeshRendererSettings.material.renderState`.
9
+
10
+ ```ts
11
+ import {
12
+ DEFAULT_MESH_RENDERER_RENDER_STATE,
13
+ normalizeMeshRendererRenderState,
14
+ type MeshRendererRenderState,
15
+ } from "@vincentt-xr/sdk";
16
+ ```
17
+
18
+ ## Type definition
19
+
20
+ ```ts
21
+ type MeshRendererRenderState = {
22
+ depthTest: boolean;
23
+ depthWrite: boolean;
24
+ depthFunc:
25
+ | "never"
26
+ | "less"
27
+ | "equal"
28
+ | "lessEqual"
29
+ | "greater"
30
+ | "notEqual"
31
+ | "greaterEqual"
32
+ | "always";
33
+ colorWrite: boolean;
34
+ colorMask: {
35
+ r: boolean;
36
+ g: boolean;
37
+ b: boolean;
38
+ a: boolean;
39
+ };
40
+ cullMode: "back" | "front" | "off";
41
+ blendMode: "normal" | "additive" | "subtractive" | "multiply" | "none";
42
+ polygonOffset: {
43
+ enabled: boolean;
44
+ factor: number;
45
+ units: number;
46
+ };
47
+ };
48
+ ```
49
+
50
+ ## Defaults
51
+
52
+ ```ts
53
+ const DEFAULT_MESH_RENDERER_RENDER_STATE = {
54
+ depthTest: true,
55
+ depthWrite: true,
56
+ depthFunc: "lessEqual",
57
+ colorWrite: true,
58
+ colorMask: { r: true, g: true, b: true, a: true },
59
+ cullMode: "back",
60
+ blendMode: "normal",
61
+ polygonOffset: { enabled: false, factor: 0, units: 0 },
62
+ };
63
+ ```
64
+
65
+ Use `normalizeMeshRendererRenderState(partial)` when reading serialized scenes
66
+ that may omit nested defaults.
67
+
68
+ ## Usage
69
+
70
+ ```ts
71
+ const meshRenderer = createDefaultComponent("MeshRenderer", object.id);
72
+
73
+ meshRenderer.settings.material.renderState = {
74
+ depthTest: true,
75
+ depthWrite: false,
76
+ depthFunc: "lessEqual",
77
+ colorWrite: true,
78
+ colorMask: { r: true, g: false, b: false, a: true },
79
+ cullMode: "off",
80
+ blendMode: "additive",
81
+ polygonOffset: {
82
+ enabled: true,
83
+ factor: -1,
84
+ units: -1,
85
+ },
86
+ };
87
+ ```
88
+
89
+ ## Field behavior
90
+
91
+ | Field | Behavior |
92
+ | --------------- | --------------------------------------------------------------------------------------- |
93
+ | `depthTest` | Enables/disables depth testing before drawing the material. |
94
+ | `depthWrite` | Enables/disables writing this material into the depth buffer. |
95
+ | `depthFunc` | Selects the depth comparison function. |
96
+ | `colorWrite` | All-channel color write gate. |
97
+ | `colorMask` | Per-channel RGBA color write gates. |
98
+ | `cullMode` | `"back"` renders front faces, `"front"` renders back faces, `"off"` renders both sides. |
99
+ | `blendMode` | Maps to Three.js built-in blending modes. |
100
+ | `polygonOffset` | Offsets depth to reduce z-fighting or tune layering. |
101
+
102
+ `colorMask` is not a plain Three.js material field. The SDK applies it as scoped
103
+ WebGL draw state around each mesh render and restores the previous color mask
104
+ after the object renders.
105
+
106
+ ## Asset-backed meshes
107
+
108
+ When `MeshRendererSettings.assetUrl` is set, the GLTF scene is cloned and mesh
109
+ materials are cloned before SDK material/render-state overrides are applied.
110
+ This prevents two objects using the same asset URL from mutating the shared Drei
111
+ GLTF cache.
112
+
113
+ ## Debug UI
114
+
115
+ `MeshRendererSettingsPanel` exposes render-state controls:
116
+
117
+ - Depth Test
118
+ - Depth Write
119
+ - Depth Function
120
+ - Color Write
121
+ - Mask R/G/B/A
122
+ - Cull Mode
123
+ - Blend Mode
124
+ - Polygon Offset enabled/factor/units
125
+
126
+ All edits should route back to the selected object's `MeshRenderer` component
127
+ through `onComponentChange`.
128
+
129
+ ## Explicit non-goal
130
+
131
+ `instanceCount` is not part of material render state. It belongs to mesh
132
+ instancing and should be added as a separate mesh/rendering API when needed.
@@ -0,0 +1,185 @@
1
+ ---
2
+ title: "Multi-Subject Tracking Policy"
3
+ description: "The identity and association contract for faces, hands, bodies and holistic results: what an index means, how many subjects each tracker reports, how to select one, what happens on loss and reappearance, and how subjects are matched across trackers."
4
+ sidebarTitle: "Multi-Subject Policy"
5
+ icon: "people-group"
6
+ ---
7
+
8
+ ## Identity contract
9
+
10
+ - **An index is a result-array position, not an identity.** `faceIndex`,
11
+ `handIndex`, `getFace(i)`, `getLandmarks2D(i)` read position `i` of the
12
+ current frame's result. The order is whatever MediaPipe emits; it can
13
+ change between frames when subjects move, overlap, or one is lost. Nothing
14
+ in the SDK promises that `faceIndex: 1` is the same person two frames
15
+ later.
16
+ - **No learned identity.** The SDK never recognises people. The only
17
+ continuity it offers is spatial: the `sticky` selection below follows the
18
+ subject nearest to the previously selected one.
19
+ - **Bodies carry a stable id.** The body model gives each tracked body an
20
+ `id` (`node.getBodies()`, see [Bodies](#bodies)) that stays with the person
21
+ across result-order changes, two people crossing and dropouts under 250 ms.
22
+ It is spatial too: someone who leaves for longer comes back with a new id.
23
+ - **Single-subject APIs are unchanged.** `useFaceInfo()`, `<FaceTracker>`,
24
+ `<HandTracker>`, `<TrackingAnchor>` keep reading index 0 by default; the
25
+ policy is an opt-in option on top.
26
+
27
+ ## Maximum subjects
28
+
29
+ | Tracker | Max | Default | Option |
30
+ | -------- | --- | ------- | ------------------------------------------------------------------------------------------------------ |
31
+ | face | 10 | 1 | `numFaces` on `<FaceTracker>` / `useFaceInfo(s)`; the first acquirer of the shared model wins |
32
+ | hand | 2 | 2 | none (two hands, `handedness` labels them) |
33
+ | gesture | 1 | 1 | none |
34
+ | body | 2 | 1 | `numBodies` on the body features and `useBodyIds`; the model looks for the most any live consumer asks |
35
+ | holistic | 1 | 1 | none (single person by design) |
36
+
37
+ `XR_MAX_SUBJECTS` carries this table. Every consumer that needs more than one
38
+ face must ask for it; a consumer that asks for fewer than the first acquirer
39
+ gets the larger count. The count the face model started with is the read-only
40
+ `numFaces` on its node (`useXRModelNode<XRModelNodeFaceTracking>(XRModel.FACE_TRACKER)`
41
+ from `@vincentt-xr/sdk/low-level`), so a consumer that asked for more can tell
42
+ that it got fewer.
43
+
44
+ ## Selecting one subject
45
+
46
+ ```tsx
47
+ import { useFaceInfo, selectSubject, faceCandidates } from "@vincentt-xr/sdk/tracking";
48
+
49
+ // Hook form (faces): pick by policy instead of a fixed index.
50
+ const face = useFaceInfo({ numFaces: 4, subject: { selection: "largest" } });
51
+ const follow = useFaceInfo({ numFaces: 4, subject: { selection: "sticky", stickyRadius: 0.2 } });
52
+
53
+ // Pure form (any tracker): build candidates, select, carry the memory.
54
+ const result = selectSubject(faceCandidates(results.faceLandmarks), policy, previousMemory);
55
+ ```
56
+
57
+ | `selection` | Picks |
58
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
59
+ | `index` | position `policy.index` (default 0) — the historical behaviour |
60
+ | `largest` | the biggest subject (closest to the camera) |
61
+ | `nearest-center` | closest to the feed centre |
62
+ | `leftmost` / `rightmost` | by feed x, as shown in the preview |
63
+ | `sticky` | the same `id` as the previous pick when the tracker keeps ids (bodies); else nearest to it within `stickyRadius` (feed units, default 0.2), same `label` (handedness) preferred; otherwise `fallback` (default `largest`) |
64
+
65
+ `selectSubject` returns `{ index, reason, memory }`; `index` is `null` when
66
+ there is no candidate. `faceCandidates(landmarkArrays)` and
67
+ `jointCandidates(handsOrBodies)` build candidates (feed-space centre and
68
+ size) from face landmarks or tracker-space joints; `bodyCandidates(bodies)`
69
+ does it for tracked bodies and carries their ids.
70
+
71
+ ## Loss and reappearance
72
+
73
+ - A subject that disappears for a few frames is bridged by the tracker's
74
+ hold (`holdMs`, 250 ms by default, through `FaceTrackMemory` / the readers'
75
+ hold): the last result is replayed, then dropped.
76
+ - `sticky` keeps its memory through a miss, so a subject that reappears
77
+ near where it was is re-selected; one that reappears elsewhere is a new
78
+ subject and the policy's `fallback` decides. When the selection switches
79
+ to the fallback, the memory moves with it (a deliberate switch, not a jump
80
+ back later).
81
+ - Reappearance never restores a previous index: read the policy's pick, not
82
+ a remembered position.
83
+
84
+ ## Bodies
85
+
86
+ The body model looks for up to two people. Ask for a second with `numBodies`
87
+ (default 1): looking for two, MediaPipe detects every frame, which costs about
88
+ twice as much per detection even with one person in view (desktop: 9 ms for
89
+ one body, 14 ms asking for two with one person in view, 20 ms with two
90
+ people). Ask for two only when the scene needs them; on slow devices cap the
91
+ body model's inference rate (`trackers.body.targetFps`).
92
+
93
+ Every body feature follows a chosen person. `bodyId` follows a stable id,
94
+ `subject` picks by policy, `bodyIndex` reads a result position (the default,
95
+ 0); `bodyId` wins over `subject`, which wins over `bodyIndex`. `numBodies`
96
+ defaults to 2 with `bodyId` or `subject`, else 1.
97
+
98
+ | feature | options |
99
+ | ----------------------------------------- | --------------------------------------------- |
100
+ | `BodyTracker` (and its `TrackingAnchor`s) | `bodyId`, `subject`, `numBodies`, `bodyIndex` |
101
+ | `BodyRig` | the same |
102
+ | `BodyTrigger` / `useBodyTrigger` | the same |
103
+ | `BodyInstruction` / `useBodyPose` | the same |
104
+ | `useGesture` (body gestures) | the same |
105
+
106
+ Per-person masks (`PersonCutout bodyId`, `useBodyMaskTexture`) split the person mask by
107
+ these ids; see [Person Cutout](/api/person-cutout#one-person-bodyid-subject-usebodymasktexture).
108
+ Fitted children of a `BodyTracker` (`ShoulderOccluder`, `Necklace`,
109
+ `NeckOccluder`) follow the person it follows. `HandRig`'s forearm steering
110
+ reads the arms of every tracked body.
111
+
112
+ ```tsx
113
+ import {
114
+ BodyRig,
115
+ BodyTracker,
116
+ TrackingAnchor,
117
+ useBodyIds,
118
+ useBodySubject,
119
+ } from "@vincentt-xr/sdk/tracking";
120
+
121
+ // One avatar per person.
122
+ const Avatars = () => {
123
+ const ids = useBodyIds(); // re-renders only when someone arrives or leaves
124
+ return ids.map((id) => <BodyRig key={id} bodyId={id} model={avatar.scene} />);
125
+ };
126
+
127
+ // A badge that stays on one person as they move around another.
128
+ <BodyTracker subject={{ selection: "sticky", fallback: "leftmost" }}>
129
+ <TrackingAnchor target="body.leftShoulder">{badge}</TrackingAnchor>
130
+ </BodyTracker>;
131
+
132
+ // Custom per-frame logic.
133
+ const { read } = useBodySubject({ subject: { selection: "largest" } });
134
+ useFrame(() => {
135
+ const body = read(); // { pose, id, held, index } or null
136
+ });
137
+ ```
138
+
139
+ **Identity rules.** A detection is matched to the bodies already tracked by
140
+ torso position (predicted from its motion) and size. A newcomer gets an id
141
+ once seen 3 times over 100 ms (the tracker reports a part of a person, such
142
+ as a crouching dancer's legs, as another body for a frame or two); the first
143
+ person into an empty scene gets one at once. A missing body is held 250 ms
144
+ (`held: true`, its last pose), then dropped. The matcher is `BodyIdentity`
145
+ (`/low-level`, `BODY_IDENTITY_DEFAULTS`).
146
+
147
+ **Limits.** Two people touching (holding hands) can have a leg read toward
148
+ the other person. Two people cut off at the shoulders (a selfie) are found
149
+ intermittently, so the second is renumbered on each return. Results and
150
+ measurements: `example/BODY_EVALUATION.md` (Two people).
151
+
152
+ ## Association across trackers
153
+
154
+ `associateSubjects(primary, secondary, maxDistance = 0.35)` greedily matches
155
+ the nearest centres between two candidate lists (face ↔ body, hand ↔ body),
156
+ each subject at most once, ignoring pairs farther than `maxDistance` (feed
157
+ units). That proximity-in-the-same-frame rule is the whole association
158
+ contract; with one body (the default) or the single-person holistic model it
159
+ reduces to "the body belongs to the nearest face".
160
+
161
+ ## Manual validation
162
+
163
+ Run `/multi-subject` (faces: starts on the two-people image, `numFaces` 4):
164
+
165
+ | Case | Steps | Expect |
166
+ | ---------- | ----------------------------------------------- | --------------------------------------------------- |
167
+ | Candidates | two / three people images | one grey dot per face, count in the status line |
168
+ | Rules | largest / nearest-center / leftmost / rightmost | the cyan ring moves to the matching face |
169
+ | Index | `index` with 0..3 | ring on that array position, none when out of range |
170
+ | Sticky | `sticky` on "Two People Smiling" video | the ring stays on the same person as they move |
171
+ | Loss | cover a face (webcam) | ring holds ~250 ms, then follows the fallback |
172
+
173
+ Bodies (`/multi-subject?subjects=bodies`, up to 2; webcam, else a local two-person clip, else
174
+ "Two People Smiling"):
175
+
176
+ | Case | Steps | Expect |
177
+ | -------- | ----------------------------------------- | ------------------------------------------------------------------------- |
178
+ | Ids | two people in view | a skeleton each in its own colour, numbers 1 and 2 on the chests |
179
+ | Crossing | walk past each other | each keeps their number and colour |
180
+ | Dropout | step out briefly (under a quarter second) | the skeleton fades and comes back with the same number |
181
+ | Return | leave for a few seconds and come back | a new number |
182
+ | Rules | leftmost / rightmost / sticky | the cyan ring on that person; with `sticky` it stays on them as they move |
183
+ | Avatars | "avatar on each person" | a Y Bot on each person, each following its own body |
184
+ | Bench | "identity bench" on the two-person clip | ids 1, 2; no swaps; no dropouts |
185
+ | Cost | "performance", up to 1 then 2, one person | inference about 1.6× with 2 (desktop 9 → 14 ms) |