@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +5651 -82
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -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/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/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/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +17 -0
- package/dist/components/BodyTrigger/index.d.ts +49 -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/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- 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/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/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/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -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 +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -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/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 +64 -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/LipEffect/LipEffect.d.ts +27 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +46 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- 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 +128 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -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/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 +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -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/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/config/index.d.ts +0 -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-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -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 +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- 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/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +18 -3
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -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/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2695 -2547
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +20 -2
- package/dist/entries/face-effects.d.ts +123 -9
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +49 -3
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +60 -2
- 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-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 +2324 -1
- package/dist/face-effects.js +14208 -2268
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- 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-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -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/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +76 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/index-w1S7fI2B.js +1432 -0
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- 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-BFDyBnKM.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1190 -675
- package/dist/main.cjs +1 -1
- package/dist/main.js +1190 -452
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +3 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +4 -12
- package/dist/models/Face/rotation.d.ts +18 -3
- 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 +2 -0
- 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 +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -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-C8rE26Uf.js +366 -0
- package/dist/providers-DHsrhDI2.cjs +62 -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/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.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/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -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 +62 -0
- package/dist/subjects/types.d.ts +55 -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 +1326 -506
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +47 -3
- package/dist/types/segmentation.d.ts +24 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
- package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +21 -1
- 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/useStableUniforms.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +142 -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 +23 -2
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +9 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- 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 +8 -9
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- 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 +209 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -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/multi-subject.mdx +98 -0
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +136 -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/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +51 -1
- package/docs/examples/lip-shaders.mdx +273 -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 +4 -4
- 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/introduction.mdx +1 -2
- package/package.json +23 -1
- package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
- package/dist/DebuggerUI-BjOMr8q_.js +0 -269
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- 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/contexts-ByhzppYl.js +0 -663
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-C4QpCQIY.js +0 -118
- package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BjmTe9eM.cjs +0 -1
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DXT3WccE.js +0 -2089
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/index-VJ0SJwmG.js +0 -214
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/session-CpkiK5YA.cjs +0 -31
- package/dist/session-DLFN_VII.js +0 -363
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { FaceInfo } from '../face-info';
|
|
2
|
+
import { FaceBlendshapeName } from '../face-info/blendshapes';
|
|
3
|
+
/** A face's blendshape scores (MediaPipe names, 0..1), as `FaceInfo.blendshapes`. */
|
|
4
|
+
export type FaceBlendshapes = Readonly<Partial<Record<FaceBlendshapeName, number>>>;
|
|
5
|
+
/**
|
|
6
|
+
* What an expression requires of the blendshapes; omitted fields are "any".
|
|
7
|
+
* `atLeast` / `atMost` are per-blendshape bounds (all must hold); `anyOf`
|
|
8
|
+
* passes when one of its rules does (e.g. a wink with either eye).
|
|
9
|
+
*/
|
|
10
|
+
export type FaceExpressionRule = {
|
|
11
|
+
atLeast?: Partial<Record<FaceBlendshapeName, number>>;
|
|
12
|
+
atMost?: Partial<Record<FaceBlendshapeName, number>>;
|
|
13
|
+
anyOf?: readonly FaceExpressionRule[];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Your own test of the face (any logic over the blendshapes; `face` is the
|
|
17
|
+
* full `FaceInfo` when a hook calls it).
|
|
18
|
+
*/
|
|
19
|
+
export type FaceExpressionMatch = (blendshapes: FaceBlendshapes, face?: FaceInfo) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* How the hint face shows an expression: one morph target played 0 → 1, or a
|
|
22
|
+
* mix of several (`{ smile: 1, wink: 0.6 }`, each weight reached at the peak).
|
|
23
|
+
*/
|
|
24
|
+
export type FaceExpressionHintPose = {
|
|
25
|
+
target: string;
|
|
26
|
+
} | {
|
|
27
|
+
targets: Record<string, number>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* An expression: its default copy, how it is detected (`rule`, or `match`
|
|
31
|
+
* for logic a rule cannot express; with both, both must pass) and how the
|
|
32
|
+
* hint face shows it. Make your own with `defineFaceExpression`.
|
|
33
|
+
*/
|
|
34
|
+
export type FaceExpressionDefinition = {
|
|
35
|
+
/** Default instruction copy. */
|
|
36
|
+
label: string;
|
|
37
|
+
rule?: FaceExpressionRule;
|
|
38
|
+
match?: FaceExpressionMatch;
|
|
39
|
+
/** The hint face's morph target(s) that show it (`face-v1.glb` ships one per expression). */
|
|
40
|
+
hint: FaceExpressionHintPose;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Anything that names an expression to detect: a built-in name, a rule, a
|
|
44
|
+
* match function or a full definition.
|
|
45
|
+
*/
|
|
46
|
+
export type FaceExpressionSpec = FaceExpressionName | FaceExpressionRule | FaceExpressionMatch | FaceExpressionDefinition;
|
|
47
|
+
/**
|
|
48
|
+
* Checks and returns your own expression definition (it needs a `rule` or a
|
|
49
|
+
* `match`). Pass it anywhere an expression name goes.
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* const yawn = defineFaceExpression({
|
|
53
|
+
* label: "Big yawn",
|
|
54
|
+
* rule: { atLeast: { jawOpen: 0.7 } },
|
|
55
|
+
* hint: { target: "surprised" },
|
|
56
|
+
* });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare const defineFaceExpression: <T extends FaceExpressionDefinition>(definition: T) => T;
|
|
60
|
+
/**
|
|
61
|
+
* The face instruction vocabulary. Rules read MediaPipe's face blendshapes;
|
|
62
|
+
* thresholds follow the SDK's face gestures (mouth open 0.5, smile 0.4, blink
|
|
63
|
+
* 0.55, brow raise 0.45). A wink accepts either eye, with the other one open.
|
|
64
|
+
*/
|
|
65
|
+
export declare const FACE_EXPRESSIONS: {
|
|
66
|
+
readonly smile: {
|
|
67
|
+
readonly label: "Give a big smile";
|
|
68
|
+
readonly rule: {
|
|
69
|
+
readonly atLeast: {
|
|
70
|
+
readonly mouthSmileLeft: 0.45;
|
|
71
|
+
readonly mouthSmileRight: 0.45;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
readonly hint: {
|
|
75
|
+
readonly target: "smile";
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
readonly wink: {
|
|
79
|
+
readonly label: "Wink at the camera";
|
|
80
|
+
readonly rule: {
|
|
81
|
+
readonly anyOf: readonly [{
|
|
82
|
+
readonly atLeast: {
|
|
83
|
+
readonly eyeBlinkLeft: 0.55;
|
|
84
|
+
};
|
|
85
|
+
readonly atMost: {
|
|
86
|
+
readonly eyeBlinkRight: 0.3;
|
|
87
|
+
};
|
|
88
|
+
}, {
|
|
89
|
+
readonly atLeast: {
|
|
90
|
+
readonly eyeBlinkRight: 0.55;
|
|
91
|
+
};
|
|
92
|
+
readonly atMost: {
|
|
93
|
+
readonly eyeBlinkLeft: 0.3;
|
|
94
|
+
};
|
|
95
|
+
}];
|
|
96
|
+
};
|
|
97
|
+
readonly hint: {
|
|
98
|
+
readonly target: "wink";
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
readonly surprised: {
|
|
102
|
+
readonly label: "Look surprised";
|
|
103
|
+
readonly rule: {
|
|
104
|
+
readonly atLeast: {
|
|
105
|
+
readonly jawOpen: 0.35;
|
|
106
|
+
readonly browInnerUp: 0.4;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
readonly hint: {
|
|
110
|
+
readonly target: "surprised";
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
readonly kiss: {
|
|
114
|
+
readonly label: "Blow a kiss";
|
|
115
|
+
readonly rule: {
|
|
116
|
+
readonly atLeast: {
|
|
117
|
+
readonly mouthPucker: 0.5;
|
|
118
|
+
};
|
|
119
|
+
readonly atMost: {
|
|
120
|
+
readonly jawOpen: 0.3;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
readonly hint: {
|
|
124
|
+
readonly target: "kiss";
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
readonly puffCheeks: {
|
|
128
|
+
readonly label: "Puff your cheeks";
|
|
129
|
+
readonly rule: {
|
|
130
|
+
readonly atLeast: {
|
|
131
|
+
readonly cheekPuff: 0.3;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
readonly hint: {
|
|
135
|
+
readonly target: "puffCheeks";
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
readonly frown: {
|
|
139
|
+
readonly label: "Frown";
|
|
140
|
+
readonly rule: {
|
|
141
|
+
readonly atLeast: {
|
|
142
|
+
readonly browDownLeft: 0.4;
|
|
143
|
+
readonly browDownRight: 0.4;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
readonly hint: {
|
|
147
|
+
readonly target: "frown";
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
readonly scrunch: {
|
|
151
|
+
readonly label: "Scrunch your face";
|
|
152
|
+
readonly rule: {
|
|
153
|
+
readonly anyOf: readonly [{
|
|
154
|
+
readonly atLeast: {
|
|
155
|
+
readonly noseSneerLeft: 0.3;
|
|
156
|
+
readonly noseSneerRight: 0.3;
|
|
157
|
+
};
|
|
158
|
+
}, {
|
|
159
|
+
readonly atLeast: {
|
|
160
|
+
readonly eyeSquintLeft: 0.45;
|
|
161
|
+
readonly eyeSquintRight: 0.45;
|
|
162
|
+
readonly browDownLeft: 0.3;
|
|
163
|
+
readonly browDownRight: 0.3;
|
|
164
|
+
};
|
|
165
|
+
}];
|
|
166
|
+
};
|
|
167
|
+
readonly hint: {
|
|
168
|
+
readonly target: "scrunch";
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
export type FaceExpressionName = keyof typeof FACE_EXPRESSIONS;
|
|
173
|
+
export declare const FACE_EXPRESSION_NAMES: FaceExpressionName[];
|
|
174
|
+
/** The full definition a spec names (`undefined` for a bare rule or match function). */
|
|
175
|
+
export declare const resolveFaceExpression: (expression: FaceExpressionSpec) => FaceExpressionDefinition | undefined;
|
|
176
|
+
/**
|
|
177
|
+
* Whether blendshapes satisfy an expression: a name from `FACE_EXPRESSIONS`, a
|
|
178
|
+
* rule, a match function or a definition. `face` is passed on to match functions.
|
|
179
|
+
*/
|
|
180
|
+
export declare const matchFaceExpression: (blendshapes: FaceBlendshapes, expression: FaceExpressionSpec, face?: FaceInfo) => boolean;
|
|
181
|
+
/** Every named expression the blendshapes satisfy (several can: a scrunch is often also a frown). */
|
|
182
|
+
export declare const matchingFaceExpressions: (blendshapes: FaceBlendshapes) => FaceExpressionName[];
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { NormalizedLandmark } from '@mediapipe/tasks-vision';
|
|
2
2
|
import { FaceCustomAnchorPoint, FaceTarget } from '../types/tracking';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* MediaPipe canonical face-mesh index of each single-landmark face target, as
|
|
5
|
+
* MediaPipe names the side (263 = its left eye): the person's own side on an
|
|
6
|
+
* unmirrored feed. On the mirrored webcam the person's side is the other
|
|
7
|
+
* entry — read `FACE_LANDMARK_INDICES[feedSidedName(target, mirrored)]`, or
|
|
8
|
+
* let `resolveFaceAnchorPoint` / `TrackingAnchor` pick it (GROUNDING "Left and
|
|
9
|
+
* right").
|
|
10
|
+
*/
|
|
4
11
|
export declare const FACE_LANDMARK_INDICES: {
|
|
5
12
|
readonly "face.forehead": 10;
|
|
6
13
|
readonly "face.noseTip": 1;
|
|
@@ -13,8 +20,15 @@ export declare const FACE_LANDMARK_INDICES: {
|
|
|
13
20
|
readonly "face.leftEarlobe": 454;
|
|
14
21
|
readonly "face.rightEarlobe": 234;
|
|
15
22
|
};
|
|
16
|
-
/**
|
|
17
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Resolves a semantic face target in normalized tracker-input coordinates.
|
|
25
|
+
* Left / right (`face.leftCheek`, `face.custom`'s −x) are the person's own
|
|
26
|
+
* side: pass `feedMirrored` (`useXRMirrored()`; the front webcam is mirrored)
|
|
27
|
+
* so the target is read from the mesh side the person's side has on this
|
|
28
|
+
* feed. Defaults to an unmirrored feed.
|
|
29
|
+
*/
|
|
30
|
+
export declare const resolveFaceAnchorPoint: (faceTarget: FaceTarget, landmarks: readonly NormalizedLandmark[], customAnchorPoint?: FaceCustomAnchorPoint, target?: NormalizedLandmark, feedMirrored?: boolean) => NormalizedLandmark | null;
|
|
31
|
+
/** The outer eye corners (MediaPipe's sides; only their distance is read). */
|
|
18
32
|
export declare const FACE_EYE_DISTANCE_LANDMARKS: {
|
|
19
33
|
readonly left: 263;
|
|
20
34
|
readonly right: 33;
|
|
@@ -9,22 +9,38 @@ export type FaceVector3 = Readonly<{
|
|
|
9
9
|
export type FaceInfo = {
|
|
10
10
|
/** Current result-array index. This is not a persistent identity. */
|
|
11
11
|
readonly index: number;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* MediaPipe landmarks in normalized tracker-input coordinates; top-left
|
|
14
|
+
* origin. Indices keep MediaPipe's sides (263 = MediaPipe's left eye): the
|
|
15
|
+
* person's own side on an unmirrored feed, the opposite on the mirrored
|
|
16
|
+
* webcam (see `mirrored`).
|
|
17
|
+
*/
|
|
13
18
|
readonly landmarks: readonly NormalizedLandmark[];
|
|
14
19
|
/** Axis-aligned bounds in the same normalized tracker-input coordinates. */
|
|
15
20
|
readonly bounds: Readonly<FaceBounds>;
|
|
16
21
|
readonly pose: {
|
|
17
22
|
/** Three.js world position from the existing face tracker. */
|
|
18
23
|
readonly position: FaceVector3;
|
|
19
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Radians: X pitch (+ = looking up), Y yaw (+ = turning to the person's
|
|
26
|
+
* own left), Z roll (+ = tilting toward the person's own left shoulder),
|
|
27
|
+
* on every feed.
|
|
28
|
+
*/
|
|
20
29
|
readonly rotation: FaceVector3;
|
|
21
30
|
/** Smoothed uniform sizing heuristic used by the face occluder/tracker anchor. */
|
|
22
31
|
readonly scale: FaceVector3;
|
|
23
32
|
};
|
|
24
33
|
/** Outer-eye distance in normalized tracker-input coordinates. */
|
|
25
34
|
readonly eyeDistance: number;
|
|
26
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* MediaPipe blendshape category names mapped to scores in [0, 1], raw:
|
|
37
|
+
* `…Left` is MediaPipe's left (the person's own left on an unmirrored feed,
|
|
38
|
+
* their right on the mirrored webcam). Face actions (`eyeBlinkLeft` …) read
|
|
39
|
+
* the person's side for you.
|
|
40
|
+
*/
|
|
27
41
|
readonly blendshapes: Readonly<Partial<Record<FaceBlendshapeName, number>>>;
|
|
42
|
+
/** The face was read from a mirrored feed (the front webcam): MediaPipe's sides are the person's opposite sides. */
|
|
43
|
+
readonly mirrored: boolean;
|
|
28
44
|
};
|
|
29
45
|
export type FaceInfoTarget = {
|
|
30
46
|
index: number;
|
|
@@ -49,4 +65,5 @@ export type FaceInfoTarget = {
|
|
|
49
65
|
};
|
|
50
66
|
eyeDistance: number;
|
|
51
67
|
blendshapes: Record<string, number>;
|
|
68
|
+
mirrored: boolean;
|
|
52
69
|
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { FaceInfo } from '../face-info';
|
|
2
|
+
import { TrackerPoint } from '../types/common';
|
|
3
|
+
import { GestureDetectorOptions, GestureSample } from './detector';
|
|
4
|
+
import { OscillationTracker } from './measures';
|
|
5
|
+
export type GestureKind = "face" | "hand" | "body";
|
|
6
|
+
/** What each tracker hands a definition per frame. */
|
|
7
|
+
export type GestureInputOf<K extends GestureKind> = K extends "face" ? FaceInfo | null : ReadonlyArray<TrackerPoint> | undefined;
|
|
8
|
+
/**
|
|
9
|
+
* The feed a frame came from. `mirrored`: the front webcam, where MediaPipe's
|
|
10
|
+
* left / right labels (pose 11 / 12 …, face mesh sides, `…Left` blendshapes)
|
|
11
|
+
* name the person's opposite side. A sided gesture reads the person's own
|
|
12
|
+
* side with it (`personSide(side, mirrored)`).
|
|
13
|
+
*/
|
|
14
|
+
export type GestureContext = {
|
|
15
|
+
mirrored: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A gesture: which tracker it reads, how to turn one frame of that tracker
|
|
19
|
+
* into a `{ value, confidence }` sample, and its default detector options.
|
|
20
|
+
* Temporal gestures keep per-instance memory (`createMemory`).
|
|
21
|
+
*/
|
|
22
|
+
export type GestureDefinition<K extends GestureKind = GestureKind, M = unknown> = {
|
|
23
|
+
name: string;
|
|
24
|
+
kind: K;
|
|
25
|
+
description: string;
|
|
26
|
+
/** Overrides of `DEFAULT_GESTURE_DETECTOR_OPTIONS` for this gesture. */
|
|
27
|
+
defaults?: Partial<GestureDetectorOptions>;
|
|
28
|
+
createMemory?: () => M;
|
|
29
|
+
/**
|
|
30
|
+
* `null` when the tracker has no subject this frame. Confidence 1 unless
|
|
31
|
+
* the source knows better. `context` is the feed (`useGesture` passes it;
|
|
32
|
+
* missing = an unmirrored feed).
|
|
33
|
+
*/
|
|
34
|
+
measure: (input: GestureInputOf<K>, memory: M, nowMs: number, context?: GestureContext) => GestureSample;
|
|
35
|
+
};
|
|
36
|
+
type OscillationMemory = {
|
|
37
|
+
tracker: OscillationTracker;
|
|
38
|
+
wasPresent: boolean;
|
|
39
|
+
};
|
|
40
|
+
export declare const GESTURES: {
|
|
41
|
+
readonly mouthOpen: GestureDefinition<"face", undefined>;
|
|
42
|
+
readonly smile: GestureDefinition<"face", undefined>;
|
|
43
|
+
readonly blink: GestureDefinition<"face", undefined>;
|
|
44
|
+
readonly browRaise: GestureDefinition<"face", undefined>;
|
|
45
|
+
readonly headNod: {
|
|
46
|
+
name: string;
|
|
47
|
+
kind: "face";
|
|
48
|
+
description: string;
|
|
49
|
+
defaults: Partial<GestureDetectorOptions>;
|
|
50
|
+
createMemory: () => OscillationMemory;
|
|
51
|
+
measure: (face: FaceInfo | null, memory: OscillationMemory, nowMs: number) => GestureSample;
|
|
52
|
+
};
|
|
53
|
+
readonly headShake: {
|
|
54
|
+
name: string;
|
|
55
|
+
kind: "face";
|
|
56
|
+
description: string;
|
|
57
|
+
defaults: Partial<GestureDetectorOptions>;
|
|
58
|
+
createMemory: () => OscillationMemory;
|
|
59
|
+
measure: (face: FaceInfo | null, memory: OscillationMemory, nowMs: number) => GestureSample;
|
|
60
|
+
};
|
|
61
|
+
readonly pinch: GestureDefinition<"hand", undefined>;
|
|
62
|
+
readonly grab: GestureDefinition<"hand", undefined>;
|
|
63
|
+
readonly openPalm: GestureDefinition<"hand", undefined>;
|
|
64
|
+
readonly handRaised: GestureDefinition<"hand", undefined>;
|
|
65
|
+
readonly oneFinger: GestureDefinition<"hand", undefined>;
|
|
66
|
+
readonly peaceSign: GestureDefinition<"hand", undefined>;
|
|
67
|
+
readonly threeFingers: GestureDefinition<"hand", undefined>;
|
|
68
|
+
readonly fourFingers: GestureDefinition<"hand", undefined>;
|
|
69
|
+
readonly fist: GestureDefinition<"hand", undefined>;
|
|
70
|
+
readonly palm: GestureDefinition<"hand", undefined>;
|
|
71
|
+
readonly thumbUp: GestureDefinition<"hand", undefined>;
|
|
72
|
+
readonly thumbDown: GestureDefinition<"hand", undefined>;
|
|
73
|
+
readonly wave: {
|
|
74
|
+
name: string;
|
|
75
|
+
kind: "hand";
|
|
76
|
+
description: string;
|
|
77
|
+
defaults: Partial<GestureDetectorOptions>;
|
|
78
|
+
createMemory: () => OscillationMemory;
|
|
79
|
+
measure: (hand: readonly TrackerPoint[] | undefined, memory: OscillationMemory, nowMs: number) => GestureSample;
|
|
80
|
+
};
|
|
81
|
+
readonly armRaisedLeft: GestureDefinition<"body", undefined>;
|
|
82
|
+
readonly armRaisedRight: GestureDefinition<"body", undefined>;
|
|
83
|
+
readonly armRaised: GestureDefinition<"body", undefined>;
|
|
84
|
+
readonly bothArmsRaised: GestureDefinition<"body", undefined>;
|
|
85
|
+
readonly tPose: GestureDefinition<"body", undefined>;
|
|
86
|
+
};
|
|
87
|
+
export type BuiltInGestureName = keyof typeof GESTURES;
|
|
88
|
+
export declare const GESTURE_NAMES: BuiltInGestureName[];
|
|
89
|
+
/** Any definition, whichever tracker it reads (memory type erased). */
|
|
90
|
+
export type AnyGestureDefinition = {
|
|
91
|
+
[K in GestureKind]: GestureDefinition<K, any>;
|
|
92
|
+
}[GestureKind];
|
|
93
|
+
/** A built-in name or a custom definition. */
|
|
94
|
+
export type GestureRef = BuiltInGestureName | AnyGestureDefinition;
|
|
95
|
+
export declare const resolveGestureDefinition: (gesture: GestureRef) => AnyGestureDefinition;
|
|
96
|
+
/** Create a custom gesture with the same contract as the built-ins. */
|
|
97
|
+
export declare const defineGesture: <K extends GestureKind, M = undefined>(definition: GestureDefinition<K, M>) => GestureDefinition<K, M>;
|
|
98
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One gesture engine for every tracker: a scalar signal in, lifecycle out.
|
|
3
|
+
*
|
|
4
|
+
* A gesture definition measures a value (0..1, "how much") and a confidence
|
|
5
|
+
* (0..1, "how sure") each frame. The detector turns that stream into a
|
|
6
|
+
* stable `active` flag with hysteresis (enter above `enterThreshold`, leave
|
|
7
|
+
* below `exitThreshold`), a minimum hold before it begins, a cooldown after
|
|
8
|
+
* it ends, a confidence gate, and a grace window that survives brief
|
|
9
|
+
* tracking loss. Pure and allocation-free so it is unit-testable without a
|
|
10
|
+
* renderer; the hooks drive it from `useFrame`.
|
|
11
|
+
*/
|
|
12
|
+
export type GestureDetectorOptions = {
|
|
13
|
+
/** Value at or above which the gesture may begin. Default 0.5. */
|
|
14
|
+
enterThreshold: number;
|
|
15
|
+
/** Value at or below which an active gesture ends. Default `enterThreshold - 0.15` (hysteresis). */
|
|
16
|
+
exitThreshold: number;
|
|
17
|
+
/** The value must stay above `enterThreshold` for this long (ms) before `begin`. Default 0. */
|
|
18
|
+
holdMs: number;
|
|
19
|
+
/** After `end`, no new `begin` for this long (ms). Default 0. */
|
|
20
|
+
cooldownMs: number;
|
|
21
|
+
/** Samples with confidence below this are treated as tracking loss. Default 0.5. */
|
|
22
|
+
minConfidence: number;
|
|
23
|
+
/**
|
|
24
|
+
* While active, tracking loss (no sample or low confidence) is tolerated
|
|
25
|
+
* for this long (ms) before the gesture ends with `endReason: "lost"`;
|
|
26
|
+
* `0` ends on the first lost frame. Default 250, the SDK's hold window.
|
|
27
|
+
*/
|
|
28
|
+
lostGraceMs: number;
|
|
29
|
+
};
|
|
30
|
+
export declare const DEFAULT_GESTURE_DETECTOR_OPTIONS: GestureDetectorOptions;
|
|
31
|
+
/** Fill defaults and keep the pair consistent (`exit <= enter`, nothing negative). */
|
|
32
|
+
export declare const resolveGestureDetectorOptions: (options?: Partial<GestureDetectorOptions>, defaults?: GestureDetectorOptions) => GestureDetectorOptions;
|
|
33
|
+
/** One frame of measurement. `null` means the tracker has no subject this frame. */
|
|
34
|
+
export type GestureSample = {
|
|
35
|
+
value: number;
|
|
36
|
+
confidence: number;
|
|
37
|
+
} | null;
|
|
38
|
+
export type GesturePhase = "begin" | "stay" | "end" | "none";
|
|
39
|
+
export type GestureEndReason = "released" | "lost" | null;
|
|
40
|
+
export type GestureState = {
|
|
41
|
+
name: string;
|
|
42
|
+
/** Hysteresis-stable activity. */
|
|
43
|
+
active: boolean;
|
|
44
|
+
/** Last reliable measured value (0..1); kept through loss grace. */
|
|
45
|
+
value: number;
|
|
46
|
+
/** Last sample confidence (0 while the subject is missing). */
|
|
47
|
+
confidence: number;
|
|
48
|
+
/** True when a reliable sample arrived this frame. */
|
|
49
|
+
tracked: boolean;
|
|
50
|
+
phase: GesturePhase;
|
|
51
|
+
justBegan: boolean;
|
|
52
|
+
justEnded: boolean;
|
|
53
|
+
/** Why the last `end` happened: the value dropped, or tracking was lost. */
|
|
54
|
+
endReason: GestureEndReason;
|
|
55
|
+
/** `nowMs` of the current activation's `begin`, or null. */
|
|
56
|
+
startedAtMs: number | null;
|
|
57
|
+
/**
|
|
58
|
+
* Milliseconds since `begin` as of the last published change (an ending
|
|
59
|
+
* gesture carries its full length). Not a per-frame clock: read
|
|
60
|
+
* `startedAtMs` against your own clock for a live duration.
|
|
61
|
+
*/
|
|
62
|
+
durationMs: number;
|
|
63
|
+
/** Number of `begin` events so far. */
|
|
64
|
+
count: number;
|
|
65
|
+
};
|
|
66
|
+
export type GestureDetectorState = GestureState & {
|
|
67
|
+
holdStartedAtMs: number | null;
|
|
68
|
+
lostSinceMs: number | null;
|
|
69
|
+
cooldownUntilMs: number;
|
|
70
|
+
beganLastStep: boolean;
|
|
71
|
+
};
|
|
72
|
+
export declare const createGestureDetectorState: (name: string) => GestureDetectorState;
|
|
73
|
+
/**
|
|
74
|
+
* Advance the detector by one frame. Mutates and returns `state`.
|
|
75
|
+
*
|
|
76
|
+
* - No sample / confidence below `minConfidence` = tracking loss: an
|
|
77
|
+
* inactive gesture resets its hold; an active one survives for
|
|
78
|
+
* `lostGraceMs` (value frozen), then ends with `endReason: "lost"`.
|
|
79
|
+
* - Inactive: value >= `enterThreshold` for `holdMs` (and past the cooldown) → `begin`.
|
|
80
|
+
* - Active: value <= `exitThreshold` → `end` ("released"). A `begin` always
|
|
81
|
+
* gets one `stay` frame so one-frame gestures still surface both edges.
|
|
82
|
+
*/
|
|
83
|
+
export declare const stepGestureDetector: (state: GestureDetectorState, sample: GestureSample, nowMs: number, options: GestureDetectorOptions) => GestureDetectorState;
|
|
84
|
+
/** Copy the public fields of a detector state (for publishing to React state). */
|
|
85
|
+
export declare const snapshotGestureState: (state: GestureDetectorState, target?: GestureState) => GestureState;
|
|
86
|
+
/** Change detection for publishing; `durationMs` is deliberately excluded so an active gesture does not publish every frame. */
|
|
87
|
+
export declare const gestureStatesEqual: (a: GestureState, b: GestureState) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DEFAULT_GESTURE_DETECTOR_OPTIONS, createGestureDetectorState, gestureStatesEqual, resolveGestureDetectorOptions, snapshotGestureState, stepGestureDetector, } from './detector';
|
|
2
|
+
export type { GestureDetectorOptions, GestureDetectorState, GestureEndReason, GesturePhase, GestureSample, GestureState, } from './detector';
|
|
3
|
+
export { GESTURES, GESTURE_NAMES, defineGesture, resolveGestureDefinition } from './definitions';
|
|
4
|
+
export type { AnyGestureDefinition, BuiltInGestureName, GestureContext, GestureDefinition, GestureInputOf, GestureKind, GestureRef, } from './definitions';
|
|
5
|
+
export { HAND_JOINTS, OscillationTracker, POSE_JOINTS, measureArmRaise, fingerExtensions, measureFingerPattern, measureGrab, measureHandHeight, measureOpenPalm, measurePinch, measureTPose, measureThumb, thumbDirection, thumbExtension, } from './measures';
|
|
6
|
+
export type { FingerPattern } from './measures';
|
|
7
|
+
export { DEFAULT_GESTURE_SETTINGS, GESTURE_SETTINGS_FIELDS, patchGestureSettings, resolveGestureSettings, } from './settings';
|
|
8
|
+
export type { GestureSettings } from './settings';
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { TrackerPoint } from '../types/common';
|
|
2
|
+
/** Clamp to 0..1. */
|
|
3
|
+
export declare const unit: (value: number) => number;
|
|
4
|
+
/** MediaPipe hand joints used by the measures. */
|
|
5
|
+
export declare const HAND_JOINTS: {
|
|
6
|
+
readonly wrist: 0;
|
|
7
|
+
readonly thumbTip: 4;
|
|
8
|
+
readonly indexBase: 5;
|
|
9
|
+
readonly indexTip: 8;
|
|
10
|
+
readonly middleBase: 9;
|
|
11
|
+
readonly middleTip: 12;
|
|
12
|
+
readonly ringBase: 13;
|
|
13
|
+
readonly ringTip: 16;
|
|
14
|
+
readonly pinkyBase: 17;
|
|
15
|
+
readonly pinkyTip: 20;
|
|
16
|
+
};
|
|
17
|
+
/** Palm size: wrist to middle-finger base, in tracker units. 0 without a hand. */
|
|
18
|
+
export declare const handSize: (hand: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
19
|
+
/**
|
|
20
|
+
* Pinch: 1 when the thumb and index tips touch, 0 when they are a palm
|
|
21
|
+
* length apart. Scale-free (divided by the palm size).
|
|
22
|
+
*/
|
|
23
|
+
export declare const measurePinch: (hand: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
24
|
+
/**
|
|
25
|
+
* Finger curl, 0 (extended) .. 1 (curled), from the tip-to-wrist distance
|
|
26
|
+
* relative to the base-to-wrist distance: extended ≈ 1.6×, curled ≈ 1.0×.
|
|
27
|
+
*/
|
|
28
|
+
export declare const fingerCurl: (hand: ReadonlyArray<TrackerPoint>, base: number, tip: number) => number;
|
|
29
|
+
/** Extension of index..pinky, 0 (curled) .. 1 (extended), in finger order. */
|
|
30
|
+
export declare const fingerExtensions: (hand: ReadonlyArray<TrackerPoint>, target?: [number, number, number, number]) => [number, number, number, number];
|
|
31
|
+
/**
|
|
32
|
+
* Thumb extension: how far the thumb tip sits from the index base, in palm
|
|
33
|
+
* sizes. Tucked across the palm ≈ 0.4, stretched out ≈ 1.0+.
|
|
34
|
+
*/
|
|
35
|
+
export declare const thumbExtension: (hand: ReadonlyArray<TrackerPoint>) => number;
|
|
36
|
+
/** Thumb direction: +1 pointing up (tracker Y up), −1 pointing down, in palm sizes of vertical rise. */
|
|
37
|
+
export declare const thumbDirection: (hand: ReadonlyArray<TrackerPoint>) => number;
|
|
38
|
+
export type FingerPattern = {
|
|
39
|
+
/** Required state of index, middle, ring, pinky: `true` extended, `false` curled, `null` either. */
|
|
40
|
+
fingers: readonly [boolean | null, boolean | null, boolean | null, boolean | null];
|
|
41
|
+
/** Required thumb state; `null` = either. */
|
|
42
|
+
thumb?: boolean | null;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Score a finger pattern: the weakest of each required finger's extension
|
|
46
|
+
* (or curl) and the thumb's. 1 only when every required finger agrees.
|
|
47
|
+
*/
|
|
48
|
+
export declare const measureFingerPattern: (hand: ReadonlyArray<TrackerPoint> | undefined, pattern: FingerPattern) => number;
|
|
49
|
+
/** Thumb up / down: thumb out and pointing the right way while the fingers curl. */
|
|
50
|
+
export declare const measureThumb: (hand: ReadonlyArray<TrackerPoint> | undefined, direction: "up" | "down") => number;
|
|
51
|
+
/** Grab (fist): mean curl of index..pinky. */
|
|
52
|
+
export declare const measureGrab: (hand: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
53
|
+
/** Open palm: mean extension of index..pinky (1 − curl). */
|
|
54
|
+
export declare const measureOpenPalm: (hand: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
55
|
+
/** Hand height on screen: 0 at the bottom edge, 0.5 at the centre, 1 at the top (tracker Y up). */
|
|
56
|
+
export declare const measureHandHeight: (hand: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
57
|
+
/**
|
|
58
|
+
* MediaPipe pose landmarks used by the body measures, as MediaPipe labels
|
|
59
|
+
* them (11 = its left shoulder): the person's own side on an unmirrored feed,
|
|
60
|
+
* the opposite on the mirrored webcam. Sided measures take the feed's
|
|
61
|
+
* `mirrored` to read the person's own side.
|
|
62
|
+
*/
|
|
63
|
+
export declare const POSE_JOINTS: {
|
|
64
|
+
readonly leftShoulder: 11;
|
|
65
|
+
readonly rightShoulder: 12;
|
|
66
|
+
readonly leftElbow: 13;
|
|
67
|
+
readonly rightElbow: 14;
|
|
68
|
+
readonly leftWrist: 15;
|
|
69
|
+
readonly rightWrist: 16;
|
|
70
|
+
readonly leftHip: 23;
|
|
71
|
+
readonly rightHip: 24;
|
|
72
|
+
};
|
|
73
|
+
/** Shoulder width in tracker units; the body's scale reference. */
|
|
74
|
+
export declare const shoulderWidth: (pose: ReadonlyArray<TrackerPoint>) => number;
|
|
75
|
+
/**
|
|
76
|
+
* How far the person's own `side` wrist is raised above its shoulder, in
|
|
77
|
+
* shoulder widths: 0 at shoulder level or below, 1 at one shoulder width
|
|
78
|
+
* above. `mirrored` is the feed's mirror state (the front webcam; default
|
|
79
|
+
* `false`): MediaPipe's labels name the person's opposite side there, so the
|
|
80
|
+
* other label is read (#298).
|
|
81
|
+
*/
|
|
82
|
+
export declare const measureArmRaise: (pose: ReadonlyArray<TrackerPoint> | undefined, side: "left" | "right", mirrored?: boolean) => number;
|
|
83
|
+
/**
|
|
84
|
+
* T-pose: both wrists level with the shoulders and stretched outward by at
|
|
85
|
+
* least a shoulder width. 1 when fully extended and level.
|
|
86
|
+
*/
|
|
87
|
+
export declare const measureTPose: (pose: ReadonlyArray<TrackerPoint> | undefined) => number;
|
|
88
|
+
/**
|
|
89
|
+
* Counts direction reversals of a scalar over a sliding window: the engine
|
|
90
|
+
* behind nod, head shake and wave. It follows the running extreme in the
|
|
91
|
+
* current direction; a turning point counts once the signal has come back
|
|
92
|
+
* at least `minAmplitude` from it (so jitter below the amplitude never
|
|
93
|
+
* counts, and a small first half-swing does not stall the count). `push`
|
|
94
|
+
* returns `min(1, reversals / requiredReversals)` within `windowMs`.
|
|
95
|
+
*/
|
|
96
|
+
export declare class OscillationTracker {
|
|
97
|
+
private readonly options;
|
|
98
|
+
private reversals;
|
|
99
|
+
/** Running extreme in the current direction (max rising, min falling). */
|
|
100
|
+
private extreme;
|
|
101
|
+
/** Range seen before the first swing (direction still unknown). */
|
|
102
|
+
private low;
|
|
103
|
+
private high;
|
|
104
|
+
private direction;
|
|
105
|
+
constructor(options: {
|
|
106
|
+
minAmplitude: number;
|
|
107
|
+
requiredReversals: number;
|
|
108
|
+
windowMs: number;
|
|
109
|
+
});
|
|
110
|
+
reset(): void;
|
|
111
|
+
/** Feed one sample; returns the oscillation progress 0..1. */
|
|
112
|
+
push(value: number, nowMs: number): number;
|
|
113
|
+
private progress;
|
|
114
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { GestureDetectorOptions } from './detector';
|
|
2
|
+
/** Flat, panel-friendly detector options. */
|
|
3
|
+
export type GestureSettings = GestureDetectorOptions;
|
|
4
|
+
export declare const DEFAULT_GESTURE_SETTINGS: GestureSettings;
|
|
5
|
+
export declare const GESTURE_SETTINGS_FIELDS: [{
|
|
6
|
+
readonly key: "enterThreshold";
|
|
7
|
+
readonly label: "Enter threshold";
|
|
8
|
+
readonly type: "number";
|
|
9
|
+
readonly min: 0;
|
|
10
|
+
readonly max: 1;
|
|
11
|
+
readonly step: 0.01;
|
|
12
|
+
}, {
|
|
13
|
+
readonly key: "exitThreshold";
|
|
14
|
+
readonly label: "Exit threshold";
|
|
15
|
+
readonly type: "number";
|
|
16
|
+
readonly min: 0;
|
|
17
|
+
readonly max: 1;
|
|
18
|
+
readonly step: 0.01;
|
|
19
|
+
}, {
|
|
20
|
+
readonly key: "holdMs";
|
|
21
|
+
readonly label: "Hold before begin (ms)";
|
|
22
|
+
readonly type: "number";
|
|
23
|
+
readonly min: 0;
|
|
24
|
+
readonly max: 1000;
|
|
25
|
+
readonly step: 10;
|
|
26
|
+
}, {
|
|
27
|
+
readonly key: "cooldownMs";
|
|
28
|
+
readonly label: "Cooldown after end (ms)";
|
|
29
|
+
readonly type: "number";
|
|
30
|
+
readonly min: 0;
|
|
31
|
+
readonly max: 3000;
|
|
32
|
+
readonly step: 50;
|
|
33
|
+
}, {
|
|
34
|
+
readonly key: "minConfidence";
|
|
35
|
+
readonly label: "Min confidence";
|
|
36
|
+
readonly type: "number";
|
|
37
|
+
readonly min: 0;
|
|
38
|
+
readonly max: 1;
|
|
39
|
+
readonly step: 0.05;
|
|
40
|
+
}, {
|
|
41
|
+
readonly key: "lostGraceMs";
|
|
42
|
+
readonly label: "Loss grace (ms)";
|
|
43
|
+
readonly type: "number";
|
|
44
|
+
readonly min: 0;
|
|
45
|
+
readonly max: 1000;
|
|
46
|
+
readonly step: 10;
|
|
47
|
+
}];
|
|
48
|
+
export declare const resolveGestureSettings: (value?: Partial<GestureSettings>, defaults?: GestureSettings) => GestureSettings;
|
|
49
|
+
export declare const patchGestureSettings: (current: GestureSettings, patch: Partial<GestureSettings>) => GestureSettings;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const f=require("./landmarks-BlUqf5MZ.cjs"),d=(s,e={minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0})=>{if(s.length===0)return e.minX=0,e.minY=0,e.maxX=0,e.maxY=0,e.width=0,e.height=0,e.centerX=0,e.centerY=0,e;let n=1,t=1,i=0,c=0;for(let r=0;r<s.length;r++){const{x:a,y:h}=s[r];a<n&&(n=a),h<t&&(t=h),a>i&&(i=a),h>c&&(c=h)}const o=Math.max(0,i-n),m=Math.max(0,c-t);return e.minX=n,e.minY=t,e.maxX=i,e.maxY=c,e.width=o,e.height=m,e.centerX=n+o*.5,e.centerY=t+m*.5,e},u=.5,X=(s,e)=>{for(const n in e)delete e[n];if(s)for(const n of s)e[n.categoryName]=n.score;return e},E=(s,e)=>s.blendshapes[e]??0,Y=(s,e,n=u)=>E(s,e)>=n,F=s=>{const e=s[f.FACE_EYE_DISTANCE_LANDMARKS.left],n=s[f.FACE_EYE_DISTANCE_LANDMARKS.right];return!e||!n?0:Math.hypot(e.x-n.x,e.y-n.y)},x=()=>({index:0,landmarks:[],bounds:{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0},pose:{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:0,y:0,z:0}},eyeDistance:0,blendshapes:{},mirrored:!0}),l=(s,e)=>{e.x=s.x,e.y=s.y,e.z=s.z},p=(s,e,n=0,t)=>{var m,r,a;const i=(m=e.faceLandmarks)==null?void 0:m[n],c=s.getFace(n);if(!i||!c)return null;const o=t??x();return o.index=n,o.landmarks=i,d(i,o.bounds),l(c.transform.position,o.pose.position),l(c.transform.rotation,o.pose.rotation),l(c.transform.scale,o.pose.scale),o.eyeDistance=F(i),X((a=(r=e.faceBlendshapes)==null?void 0:r[n])==null?void 0:a.categories,o.blendshapes),o.mirrored=c.mirrored!==!1,o},y=(s,e=0,n)=>{const t=s.getDetectionResults();return t?p(s,t,e,n):null};exports.DEFAULT_FACE_EXPRESSION_THRESHOLD=u;exports.computeLandmarkBounds=d;exports.createFaceInfoTarget=x;exports.getFaceBlendshape=E;exports.getFaceEyeDistance=F;exports.getFaceInfo=y;exports.getFaceInfoFromResults=p;exports.hasFaceExpression=Y;
|