@vincentt-xr/sdk 2.0.0-alpha.8 → 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 +4643 -170
- 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/gltfLoader.d.ts +16 -0
- package/dist/assets/loaders.d.ts +16 -1
- 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 +11 -6
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -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 +10 -2
- 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 +5 -3
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
- package/dist/components/FaceMesh/index.d.ts +1 -1
- 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/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/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/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/LipEffect/LipEffect.d.ts +22 -2
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
- package/dist/components/LipEffect/LipEffects.d.ts +5 -2
- package/dist/components/LipEffect/defaults.d.ts +21 -2
- package/dist/components/LipEffect/index.d.ts +1 -1
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +117 -13
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +82 -10
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
- package/dist/components/LipEffect/uvGuide.d.ts +31 -16
- 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/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/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/config/index.d.ts +0 -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/index.d.ts +2 -0
- package/dist/coordinates/side.d.ts +40 -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/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/index.d.ts +4 -3
- 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 +3 -2
- 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/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 +3 -2
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2250 -2472
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +3 -2
- package/dist/entries/face-effects.d.ts +114 -8
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +28 -1
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/tracking.d.ts +37 -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 +2252 -83
- package/dist/face-effects.js +14234 -1231
- 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 +15 -2
- package/dist/gestures/index.d.ts +1 -1
- package/dist/gestures/measures.d.ts +21 -8
- 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 +8 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- 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/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
- 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 +7 -5
- package/dist/iris/types.d.ts +6 -4
- package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
- 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 +666 -602
- package/dist/main.cjs +1 -1
- package/dist/main.js +866 -1182
- package/dist/models/Body/index.d.ts +2 -0
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +3 -11
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Segmentation/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.cjs +1 -1
- package/dist/product.js +29 -29
- package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-O4KmaMl9.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/types.d.ts +6 -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-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
- 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/tracking.cjs +10 -1
- package/dist/tracking.js +1002 -855
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/nodes.d.ts +20 -1
- package/dist/types/segmentation.d.ts +5 -0
- 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-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
- package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +17 -0
- 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/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +1 -1
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +1 -1
- package/docs/api/coordinate-spaces.mdx +7 -4
- package/docs/api/cross-camera.mdx +3 -2
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- 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 +3 -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 +4 -7
- 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 +68 -32
- 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 +6 -1
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +24 -19
- 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 +4 -1
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +1 -1
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +5 -2
- package/docs/api/segmentation-overlay.mdx +1 -1
- package/docs/docs.json +29 -1
- package/docs/examples/lip-shaders.mdx +82 -33
- 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 +178 -102
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -1
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +11 -1
- package/dist/DebuggerUI-C-ldiozL.js +0 -269
- package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
- package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
- package/dist/FaceRetouch-C7h7x9kd.js +0 -683
- package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
- package/dist/GLTFLoader-C5q63sKO.js +0 -1633
- package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
- package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
- 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-CO0sd4JQ.cjs +0 -1
- package/dist/contexts-FzlnnMYD.js +0 -669
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-BkZfaQs-.js +0 -118
- package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
- package/dist/index--RgGzZ6X.cjs +0 -47
- package/dist/index-CHVbH0hz.js +0 -214
- package/dist/index-CeVkgsag.cjs +0 -1
- package/dist/index-CnGox6Xr.js +0 -3054
- package/dist/index-DKBAh6hV.cjs +0 -1
- package/dist/index-DsZwTfG0.cjs +0 -1
- package/dist/index-Dw6tj2Mi.js +0 -144
- package/dist/index-OCPjOaeP.cjs +0 -1
- package/dist/index-s9pF4zkG.js +0 -2053
- package/dist/internal-BYza1h8_.cjs +0 -1
- package/dist/measures-9dQPdw96.js +0 -154
- package/dist/measures-KfJzpvod.cjs +0 -1
- package/dist/providers-YNwkmNeK.cjs +0 -62
- package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
- package/dist/screenTransform-BenfCtZt.js +0 -44
- package/dist/screenTransform-BiXdpVf0.cjs +0 -1
- package/dist/segmentation-9PhSvc-R.cjs +0 -1
- package/dist/segmentation-CeOTKemr.js +0 -5
- package/dist/selectors-C5G1PMYL.js +0 -195
- package/dist/selectors-Du_PsVnW.cjs +0 -1
- package/dist/session-BBr0yN8h.cjs +0 -31
- package/dist/session-Cy0m7l7-.js +0 -363
- package/dist/settings-DRR7-snV.cjs +0 -1
- package/dist/useFaceInfo-Blf7FCu3.js +0 -303
- package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TrackerPoint } from '../types/common';
|
|
2
|
+
/** Triangles per hand: palm fan, two per bone, a circle per joint, the forearm quad and cap. */
|
|
3
|
+
/**
|
|
4
|
+
* Frame priority of `HandCutout`'s silhouette update: before the made-up
|
|
5
|
+
* camera's pass (`MADE_UP_CAMERA_FRAME_PRIORITY`, -0.3), so the made-up feed
|
|
6
|
+
* (FaceInset, FaceMorph textures, a face swap's map) cuts this frame's hands,
|
|
7
|
+
* not the last frame's. Negative: it does not take over R3F's render loop.
|
|
8
|
+
*/
|
|
9
|
+
export declare const HAND_CUTOUT_FRAME_PRIORITY = -0.5;
|
|
10
|
+
export declare const HAND_CUTOUT_TRIANGLES: number;
|
|
11
|
+
export type HandCutoutOptions = {
|
|
12
|
+
/** Width multiplier for the fingers and palm. Default 1. */
|
|
13
|
+
inflate?: number;
|
|
14
|
+
/** Also cut out the forearm past the wrist (its length in hand sizes, 0 = none). Default 1.4. */
|
|
15
|
+
forearm?: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Writes one hand's silhouette into `out` (xy per vertex, 3 vertices per
|
|
19
|
+
* triangle) from its 21 joints in tracker space; `aspect` is the viewport's
|
|
20
|
+
* width / height (widths are round on screen). Returns the vertex count
|
|
21
|
+
* written. Unused room is left untouched.
|
|
22
|
+
*/
|
|
23
|
+
export declare const writeHandCutout: (points: ArrayLike<TrackerPoint>, aspect: number, { inflate, forearm }: HandCutoutOptions, out: Float32Array, at?: number) => number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as THREE from "three";
|
|
2
|
+
/** Adds a cut-out's geometry for `scene`; returns the removal. */
|
|
3
|
+
export declare const registerHandCutoutShape: (scene: THREE.Object3D, geometry: THREE.BufferGeometry) => (() => void);
|
|
4
|
+
/** The cut-out geometries registered for `scene` (empty when none). */
|
|
5
|
+
export declare const getHandCutoutShapes: (scene: THREE.Object3D) => ReadonlySet<THREE.BufferGeometry>;
|
|
6
|
+
/** Whether any cut-out for `scene` draws a triangle this frame. */
|
|
7
|
+
export declare const hasHandCutoutShapes: (scene: THREE.Object3D) => boolean;
|
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { TrackerPoint } from '../types/common';
|
|
2
|
+
import { Handedness } from '../types/hand-tracking';
|
|
3
|
+
import { HandJointName } from './handPose';
|
|
4
|
+
import { HandRigBinding } from './handRigSolver';
|
|
5
|
+
import * as THREE from "three";
|
|
6
|
+
/** The five digits, thumb first. */
|
|
7
|
+
export type HandDigit = "thumb" | "index" | "middle" | "ring" | "pinky";
|
|
8
|
+
export declare const HAND_DIGITS: readonly HandDigit[];
|
|
9
|
+
/**
|
|
10
|
+
* A hand's shape from its 21 world joints (`HandPose.world`: centimetres,
|
|
11
|
+
* +X screen right, +Y up, +Z toward the viewer). Orientation-independent
|
|
12
|
+
* except `thumbDirection`, which is relative to the screen's up.
|
|
13
|
+
*/
|
|
14
|
+
export type HandShape = {
|
|
15
|
+
/** Digit straightened out. */
|
|
16
|
+
extended: Record<HandDigit, boolean>;
|
|
17
|
+
/** 0 = straight, 1 = fully curled (sum of the joint bends, normalised). */
|
|
18
|
+
curl: Record<HandDigit, number>;
|
|
19
|
+
/** Number of extended digits, thumb included. */
|
|
20
|
+
count: number;
|
|
21
|
+
/** Which way an extended thumb points on screen; `"side"` otherwise. */
|
|
22
|
+
thumbDirection: "up" | "down" | "side";
|
|
23
|
+
/** Thumb tip and index tip touch (an OK sign, a pinch). */
|
|
24
|
+
thumbIndexTouch: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The classifier's default thresholds. Read-only: tune per call with
|
|
28
|
+
* `analyzeHandShape(world, { limits })` or a hook's `limits` option.
|
|
29
|
+
*/
|
|
30
|
+
export declare const HAND_SHAPE_LIMITS: Readonly<{
|
|
31
|
+
/** A finger is extended when its PIP + DIP bends stay under this (radians, ~55°). */
|
|
32
|
+
fingerStraight: number;
|
|
33
|
+
/** … and its MCP bend stays under this (~70°, a finger folded at the knuckle is not up). */
|
|
34
|
+
fingerKnuckle: number;
|
|
35
|
+
/** The thumb is extended when its MCP + IP bends stay under this (~60°) … */
|
|
36
|
+
thumbStraight: number;
|
|
37
|
+
/** … and its tip is at least this many palm widths from the index MCP (tucked thumbs sit closer). */
|
|
38
|
+
thumbReach: 0.75;
|
|
39
|
+
/** |cos| of the thumb's angle to screen-up for "up" / "down" (~45°). */
|
|
40
|
+
thumbVertical: number;
|
|
41
|
+
/** Thumb and index tips touch within this many palm lengths (~1.75 cm). */
|
|
42
|
+
touch: 0.2;
|
|
43
|
+
/** Full curl, radians summed over a finger's three bends (normalises `curl`). */
|
|
44
|
+
fullCurl: number;
|
|
45
|
+
}>;
|
|
46
|
+
/** The classifier thresholds (see `HAND_SHAPE_LIMITS` for each one's meaning). */
|
|
47
|
+
export type HandShapeLimits = Record<keyof typeof HAND_SHAPE_LIMITS, number>;
|
|
48
|
+
export type AnalyzeHandShapeOptions = {
|
|
49
|
+
/** Thresholds to override (the rest keep `HAND_SHAPE_LIMITS`). */
|
|
50
|
+
limits?: Partial<HandShapeLimits>;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Reads extended digits, curl, count, thumb direction and thumb–index touch
|
|
54
|
+
* from a hand's world joints. Pure; needs all 21 joints.
|
|
55
|
+
*/
|
|
56
|
+
export declare const analyzeHandShape: (world: readonly TrackerPoint[], { limits }?: AnalyzeHandShapeOptions) => HandShape;
|
|
57
|
+
/** What a gesture requires of a `HandShape`; omitted fields are "any". */
|
|
58
|
+
export type HandGestureRule = {
|
|
59
|
+
/** `true` = must be extended, `false` = must be folded. */
|
|
60
|
+
digits?: Partial<Record<HandDigit, boolean>>;
|
|
61
|
+
/** Exact number of extended digits (thumb included). */
|
|
62
|
+
count?: number;
|
|
63
|
+
thumbDirection?: "up" | "down";
|
|
64
|
+
thumbIndexTouch?: boolean;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* How to draw a gesture on the hint hand. `clip` names an authored pose (a
|
|
68
|
+
* model animation, see `applyHandHintPose`); the other fields (values 0..1)
|
|
69
|
+
* pose the hand procedurally, for models without that clip.
|
|
70
|
+
*/
|
|
71
|
+
export type HandHintPose = {
|
|
72
|
+
/**
|
|
73
|
+
* Authored pose: the name of a single-key animation clip on the model
|
|
74
|
+
* (`hand-v1.glb` ships one per pose). Used when the clip is passed in;
|
|
75
|
+
* otherwise the procedural fields below are used.
|
|
76
|
+
*/
|
|
77
|
+
clip?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Turn about the fingers' axis before showing, in degrees: 0 = palm to
|
|
80
|
+
* the viewer, 180 = the back of the hand, in between brings the thumb side
|
|
81
|
+
* round toward the viewer (an OK sign reads from ~125°).
|
|
82
|
+
*/
|
|
83
|
+
yaw?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Then turn in the screen plane, degrees counter-clockwise (after `yaw`):
|
|
86
|
+
* a call-me sign reads held sideways, thumb up and pinky down (~100°).
|
|
87
|
+
*/
|
|
88
|
+
roll?: number;
|
|
89
|
+
/** Curl per digit; omitted = 0 (straight). */
|
|
90
|
+
curl?: Partial<Record<HandDigit, number>>;
|
|
91
|
+
/** Fan the fingers apart (0 = together, 1 = wide). */
|
|
92
|
+
spread?: number;
|
|
93
|
+
/** Swing the thumb across the palm (0 = out to the side, 1 = over the fingers). */
|
|
94
|
+
thumbTuck?: number;
|
|
95
|
+
/** Turn the whole hand in the screen plane so the extended thumb points this way. */
|
|
96
|
+
aimThumb?: "up" | "down";
|
|
97
|
+
/**
|
|
98
|
+
* Put the thumb tip HERE (IK on the thumb's three bones, after the fingers
|
|
99
|
+
* are posed): a joint of the posed hand plus an `offset` in palm lengths
|
|
100
|
+
* along [toward the thumb side, toward the fingers, out of the palm]. How a
|
|
101
|
+
* fist wraps the thumb over the curled fingers, or a peace sign holds the
|
|
102
|
+
* ring finger down. Replaces `curl.thumb` / `thumbTuck` as the thumb's pose.
|
|
103
|
+
*/
|
|
104
|
+
thumbTo?: {
|
|
105
|
+
joint: HandJointName;
|
|
106
|
+
offset?: [number, number, number];
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* The digits drawn brighter on the hint. Default: picked from the gesture
|
|
110
|
+
* (its extended digits, thumb + index for a touch, the thumb for a thumb
|
|
111
|
+
* direction).
|
|
112
|
+
*/
|
|
113
|
+
highlight?: readonly HandDigit[];
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Your own test of a hand shape (any logic, e.g. curl amounts). `side` is the
|
|
117
|
+
* person's hand it is reading.
|
|
118
|
+
*/
|
|
119
|
+
export type HandGestureMatch = (shape: HandShape, side?: Handedness) => boolean;
|
|
120
|
+
/**
|
|
121
|
+
* A gesture: its default copy, how it is detected (`rule`, or `match` for
|
|
122
|
+
* logic a rule cannot express; with both, both must pass) and how the hint
|
|
123
|
+
* hand shows it. Make your own with `defineHandGesture`.
|
|
124
|
+
*/
|
|
125
|
+
export type HandGestureDefinition = {
|
|
126
|
+
/** Default instruction copy. */
|
|
127
|
+
label: string;
|
|
128
|
+
rule?: HandGestureRule;
|
|
129
|
+
match?: HandGestureMatch;
|
|
130
|
+
hint: HandHintPose;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Anything that names a gesture to detect: a built-in name, a rule, a match
|
|
134
|
+
* function or a full definition.
|
|
135
|
+
*/
|
|
136
|
+
export type HandGestureSpec = HandGestureName | HandGestureRule | HandGestureMatch | HandGestureDefinition;
|
|
137
|
+
/**
|
|
138
|
+
* Checks and returns your own gesture definition (it needs a `rule` or a
|
|
139
|
+
* `match`). Pass it anywhere a gesture name goes.
|
|
140
|
+
*
|
|
141
|
+
* ```ts
|
|
142
|
+
* const shaka = defineHandGesture({
|
|
143
|
+
* label: "Hang loose",
|
|
144
|
+
* rule: { digits: { thumb: true, index: false, middle: false, ring: false, pinky: true } },
|
|
145
|
+
* hint: { clip: "callMe" },
|
|
146
|
+
* });
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export declare const defineHandGesture: <T extends HandGestureDefinition>(definition: T) => T;
|
|
150
|
+
/**
|
|
151
|
+
* The instruction vocabulary. Counts (`one` … `five`) accept any digits as
|
|
152
|
+
* long as that many are up; named shapes require specific digits. The middle
|
|
153
|
+
* finger shown alone is deliberately absent (offensive in most places).
|
|
154
|
+
*/
|
|
155
|
+
export declare const HAND_GESTURES: {
|
|
156
|
+
readonly palm: {
|
|
157
|
+
readonly label: "Show your palm";
|
|
158
|
+
readonly rule: {
|
|
159
|
+
readonly count: 5;
|
|
160
|
+
};
|
|
161
|
+
readonly hint: {
|
|
162
|
+
readonly clip: "palm";
|
|
163
|
+
readonly spread: 0.8;
|
|
164
|
+
readonly thumbTuck: 0;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
readonly fist: {
|
|
168
|
+
readonly label: "Make a fist";
|
|
169
|
+
readonly rule: {
|
|
170
|
+
readonly digits: {
|
|
171
|
+
readonly index: false;
|
|
172
|
+
readonly middle: false;
|
|
173
|
+
readonly ring: false;
|
|
174
|
+
readonly pinky: false;
|
|
175
|
+
readonly thumb: false;
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
readonly hint: {
|
|
179
|
+
readonly clip: "fist";
|
|
180
|
+
readonly curl: {
|
|
181
|
+
middle: number;
|
|
182
|
+
index: number;
|
|
183
|
+
thumb: number;
|
|
184
|
+
ring: number;
|
|
185
|
+
pinky: number;
|
|
186
|
+
};
|
|
187
|
+
readonly thumbTuck: 1;
|
|
188
|
+
readonly thumbTo: {
|
|
189
|
+
readonly joint: "indexPip";
|
|
190
|
+
readonly offset: [-0.15, -0.1, 0.13];
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
readonly peace: {
|
|
195
|
+
readonly label: "Show a peace sign";
|
|
196
|
+
readonly rule: {
|
|
197
|
+
readonly digits: {
|
|
198
|
+
readonly index: true;
|
|
199
|
+
readonly middle: true;
|
|
200
|
+
readonly ring: false;
|
|
201
|
+
readonly pinky: false;
|
|
202
|
+
};
|
|
203
|
+
};
|
|
204
|
+
readonly hint: {
|
|
205
|
+
readonly clip: "peace";
|
|
206
|
+
readonly curl: {
|
|
207
|
+
middle: number;
|
|
208
|
+
index: number;
|
|
209
|
+
thumb: number;
|
|
210
|
+
ring: number;
|
|
211
|
+
pinky: number;
|
|
212
|
+
};
|
|
213
|
+
readonly spread: 1;
|
|
214
|
+
readonly thumbTuck: 1;
|
|
215
|
+
readonly thumbTo: {
|
|
216
|
+
readonly joint: "ringPip";
|
|
217
|
+
readonly offset: [0, -0.08, 0.12];
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
readonly thumbUp: {
|
|
222
|
+
readonly label: "Give a thumbs up";
|
|
223
|
+
readonly rule: {
|
|
224
|
+
readonly digits: {
|
|
225
|
+
readonly index: false;
|
|
226
|
+
readonly middle: false;
|
|
227
|
+
readonly ring: false;
|
|
228
|
+
readonly pinky: false;
|
|
229
|
+
readonly thumb: true;
|
|
230
|
+
};
|
|
231
|
+
readonly thumbDirection: "up";
|
|
232
|
+
};
|
|
233
|
+
readonly hint: {
|
|
234
|
+
readonly clip: "thumbUp";
|
|
235
|
+
readonly curl: {
|
|
236
|
+
middle: number;
|
|
237
|
+
index: number;
|
|
238
|
+
thumb: number;
|
|
239
|
+
ring: number;
|
|
240
|
+
pinky: number;
|
|
241
|
+
};
|
|
242
|
+
readonly thumbTuck: 0;
|
|
243
|
+
readonly aimThumb: "up";
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
readonly thumbDown: {
|
|
247
|
+
readonly label: "Give a thumbs down";
|
|
248
|
+
readonly rule: {
|
|
249
|
+
readonly digits: {
|
|
250
|
+
readonly index: false;
|
|
251
|
+
readonly middle: false;
|
|
252
|
+
readonly ring: false;
|
|
253
|
+
readonly pinky: false;
|
|
254
|
+
readonly thumb: true;
|
|
255
|
+
};
|
|
256
|
+
readonly thumbDirection: "down";
|
|
257
|
+
};
|
|
258
|
+
readonly hint: {
|
|
259
|
+
readonly clip: "thumbUp";
|
|
260
|
+
readonly curl: {
|
|
261
|
+
middle: number;
|
|
262
|
+
index: number;
|
|
263
|
+
thumb: number;
|
|
264
|
+
ring: number;
|
|
265
|
+
pinky: number;
|
|
266
|
+
};
|
|
267
|
+
readonly thumbTuck: 0;
|
|
268
|
+
readonly aimThumb: "down";
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
readonly point: {
|
|
272
|
+
readonly label: "Point your index finger";
|
|
273
|
+
readonly rule: {
|
|
274
|
+
readonly digits: {
|
|
275
|
+
readonly index: true;
|
|
276
|
+
readonly middle: false;
|
|
277
|
+
readonly ring: false;
|
|
278
|
+
readonly pinky: false;
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
readonly hint: {
|
|
282
|
+
readonly clip: "one";
|
|
283
|
+
readonly curl: {
|
|
284
|
+
middle: number;
|
|
285
|
+
index: number;
|
|
286
|
+
thumb: number;
|
|
287
|
+
ring: number;
|
|
288
|
+
pinky: number;
|
|
289
|
+
};
|
|
290
|
+
readonly thumbTuck: 0.6;
|
|
291
|
+
readonly thumbTo: {
|
|
292
|
+
readonly joint: "middlePip";
|
|
293
|
+
readonly offset: [0.1, -0.1, 0.1];
|
|
294
|
+
};
|
|
295
|
+
};
|
|
296
|
+
};
|
|
297
|
+
readonly one: {
|
|
298
|
+
readonly label: "Show 1 finger";
|
|
299
|
+
readonly rule: {
|
|
300
|
+
readonly count: 1;
|
|
301
|
+
};
|
|
302
|
+
readonly hint: {
|
|
303
|
+
readonly clip: "one";
|
|
304
|
+
readonly curl: {
|
|
305
|
+
middle: number;
|
|
306
|
+
index: number;
|
|
307
|
+
thumb: number;
|
|
308
|
+
ring: number;
|
|
309
|
+
pinky: number;
|
|
310
|
+
};
|
|
311
|
+
readonly thumbTuck: 1;
|
|
312
|
+
readonly thumbTo: {
|
|
313
|
+
readonly joint: "middlePip";
|
|
314
|
+
readonly offset: [0, -0.08, 0.12];
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
readonly two: {
|
|
319
|
+
readonly label: "Show 2 fingers";
|
|
320
|
+
readonly rule: {
|
|
321
|
+
readonly count: 2;
|
|
322
|
+
};
|
|
323
|
+
readonly hint: {
|
|
324
|
+
readonly clip: "peace";
|
|
325
|
+
readonly curl: {
|
|
326
|
+
middle: number;
|
|
327
|
+
index: number;
|
|
328
|
+
thumb: number;
|
|
329
|
+
ring: number;
|
|
330
|
+
pinky: number;
|
|
331
|
+
};
|
|
332
|
+
readonly spread: 0.6;
|
|
333
|
+
readonly thumbTuck: 1;
|
|
334
|
+
readonly thumbTo: {
|
|
335
|
+
readonly joint: "ringPip";
|
|
336
|
+
readonly offset: [0, -0.08, 0.12];
|
|
337
|
+
};
|
|
338
|
+
};
|
|
339
|
+
};
|
|
340
|
+
readonly three: {
|
|
341
|
+
readonly label: "Show 3 fingers";
|
|
342
|
+
readonly rule: {
|
|
343
|
+
readonly count: 3;
|
|
344
|
+
};
|
|
345
|
+
readonly hint: {
|
|
346
|
+
readonly clip: "three";
|
|
347
|
+
readonly curl: {
|
|
348
|
+
middle: number;
|
|
349
|
+
index: number;
|
|
350
|
+
thumb: number;
|
|
351
|
+
ring: number;
|
|
352
|
+
pinky: number;
|
|
353
|
+
};
|
|
354
|
+
readonly spread: 0.6;
|
|
355
|
+
readonly thumbTuck: 1;
|
|
356
|
+
readonly thumbTo: {
|
|
357
|
+
readonly joint: "pinkyPip";
|
|
358
|
+
readonly offset: [0, -0.08, 0.12];
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
readonly four: {
|
|
363
|
+
readonly label: "Show 4 fingers";
|
|
364
|
+
readonly rule: {
|
|
365
|
+
readonly count: 4;
|
|
366
|
+
};
|
|
367
|
+
readonly hint: {
|
|
368
|
+
readonly clip: "four";
|
|
369
|
+
readonly curl: {
|
|
370
|
+
readonly thumb: 1;
|
|
371
|
+
};
|
|
372
|
+
readonly spread: 0.6;
|
|
373
|
+
readonly thumbTuck: 1;
|
|
374
|
+
readonly thumbTo: {
|
|
375
|
+
readonly joint: "ringMcp";
|
|
376
|
+
readonly offset: [0, -0.2, 0.1];
|
|
377
|
+
};
|
|
378
|
+
};
|
|
379
|
+
};
|
|
380
|
+
readonly five: {
|
|
381
|
+
readonly label: "Show 5 fingers";
|
|
382
|
+
readonly rule: {
|
|
383
|
+
readonly count: 5;
|
|
384
|
+
};
|
|
385
|
+
readonly hint: {
|
|
386
|
+
readonly clip: "palm";
|
|
387
|
+
readonly spread: 0.8;
|
|
388
|
+
readonly thumbTuck: 0;
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
readonly rock: {
|
|
392
|
+
readonly label: "Rock on";
|
|
393
|
+
readonly rule: {
|
|
394
|
+
readonly digits: {
|
|
395
|
+
readonly index: true;
|
|
396
|
+
readonly middle: false;
|
|
397
|
+
readonly ring: false;
|
|
398
|
+
readonly pinky: true;
|
|
399
|
+
};
|
|
400
|
+
};
|
|
401
|
+
readonly hint: {
|
|
402
|
+
readonly clip: "rock";
|
|
403
|
+
readonly yaw: 180;
|
|
404
|
+
readonly curl: {
|
|
405
|
+
middle: number;
|
|
406
|
+
index: number;
|
|
407
|
+
thumb: number;
|
|
408
|
+
ring: number;
|
|
409
|
+
pinky: number;
|
|
410
|
+
};
|
|
411
|
+
readonly spread: 0.8;
|
|
412
|
+
readonly thumbTuck: 1;
|
|
413
|
+
readonly thumbTo: {
|
|
414
|
+
readonly joint: "middlePip";
|
|
415
|
+
readonly offset: [-0.05, -0.08, 0.12];
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
};
|
|
419
|
+
readonly loveYou: {
|
|
420
|
+
readonly label: "Sign I love you";
|
|
421
|
+
readonly rule: {
|
|
422
|
+
readonly digits: {
|
|
423
|
+
readonly thumb: true;
|
|
424
|
+
readonly index: true;
|
|
425
|
+
readonly middle: false;
|
|
426
|
+
readonly ring: false;
|
|
427
|
+
readonly pinky: true;
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
readonly hint: {
|
|
431
|
+
readonly clip: "loveYou";
|
|
432
|
+
readonly curl: {
|
|
433
|
+
middle: number;
|
|
434
|
+
index: number;
|
|
435
|
+
thumb: number;
|
|
436
|
+
ring: number;
|
|
437
|
+
pinky: number;
|
|
438
|
+
};
|
|
439
|
+
readonly spread: 0.8;
|
|
440
|
+
readonly thumbTuck: 0;
|
|
441
|
+
};
|
|
442
|
+
};
|
|
443
|
+
readonly callMe: {
|
|
444
|
+
readonly label: "Call me";
|
|
445
|
+
readonly rule: {
|
|
446
|
+
readonly digits: {
|
|
447
|
+
readonly thumb: true;
|
|
448
|
+
readonly index: false;
|
|
449
|
+
readonly middle: false;
|
|
450
|
+
readonly ring: false;
|
|
451
|
+
readonly pinky: true;
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
readonly hint: {
|
|
455
|
+
readonly clip: "callMe";
|
|
456
|
+
readonly roll: 103;
|
|
457
|
+
readonly curl: {
|
|
458
|
+
middle: number;
|
|
459
|
+
index: number;
|
|
460
|
+
thumb: number;
|
|
461
|
+
ring: number;
|
|
462
|
+
pinky: number;
|
|
463
|
+
};
|
|
464
|
+
readonly spread: 0.8;
|
|
465
|
+
readonly thumbTuck: 0;
|
|
466
|
+
};
|
|
467
|
+
};
|
|
468
|
+
readonly ok: {
|
|
469
|
+
readonly label: "Make an OK sign";
|
|
470
|
+
readonly rule: {
|
|
471
|
+
readonly thumbIndexTouch: true;
|
|
472
|
+
readonly digits: {
|
|
473
|
+
readonly middle: true;
|
|
474
|
+
readonly ring: true;
|
|
475
|
+
readonly pinky: true;
|
|
476
|
+
};
|
|
477
|
+
};
|
|
478
|
+
readonly hint: {
|
|
479
|
+
readonly clip: "ok";
|
|
480
|
+
readonly yaw: 124;
|
|
481
|
+
readonly curl: {
|
|
482
|
+
readonly thumb: 0.3;
|
|
483
|
+
readonly index: 0.5;
|
|
484
|
+
};
|
|
485
|
+
readonly spread: 0.6;
|
|
486
|
+
readonly thumbTuck: 0.4;
|
|
487
|
+
};
|
|
488
|
+
};
|
|
489
|
+
};
|
|
490
|
+
export type HandGestureName = keyof typeof HAND_GESTURES;
|
|
491
|
+
export declare const HAND_GESTURE_NAMES: HandGestureName[];
|
|
492
|
+
/** The full definition a spec names (`undefined` for a bare rule or match function). */
|
|
493
|
+
export declare const resolveHandGesture: (gesture: HandGestureSpec) => HandGestureDefinition | undefined;
|
|
494
|
+
/**
|
|
495
|
+
* Whether a shape satisfies a gesture: a name from `HAND_GESTURES`, a rule, a
|
|
496
|
+
* match function or a definition. `side` is passed on to match functions.
|
|
497
|
+
*/
|
|
498
|
+
export declare const matchHandGesture: (shape: HandShape, gesture: HandGestureSpec, side?: Handedness) => boolean;
|
|
499
|
+
/** Every named gesture a shape satisfies (several can: `two` and `peace`). */
|
|
500
|
+
export declare const matchingHandGestures: (shape: HandShape) => HandGestureName[];
|
|
501
|
+
/** Rig-local bone rotations, by joint name. */
|
|
502
|
+
export type HandClipPose = Partial<Record<HandJointName, THREE.Quaternion>>;
|
|
503
|
+
/**
|
|
504
|
+
* How far into a hint pose: one amount for the whole hand, or one per digit
|
|
505
|
+
* (to stagger the fingers). 0 = rest, 1 = the pose; up to 1.1 overshoots a
|
|
506
|
+
* little (a settle).
|
|
507
|
+
*/
|
|
508
|
+
export type HandHintAmount = number | ((digit: HandDigit) => number);
|
|
509
|
+
/**
|
|
510
|
+
* The pose an authored clip holds: the first key of each `<joint>.quaternion`
|
|
511
|
+
* track (a glTF animation targeting the rig's joint nodes). Cached per clip.
|
|
512
|
+
*/
|
|
513
|
+
export declare const readHandClipPose: (clip: THREE.AnimationClip) => HandClipPose;
|
|
514
|
+
/**
|
|
515
|
+
* Poses a bound rig (`bindHandRig`) into a gesture's hint at `amount`
|
|
516
|
+
* (0 = the model's rest, 1 = the full hint; or per digit, see
|
|
517
|
+
* `HandHintAmount`). With `clips` holding the hint's
|
|
518
|
+
* `clip` (e.g. the GLB's `animations`), each bone turns from its rest toward
|
|
519
|
+
* the authored pose. Otherwise the pose is built procedurally: bends about
|
|
520
|
+
* axes derived from the rig's own rest pose — flex about (bone direction ×
|
|
521
|
+
* palm normal), spread and thumb tuck about the palm normal — carried down
|
|
522
|
+
* each digit, so any contract rig works. Writes `bone.quaternion`s.
|
|
523
|
+
*/
|
|
524
|
+
export declare const applyHandHintPose: (binding: HandRigBinding, hint: HandHintPose, amount?: HandHintAmount, clips?: readonly THREE.AnimationClip[]) => void;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { TrackerPoint } from '../types/common';
|
|
2
|
+
import { Handedness } from '../types/hand-tracking';
|
|
3
|
+
/**
|
|
4
|
+
* The 21 MediaPipe hand joints, in landmark order (index = MediaPipe index).
|
|
5
|
+
* CMC / MCP / PIP / DIP / IP are the knuckles from the wrist outward; the
|
|
6
|
+
* thumb has CMC, MCP, IP, tip, the fingers MCP, PIP, DIP, tip.
|
|
7
|
+
*/
|
|
8
|
+
export declare const HAND_JOINT_NAMES: readonly ["wrist", "thumbCmc", "thumbMcp", "thumbIp", "thumbTip", "indexMcp", "indexPip", "indexDip", "indexTip", "middleMcp", "middlePip", "middleDip", "middleTip", "ringMcp", "ringPip", "ringDip", "ringTip", "pinkyMcp", "pinkyPip", "pinkyDip", "pinkyTip"];
|
|
9
|
+
export type HandJointName = (typeof HAND_JOINT_NAMES)[number];
|
|
10
|
+
export declare const HAND_JOINT_INDEX: Readonly<Record<HandJointName, number>>;
|
|
11
|
+
/**
|
|
12
|
+
* One tracked hand, both spaces.
|
|
13
|
+
*
|
|
14
|
+
* - `world`: 21 joints in the hand's own metric frame — CENTIMETRES, origin at
|
|
15
|
+
* MediaPipe's hand centre (roughly the middle of the palm), three.js axes for
|
|
16
|
+
* the feed as displayed: +X screen right, +Y up, +Z toward the viewer. This is
|
|
17
|
+
* the true 3D shape (finger bend, palm facing), independent of distance.
|
|
18
|
+
* - `image`: the same 21 joints in tracker space (centre origin, ±1, Y up; `z`
|
|
19
|
+
* is MediaPipe's relative depth) — what `HandTracker` has always published.
|
|
20
|
+
* Unproject with `trackerToWorld` to place things on screen.
|
|
21
|
+
*/
|
|
22
|
+
export type HandPose = {
|
|
23
|
+
/** The person's anatomical hand on every source (mirrored webcam or not). */
|
|
24
|
+
handedness: Handedness;
|
|
25
|
+
/** MediaPipe's handedness confidence, 0..1. */
|
|
26
|
+
score: number;
|
|
27
|
+
world: TrackerPoint[];
|
|
28
|
+
image: TrackerPoint[];
|
|
29
|
+
/** `performance.now()` of the detection this pose came from. */
|
|
30
|
+
timestampMs: number;
|
|
31
|
+
/** True while the hand is lost and this pose is being held (see `holdMs`). */
|
|
32
|
+
held: boolean;
|
|
33
|
+
};
|
|
34
|
+
export type HandPoses = {
|
|
35
|
+
left: HandPose | null;
|
|
36
|
+
right: HandPose | null;
|
|
37
|
+
};
|
|
38
|
+
/** A raw detection before identity assignment. `handedness` is already anatomical. */
|
|
39
|
+
export type HandDetection = {
|
|
40
|
+
handedness: Handedness | undefined;
|
|
41
|
+
score: number;
|
|
42
|
+
world: TrackerPoint[];
|
|
43
|
+
image: TrackerPoint[];
|
|
44
|
+
};
|
|
45
|
+
export type AssignHandPosesOptions = {
|
|
46
|
+
/** Keep a lost hand (marked `held`) this long before dropping it. Default 200 ms. */
|
|
47
|
+
holdMs?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Below this handedness confidence a label that disagrees with where the
|
|
50
|
+
* hand was a moment ago loses to continuity. Default 0.8.
|
|
51
|
+
*/
|
|
52
|
+
confidentScore?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Continuity only applies while the previous pose is this recent. Default
|
|
55
|
+
* 500 ms: a hand gone longer than that is assigned by its label alone.
|
|
56
|
+
*/
|
|
57
|
+
continuityMs?: number;
|
|
58
|
+
};
|
|
59
|
+
export declare const HAND_POSE_DEFAULT_HOLD_MS = 200;
|
|
60
|
+
/**
|
|
61
|
+
* Assigns this frame's detections to a stable left / right slot.
|
|
62
|
+
*
|
|
63
|
+
* MediaPipe labels each hand independently, so it can call both hands "left",
|
|
64
|
+
* or flip one hand's label for a frame when it turns edge-on. A rig bound to
|
|
65
|
+
* that label would jump to the other hand. The rules, in order:
|
|
66
|
+
*
|
|
67
|
+
* 1. Two hands with different, confident labels: take the labels.
|
|
68
|
+
* 2. Otherwise, when both slots were seen within `continuityMs`, take the
|
|
69
|
+
* pairing that keeps each wrist nearest to where that slot's wrist was.
|
|
70
|
+
* 3. Two hands with the same label and no history: the higher score keeps
|
|
71
|
+
* the label, the other hand gets the other side.
|
|
72
|
+
* 4. One hand: its label, unless the label is not confident and the hand sits
|
|
73
|
+
* where the OTHER slot's hand was a moment ago (it is that hand, mislabeled).
|
|
74
|
+
*
|
|
75
|
+
* A slot with no detection keeps its previous pose for `holdMs` (marked
|
|
76
|
+
* `held`), then becomes `null`. Pure: pass the previous result back in.
|
|
77
|
+
*/
|
|
78
|
+
export declare const assignHandPoses: (detections: readonly HandDetection[], previous: HandPoses, nowMs: number, { holdMs, confidentScore, continuityMs, }?: AssignHandPosesOptions) => HandPoses;
|
|
79
|
+
/**
|
|
80
|
+
* MediaPipe's hand landmarker labels the hand AS IT APPEARS in the frame it
|
|
81
|
+
* is given (measured on the SDK's `hand_tracking.task`: an unmirrored right
|
|
82
|
+
* hand reads "Right", the same frame flipped reads "Left" — not the mirrored-
|
|
83
|
+
* selfie assumption some MediaPipe docs describe). The SDK analyzes the feed as
|
|
84
|
+
* displayed: straight for the rear camera, images and video (labels are
|
|
85
|
+
* anatomical), mirrored for the front webcam (labels are swapped). The same
|
|
86
|
+
* rule as every MediaPipe side (`personSide`, GROUNDING "Left and right").
|
|
87
|
+
*/
|
|
88
|
+
export declare const anatomicalHandedness: (label: string | undefined, feedMirrored: boolean) => Handedness | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* MediaPipe world landmark (metres, origin at the hand centre, image axes:
|
|
91
|
+
* +X right, +Y down, +Z away from the camera) → SDK hand world joint
|
|
92
|
+
* (centimetres, three.js axes: +X right, +Y up, +Z toward the viewer).
|
|
93
|
+
*/
|
|
94
|
+
export declare const handWorldLandmarkToJoint: (landmark: {
|
|
95
|
+
x: number;
|
|
96
|
+
y: number;
|
|
97
|
+
z: number;
|
|
98
|
+
}, target?: TrackerPoint) => TrackerPoint;
|