@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,52 @@
|
|
|
1
|
+
import { FeedPoint, FeedSourceKind, PixelSize, SourceOrientation, SourcePoint } from './spaces';
|
|
2
|
+
/** A cover/contain fit of `source` into `destination`: scale and centred offset in destination pixels. */
|
|
3
|
+
export type FitLayout = {
|
|
4
|
+
scale: number;
|
|
5
|
+
drawWidth: number;
|
|
6
|
+
drawHeight: number;
|
|
7
|
+
offsetX: number;
|
|
8
|
+
offsetY: number;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Scale and centred offset that fits `source` into `destination`. `cover`
|
|
12
|
+
* fills the destination and crops the excess; `contain` shows all of the
|
|
13
|
+
* source and letterboxes. `zoom` (> 1) enlarges the draw rect about the
|
|
14
|
+
* centre, cropping more of the edges — the session's `cameraZoom`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const computeFitLayout: (source: PixelSize, destination: PixelSize, fit?: "cover" | "contain", zoom?: number) => FitLayout | null;
|
|
17
|
+
/**
|
|
18
|
+
* How the session turns a source frame into the feed: cover-crop to the
|
|
19
|
+
* render size, framing `zoom`, and a horizontal mirror for the webcam.
|
|
20
|
+
* This is the one description of that transform; the blit loop, the
|
|
21
|
+
* segmentation mask fit and every point conversion derive from it.
|
|
22
|
+
*/
|
|
23
|
+
export type FeedCrop = FitLayout & {
|
|
24
|
+
source: PixelSize;
|
|
25
|
+
feed: PixelSize;
|
|
26
|
+
zoom: number;
|
|
27
|
+
mirrored: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** The session mirrors the (front) webcam feed only; the rear camera, images and videos are drawn straight. An unknown kind is treated as the webcam. */
|
|
30
|
+
export declare const isMirroredSourceKind: (kind: FeedSourceKind) => boolean;
|
|
31
|
+
export declare const computeFeedCrop: ({ source, feed, zoom, mirrored, }: {
|
|
32
|
+
source: PixelSize;
|
|
33
|
+
feed: PixelSize;
|
|
34
|
+
zoom?: number;
|
|
35
|
+
mirrored?: boolean;
|
|
36
|
+
}) => FeedCrop | null;
|
|
37
|
+
/** Source pixel → feed normalized. Mirrors first (the session flips the frame before cropping). */
|
|
38
|
+
export declare const sourceToFeed: (point: SourcePoint, crop: FeedCrop, target?: FeedPoint) => FeedPoint;
|
|
39
|
+
/** Feed normalized → source pixel (the inverse of `sourceToFeed`; may fall outside the source when cropped). */
|
|
40
|
+
export declare const feedToSource: (point: FeedPoint, crop: FeedCrop, target?: SourcePoint) => SourcePoint;
|
|
41
|
+
/** True when a feed point lies inside the part of the source the crop kept. */
|
|
42
|
+
export declare const isFeedPointInSource: (point: FeedPoint, crop: FeedCrop) => boolean;
|
|
43
|
+
/** Flip a feed point horizontally (x → 1 − x). Positions in the feed never need this; use it for *direction* signs. */
|
|
44
|
+
export declare const mirrorFeedX: <P extends FeedPoint>(point: P, target?: FeedPoint) => FeedPoint;
|
|
45
|
+
/**
|
|
46
|
+
* Rotate a source pixel by the clockwise `orientation` the frame was given
|
|
47
|
+
* before use (a native capture delivered sideways). Returns the point in the
|
|
48
|
+
* rotated frame, whose size is `width`×`height` swapped for 90 / 270.
|
|
49
|
+
*/
|
|
50
|
+
export declare const orientSourcePoint: (point: SourcePoint, size: PixelSize, orientation: SourceOrientation, target?: SourcePoint) => SourcePoint;
|
|
51
|
+
/** Size of a frame after `orientSourcePoint`'s rotation. */
|
|
52
|
+
export declare const orientedSize: (size: PixelSize, orientation: SourceOrientation) => PixelSize;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { FeedPoint, FeedSourceKind, PixelSize, SourceOrientation, SourcePoint, ViewportPoint, } from './spaces';
|
|
2
|
+
export { computeFeedCrop, computeFitLayout, feedToSource, isFeedPointInSource, isMirroredSourceKind, mirrorFeedX, orientSourcePoint, orientedSize, sourceToFeed, } from './feed';
|
|
3
|
+
export type { FeedCrop, FitLayout } from './feed';
|
|
4
|
+
export { feedSidedName, otherSide, personLeftSign, personSide, swapSidedName } from './side';
|
|
5
|
+
export type { PersonSide } from './side';
|
|
6
|
+
export { feedToWorld, trackerToWorld, worldToFeed, worldToTracker } from './world';
|
|
7
|
+
export { feedToScreenPixels, feedToTracker, feedToViewport, screenPixelsToFeed, trackerToFeed, viewportToFeed, } from './viewport';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Left and right (#298). Every SDK name with a side means the PERSON'S OWN
|
|
3
|
+
* side, on every source. MediaPipe names sides as the image shows them: its
|
|
4
|
+
* face mesh's "left" (landmark 263, the canonical head frame's +X), its pose
|
|
5
|
+
* "left" landmarks (11, 13, 15 …), its hand "Left" label and its `…Left`
|
|
6
|
+
* blendshapes all sit on the image's right for a person facing the camera.
|
|
7
|
+
* That is the person's own left on an unmirrored feed (rear camera, image,
|
|
8
|
+
* video) and their RIGHT on the mirrored front webcam, which the session
|
|
9
|
+
* mirrors before any model sees it. These helpers turn one into the other.
|
|
10
|
+
*/
|
|
11
|
+
/** A side of the person (or MediaPipe's name for one). */
|
|
12
|
+
export type PersonSide = "left" | "right";
|
|
13
|
+
/** The other side. */
|
|
14
|
+
export declare const otherSide: (side: PersonSide) => PersonSide;
|
|
15
|
+
/**
|
|
16
|
+
* MediaPipe's side (mesh, pose landmark, hand label, blendshape) → the
|
|
17
|
+
* person's own side on this feed. The map is its own inverse, so it also
|
|
18
|
+
* turns a person's side into the MediaPipe side to read on this feed.
|
|
19
|
+
* `feedMirrored` is the session's mirror state (`useXRMirrored()`; the front
|
|
20
|
+
* webcam is mirrored).
|
|
21
|
+
*/
|
|
22
|
+
export declare const personSide: (side: PersonSide, feedMirrored: boolean) => PersonSide;
|
|
23
|
+
/**
|
|
24
|
+
* Swaps the first `left` / `right` (or `Left` / `Right`) in a sided name:
|
|
25
|
+
* `"face.leftCheek"` ↔ `"face.rightCheek"`, `"leftEarLobe"` ↔ `"rightEarLobe"`,
|
|
26
|
+
* `"nose.left"` ↔ `"nose.right"`. A name without a side is returned as it is.
|
|
27
|
+
*/
|
|
28
|
+
export declare const swapSidedName: <T extends string>(name: T) => T;
|
|
29
|
+
/**
|
|
30
|
+
* The person-side name → the name MediaPipe gives that part on this feed
|
|
31
|
+
* (and back: the map is its own inverse). Unchanged on an unmirrored feed;
|
|
32
|
+
* left and right swapped on the mirrored webcam.
|
|
33
|
+
*/
|
|
34
|
+
export declare const feedSidedName: <T extends string>(name: T, feedMirrored: boolean) => T;
|
|
35
|
+
/**
|
|
36
|
+
* The direction of the person's own left along the canonical head frame's X
|
|
37
|
+
* and the feed's x: `+1` on an unmirrored feed (the person's left is on the
|
|
38
|
+
* image's right, canonical +X), `−1` on the mirrored webcam.
|
|
39
|
+
*/
|
|
40
|
+
export declare const personLeftSign: (feedMirrored: boolean) => 1 | -1;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The coordinate spaces a tracking consumer meets, named once.
|
|
3
|
+
*
|
|
4
|
+
* source ──cover-crop + zoom (+ mirror for webcam)──▶ feed ◀──identity per axis──▶ viewport
|
|
5
|
+
* │ │
|
|
6
|
+
* ▼ ▼
|
|
7
|
+
* tracker screen (design px)
|
|
8
|
+
* │
|
|
9
|
+
* ▼ (camera, z = 0 plane)
|
|
10
|
+
* world
|
|
11
|
+
*
|
|
12
|
+
* - **source**: the raw media frame (webcam, video, image) in pixels; top-left
|
|
13
|
+
* origin, Y down. Never mirrored.
|
|
14
|
+
* - **feed**: the session camera texture, i.e. the source cover-cropped to
|
|
15
|
+
* the render size with `cameraZoom` and, for the webcam only, mirrored.
|
|
16
|
+
* Normalized 0..1, top-left origin, Y down. Every landmark and every SDK
|
|
17
|
+
* mask lives here; MediaPipe's `z` rides along as tracker-relative depth.
|
|
18
|
+
* - **tracker**: feed remapped to center origin, X right, Y up, Z toward the
|
|
19
|
+
* viewer (`TrackerPoint`); what hand, body and holistic nodes publish.
|
|
20
|
+
* - **viewport**: the rendered canvas in CSS pixels, top-left, Y down. The
|
|
21
|
+
* feed fills it exactly, so feed and viewport agree per axis.
|
|
22
|
+
* - **screen**: SDK design pixels (720×1280 by default), center origin, Y up.
|
|
23
|
+
* - **world**: three.js world space; tracked content sits on the z = 0 plane.
|
|
24
|
+
*/
|
|
25
|
+
/** Pixel size of a frame or surface. */
|
|
26
|
+
export type PixelSize = {
|
|
27
|
+
width: number;
|
|
28
|
+
height: number;
|
|
29
|
+
};
|
|
30
|
+
/** Source-media pixels: top-left origin, Y down, never mirrored. */
|
|
31
|
+
export type SourcePoint = {
|
|
32
|
+
x: number;
|
|
33
|
+
y: number;
|
|
34
|
+
};
|
|
35
|
+
/** Feed (camera texture) coordinates, normalized 0..1, top-left origin, Y down; `z` optional depth. */
|
|
36
|
+
export type FeedPoint = {
|
|
37
|
+
x: number;
|
|
38
|
+
y: number;
|
|
39
|
+
z?: number;
|
|
40
|
+
};
|
|
41
|
+
/** Viewport pixels: top-left origin, Y down. */
|
|
42
|
+
export type ViewportPoint = {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
};
|
|
46
|
+
/** The session media kinds; `undefined` is treated as the webcam. Only `webcam` (and undefined) is mirrored. */
|
|
47
|
+
export type FeedSourceKind = "webcam" | "rear-camera" | "image" | "video" | undefined;
|
|
48
|
+
/** Clockwise rotation applied to a source frame before it is used, in degrees. */
|
|
49
|
+
export type SourceOrientation = 0 | 90 | 180 | 270;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ScreenPixelPoint } from '../screen2d/coordinates';
|
|
2
|
+
import { ScreenTransformRoot } from '../screen2d/screenTransform';
|
|
3
|
+
import { TrackerPoint } from '../types/common';
|
|
4
|
+
import { FeedPoint, PixelSize, ViewportPoint } from './spaces';
|
|
5
|
+
/** Feed point → tracker point (center origin, Y up, Z toward the viewer). */
|
|
6
|
+
export declare const feedToTracker: (point: FeedPoint, target?: TrackerPoint) => TrackerPoint;
|
|
7
|
+
/** Tracker point → feed point. */
|
|
8
|
+
export declare const trackerToFeed: (point: TrackerPoint, target?: FeedPoint) => FeedPoint;
|
|
9
|
+
/** Feed point → viewport pixels. The feed fills the viewport, so this is a per-axis scale. */
|
|
10
|
+
export declare const feedToViewport: (point: FeedPoint, viewport: PixelSize, target?: ViewportPoint) => ViewportPoint;
|
|
11
|
+
/** Viewport pixels → feed point. */
|
|
12
|
+
export declare const viewportToFeed: (point: ViewportPoint, viewport: PixelSize, target?: FeedPoint) => FeedPoint;
|
|
13
|
+
/** Feed point → SDK design pixels (center origin, Y up). */
|
|
14
|
+
export declare const feedToScreenPixels: (point: FeedPoint, viewport: PixelSize, options?: {
|
|
15
|
+
root?: ScreenTransformRoot;
|
|
16
|
+
target?: ScreenPixelPoint;
|
|
17
|
+
}) => ScreenPixelPoint;
|
|
18
|
+
/** SDK design pixels → feed point. */
|
|
19
|
+
export declare const screenPixelsToFeed: (point: ScreenPixelPoint, viewport: PixelSize, options?: {
|
|
20
|
+
root?: ScreenTransformRoot;
|
|
21
|
+
target?: FeedPoint;
|
|
22
|
+
}) => FeedPoint;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TrackerPoint } from '../types/common';
|
|
2
|
+
import { FeedPoint } from './spaces';
|
|
3
|
+
import * as THREE from "three";
|
|
4
|
+
/**
|
|
5
|
+
* Feed point (0..1, top-left, Y down) → world position on the `z = planeZ`
|
|
6
|
+
* plane (default 0, the tracking plane). Depth (`z`) does not move the
|
|
7
|
+
* result: the ray through the pixel is the same at any depth.
|
|
8
|
+
*/
|
|
9
|
+
export declare const feedToWorld: (point: FeedPoint, camera: THREE.Camera, out?: THREE.Vector3, planeZ?: number) => THREE.Vector3;
|
|
10
|
+
/** Tracker point (center origin, Y up) → world position on the `z = planeZ` plane. */
|
|
11
|
+
export declare const trackerToWorld: (point: TrackerPoint, camera: THREE.Camera, out?: THREE.Vector3, planeZ?: number) => THREE.Vector3;
|
|
12
|
+
/** World position → feed point (0..1, top-left, Y down); `z` carries the NDC depth. */
|
|
13
|
+
export declare const worldToFeed: (point: THREE.Vector3Like, camera: THREE.Camera, target?: Required<FeedPoint>) => Required<FeedPoint>;
|
|
14
|
+
/** World position → tracker point (center origin, Y up); `z` carries the NDC depth. */
|
|
15
|
+
export declare const worldToTracker: (point: THREE.Vector3Like, camera: THREE.Camera, target?: TrackerPoint) => TrackerPoint;
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const
|
|
16
|
+
*/const U=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],q=j.createLucideIcon("palette",U);/**
|
|
17
17
|
* @license lucide-react v1.17.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const U=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],K=j.createLucideIcon("power",U),Y={transform:{enabled:!0,anchors:{left:-.5,right:.5,top:.2,bottom:-.2},offsets:{left:0,right:0,top:0,bottom:0},pivot:[0,0]},material:{enabled:!0,text:"Hello from Vincentt",fontSize:220,color:"#ffffff",bgColor:"#14286e",borderRadius:24,aspect:3,opacity:1,padding:32,borderWidth:0,borderColor:"transparent"},textLabel:{enabled:!0,position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]}},G={position:"fixed",left:14,top:104,zIndex:2e4,pointerEvents:"none"},N={pointerEvents:"auto",width:298,borderRadius:16,border:"1px solid rgba(255,255,255,0.12)",background:"rgba(8, 15, 28, 0.58)",boxShadow:"0 16px 36px rgba(0,0,0,0.28)",backdropFilter:"blur(20px) saturate(1.1)",WebkitBackdropFilter:"blur(20px) saturate(1.1)",color:"#f8fafc",overflow:"hidden"},Z={...N,width:32,height:32,borderRadius:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"},H={display:"flex",width:14,height:14,alignItems:"center",justifyContent:"center",color:"#f8fafc"},J={display:"flex",alignItems:"center",gap:7,padding:"7px 8px",borderBottom:"1px solid rgba(255,255,255,0.08)"},Q={width:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:"grab",color:"rgba(148,163,184,0.82)",flex:"0 0 auto"},ee={display:"flex",alignItems:"center",gap:6,fontSize:11,fontWeight:600,letterSpacing:.2,minWidth:0},z={display:"flex",width:18,height:18,alignItems:"center",justifyContent:"center",borderRadius:6,background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.08)",color:"#e2e8f0",flex:"0 0 auto"},te={display:"inline-flex",alignItems:"center",justifyContent:"center",height:24,padding:"0 8px 0 7px",borderRadius:8,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.05)",color:"#e2e8f0",fontSize:10,cursor:"pointer",gap:5},le={display:"inline-flex",alignItems:"center",justifyContent:"center",width:24,height:24,borderRadius:8,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.05)",color:"#e2e8f0",cursor:"pointer",padding:0,flex:"0 0 auto"},se={display:"flex",flexDirection:"column",gap:6,padding:7},ae={borderRadius:12,border:"1px solid rgba(255,255,255,0.08)",background:"rgba(255,255,255,0.03)",overflow:"hidden"},ie={display:"flex",alignItems:"center",gap:7,padding:"6px 7px"},oe={display:"flex",alignItems:"center",gap:6,fontSize:11,fontWeight:500,flex:"1 1 auto",minWidth:0},ne={width:28,height:16,borderRadius:999,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.08)",padding:2,display:"flex",alignItems:"center",cursor:"pointer",flex:"0 0 auto"},re=r=>({width:10,height:10,borderRadius:999,background:r?"#f8fafc":"rgba(148,163,184,0.7)",transform:r?"translateX(12px)":"translateX(0)",transition:"transform 140ms ease, background 140ms ease"}),de={display:"grid",gap:7,padding:"0 7px 7px"},I={display:"grid",gap:5},v={fontSize:9,color:"rgba(226,232,240,0.66)",letterSpacing:.4,textTransform:"uppercase"},S={display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:6},i={display:"flex",flexDirection:"column",gap:4},o={fontSize:9,color:"rgba(226,232,240,0.72)",letterSpacing:.2},M={width:"100%",height:24,borderRadius:7,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(15,23,42,0.68)",color:"#f8fafc",fontSize:10.5,outline:"none",padding:"0 7px",boxSizing:"border-box"},C={width:"100%",height:24,borderRadius:7,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(15,23,42,0.68)",color:"#f8fafc",fontSize:10.5,outline:"none",padding:2,boxSizing:"border-box",cursor:"pointer"},ce={...M,fontVariantNumeric:"tabular-nums"},R={width:12,height:12,display:"flex"},D=()=>e.jsx(K,{size:12,strokeWidth:1.9}),xe=()=>e.jsx(q,{size:12,strokeWidth:1.9}),pe=()=>e.jsx(O,{size:12,strokeWidth:1.9}),be=()=>e.jsx("svg",{width:"11",height:"15",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M8 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 18a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 18a2 2 0 1 1-4 0 2 2 0 0 1 4 0z"})}),ye=r=>/^-?\d*(\.\d*)?$/.test(r),d=({value:r,onChange:h,step:x=1})=>{const[b,y]=g.useState(String(r));return g.useEffect(()=>{y(String(r))},[r]),e.jsx("input",{type:"text",inputMode:"decimal",pattern:"-?[0-9]*[.,]?[0-9]*",style:ce,value:b,onChange:n=>{const c=n.target.value;if(!ye(c)||(y(c),c===""||c==="-"||c==="."||c==="-."))return;const p=Number(c);Number.isNaN(p)||h(p)},onBlur:()=>{if(b===""||b==="-"||b==="."||b==="-."){y(String(r));return}const n=Number(b);if(Number.isNaN(n)){y(String(r));return}y(String(n)),n!==r&&h(n)},onKeyDown:n=>{if(n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();const c=n.shiftKey?x*10:n.altKey?x/10:x,p=n.key==="ArrowUp"?r+c:r-c,u=Number.isInteger(p)?p:Number(p.toFixed(6));y(String(u)),h(u)}})},ge=({style:r,value:h,onChange:x,children:b})=>{const[y,n]=g.useState(!0),[c,p]=g.useState(!1),[u,T]=g.useState({x:14,y:104}),[W,E]=g.useState(Y),f=g.useRef(null),s=h??W,a=l=>{const t=l(s);h||E(t),x==null||x(t)};g.useEffect(()=>{const l=m=>{f.current&&T({x:Math.max(8,m.clientX-f.current.x),y:Math.max(8,m.clientY-f.current.y)})},t=()=>{f.current=null,document.body.classList.remove("select-none")};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",t)}},[]);const P=async()=>{await navigator.clipboard.writeText(JSON.stringify(s,null,2)),p(!0),window.setTimeout(()=>p(!1),1200)},B=l=>{const t=l.currentTarget.getBoundingClientRect();f.current={x:l.clientX-t.left,y:l.clientY-t.top},document.body.classList.add("select-none"),l.currentTarget.setPointerCapture(l.pointerId)},w=(l,t,m,_,k)=>e.jsxs("div",{style:ae,children:[e.jsxs("div",{style:ie,children:[e.jsx("button",{type:"button",onClick:()=>a(L=>({...L,[l]:{...L[l],enabled:!L[l].enabled}})),style:ne,"aria-label":`Toggle ${t}`,children:e.jsx("div",{style:re(k)})}),e.jsxs("div",{style:oe,children:[e.jsx("span",{style:z,children:m}),e.jsx("span",{children:t})]})]}),k?e.jsx("div",{style:de,children:_}):null]},l);return typeof document>"u"?null:V.createPortal(e.jsx("div",{style:{...G,left:u.x,top:u.y,...r},children:y?e.jsxs("div",{style:N,children:[e.jsxs("div",{style:J,children:[e.jsx("div",{onPointerDown:B,style:Q,title:"Drag to move",children:e.jsx(be,{})}),e.jsxs("div",{style:ee,children:[e.jsx("span",{style:z,children:e.jsx(D,{})}),e.jsx("span",{children:"Default Setting"})]}),e.jsx("div",{style:{flex:"1 1 auto"}}),e.jsxs("button",{type:"button",onClick:P,style:te,title:"Copy config",children:[e.jsx("span",{style:R,children:e.jsx(pe,{})}),c?"Copied":"Copy"]}),e.jsx("button",{type:"button",onClick:()=>n(!1),style:le,title:"Collapse","aria-label":"Collapse Default Setting",children:e.jsx("span",{style:R,children:e.jsx(j.X,{size:12,strokeWidth:1.9})})})]}),e.jsx("div",{style:se,children:b??e.jsxs(e.Fragment,{children:[w("material","Material",e.jsx(xe,{}),e.jsx("div",{style:I,children:e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Text"}),e.jsx("input",{style:M,value:s.material.text,onChange:l=>a(t=>({...t,material:{...t.material,text:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Font Size (1)"}),e.jsx(d,{value:s.material.fontSize,onChange:l=>a(t=>({...t,material:{...t.material,fontSize:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Color"}),e.jsx("input",{type:"color",style:C,value:s.material.color,onChange:l=>a(t=>({...t,material:{...t.material,color:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"BG"}),e.jsx("input",{type:"color",style:C,value:s.material.bgColor,onChange:l=>a(t=>({...t,material:{...t.material,bgColor:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Radius (1)"}),e.jsx(d,{value:s.material.borderRadius,onChange:l=>a(t=>({...t,material:{...t.material,borderRadius:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Aspect (1)"}),e.jsx(d,{value:s.material.aspect,onChange:l=>a(t=>({...t,material:{...t.material,aspect:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Padding (1)"}),e.jsx(d,{value:s.material.padding,onChange:l=>a(t=>({...t,material:{...t.material,padding:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Opacity"}),e.jsx(d,{value:s.material.opacity,onChange:l=>a(t=>({...t,material:{...t.material,opacity:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Border"}),e.jsx("input",{type:"color",style:C,value:s.material.borderColor,onChange:l=>a(t=>({...t,material:{...t.material,borderColor:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Border W (1)"}),e.jsx(d,{value:s.material.borderWidth,onChange:l=>a(t=>({...t,material:{...t.material,borderWidth:l}}))})]})]})}),s.material.enabled),w("textLabel","TextLabel",e.jsx(D,{}),e.jsxs("div",{style:I,children:[e.jsx("div",{style:v,children:"Position (0.1)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (0.1)"}),e.jsx(d,{value:s.textLabel.position[0],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[l,t.textLabel.position[1],t.textLabel.position[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (0.1)"}),e.jsx(d,{value:s.textLabel.position[1],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[t.textLabel.position[0],l,t.textLabel.position[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (0.1)"}),e.jsx(d,{value:s.textLabel.position[2],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[t.textLabel.position[0],t.textLabel.position[1],l]}}))})]})]}),e.jsx("div",{style:v,children:"Rotation (deg)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (deg)"}),e.jsx(d,{value:s.textLabel.rotation[0],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[l,t.textLabel.rotation[1],t.textLabel.rotation[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (deg)"}),e.jsx(d,{value:s.textLabel.rotation[1],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[t.textLabel.rotation[0],l,t.textLabel.rotation[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (deg)"}),e.jsx(d,{value:s.textLabel.rotation[2],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[t.textLabel.rotation[0],t.textLabel.rotation[1],l]}}))})]})]}),e.jsx("div",{style:v,children:"Scale (1)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (1)"}),e.jsx(d,{value:s.textLabel.scale[0],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[l,t.textLabel.scale[1],t.textLabel.scale[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (1)"}),e.jsx(d,{value:s.textLabel.scale[1],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[t.textLabel.scale[0],l,t.textLabel.scale[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (1)"}),e.jsx(d,{value:s.textLabel.scale[2],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[t.textLabel.scale[0],t.textLabel.scale[1],l]}}))})]})]})]}),s.textLabel.enabled)]})})]}):e.jsx("div",{role:"button",tabIndex:0,onClick:()=>n(!0),onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),n(!0))},style:Z,title:"Open Default Setting","aria-label":"Open Default Setting",children:e.jsx("span",{style:H,children:e.jsx(A,{size:14,strokeWidth:1.8})})})}),document.body)};exports.DefaultSettingPanel=ge;
|
|
21
|
+
*/const K=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],Y=j.createLucideIcon("power",K),$={transform:{enabled:!0,anchors:{left:-.5,right:.5,top:.2,bottom:-.2},offsets:{left:0,right:0,top:0,bottom:0},pivot:[0,0]},material:{enabled:!0,text:"Hello from Vincentt",fontSize:220,color:"#ffffff",bgColor:"#14286e",borderRadius:24,aspect:3,opacity:1,padding:32,borderWidth:0,borderColor:"transparent"},textLabel:{enabled:!0,position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]}},G={position:"fixed",left:14,top:104,zIndex:2e4,pointerEvents:"none"},N={pointerEvents:"auto",width:298,borderRadius:16,border:"1px solid rgba(255,255,255,0.12)",background:"rgba(8, 15, 28, 0.58)",boxShadow:"0 16px 36px rgba(0,0,0,0.28)",backdropFilter:"blur(20px) saturate(1.1)",WebkitBackdropFilter:"blur(20px) saturate(1.1)",color:"#f8fafc",overflow:"hidden"},Z={...N,width:32,height:32,borderRadius:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer"},H={display:"flex",width:14,height:14,alignItems:"center",justifyContent:"center",color:"#f8fafc"},J={display:"flex",alignItems:"center",gap:7,padding:"7px 8px",borderBottom:"1px solid rgba(255,255,255,0.08)"},Q={width:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",cursor:"grab",color:"rgba(148,163,184,0.82)",flex:"0 0 auto"},ee={display:"flex",alignItems:"center",gap:6,fontSize:11,fontWeight:600,letterSpacing:.2,minWidth:0},z={display:"flex",width:18,height:18,alignItems:"center",justifyContent:"center",borderRadius:6,background:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.08)",color:"#e2e8f0",flex:"0 0 auto"},te={display:"inline-flex",alignItems:"center",justifyContent:"center",height:24,padding:"0 8px 0 7px",borderRadius:8,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.05)",color:"#e2e8f0",fontSize:10,cursor:"pointer",gap:5},le={display:"inline-flex",alignItems:"center",justifyContent:"center",width:24,height:24,borderRadius:8,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.05)",color:"#e2e8f0",cursor:"pointer",padding:0,flex:"0 0 auto"},se={display:"flex",flexDirection:"column",gap:6,padding:7},ae={borderRadius:12,border:"1px solid rgba(255,255,255,0.08)",background:"rgba(255,255,255,0.03)",overflow:"hidden"},ie={display:"flex",alignItems:"center",gap:7,padding:"6px 7px"},oe={display:"flex",alignItems:"center",gap:6,fontSize:11,fontWeight:500,flex:"1 1 auto",minWidth:0},ne={width:28,height:16,borderRadius:999,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(255,255,255,0.08)",padding:2,display:"flex",alignItems:"center",cursor:"pointer",flex:"0 0 auto"},re=r=>({width:10,height:10,borderRadius:999,background:r?"#f8fafc":"rgba(148,163,184,0.7)",transform:r?"translateX(12px)":"translateX(0)",transition:"transform 140ms ease, background 140ms ease"}),de={display:"grid",gap:7,padding:"0 7px 7px"},I={display:"grid",gap:5},v={fontSize:9,color:"rgba(226,232,240,0.66)",letterSpacing:.4,textTransform:"uppercase"},S={display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:6},i={display:"flex",flexDirection:"column",gap:4},o={fontSize:9,color:"rgba(226,232,240,0.72)",letterSpacing:.2},M={width:"100%",height:24,borderRadius:7,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(15,23,42,0.68)",color:"#f8fafc",fontSize:10.5,outline:"none",padding:"0 7px",boxSizing:"border-box"},C={width:"100%",height:24,borderRadius:7,border:"1px solid rgba(255,255,255,0.10)",background:"rgba(15,23,42,0.68)",color:"#f8fafc",fontSize:10.5,outline:"none",padding:2,boxSizing:"border-box",cursor:"pointer"},ce={...M,fontVariantNumeric:"tabular-nums"},R={width:12,height:12,display:"flex"},D=()=>e.jsx(Y,{size:12,strokeWidth:1.9}),xe=()=>e.jsx(q,{size:12,strokeWidth:1.9}),pe=()=>e.jsx(O,{size:12,strokeWidth:1.9}),be=()=>e.jsx("svg",{width:"11",height:"15",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{d:"M8 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM8 18a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 6a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16 18a2 2 0 1 1-4 0 2 2 0 0 1 4 0z"})}),ye=r=>/^-?\d*(\.\d*)?$/.test(r),d=({value:r,onChange:h,step:x=1})=>{const[b,y]=g.useState(String(r));return g.useEffect(()=>{y(String(r))},[r]),e.jsx("input",{type:"text",inputMode:"decimal",pattern:"-?[0-9]*[.,]?[0-9]*",style:ce,value:b,onChange:n=>{const c=n.target.value;if(!ye(c)||(y(c),c===""||c==="-"||c==="."||c==="-."))return;const p=Number(c);Number.isNaN(p)||h(p)},onBlur:()=>{if(b===""||b==="-"||b==="."||b==="-."){y(String(r));return}const n=Number(b);if(Number.isNaN(n)){y(String(r));return}y(String(n)),n!==r&&h(n)},onKeyDown:n=>{if(n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();const c=n.shiftKey?x*10:n.altKey?x/10:x,p=n.key==="ArrowUp"?r+c:r-c,u=Number.isInteger(p)?p:Number(p.toFixed(6));y(String(u)),h(u)}})},ge=({style:r,value:h,onChange:x,children:b})=>{const[y,n]=g.useState(!0),[c,p]=g.useState(!1),[u,T]=g.useState({x:14,y:104}),[W,E]=g.useState($),f=g.useRef(null),s=h??W,a=l=>{const t=l(s);h||E(t),x==null||x(t)};g.useEffect(()=>{const l=m=>{f.current&&T({x:Math.max(8,m.clientX-f.current.x),y:Math.max(8,m.clientY-f.current.y)})},t=()=>{f.current=null,document.body.classList.remove("select-none")};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",t)}},[]);const P=async()=>{await navigator.clipboard.writeText(JSON.stringify(s,null,2)),p(!0),window.setTimeout(()=>p(!1),1200)},B=l=>{const t=l.currentTarget.getBoundingClientRect();f.current={x:l.clientX-t.left,y:l.clientY-t.top},document.body.classList.add("select-none"),l.currentTarget.setPointerCapture(l.pointerId)},w=(l,t,m,_,k)=>e.jsxs("div",{style:ae,children:[e.jsxs("div",{style:ie,children:[e.jsx("button",{type:"button",onClick:()=>a(L=>({...L,[l]:{...L[l],enabled:!L[l].enabled}})),style:ne,"aria-label":`Toggle ${t}`,children:e.jsx("div",{style:re(k)})}),e.jsxs("div",{style:oe,children:[e.jsx("span",{style:z,children:m}),e.jsx("span",{children:t})]})]}),k?e.jsx("div",{style:de,children:_}):null]},l);return typeof document>"u"?null:V.createPortal(e.jsx("div",{style:{...G,left:u.x,top:u.y,...r},children:y?e.jsxs("div",{style:N,children:[e.jsxs("div",{style:J,children:[e.jsx("div",{onPointerDown:B,style:Q,title:"Drag to move",children:e.jsx(be,{})}),e.jsxs("div",{style:ee,children:[e.jsx("span",{style:z,children:e.jsx(D,{})}),e.jsx("span",{children:"Default Setting"})]}),e.jsx("div",{style:{flex:"1 1 auto"}}),e.jsxs("button",{type:"button",onClick:P,style:te,title:"Copy config",children:[e.jsx("span",{style:R,children:e.jsx(pe,{})}),c?"Copied":"Copy"]}),e.jsx("button",{type:"button",onClick:()=>n(!1),style:le,title:"Collapse","aria-label":"Collapse Default Setting",children:e.jsx("span",{style:R,children:e.jsx(j.X,{size:12,strokeWidth:1.9})})})]}),e.jsx("div",{style:se,children:b??e.jsxs(e.Fragment,{children:[w("material","Material",e.jsx(xe,{}),e.jsx("div",{style:I,children:e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Text"}),e.jsx("input",{style:M,value:s.material.text,onChange:l=>a(t=>({...t,material:{...t.material,text:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Font Size (1)"}),e.jsx(d,{value:s.material.fontSize,onChange:l=>a(t=>({...t,material:{...t.material,fontSize:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Color"}),e.jsx("input",{type:"color",style:C,value:s.material.color,onChange:l=>a(t=>({...t,material:{...t.material,color:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"BG"}),e.jsx("input",{type:"color",style:C,value:s.material.bgColor,onChange:l=>a(t=>({...t,material:{...t.material,bgColor:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Radius (1)"}),e.jsx(d,{value:s.material.borderRadius,onChange:l=>a(t=>({...t,material:{...t.material,borderRadius:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Aspect (1)"}),e.jsx(d,{value:s.material.aspect,onChange:l=>a(t=>({...t,material:{...t.material,aspect:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Padding (1)"}),e.jsx(d,{value:s.material.padding,onChange:l=>a(t=>({...t,material:{...t.material,padding:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Opacity"}),e.jsx(d,{value:s.material.opacity,onChange:l=>a(t=>({...t,material:{...t.material,opacity:l}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Border"}),e.jsx("input",{type:"color",style:C,value:s.material.borderColor,onChange:l=>a(t=>({...t,material:{...t.material,borderColor:l.target.value}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Border W (1)"}),e.jsx(d,{value:s.material.borderWidth,onChange:l=>a(t=>({...t,material:{...t.material,borderWidth:l}}))})]})]})}),s.material.enabled),w("textLabel","TextLabel",e.jsx(D,{}),e.jsxs("div",{style:I,children:[e.jsx("div",{style:v,children:"Position (0.1)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (0.1)"}),e.jsx(d,{value:s.textLabel.position[0],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[l,t.textLabel.position[1],t.textLabel.position[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (0.1)"}),e.jsx(d,{value:s.textLabel.position[1],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[t.textLabel.position[0],l,t.textLabel.position[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (0.1)"}),e.jsx(d,{value:s.textLabel.position[2],step:.1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,position:[t.textLabel.position[0],t.textLabel.position[1],l]}}))})]})]}),e.jsx("div",{style:v,children:"Rotation (deg)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (deg)"}),e.jsx(d,{value:s.textLabel.rotation[0],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[l,t.textLabel.rotation[1],t.textLabel.rotation[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (deg)"}),e.jsx(d,{value:s.textLabel.rotation[1],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[t.textLabel.rotation[0],l,t.textLabel.rotation[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (deg)"}),e.jsx(d,{value:s.textLabel.rotation[2],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,rotation:[t.textLabel.rotation[0],t.textLabel.rotation[1],l]}}))})]})]}),e.jsx("div",{style:v,children:"Scale (1)"}),e.jsxs("div",{style:S,children:[e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"X (1)"}),e.jsx(d,{value:s.textLabel.scale[0],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[l,t.textLabel.scale[1],t.textLabel.scale[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Y (1)"}),e.jsx(d,{value:s.textLabel.scale[1],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[t.textLabel.scale[0],l,t.textLabel.scale[2]]}}))})]}),e.jsxs("label",{style:i,children:[e.jsx("span",{style:o,children:"Z (1)"}),e.jsx(d,{value:s.textLabel.scale[2],step:1,onChange:l=>a(t=>({...t,textLabel:{...t.textLabel,scale:[t.textLabel.scale[0],t.textLabel.scale[1],l]}}))})]})]})]}),s.textLabel.enabled)]})})]}):e.jsx("div",{role:"button",tabIndex:0,onClick:()=>n(!0),onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),n(!0))},style:Z,title:"Open Default Setting","aria-label":"Open Default Setting",children:e.jsx("span",{style:H,children:e.jsx(A,{size:14,strokeWidth:1.8})})})}),document.body)};exports.DefaultSettingPanel=ge;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FaceSwapSettings, FaceSwapSourceLike } from '../../components/FaceSwap/settings';
|
|
2
|
+
export type FaceSwapSettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<FaceSwapSettings>;
|
|
5
|
+
onChange: (next: FaceSwapSettings) => void;
|
|
6
|
+
/**
|
|
7
|
+
* The swap's source, for the preset it starts from when `value` names
|
|
8
|
+
* none (painted faces start from `keepColors`). Default: `natural`.
|
|
9
|
+
*/
|
|
10
|
+
source?: FaceSwapSourceLike | null;
|
|
11
|
+
initialPosition?: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Live controls for `<FaceSwap>`: the preset, colour matching, edges, the
|
|
18
|
+
* kept eyes and mouth, detail, smoothing and amount. Choosing a preset
|
|
19
|
+
* applies it; editing a field it sets makes it `"custom"`. Spread the
|
|
20
|
+
* emitted settings onto `<FaceSwap>`.
|
|
21
|
+
*/
|
|
22
|
+
export declare const FaceSwapSettingsPanel: ({ title, value, onChange, source, initialPosition, }: FaceSwapSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GestureSettings } from '../../gestures/settings';
|
|
2
|
+
export type GestureSettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<GestureSettings>;
|
|
5
|
+
/** The gesture's own defaults, so untouched fields show what it really uses. */
|
|
6
|
+
defaults?: GestureSettings;
|
|
7
|
+
onChange: (next: GestureSettings) => void;
|
|
8
|
+
initialPosition?: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/** Live detector controls for one gesture; spread the emitted settings into `useGesture` options. */
|
|
14
|
+
export declare const GestureSettingsPanel: ({ title, value, defaults, onChange, initialPosition, }: GestureSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RenderGroup, RenderGroupId } from '../../render/renderGroups';
|
|
2
2
|
import { SceneObject, SceneObjectId, SceneObjectStore } from '../../scene-object';
|
|
3
|
-
|
|
3
|
+
import { DebugWindowPlacementProps } from '../shared/debugWindow';
|
|
4
|
+
export type HierarchyPanelProps = DebugWindowPlacementProps & {
|
|
4
5
|
groups: RenderGroup[];
|
|
5
6
|
objects: Record<SceneObjectId, SceneObject>;
|
|
6
7
|
selectedObjectId?: SceneObjectId;
|
|
@@ -26,4 +27,4 @@ export type HierarchyPanelCopyConfig = {
|
|
|
26
27
|
objects: Record<SceneObjectId, SceneObject>;
|
|
27
28
|
components: SceneObjectStore["components"];
|
|
28
29
|
};
|
|
29
|
-
export declare const HierarchyPanel: ({ groups, objects, selectedObjectId, onSelectObject, onReorderGroup, onReorderObject, onMoveObject, onSetObjectParent, onToggleGroupEnabled, onToggleObjectVisible, copyConfig, initialPosition, title, }: HierarchyPanelProps) => import('react').
|
|
30
|
+
export declare const HierarchyPanel: ({ groups, objects, selectedObjectId, onSelectObject, onReorderGroup, onReorderObject, onMoveObject, onSetObjectParent, onToggleGroupEnabled, onToggleObjectVisible, copyConfig, docked, initialPosition, title, }: HierarchyPanelProps) => import('react').ReactNode;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HolisticTrackerSettings } from '../../components/HolisticTracker';
|
|
2
|
+
export type HolisticTrackerSettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<HolisticTrackerSettings>;
|
|
5
|
+
onChange: (next: HolisticTrackerSettings) => void;
|
|
6
|
+
initialPosition?: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Live controls for `<HolisticTracker>`; map the emitted settings onto the
|
|
13
|
+
* component with `toHolisticTrackerProps`. Hands, hold/predict and the
|
|
14
|
+
* analysis size apply without re-initializing; blendshapes and FPS re-acquire.
|
|
15
|
+
*/
|
|
16
|
+
export declare const HolisticTrackerSettingsPanel: ({ title, value, onChange, initialPosition, }: HolisticTrackerSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
package/dist/debug-ui/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
export type { DebugWindowPlacementProps } from './shared/debugWindow';
|
|
1
2
|
export { defaultMediaSources, sdkImageMediaSources, sdkVideoMediaSources } from './media-source';
|
|
2
|
-
export type { MediaSourcePreset, MediaSourceSessionPipeline, MediaSourceSwitcherProps, UseMediaSourceSessionOptions, } from './media-source';
|
|
3
|
+
export type { MediaSourcePlayback, MediaSourcePreset, MediaSourceSessionPipeline, MediaSourceSwitcherProps, UseMediaSourceSessionOptions, } from './media-source';
|
|
3
4
|
export { MediaSourceSwitcher, useFaceTrackingMediaSourceSession, useMediaSourceSession, } from './media-source';
|
|
4
5
|
export type { DefaultSettingPanelProps } from './default-setting';
|
|
5
6
|
export { DefaultSettingPanel } from './default-setting';
|
|
@@ -29,10 +30,24 @@ export { PinToMeshSettingsPanel } from './pin-to-mesh-settings';
|
|
|
29
30
|
export type { PinToMeshSettingsPanelProps } from './pin-to-mesh-settings';
|
|
30
31
|
export type { SettingsPanelField, SettingsPanelOption, SettingsPanelProps, SettingsPanelValue, } from './settings-panel';
|
|
31
32
|
export { SettingsPanel } from './settings-panel';
|
|
32
|
-
export type { FaceWarp3DSettingsPanelProps } from './face-warp-3d';
|
|
33
|
-
export { FaceWarp3DSettingsPanel } from './face-warp-3d';
|
|
34
33
|
export type { FaceRetouchSettingsPanelProps } from './face-retouch';
|
|
35
34
|
export { FaceRetouchSettingsPanel } from './face-retouch';
|
|
35
|
+
export type { FaceSwapSettingsPanelProps } from './face-swap-settings';
|
|
36
|
+
export { FaceSwapSettingsPanel } from './face-swap-settings';
|
|
37
|
+
export type { GestureSettingsPanelProps } from './gesture-settings';
|
|
38
|
+
export { GestureSettingsPanel } from './gesture-settings';
|
|
39
|
+
export type { IrisEffectSettingsPanelProps } from './iris-effect-settings';
|
|
40
|
+
export { IrisEffectSettingsPanel } from './iris-effect-settings';
|
|
41
|
+
export type { LipEffectSettingsPanelProps } from './lip-effect-settings';
|
|
42
|
+
export { LipEffectSettingsPanel } from './lip-effect-settings';
|
|
43
|
+
export type { ProductHotspotPanelProps } from './product-hotspots';
|
|
44
|
+
export { ProductHotspotPanel } from './product-hotspots';
|
|
45
|
+
export type { XRDiagnosticsPanelProps } from './xr-diagnostics';
|
|
46
|
+
export { XRDiagnosticsPanel } from './xr-diagnostics';
|
|
47
|
+
export type { HolisticTrackerSettingsPanelProps } from './holistic-tracker-settings';
|
|
48
|
+
export { HolisticTrackerSettingsPanel } from './holistic-tracker-settings';
|
|
49
|
+
export type { SegmentationOverlaySettingsPanelProps } from './segmentation-overlay-settings';
|
|
50
|
+
export { SegmentationOverlaySettingsPanel } from './segmentation-overlay-settings';
|
|
36
51
|
export type { Transform3DSettingsPanelProps } from './transform-3d-settings';
|
|
37
52
|
export { Transform3DSettingsPanel, Transform3DSettingsSection } from './transform-3d-settings';
|
|
38
53
|
export type { MeshRendererSettingsPanelProps } from './mesh-renderer-settings';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IrisEffectSettings } from '../../components/IrisEffect';
|
|
2
|
+
export type IrisEffectSettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<IrisEffectSettings>;
|
|
5
|
+
onChange: (next: IrisEffectSettings) => void;
|
|
6
|
+
initialPosition?: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** Live controls for `<IrisEffect>`; spread the emitted settings onto the component. */
|
|
12
|
+
export declare const IrisEffectSettingsPanel: ({ title, value, onChange, initialPosition, }: IrisEffectSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LipEffectSettings } from '../../components/LipEffect';
|
|
2
|
+
export type LipEffectSettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<LipEffectSettings>;
|
|
5
|
+
onChange: (next: LipEffectSettings) => void;
|
|
6
|
+
initialPosition?: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Live controls for `LipEffect`: presets, mask mode, material and texture
|
|
13
|
+
* transform. Spread the emitted settings onto `<LipEffect>`.
|
|
14
|
+
*/
|
|
15
|
+
export declare const LipEffectSettingsPanel: ({ title, value, onChange, initialPosition, }: LipEffectSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,4 +3,4 @@ export type { MediaSourcePreset } from './media-preset';
|
|
|
3
3
|
export { MediaSourceSwitcher } from './MediaSourceSwitcher';
|
|
4
4
|
export type { MediaSourceSwitcherProps } from './MediaSourceSwitcher';
|
|
5
5
|
export { useFaceTrackingMediaSourceSession, useMediaSourceSession } from './session';
|
|
6
|
-
export type { MediaSourceSessionPipeline, UseMediaSourceSessionOptions } from './session';
|
|
6
|
+
export type { MediaSourcePlayback, MediaSourceSessionPipeline, UseMediaSourceSessionOptions, } from './session';
|
|
@@ -8,5 +8,33 @@ export type UseMediaSourceSessionOptions = {
|
|
|
8
8
|
numFaces?: number;
|
|
9
9
|
pipeline?: MediaSourceSessionPipeline[];
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Playback of the video clip a debug media session plays (the webcam and the
|
|
13
|
+
* stills have none). Tracking keeps running while the clip is paused: the
|
|
14
|
+
* session sees one still frame.
|
|
15
|
+
*/
|
|
16
|
+
export type MediaSourcePlayback = {
|
|
17
|
+
/** Whether the clip is paused. */
|
|
18
|
+
paused: boolean;
|
|
19
|
+
/** The clip's current time, seconds (updated a few times a second while playing). */
|
|
20
|
+
time: number;
|
|
21
|
+
/** The clip's length, seconds. */
|
|
22
|
+
duration: number;
|
|
23
|
+
/** Playback speed (`1` = normal). */
|
|
24
|
+
rate: number;
|
|
25
|
+
pause: () => void;
|
|
26
|
+
play: () => void;
|
|
27
|
+
/** Back to the start (keeps playing or paused as it was). */
|
|
28
|
+
restart: () => void;
|
|
29
|
+
/** Pauses and moves by `frames` (about 1/30 s each; negative = back). Default 1. */
|
|
30
|
+
step: (frames?: number) => void;
|
|
31
|
+
/** Playback speed, e.g. `0.25`, `0.5`, `1`. */
|
|
32
|
+
setRate: (rate: number) => void;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Binds a debug media preset (webcam, hosted clip or still) to the current XR
|
|
36
|
+
* session and starts its pipeline. Returns the clip's playback controls for a
|
|
37
|
+
* video (`null` for the webcam and stills, and until the clip is bound).
|
|
38
|
+
*/
|
|
39
|
+
export declare const useMediaSourceSession: (mediaSource: MediaSourcePreset, options?: UseMediaSourceSessionOptions) => MediaSourcePlayback | null;
|
|
40
|
+
export declare const useFaceTrackingMediaSourceSession: (mediaSource: MediaSourcePreset, options?: UseMediaSourceSessionOptions) => MediaSourcePlayback | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../session-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../session-BrH8G7iJ.cjs");exports.MediaSourceSwitcher=e.MediaSourceSwitcher;exports.defaultMediaSources=e.defaultMediaSources;exports.sdkImageMediaSources=e.sdkImageMediaSources;exports.sdkVideoMediaSources=e.sdkVideoMediaSources;exports.useFaceTrackingMediaSourceSession=e.useFaceTrackingMediaSourceSession;exports.useMediaSourceSession=e.useMediaSourceSession;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
|
|
2
|
+
import { DebugWindowPlacementProps } from '../shared/debugWindow';
|
|
3
|
+
export type ObjectInspectorPanelProps = DebugWindowPlacementProps & {
|
|
3
4
|
children: ReactNode;
|
|
4
5
|
copyConfig: unknown;
|
|
5
6
|
initialPosition?: {
|
|
@@ -22,4 +23,4 @@ export type ObjectInspectorPanelProps = {
|
|
|
22
23
|
visible: boolean;
|
|
23
24
|
onVisibleChange: (visible: boolean) => void;
|
|
24
25
|
};
|
|
25
|
-
export declare const ObjectInspectorPanel: ({ children, copyConfig, initialPosition, layer, objectId, objectName, onObjectNameChange, onPositionChange, onVisibleChange, position: controlledPosition, title, visible, }: ObjectInspectorPanelProps) =>
|
|
26
|
+
export declare const ObjectInspectorPanel: ({ children, copyConfig, docked, initialPosition, layer, objectId, objectName, onObjectNameChange, onPositionChange, onVisibleChange, position: controlledPosition, title, visible, }: ObjectInspectorPanelProps) => ReactNode;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { UseProductHotspotsResult } from '../../product/useProductDetails';
|
|
2
|
+
import { DebugWindowPlacementProps } from '../shared/debugWindow';
|
|
3
|
+
export type ProductHotspotPanelProps = DebugWindowPlacementProps & {
|
|
4
|
+
title?: string;
|
|
5
|
+
hotspots: UseProductHotspotsResult;
|
|
6
|
+
/** Called when placement mode toggles; the page forwards pointer clicks on the viewer to `placeFromPointer` while on. */
|
|
7
|
+
placing: boolean;
|
|
8
|
+
onPlacingChange: (placing: boolean) => void;
|
|
9
|
+
/** Variants from `useProductVariants`, optional. */
|
|
10
|
+
variants?: {
|
|
11
|
+
variants: string[];
|
|
12
|
+
variant: string | null;
|
|
13
|
+
setVariant: (name: string | null) => void;
|
|
14
|
+
};
|
|
15
|
+
initialPosition?: {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Authoring panel for product hotspots (and variants): toggle click-to-place,
|
|
22
|
+
* edit labels, remove, copy the JSON. Debug UI only; the data it produces is
|
|
23
|
+
* what the app ships as `initial` to `useProductHotspots`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ProductHotspotPanel: ({ title, hotspots, placing, onPlacingChange, variants, initialPosition, docked, }: ProductHotspotPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -5,5 +5,7 @@ export type SceneHierarchyPanelProps = {
|
|
|
5
5
|
y: number;
|
|
6
6
|
};
|
|
7
7
|
rootOnly?: boolean;
|
|
8
|
+
/** Render in place inside its host instead of floating (see `DebugWindowPlacementProps`). */
|
|
9
|
+
docked?: boolean;
|
|
8
10
|
};
|
|
9
|
-
export declare const SceneHierarchyPanel: ({ initialPosition, rootOnly, title, }: SceneHierarchyPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const SceneHierarchyPanel: ({ initialPosition, rootOnly, title, docked, }: SceneHierarchyPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,5 +3,7 @@ export type SceneInspectorPanelProps = {
|
|
|
3
3
|
x: number;
|
|
4
4
|
y: number;
|
|
5
5
|
};
|
|
6
|
+
/** Render in place inside its host instead of floating (see `DebugWindowPlacementProps`). */
|
|
7
|
+
docked?: boolean;
|
|
6
8
|
};
|
|
7
|
-
export declare const SceneInspectorPanel: ({ initialPosition }: SceneInspectorPanelProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
+
export declare const SceneInspectorPanel: ({ initialPosition, docked }: SceneInspectorPanelProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -5,5 +5,7 @@ export type ScreenImageSettingsPanelProps = {
|
|
|
5
5
|
onChange: (next: ScreenImageSceneSettings) => void;
|
|
6
6
|
copyLabel?: string;
|
|
7
7
|
inspector?: Omit<ObjectInspectorPanelProps, "children">;
|
|
8
|
+
/** Render in place inside its host instead of floating (see `DebugWindowPlacementProps`). */
|
|
9
|
+
docked?: boolean;
|
|
8
10
|
};
|
|
9
|
-
export declare const ScreenImageSettingsPanel: ({ value, onChange, copyLabel, inspector, }: ScreenImageSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const ScreenImageSettingsPanel: ({ value, onChange, copyLabel, inspector, docked, }: ScreenImageSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ScreenTextSettingsPanelProps } from './types';
|
|
2
2
|
export type * from './types';
|
|
3
|
-
export declare const ScreenTextSettingsPanel: ({ value, onChange, copyLabel, inspector, }: ScreenTextSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const ScreenTextSettingsPanel: ({ value, onChange, copyLabel, inspector, docked, }: ScreenTextSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,4 +6,6 @@ export type ScreenTextSettingsPanelProps = {
|
|
|
6
6
|
onChange: (next: ScreenTextSceneSettings) => void;
|
|
7
7
|
copyLabel?: string;
|
|
8
8
|
inspector?: Omit<ObjectInspectorPanelProps, "children">;
|
|
9
|
+
/** Render in place inside its host instead of floating (see `DebugWindowPlacementProps`). */
|
|
10
|
+
docked?: boolean;
|
|
9
11
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SegmentationOverlaySettings } from '../../components/SegmentationOverlay';
|
|
2
|
+
export type SegmentationOverlaySettingsPanelProps = {
|
|
3
|
+
title?: string;
|
|
4
|
+
value: Partial<SegmentationOverlaySettings>;
|
|
5
|
+
onChange: (next: SegmentationOverlaySettings) => void;
|
|
6
|
+
initialPosition?: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** Live controls for `SegmentationOverlay`; spread the emitted settings onto the component. */
|
|
12
|
+
export declare const SegmentationOverlaySettingsPanel: ({ title, value, onChange, initialPosition, }: SegmentationOverlaySettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A field value. A list is one select option (a set of regions, say): panels
|
|
3
|
+
* match options by `String(value)`, so give a list in the order the settings
|
|
4
|
+
* resolve it to.
|
|
5
|
+
*/
|
|
6
|
+
export type SettingsPanelValue = string | number | boolean | readonly string[];
|
|
2
7
|
export type SettingsPanelOption = {
|
|
3
8
|
label: string;
|
|
4
9
|
value: SettingsPanelValue;
|