@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.
- package/GROUNDING.md +8066 -120
- package/README.md +86 -52
- package/dist/CanonicalHeadFrame-CZFvPzN_.cjs +1 -0
- package/dist/CanonicalHeadFrame-vn-jM9fG.js +1506 -0
- package/dist/DebuggerUI-DDpU-nBF.js +275 -0
- package/dist/DebuggerUI-Db-1VtQJ.cjs +1 -0
- package/dist/FaceRetouch-D2xH5OpW.js +1071 -0
- package/dist/FaceRetouch-DHhn1nSV.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-Ctp-a7g9.cjs +2 -0
- package/dist/TextLabel-Dgt-uNN9.js +984 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +43 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/assets/sdkModels.d.ts +22 -0
- package/dist/audio/AudioEngine.d.ts +3 -1
- package/dist/audio/AudioPlayer.d.ts +29 -0
- package/dist/audio/AudioPlayerLogic.d.ts +4 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/body/__fixtures__/syntheticRig.d.ts +21 -0
- package/dist/body/bodyFlipGuard.d.ts +39 -0
- package/dist/body/bodyIdentity.d.ts +72 -0
- package/dist/body/bodyMask.d.ts +79 -0
- package/dist/body/bodyMaskMaterial.d.ts +15 -0
- package/dist/body/bodyPose.d.ts +58 -0
- package/dist/body/bodyRigFit.d.ts +148 -0
- package/dist/body/bodyRigSolver.d.ts +114 -0
- package/dist/body/bodySubject.d.ts +46 -0
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/bodyMaskMaterial-C3aXItLo.js +207 -0
- package/dist/bodyMaskMaterial-Q6rYywwW.cjs +68 -0
- package/dist/cache-C85JjyZA.js +212 -0
- package/dist/cache-DFqZYsHC.cjs +1 -0
- package/dist/calibration/calibration.d.ts +75 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/Axes/index.d.ts +6 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +76 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +30 -0
- package/dist/components/BodyRig/BodyAttachment.d.ts +28 -0
- package/dist/components/BodyRig/BodyOccluder.d.ts +27 -0
- package/dist/components/BodyRig/bodyDepth.d.ts +57 -0
- package/dist/components/BodyRig/index.d.ts +129 -0
- package/dist/components/BodyRig/useBodyDepthTexture.d.ts +40 -0
- package/dist/components/BodyTracker/index.d.ts +26 -1
- package/dist/components/BodyTrigger/index.d.ts +56 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +25 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +67 -3
- package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
- package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +30 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +24 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
- package/dist/components/FaceMesh/deform.d.ts +3 -0
- package/dist/components/FaceMesh/index.d.ts +6 -1
- package/dist/components/FaceMesh/material/defaults.d.ts +70 -0
- package/dist/components/FaceMesh/material/index.d.ts +1 -0
- package/dist/components/FaceMesh/material/options.d.ts +5 -1
- package/dist/components/FaceMesh/material/support.d.ts +7 -2
- package/dist/components/FaceMesh/material/textures.d.ts +4 -0
- package/dist/components/FaceMesh/material/types.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +7 -6
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +52 -0
- package/dist/components/FaceRetouch/index.d.ts +2 -8
- package/dist/components/FaceRetouch/landmarkMask.d.ts +0 -5
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +3 -7
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceTracker/index.d.ts +5 -3
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandEffect/index.d.ts +36 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandJoints2D/index.d.ts +1 -1
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandNails.d.ts +61 -0
- package/dist/components/HandRig/HandOccluder.d.ts +45 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +127 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +96 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HandTracking2D/HandVisual.d.ts +1 -1
- package/dist/components/HandTracking2D/index.d.ts +1 -1
- package/dist/components/HandTracking2DController/index.d.ts +1 -1
- package/dist/components/HandTracking3D/index.d.ts +1 -1
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +67 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LightObject/index.d.ts +20 -0
- package/dist/components/LipEffect/LipEffect.d.ts +28 -0
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +98 -0
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +51 -0
- package/dist/components/LipEffect/index.d.ts +12 -0
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +375 -0
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +141 -0
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -0
- package/dist/components/LookAt/index.d.ts +23 -0
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/MeshRenderer/index.d.ts +59 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/PersonCutout/index.d.ts +46 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/PersonCutout/personMask.d.ts +19 -0
- package/dist/components/PersonCutout/useBodyMaskTexture.d.ts +35 -0
- package/dist/components/PerspectiveCamera/index.d.ts +2 -8
- package/dist/components/PinToMesh/index.d.ts +47 -0
- package/dist/components/RenderGroupLayer/index.d.ts +6 -0
- package/dist/components/SceneObjectRenderer/index.d.ts +23 -0
- package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
- package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
- package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
- package/dist/components/Screen2D/index.d.ts +5 -0
- package/dist/components/ScreenGlass/defaults.d.ts +3 -0
- package/dist/components/ScreenGlass/index.d.ts +5 -0
- package/dist/components/ScreenGlass/shaders.d.ts +2 -0
- package/dist/components/ScreenGlass/types.d.ts +10 -0
- package/dist/components/ScreenGradient/defaults.d.ts +5 -0
- package/dist/components/ScreenGradient/index.d.ts +5 -0
- package/dist/components/ScreenGradient/shaders.d.ts +2 -0
- package/dist/components/ScreenGradient/types.d.ts +19 -0
- package/dist/components/ScreenImage/ScreenImage.d.ts +7 -0
- package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
- package/dist/components/ScreenImage/fit.d.ts +52 -0
- package/dist/components/ScreenImage/index.d.ts +10 -87
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
- package/dist/components/ScreenImage/source.d.ts +25 -0
- package/dist/components/ScreenImage/types.d.ts +64 -0
- package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
- package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
- package/dist/components/ScreenShape/geometry.d.ts +5 -0
- package/dist/components/ScreenShape/index.d.ts +8 -0
- package/dist/components/ScreenShape/types.d.ts +54 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
- package/dist/components/ScreenSpaceUI/index.d.ts +3 -0
- package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
- package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
- package/dist/components/ScreenText/constants.d.ts +5 -0
- package/dist/components/ScreenText/index.d.ts +9 -20
- package/dist/components/ScreenText/types.d.ts +31 -0
- package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
- package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
- package/dist/components/ShoulderOccluder/index.d.ts +46 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +27 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/TextLabel/TextLabel.d.ts +5 -0
- package/dist/components/TextLabel/alignment.d.ts +4 -0
- package/dist/components/TextLabel/bend.d.ts +9 -0
- package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
- package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
- package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
- package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
- package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
- package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
- package/dist/components/TextLabel/constants.d.ts +2 -0
- package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
- package/dist/components/TextLabel/index.d.ts +2 -161
- package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
- package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
- package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
- package/dist/components/TextLabel/types.d.ts +337 -0
- package/dist/components/TrackingAnchor/index.d.ts +18 -2
- package/dist/components/Transform3D/index.d.ts +30 -0
- package/dist/components/XRMediaSurface/index.d.ts +8 -7
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/XRViewport.d.ts +11 -0
- package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
- package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
- package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
- package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
- package/dist/components/XRViewport/constants.d.ts +24 -0
- package/dist/components/XRViewport/contexts.d.ts +6 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
- package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
- package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
- package/dist/components/XRViewport/index.d.ts +3 -118
- package/dist/components/XRViewport/layout.d.ts +16 -0
- package/dist/components/XRViewport/slots.d.ts +16 -0
- package/dist/components/XRViewport/types.d.ts +89 -0
- package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
- package/dist/components/index.d.ts +24 -0
- package/dist/components/occluder/skinnedOccluder.d.ts +39 -0
- package/dist/config/index.d.ts +1 -1
- package/dist/constants/index.d.ts +4 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-B5GODwuV.js +667 -0
- package/dist/contexts-CSz9stBV.cjs +1 -0
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +7 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +32 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/component-editor/index.d.ts +19 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
- package/dist/debug-ui/face-retouch/index.d.ts +11 -0
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/hand-joints-2d/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-2d/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +1 -1
- package/dist/debug-ui/hand-tracking-3d/index.d.ts +1 -1
- package/dist/debug-ui/hierarchy-panel/index.d.ts +30 -0
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +43 -5
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/layer-panel/index.d.ts +3 -2
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +4 -2
- package/dist/debug-ui/media-source/media-preset.d.ts +12 -0
- package/dist/debug-ui/media-source/session.d.ts +40 -0
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +8 -4
- package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
- package/dist/debug-ui/object-inspector-panel/index.d.ts +26 -0
- package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/context.d.ts +38 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +11 -0
- package/dist/debug-ui/scene-editor/index.d.ts +11 -0
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +9 -0
- package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
- package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
- package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
- package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
- package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
- package/dist/debug-ui/screen-image-settings/index.d.ts +6 -2
- package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
- package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/index.d.ts +2 -122
- package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
- package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
- package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
- package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
- package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/types.d.ts +11 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/ScreenTransformSection.d.ts +6 -3
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -13
- package/dist/debug-ui.js +8166 -5178
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/drawNormalizedCrop-BLfB484W.js +135 -0
- package/dist/drawNormalizedCrop-DaGT5mZ5.cjs +1 -0
- package/dist/entries/all.d.ts +4 -1
- package/dist/entries/core.d.ts +74 -8
- package/dist/entries/face-effects.d.ts +130 -12
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +5 -2
- package/dist/entries/low-level.d.ts +101 -6
- package/dist/entries/particles.d.ts +15 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/scene-object.d.ts +10 -0
- package/dist/entries/tracking.d.ts +110 -2
- package/dist/face-action/index.d.ts +34 -0
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-attribute-expression/index.d.ts +10 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2271 -289
- package/dist/face-effects.js +14240 -3562
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/blendshapes.d.ts +3 -0
- package/dist/face-info/derive.d.ts +8 -0
- package/dist/face-info/drawFaceCrop.d.ts +10 -0
- package/dist/face-info/getFaceInfo.d.ts +8 -0
- package/dist/face-info/index.d.ts +8 -0
- package/dist/face-info/landmarks.d.ts +35 -0
- package/dist/face-info/types.d.ts +69 -0
- package/dist/footage-input/index.d.ts +46 -0
- package/dist/gestures/definitions.d.ts +98 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +114 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/getFaceInfo-BbcKq8PJ.cjs +1 -0
- package/dist/getFaceInfo-D_tCSQC7.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +190 -0
- package/dist/hand/forearm.d.ts +114 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handEffect.d.ts +38 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/{handJoints2d.d.ts → hand/handJoints2d.d.ts} +1 -1
- package/dist/hand/handNail.d.ts +73 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/{handTracking2d.d.ts → hand/handTracking2d.d.ts} +1 -1
- package/dist/{handTracking2dController.d.ts → hand/handTracking2dController.d.ts} +1 -1
- package/dist/{handTracking3d.d.ts → hand/handTracking3d.d.ts} +1 -1
- package/dist/hand/nailImageMask.d.ts +40 -0
- package/dist/hand/nailMaskFingers.d.ts +23 -0
- package/dist/hand/nailTipRefine.d.ts +37 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/faceResults.d.ts +1 -1
- package/dist/hooks/selectors.d.ts +77 -4
- package/dist/hooks/useBodies.d.ts +39 -0
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceAction.d.ts +3 -0
- package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
- package/dist/hooks/useFaceDetection.d.ts +18 -0
- package/dist/hooks/useFaceInfo.d.ts +19 -0
- package/dist/hooks/useFaceInfos.d.ts +15 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useFaceResultReader.d.ts +10 -0
- package/dist/hooks/useFrameCapture.d.ts +18 -0
- package/dist/hooks/useGesture.d.ts +39 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useMediaRecorder.d.ts +14 -2
- package/dist/hooks/useOwnedTexture.d.ts +6 -0
- package/dist/hooks/useTrackerContext.d.ts +14 -2
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +12 -0
- package/dist/hooks/useXRSession/facade.d.ts +47 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +21 -0
- package/dist/hooks/useXRSession/registry.d.ts +23 -0
- package/dist/hooks/useXRSession/store.d.ts +64 -7
- package/dist/index-B9DdHE4u.js +442 -0
- package/dist/index-Bxb_UcfF.cjs +46 -0
- package/dist/index-CNt8esFO.js +240 -0
- package/dist/index-CTqQJj5p.js +3814 -0
- package/dist/index-CXaj3tOT.js +1108 -0
- package/dist/index-CYwAL_d7.cjs +21 -0
- package/dist/index-CelqbDSR.cjs +1 -0
- package/dist/index-D10O6vqR.js +190 -0
- package/dist/index-DIYaENN3.cjs +1 -0
- package/dist/index-DlP4xxaT.js +188 -0
- package/dist/index-DzdKBXGE.cjs +1 -0
- package/dist/index-J3Qy6hi3.cjs +1 -0
- package/dist/index-LC2Xs08E.cjs +1 -0
- package/dist/index-WkEZBuB4.js +1432 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1528 -0
- package/dist/internal-DS8Pdlsm.cjs +1 -0
- package/dist/{internal-Cae1ps15.js → internal-TD4QhIry.js} +152 -127
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +16 -9
- package/dist/iris/compute.d.ts +27 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +89 -0
- package/dist/landmarkMask-CvN-L5NT.cjs +1 -0
- package/dist/landmarkMask-DHivVjJm.js +225 -0
- package/dist/landmarks-BP6RbRHN.cjs +1 -0
- package/dist/landmarks-vLy5QKt6.js +76 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1766 -85
- package/dist/main.cjs +1 -73
- package/dist/main.js +1299 -1713
- package/dist/material/MaterialFill.d.ts +20 -0
- package/dist/material/MeshMaterial.d.ts +14 -0
- package/dist/material/index.d.ts +2 -0
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +30 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +5 -12
- package/dist/models/Face/rotation.d.ts +18 -0
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/Segmentation/index.d.ts +6 -3
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +71 -0
- package/dist/particles/system.d.ts +66 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +999 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-BRSbw214.cjs +62 -0
- package/dist/providers-DmJlgrDD.js +424 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/render/renderGroups.d.ts +47 -0
- package/dist/render/renderPasses.d.ts +26 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/renderGroups-B0N58SIA.cjs +1 -0
- package/dist/renderGroups-BcQYy_J2.js +152 -0
- package/dist/renderPasses-Bt8k0dkm.cjs +158 -0
- package/dist/renderPasses-DIPTIU_x.js +1290 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object/index.d.ts +146 -0
- package/dist/scene-object/runtimeRegistry.d.ts +14 -0
- package/dist/scene-object.cjs +1 -0
- package/dist/scene-object.js +40 -0
- package/dist/{screenImageSettings.d.ts → screen-image/screenImageSettings.d.ts} +9 -2
- package/dist/{screenTextSettings.d.ts → screen-text/screenTextSettings.d.ts} +18 -2
- package/dist/screen2d/coordinates.d.ts +144 -0
- package/dist/screen2d/index.d.ts +3 -0
- package/dist/screen2d/screenTransform.d.ts +60 -0
- package/dist/screen2d/smoothing.d.ts +5 -0
- package/dist/segmentation-CZs5aVvY.js +1911 -0
- package/dist/segmentation-Cz7oeNcS.cjs +1 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +52 -0
- package/dist/selectors-Bq6tSgOY.cjs +1 -0
- package/dist/selectors-K5JKCWxw.js +196 -0
- package/dist/services/MetricsCollector/index.d.ts +7 -1
- package/dist/services/MetricsCollector/utils.d.ts +1 -1
- package/dist/session-3aCMNb8W.cjs +31 -0
- package/dist/session-DHBNTyJJ.js +493 -0
- package/dist/settings-BJ7FMBsO.js +111 -0
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +70 -0
- package/dist/subjects/types.d.ts +59 -0
- package/dist/texture/animatedTexture.d.ts +63 -0
- package/dist/texture/animationMath.d.ts +8 -0
- package/dist/texture/gifReader.d.ts +17 -0
- package/dist/texture/gifTextureSource.d.ts +16 -0
- package/dist/texture/sourceResolver.d.ts +30 -0
- package/dist/textures-BVwo9Z7z.js +38 -0
- package/dist/textures-DAfc61zz.cjs +1 -0
- package/dist/tracking/coordinates.d.ts +5 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1529 -317
- package/dist/trigger-BwZ81ENx.js +3726 -0
- package/dist/trigger-UjeJY5uh.cjs +147 -0
- package/dist/types/common.d.ts +11 -1
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +21 -14
- package/dist/types/gesture-tracking.d.ts +2 -2
- package/dist/types/hand-tracking.d.ts +12 -3
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +81 -6
- package/dist/types/segmentation.d.ts +26 -0
- package/dist/types/session.d.ts +50 -4
- package/dist/types/tracking.d.ts +8 -2
- package/dist/types/util-types.d.ts +1 -1
- package/dist/useBodies-BMKHXAOL.js +75 -0
- package/dist/useBodies-CXomEo0i.cjs +1 -0
- package/dist/useFaceInfo-BEMMiZxw.cjs +1 -0
- package/dist/useFaceInfo-BNVdnprN.js +75 -0
- package/dist/useFaceResultReader-B15wn6RB.js +61 -0
- package/dist/useFaceResultReader-D9qibKmm.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useIrisTracking-CYm-KDIZ.js +6190 -0
- package/dist/useIrisTracking-DExhnhlt.cjs +35 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-ClWlG5_Y.js +30 -0
- package/dist/useXRCapabilities-D-EhcDzM.cjs +1 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/drawNormalizedCrop.d.ts +22 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +25 -26
- package/dist/utils/landmarkBounds.d.ts +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useEditOverrides.d.ts +26 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/dist/utils/visionWasm.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-BGNbrc4C.js → uv-DJU_XfmN.js} +15 -156
- package/docs/MIGRATION_GUIDE.md +589 -0
- package/docs/SDK_DOCUMENTATION.md +1157 -0
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/audio.mdx +36 -0
- package/docs/api/behavior-components.mdx +164 -0
- package/docs/api/body-instructions.mdx +287 -0
- package/docs/api/body-rig.mdx +384 -0
- package/docs/api/body-triggers.mdx +235 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/capture-recording.mdx +111 -0
- package/docs/api/coordinate-spaces.mdx +168 -0
- package/docs/api/cross-camera.mdx +89 -0
- package/docs/api/debug-ui-scene-editor.mdx +270 -0
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +108 -0
- package/docs/api/face-attribute-expression.mdx +87 -0
- package/docs/api/face-binding-anchors.mdx +55 -0
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +28 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +118 -0
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +130 -0
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +40 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +81 -0
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +210 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +661 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +164 -0
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +247 -0
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/material-render-state.mdx +132 -0
- package/docs/api/multi-subject.mdx +185 -0
- package/docs/api/particles.mdx +183 -0
- package/docs/api/person-cutout.mdx +171 -0
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +114 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/runtime-3d.mdx +316 -0
- package/docs/api/scene-object-store.mdx +213 -0
- package/docs/api/screen-image.mdx +67 -0
- package/docs/api/screen-shape.mdx +64 -0
- package/docs/api/screen-space-coordinates.mdx +83 -0
- package/docs/api/screen-text.mdx +39 -0
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +165 -0
- package/docs/api/texture-sources.mdx +74 -0
- package/docs/api/trackers.mdx +65 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +121 -0
- package/docs/examples/lip-shaders.mdx +273 -0
- package/docs/examples/scene-object-recipes.mdx +194 -0
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +139 -0
- package/docs/guides/lip-effect-textures.mdx +368 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/inspector/hierarchy-panel.mdx +51 -0
- package/docs/inspector/object-inspector-panel.mdx +51 -0
- package/docs/introduction.mdx +120 -0
- package/docs/scene-objects/overview.mdx +127 -0
- package/docs/scene-objects/render-groups.mdx +77 -0
- package/docs/scene-objects/runtime-rendering.mdx +75 -0
- package/docs/texture-api-consumer.md +84 -0
- package/package.json +69 -9
- package/settings.json +2049 -0
- package/dist/DebuggerUI-CatYc-RG.cjs +0 -1
- package/dist/DebuggerUI-gLMKiVwJ.js +0 -269
- package/dist/MediaSourceSwitcher-C-xYg0nQ.js +0 -317
- package/dist/MediaSourceSwitcher-Cq3g4IKw.cjs +0 -31
- package/dist/components/FaceRetouch/defaults.d.ts +0 -13
- package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
- package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/defaults-BLpcN3pG.cjs +0 -1
- package/dist/defaults-LtY4M7dg.js +0 -55
- package/dist/index-BXyObVHF.cjs +0 -1
- package/dist/index-CY3bUAcW.js +0 -12
- package/dist/index-C_Duh13c.cjs +0 -1
- package/dist/index-D8fpPQkC.cjs +0 -1
- package/dist/index-DxshgBu0.cjs +0 -1
- package/dist/index-O-2crZ3M.js +0 -1102
- package/dist/index-safCs_af.js +0 -1341
- package/dist/internal-BjyhBP8i.cjs +0 -1
- package/dist/modules/XRClient/index.d.ts +0 -9
- package/dist/modules/index.d.ts +0 -1
- package/dist/screenImageSettings-6NRg4cx9.js +0 -39
- package/dist/screenImageSettings-y_B4_767.cjs +0 -1
- package/dist/selectors-BLl2JUWW.cjs +0 -1
- package/dist/selectors-CXd_x-6t.js +0 -59
- package/dist/services/ApiService.d.ts +0 -12
- package/dist/types/client.d.ts +0 -3
- package/dist/useFaceResults-cpsSmKKc.js +0 -81
- package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
- package/dist/useXRModel-3DcUa28n.cjs +0 -1
- package/dist/useXRModel-BMJE1hrk.js +0 -28
- /package/dist/{layerStack.d.ts → render/layerStack.d.ts} +0 -0
- /package/dist/{screenImagePresets.d.ts → screen-image/screenImagePresets.d.ts} +0 -0
- /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) |
|