@vincentt-xr/sdk 2.0.0-alpha.0 → 2.0.0-alpha.2
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 +1813 -27
- package/dist/{DebuggerUI-CEfdddkZ.cjs → DebuggerUI-B45_Gb9d.cjs} +1 -1
- package/dist/{DebuggerUI-Dgop6Q6o.js → DebuggerUI-Cq28c18s.js} +1 -1
- package/dist/FaceMeshRenderer-6t8OsQhK.js +1195 -0
- package/dist/FaceMeshRenderer-lQLhYIW-.cjs +155 -0
- package/dist/FaceRetouch-CDrL0pXg.js +551 -0
- package/dist/FaceRetouch-DtNl8-4e.cjs +134 -0
- package/dist/audio/AudioEngine.d.ts +3 -1
- package/dist/audio/AudioPlayer.d.ts +29 -0
- package/dist/audio/AudioPlayerLogic.d.ts +4 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/components/Axes/index.d.ts +6 -0
- package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +17 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +22 -1
- package/dist/components/FaceMesh/canonical/FaceMeshMaterial.d.ts +25 -0
- package/dist/components/FaceMesh/canonical/assets.d.ts +3 -0
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +9 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +2 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +2 -0
- package/dist/components/FaceMesh/deform.d.ts +3 -0
- package/dist/components/FaceMesh/index.d.ts +5 -0
- package/dist/components/FaceMesh/material/defaults.d.ts +74 -0
- package/dist/components/FaceMesh/material/index.d.ts +1 -0
- package/dist/components/FaceMesh/material/options.d.ts +5 -1
- package/dist/components/FaceMesh/material/support.d.ts +7 -2
- package/dist/components/FaceMesh/material/textures.d.ts +4 -0
- package/dist/components/FaceMesh/material/types.d.ts +4 -2
- package/dist/components/FaceRetouch/Background.d.ts +9 -5
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +47 -0
- package/dist/components/FaceRetouch/index.d.ts +2 -6
- package/dist/components/FaceRetouch/landmarkMask.d.ts +4 -6
- package/dist/components/FaceRetouch/useFaceRetouchMask.d.ts +4 -7
- package/dist/components/FaceTracker/index.d.ts +5 -3
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +15 -0
- package/dist/components/FaceWarp3D/defaults.d.ts +37 -0
- package/dist/components/FaceWarp3D/index.d.ts +3 -0
- package/dist/components/FaceWarp3D/warp.d.ts +13 -0
- package/dist/components/HandJoints2D/index.d.ts +6 -0
- package/dist/components/HandTracker/index.d.ts +2 -2
- package/dist/components/HandTracking2D/HandVisual.d.ts +12 -0
- package/dist/components/HandTracking2D/index.d.ts +5 -0
- package/dist/components/HandTracking2DController/index.d.ts +5 -0
- package/dist/components/HandTracking3D/index.d.ts +6 -0
- package/dist/components/LightObject/index.d.ts +20 -0
- package/dist/components/LookAt/index.d.ts +23 -0
- package/dist/components/MeshRenderer/index.d.ts +58 -0
- package/dist/components/PerspectiveCamera/index.d.ts +2 -8
- package/dist/components/PinToMesh/index.d.ts +47 -0
- package/dist/components/RenderGroupLayer/index.d.ts +6 -0
- package/dist/components/SceneObjectRenderer/index.d.ts +16 -0
- package/dist/components/Screen2D/ScreenTransformFrame.d.ts +11 -0
- package/dist/components/Screen2D/ScreenTransformHelpers.d.ts +19 -0
- package/dist/components/Screen2D/ScreenTransformInteraction.d.ts +18 -0
- package/dist/components/Screen2D/index.d.ts +5 -0
- package/dist/components/ScreenGlass/defaults.d.ts +3 -0
- package/dist/components/ScreenGlass/index.d.ts +5 -0
- package/dist/components/ScreenGlass/shaders.d.ts +2 -0
- package/dist/components/ScreenGlass/types.d.ts +10 -0
- package/dist/components/ScreenGradient/defaults.d.ts +5 -0
- package/dist/components/ScreenGradient/index.d.ts +5 -0
- package/dist/components/ScreenGradient/shaders.d.ts +2 -0
- package/dist/components/ScreenGradient/types.d.ts +19 -0
- package/dist/components/ScreenImage/ScreenImage.d.ts +4 -0
- package/dist/components/ScreenImage/components/DynamicTextureSync.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageFrame.d.ts +9 -0
- package/dist/components/ScreenImage/components/ScreenImageTransformFrame.d.ts +9 -0
- package/dist/components/ScreenImage/fit.d.ts +52 -0
- package/dist/components/ScreenImage/index.d.ts +8 -0
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +9 -0
- package/dist/components/ScreenImage/materials/ScreenImageMatcap.d.ts +3 -0
- package/dist/components/ScreenImage/source.d.ts +16 -0
- package/dist/components/ScreenImage/types.d.ts +37 -0
- package/dist/components/ScreenImage/utils/ScreenImageConstants.d.ts +9 -0
- package/dist/components/ScreenImage/utils/ScreenImageHelpers.d.ts +4 -0
- package/dist/components/ScreenShape/geometry.d.ts +5 -0
- package/dist/components/ScreenShape/index.d.ts +5 -0
- package/dist/components/ScreenShape/types.d.ts +41 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformGuide.d.ts +15 -0
- package/dist/components/ScreenSpaceUI/ScreenTransformOverlayGuide.d.ts +9 -0
- package/dist/components/ScreenSpaceUI/index.d.ts +2 -0
- package/dist/components/ScreenText/components/ScreenTextBody.d.ts +2 -0
- package/dist/components/ScreenText/components/ScreenTextTransformFrame.d.ts +9 -0
- package/dist/components/ScreenText/constants.d.ts +5 -0
- package/dist/components/ScreenText/index.d.ts +6 -0
- package/dist/components/ScreenText/types.d.ts +31 -0
- package/dist/components/ScreenText/utils/ScreenTextHelpers.d.ts +14 -0
- package/dist/components/ScreenText/utils/ScreenTextMappings.d.ts +17 -0
- package/dist/components/SequentialRenderPasses/index.d.ts +6 -0
- package/dist/components/TextLabel/TextLabel.d.ts +5 -0
- package/dist/components/TextLabel/alignment.d.ts +4 -0
- package/dist/components/TextLabel/bend.d.ts +9 -0
- package/dist/components/TextLabel/canvas/buildTextLabelTexture.d.ts +4 -0
- package/dist/components/TextLabel/canvas/canvasTypography.d.ts +13 -0
- package/dist/components/TextLabel/canvas/drawBackground.d.ts +21 -0
- package/dist/components/TextLabel/canvas/drawEffects.d.ts +34 -0
- package/dist/components/TextLabel/canvas/drawText.d.ts +19 -0
- package/dist/components/TextLabel/components/TextLabelMesh.d.ts +13 -0
- package/dist/components/TextLabel/constants.d.ts +2 -0
- package/dist/components/TextLabel/hooks/useTextLabelTexture.d.ts +7 -0
- package/dist/components/TextLabel/index.d.ts +2 -62
- package/dist/components/TextLabel/layout/measurement.d.ts +8 -0
- package/dist/components/TextLabel/layout/resolveTextLayout.d.ts +25 -0
- package/dist/components/TextLabel/layout/wrapText.d.ts +6 -0
- package/dist/components/TextLabel/types.d.ts +227 -0
- package/dist/components/TrackingAnchor/index.d.ts +18 -2
- package/dist/components/Transform3D/index.d.ts +30 -0
- package/dist/components/XRMediaSurface/index.d.ts +6 -6
- package/dist/components/XRScene/index.d.ts +14 -3
- package/dist/components/XRViewport/XRViewport.d.ts +11 -0
- package/dist/components/XRViewport/components/HiddenMedia.d.ts +7 -0
- package/dist/components/XRViewport/components/MediaAssetPicker.d.ts +8 -0
- package/dist/components/XRViewport/components/MediaControlStack.d.ts +13 -0
- package/dist/components/XRViewport/components/XRViewportLayers.d.ts +30 -0
- package/dist/components/XRViewport/constants.d.ts +24 -0
- package/dist/components/XRViewport/contexts.d.ts +6 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +13 -0
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +16 -0
- package/dist/components/XRViewport/hooks/useViewportMediaTexture.d.ts +10 -0
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +41 -0
- package/dist/components/XRViewport/hooks/useViewportRenderState.d.ts +47 -0
- package/dist/components/XRViewport/index.d.ts +3 -101
- package/dist/components/XRViewport/layout.d.ts +16 -0
- package/dist/components/XRViewport/slots.d.ts +16 -0
- package/dist/components/XRViewport/types.d.ts +89 -0
- package/dist/components/XRViewport/useViewportSize.d.ts +3 -0
- package/dist/components/index.d.ts +19 -0
- package/dist/contexts-BKvTIayr.cjs +1 -0
- package/dist/contexts-Bk5zz_VR.js +214 -0
- package/dist/debug-ui/component-editor/index.d.ts +19 -0
- package/dist/debug-ui/default-setting/index.d.ts +37 -0
- package/dist/debug-ui/default-setting.cjs +21 -0
- package/dist/debug-ui/default-setting.js +777 -0
- package/dist/debug-ui/face-mesh-renderer-settings/index.d.ts +8 -0
- package/dist/debug-ui/face-retouch/index.d.ts +11 -0
- package/dist/debug-ui/face-warp-3d/index.d.ts +6 -0
- package/dist/debug-ui/hand-joints-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-2d-controller/index.d.ts +6 -0
- package/dist/debug-ui/hand-tracking-3d/index.d.ts +6 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +29 -0
- package/dist/debug-ui/index.d.ts +46 -0
- package/dist/debug-ui/layer-panel/index.d.ts +18 -0
- package/dist/debug-ui/media-source/MediaSourceSwitcher.d.ts +10 -0
- package/dist/debug-ui/media-source/index.d.ts +6 -0
- package/dist/debug-ui/media-source/media-preset.d.ts +9 -0
- package/dist/debug-ui/media-source/session.d.ts +12 -0
- package/dist/debug-ui/media-source.cjs +1 -0
- package/dist/debug-ui/media-source.js +9 -0
- package/dist/debug-ui/mesh-renderer-settings/index.d.ts +6 -0
- package/dist/debug-ui/object-inspector-panel/index.d.ts +25 -0
- package/dist/debug-ui/pin-to-mesh-settings/index.d.ts +10 -0
- package/dist/debug-ui/scene-editor/context.d.ts +38 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +9 -0
- package/dist/debug-ui/scene-editor/index.d.ts +11 -0
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +7 -0
- package/dist/debug-ui/scene-editor/store-utils.d.ts +2 -0
- package/dist/debug-ui/scene-editor/viewport-toolbar.d.ts +4 -0
- package/dist/debug-ui/scene-editor/viewport.d.ts +21 -0
- package/dist/debug-ui/screen-glass-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/GradientStopsEditor.d.ts +5 -0
- package/dist/debug-ui/screen-gradient-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-gradient-settings/styles.d.ts +3 -0
- package/dist/debug-ui/screen-image-settings/index.d.ts +9 -0
- package/dist/debug-ui/screen-shape-settings/index.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/NumberField.d.ts +9 -0
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +3 -0
- package/dist/debug-ui/screen-text-settings/controls/NestedSection.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/controls/Section.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/controls/icons.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/index.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/BackgroundSection.d.ts +8 -0
- package/dist/debug-ui/screen-text-settings/sections/ContentSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/EffectsSection.d.ts +25 -0
- package/dist/debug-ui/screen-text-settings/sections/StyleSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/TransformSection.d.ts +5 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundFillControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundSizeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/BackgroundStrokeControls.d.ts +2 -0
- package/dist/debug-ui/screen-text-settings/sections/background/types.d.ts +7 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/BendEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/EffectChrome.d.ts +21 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/GlowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/InnerShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/OutlineEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/ShadowEffectSection.d.ts +4 -0
- package/dist/debug-ui/screen-text-settings/sections/effects/types.d.ts +14 -0
- package/dist/debug-ui/screen-text-settings/settings.d.ts +90 -0
- package/dist/debug-ui/screen-text-settings/styles.d.ts +26 -0
- package/dist/debug-ui/screen-text-settings/transform.d.ts +6 -0
- package/dist/debug-ui/screen-text-settings/types.d.ts +9 -0
- package/dist/debug-ui/settings-panel/index.d.ts +38 -0
- package/dist/debug-ui/shared/MaterialSection.d.ts +13 -0
- package/dist/debug-ui/shared/ScreenTransformSection.d.ts +32 -0
- package/dist/debug-ui/transform-3d-settings/index.d.ts +11 -0
- package/dist/debug-ui.cjs +10 -0
- package/dist/debug-ui.js +8861 -0
- package/dist/drawNormalizedCrop-B-7zU-Xw.cjs +1 -0
- package/dist/drawNormalizedCrop-CRdIDyl1.js +44 -0
- package/dist/entries/all.d.ts +1 -0
- package/dist/entries/core.d.ts +55 -4
- package/dist/entries/face-effects.d.ts +12 -8
- package/dist/entries/internal.d.ts +1 -1
- package/dist/entries/low-level.d.ts +21 -4
- package/dist/entries/scene-object.d.ts +10 -0
- package/dist/entries/tracking.d.ts +25 -2
- package/dist/face-action/index.d.ts +34 -0
- package/dist/face-attribute-expression/index.d.ts +10 -0
- package/dist/face-effects.cjs +1 -252
- package/dist/face-effects.js +1404 -2613
- package/dist/face-info/blendshapes.d.ts +3 -0
- package/dist/face-info/derive.d.ts +8 -0
- package/dist/face-info/drawFaceCrop.d.ts +10 -0
- package/dist/face-info/getFaceInfo.d.ts +8 -0
- package/dist/face-info/index.d.ts +8 -0
- package/dist/face-info/landmarks.d.ts +21 -0
- package/dist/face-info/types.d.ts +52 -0
- package/dist/getFaceInfo-CyPAKh3h.cjs +1 -0
- package/dist/getFaceInfo-hUKMLFcr.js +118 -0
- package/dist/hand/handJoints2d.d.ts +49 -0
- package/dist/hand/handTracking2d.d.ts +33 -0
- package/dist/hand/handTracking2dController.d.ts +65 -0
- package/dist/hand/handTracking3d.d.ts +52 -0
- package/dist/hooks/faceResults.d.ts +1 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceAction.d.ts +3 -0
- package/dist/hooks/useFaceAttributeExpression.d.ts +16 -0
- package/dist/hooks/useFaceDetection.d.ts +18 -0
- package/dist/hooks/useFaceInfo.d.ts +7 -0
- package/dist/hooks/useFaceInfos.d.ts +15 -0
- package/dist/hooks/useFaceResultReader.d.ts +10 -0
- package/dist/hooks/useFrameCapture.d.ts +18 -0
- package/dist/hooks/useMediaRecorder.d.ts +14 -2
- package/dist/hooks/useOwnedTexture.d.ts +6 -0
- package/dist/hooks/useTrackerContext.d.ts +2 -2
- package/dist/hooks/useXRSession/facade.d.ts +3 -0
- package/dist/hooks/useXRSession/registry.d.ts +9 -0
- package/dist/index-82aENaRq.cjs +1 -0
- package/dist/{index-BD-JWMjE.js → index-BgQAX8rs.js} +198 -134
- package/dist/index-CEc1CAmB.cjs +1 -0
- package/dist/index-CTHeBQOs.js +178 -0
- package/dist/index-D4bLzBr6.cjs +1 -0
- package/dist/index-DSpzjuqd.cjs +1 -0
- package/dist/index-Di70KWuY.js +2049 -0
- package/dist/index-DzEzkBIH.cjs +17 -0
- package/dist/{index-CYMj26Ej.js → index-JygePOwo.js} +565 -498
- package/dist/index-UC0Ux38E.js +111 -0
- package/dist/{internal-KOKJDxCG.js → internal-DuMPpcbp.js} +86 -80
- package/dist/internal-i2JkM85N.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +2 -2
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +959 -632
- package/dist/main.cjs +1 -1
- package/dist/main.js +556 -455
- package/dist/material/MaterialFill.d.ts +20 -0
- package/dist/material/MeshMaterial.d.ts +14 -0
- package/dist/material/index.d.ts +2 -0
- package/dist/models/Body/index.d.ts +1 -1
- package/dist/models/Face/index.d.ts +1 -0
- package/dist/models/Face/rotation.d.ts +3 -0
- package/dist/models/Hand/HandTracking.d.ts +2 -0
- package/dist/render/layerStack.d.ts +29 -0
- package/dist/render/renderGroups.d.ts +47 -0
- package/dist/render/renderPasses.d.ts +18 -0
- package/dist/renderGroups-C9QJrAXu.js +152 -0
- package/dist/renderGroups-Dvm1J4lW.cjs +1 -0
- package/dist/renderLayers-lDtL0_43.cjs +1 -0
- package/dist/renderLayers-zrK2pv5O.js +13 -0
- package/dist/renderPasses-CT5iBwtg.cjs +21 -0
- package/dist/renderPasses-CjgG_6kQ.js +1500 -0
- package/dist/scene-object/index.d.ts +146 -0
- package/dist/scene-object/runtimeRegistry.d.ts +14 -0
- package/dist/scene-object.cjs +1 -0
- package/dist/scene-object.js +40 -0
- package/dist/screen-image/screenImagePresets.d.ts +13 -0
- package/dist/screen-image/screenImageSettings.d.ts +57 -0
- package/dist/screen-text/screenTextPresets.d.ts +6 -0
- package/dist/screen-text/screenTextSettings.d.ts +147 -0
- package/dist/screen2d/coordinates.d.ts +87 -0
- package/dist/screen2d/index.d.ts +7 -0
- package/dist/screen2d/material-runtime.d.ts +32 -0
- package/dist/screen2d/screenTransform.d.ts +47 -0
- package/dist/screen2d/smoothing.d.ts +5 -0
- package/dist/screen2d/texture.d.ts +10 -0
- package/dist/screen2d/transform.d.ts +25 -0
- package/dist/screen2d/types.d.ts +90 -0
- package/dist/{selectors-Bub0o3qy.cjs → selectors-2QvO5RYY.cjs} +1 -1
- package/dist/{selectors-BHO6TnoC.js → selectors-Dw3C-gSk.js} +5 -5
- package/dist/services/MetricsCollector/index.d.ts +7 -1
- package/dist/services/MetricsCollector/utils.d.ts +1 -1
- package/dist/session-BChR4TgK.cjs +31 -0
- package/dist/session-C1StwN0f.js +363 -0
- package/dist/texture/animatedTexture.d.ts +61 -0
- package/dist/texture/animationMath.d.ts +8 -0
- package/dist/texture/sourceResolver.d.ts +30 -0
- package/dist/tracking.cjs +1 -1
- package/dist/tracking.js +582 -298
- package/dist/types/face.d.ts +1 -13
- package/dist/types/hand-tracking.d.ts +8 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/nodes.d.ts +4 -1
- package/dist/types/session.d.ts +2 -0
- package/dist/types/tracking.d.ts +8 -2
- package/dist/types/util-types.d.ts +1 -1
- package/dist/useFaceInfo-C-WfMlYp.cjs +1 -0
- package/dist/useFaceInfo-CwsHZedC.js +62 -0
- package/dist/useFaceResults-CkFc1egZ.js +19 -0
- package/dist/useFaceResults-VcFdOUFV.cjs +1 -0
- package/dist/utils/drawNormalizedCrop.d.ts +22 -0
- package/dist/utils/integrity.d.ts +4 -25
- package/dist/utils/landmarkBounds.d.ts +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/x-Co8jPhP0.js +127 -0
- package/dist/x-KC8E4Gaj.cjs +41 -0
- package/docs/MIGRATION_GUIDE.md +589 -0
- package/docs/SDK_DOCUMENTATION.md +1155 -0
- package/docs/api/audio.mdx +36 -0
- package/docs/api/behavior-components.mdx +164 -0
- package/docs/api/capture-recording.mdx +103 -0
- package/docs/api/debug-ui-scene-editor.mdx +249 -0
- package/docs/api/face-actions.mdx +104 -0
- package/docs/api/face-attribute-expression.mdx +87 -0
- package/docs/api/face-binding-anchors.mdx +53 -0
- package/docs/api/face-effects.mdx +19 -0
- package/docs/api/face-info.mdx +112 -0
- package/docs/api/face-mesh.mdx +98 -0
- package/docs/api/face-painting.mdx +33 -0
- package/docs/api/face-retouching.mdx +73 -0
- package/docs/api/material-render-state.mdx +132 -0
- package/docs/api/runtime-3d.mdx +311 -0
- package/docs/api/scene-object-store.mdx +213 -0
- package/docs/api/screen-image.mdx +41 -0
- package/docs/api/screen-shape.mdx +64 -0
- package/docs/api/screen-space-coordinates.mdx +41 -0
- package/docs/api/screen-text.mdx +39 -0
- package/docs/api/texture-sources.mdx +55 -0
- package/docs/api/trackers.mdx +46 -0
- package/docs/docs.json +70 -0
- package/docs/examples/scene-object-recipes.mdx +194 -0
- package/docs/guides/harness-debug-ui.mdx +139 -0
- package/docs/inspector/hierarchy-panel.mdx +51 -0
- package/docs/inspector/object-inspector-panel.mdx +51 -0
- package/docs/introduction.mdx +121 -0
- package/docs/scene-objects/overview.mdx +127 -0
- package/docs/scene-objects/render-groups.mdx +77 -0
- package/docs/scene-objects/runtime-rendering.mdx +75 -0
- package/docs/texture-api-consumer.md +58 -0
- package/package.json +55 -7
- package/dist/components/FaceRetouch/retouchRegions.d.ts +0 -23
- package/dist/components/FaceRetouch/useFaceRetouchRegions.d.ts +0 -12
- package/dist/index-B5J4gzn2.cjs +0 -1
- package/dist/index-BVBVg96G.cjs +0 -1
- package/dist/index-DtwHElmG.js +0 -157
- package/dist/index-PtFmD6B8.cjs +0 -1
- package/dist/internal-DH5d1Xnq.cjs +0 -1
- package/dist/modules/XRClient/index.d.ts +0 -9
- package/dist/modules/index.d.ts +0 -1
- package/dist/services/ApiService.d.ts +0 -12
- package/dist/types/client.d.ts +0 -3
- package/dist/useFaceResults-cpsSmKKc.js +0 -81
- package/dist/useFaceResults-hVUJYSEY.cjs +0 -1
package/dist/index-B5J4gzn2.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const T=require("react/jsx-runtime"),b=require("@react-three/fiber"),t=require("react"),M=require("./index-PtFmD6B8.cjs"),L=require("three");function P(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(n,s,o.get?o:{enumerable:!0,get:()=>e[s]})}}return n.default=e,Object.freeze(n)}const g=P(L),v=t.createContext(null),U=()=>t.useContext(v);function j(e,n,s=!0){const{session:o}=M.useXRContext(),a=t.useId(),[l,p]=t.useState(null),u=t.useMemo(()=>JSON.stringify(n??{}),[n]);t.useEffect(()=>{let R=!1;return p(null),o.registry.acquire(e,a,n).catch(d=>{R||p(d instanceof Error?d:new Error(String(d)))}),()=>{R=!0,o.registry.release(e,a)}},[o,e,a,u]),t.useEffect(()=>{o.registry.setActive(e,a,s)},[o,e,a,s]);const f=o.store,E=t.useSyncExternalStore(R=>f.subscribe(R),()=>f.getSnapshot().pipeline.get(e)??null,()=>null),m=t.useMemo(()=>E?E.getModelNode():null,[E]);return{ready:E!==null&&l===null,node:m,error:l}}const q=(e,n,s)=>M.unprojectToZZeroInto(e,n,s),H=(e,n,s)=>{const o=(e.x-.5)*2,a=(.5-e.y)*2,l=g.MathUtils.clamp(e.z*2,-1,1);return s.set(o,a,l).unproject(n)},I=(e,n,s,o,a,l)=>{const p=Math.min(n,e.length);for(let u=0;u<p;u++){a(e[u],o,l);const f=u*3;s[f]=l.x,s[f+1]=l.y,s[f+2]=l.z}return p},X=[[127,34,139],[11,0,37],[232,231,120],[72,37,39],[128,121,47],[232,121,128],[104,69,67],[175,171,148],[118,50,101],[73,39,40],[9,151,108],[48,115,131],[194,204,211],[74,40,185],[80,42,183],[40,92,186],[230,229,118],[202,212,214],[83,18,17],[76,61,146],[160,29,30],[56,157,173],[106,204,194],[135,214,192],[203,165,98],[21,71,68],[51,45,4],[144,24,23],[77,146,91],[205,50,187],[201,200,18],[91,106,182],[90,91,181],[85,84,17],[206,203,36],[148,171,140],[92,40,39],[193,189,244],[159,158,28],[247,246,161],[236,3,196],[54,68,104],[193,168,8],[117,228,31],[189,193,55],[98,97,99],[126,47,100],[166,79,218],[155,154,26],[209,49,131],[135,136,150],[47,126,217],[223,52,53],[45,51,134],[211,170,140],[67,69,108],[43,106,91],[230,119,120],[226,130,247],[63,53,52],[238,20,242],[46,70,156],[78,62,96],[46,53,63],[143,34,227],[123,117,111],[44,125,19],[236,134,51],[216,206,205],[154,153,22],[39,37,167],[200,201,208],[36,142,100],[57,212,202],[20,60,99],[28,158,157],[35,226,113],[160,159,27],[204,202,210],[113,225,46],[43,202,204],[62,76,77],[137,123,116],[41,38,72],[203,129,142],[64,98,240],[49,102,64],[41,73,74],[212,216,207],[42,74,184],[169,170,211],[170,149,176],[105,66,69],[122,6,168],[123,147,187],[96,77,90],[65,55,107],[89,90,180],[101,100,120],[63,105,104],[93,137,227],[15,86,85],[129,102,49],[14,87,86],[55,8,9],[100,47,121],[145,23,22],[88,89,179],[6,122,196],[88,95,96],[138,172,136],[215,58,172],[115,48,219],[42,80,81],[195,3,51],[43,146,61],[171,175,199],[81,82,38],[53,46,225],[144,163,110],[52,65,66],[229,228,117],[34,127,234],[107,108,69],[109,108,151],[48,64,235],[62,78,191],[129,209,126],[111,35,143],[117,123,50],[222,65,52],[19,125,141],[221,55,65],[3,195,197],[25,7,33],[220,237,44],[70,71,139],[122,193,245],[247,130,33],[71,21,162],[170,169,150],[188,174,196],[216,186,92],[2,97,167],[141,125,241],[164,167,37],[72,38,12],[38,82,13],[63,68,71],[226,35,111],[101,50,205],[206,92,165],[209,198,217],[165,167,97],[220,115,218],[133,112,243],[239,238,241],[214,135,169],[190,173,133],[171,208,32],[125,44,237],[86,87,178],[85,86,179],[84,85,180],[83,84,181],[201,83,182],[137,93,132],[76,62,183],[61,76,184],[57,61,185],[212,57,186],[214,207,187],[34,143,156],[79,239,237],[123,137,177],[44,1,4],[201,194,32],[64,102,129],[213,215,138],[59,166,219],[242,99,97],[2,94,141],[75,59,235],[24,110,228],[25,130,226],[23,24,229],[22,23,230],[26,22,231],[112,26,232],[189,190,243],[221,56,190],[28,56,221],[27,28,222],[29,27,223],[30,29,224],[247,30,225],[238,79,20],[166,59,75],[60,75,240],[147,177,215],[20,79,166],[187,147,213],[112,233,244],[233,128,245],[128,114,188],[114,217,174],[131,115,220],[217,198,236],[198,131,134],[177,132,58],[143,35,124],[110,163,7],[228,110,25],[356,389,368],[11,302,267],[452,350,349],[302,303,269],[357,343,277],[452,453,357],[333,332,297],[175,152,377],[347,348,330],[303,304,270],[9,336,337],[278,279,360],[418,262,431],[304,408,409],[310,415,407],[270,409,410],[450,348,347],[422,430,434],[313,314,17],[306,307,375],[387,388,260],[286,414,398],[335,406,418],[364,367,416],[423,358,327],[251,284,298],[281,5,4],[373,374,253],[307,320,321],[425,427,411],[421,313,18],[321,405,406],[320,404,405],[315,16,17],[426,425,266],[377,400,369],[322,391,269],[417,465,464],[386,257,258],[466,260,388],[456,399,419],[284,332,333],[417,285,8],[346,340,261],[413,441,285],[327,460,328],[355,371,329],[392,439,438],[382,341,256],[429,420,360],[364,394,379],[277,343,437],[443,444,283],[275,440,363],[431,262,369],[297,338,337],[273,375,321],[450,451,349],[446,342,467],[293,334,282],[458,461,462],[276,353,383],[308,324,325],[276,300,293],[372,345,447],[352,345,340],[274,1,19],[456,248,281],[436,427,425],[381,256,252],[269,391,393],[200,199,428],[266,330,329],[287,273,422],[250,462,328],[258,286,384],[265,353,342],[387,259,257],[424,431,430],[342,353,276],[273,335,424],[292,325,307],[366,447,345],[271,303,302],[423,266,371],[294,455,460],[279,278,294],[271,272,304],[432,434,427],[272,407,408],[394,430,431],[395,369,400],[334,333,299],[351,417,168],[352,280,411],[325,319,320],[295,296,336],[319,403,404],[330,348,349],[293,298,333],[323,454,447],[15,16,315],[358,429,279],[14,15,316],[285,336,9],[329,349,350],[374,380,252],[318,402,403],[6,197,419],[318,319,325],[367,364,365],[435,367,397],[344,438,439],[272,271,311],[195,5,281],[273,287,291],[396,428,199],[311,271,268],[283,444,445],[373,254,339],[282,334,296],[449,347,346],[264,447,454],[336,296,299],[338,10,151],[278,439,455],[292,407,415],[358,371,355],[340,345,372],[346,347,280],[442,443,282],[19,94,370],[441,442,295],[248,419,197],[263,255,359],[440,275,274],[300,383,368],[351,412,465],[263,467,466],[301,368,389],[395,378,379],[412,351,419],[436,426,322],[2,164,393],[370,462,461],[164,0,267],[302,11,12],[268,12,13],[293,300,301],[446,261,340],[330,266,425],[426,423,391],[429,355,437],[391,327,326],[440,457,438],[341,382,362],[459,457,461],[434,430,394],[414,463,362],[396,369,262],[354,461,457],[316,403,402],[315,404,403],[314,405,404],[313,406,405],[421,418,406],[366,401,361],[306,408,407],[291,409,408],[287,410,409],[432,436,410],[434,416,411],[264,368,383],[309,438,457],[352,376,401],[274,275,4],[421,428,262],[294,327,358],[433,416,367],[289,455,439],[462,370,326],[2,326,370],[305,460,455],[254,449,448],[255,261,446],[253,450,449],[252,451,450],[256,452,451],[341,453,452],[413,464,463],[441,413,414],[258,442,441],[257,443,442],[259,444,443],[260,445,444],[467,342,445],[459,458,250],[289,392,290],[290,328,460],[376,433,435],[250,290,392],[411,416,433],[341,463,464],[453,464,465],[357,465,412],[343,412,399],[360,363,440],[437,399,456],[420,456,363],[401,435,288],[372,383,353],[339,255,249],[448,261,255],[133,243,190],[133,155,112],[33,246,247],[33,130,25],[398,384,286],[362,398,414],[362,463,341],[263,359,467],[263,249,255],[466,467,260],[75,60,166],[238,239,79],[162,127,139],[72,11,37],[121,232,120],[73,72,39],[114,128,47],[233,232,128],[103,104,67],[152,175,148],[119,118,101],[74,73,40],[107,9,108],[49,48,131],[32,194,211],[184,74,185],[191,80,183],[185,40,186],[119,230,118],[210,202,214],[84,83,17],[77,76,146],[161,160,30],[190,56,173],[182,106,194],[138,135,192],[129,203,98],[54,21,68],[5,51,4],[145,144,23],[90,77,91],[207,205,187],[83,201,18],[181,91,182],[180,90,181],[16,85,17],[205,206,36],[176,148,140],[165,92,39],[245,193,244],[27,159,28],[30,247,161],[174,236,196],[103,54,104],[55,193,8],[111,117,31],[221,189,55],[240,98,99],[142,126,100],[219,166,218],[112,155,26],[198,209,131],[169,135,150],[114,47,217],[224,223,53],[220,45,134],[32,211,140],[109,67,108],[146,43,91],[231,230,120],[113,226,247],[105,63,52],[241,238,242],[124,46,156],[95,78,96],[70,46,63],[116,143,227],[116,123,111],[1,44,19],[3,236,51],[207,216,205],[26,154,22],[165,39,167],[199,200,208],[101,36,100],[43,57,202],[242,20,99],[56,28,157],[124,35,113],[29,160,27],[211,204,210],[124,113,46],[106,43,204],[96,62,77],[227,137,116],[73,41,72],[36,203,142],[235,64,240],[48,49,64],[42,41,74],[214,212,207],[183,42,184],[210,169,211],[140,170,176],[104,105,69],[193,122,168],[50,123,187],[89,96,90],[66,65,107],[179,89,180],[119,101,120],[68,63,104],[234,93,227],[16,15,85],[209,129,49],[15,14,86],[107,55,9],[120,100,121],[153,145,22],[178,88,179],[197,6,196],[89,88,96],[135,138,136],[138,215,172],[218,115,219],[41,42,81],[5,195,51],[57,43,61],[208,171,199],[41,81,38],[224,53,225],[24,144,110],[105,52,66],[118,229,117],[227,34,234],[66,107,69],[10,109,151],[219,48,235],[183,62,191],[142,129,126],[116,111,143],[118,117,50],[223,222,52],[94,19,141],[222,221,65],[196,3,197],[45,220,44],[156,70,139],[188,122,245],[139,71,162],[149,170,150],[122,188,196],[206,216,92],[164,2,167],[242,141,241],[0,164,37],[11,72,12],[12,38,13],[70,63,71],[31,226,111],[36,101,205],[203,206,165],[126,209,217],[98,165,97],[237,220,218],[237,239,241],[210,214,169],[140,171,32],[241,125,237],[179,86,178],[180,85,179],[181,84,180],[182,83,181],[194,201,182],[177,137,132],[184,76,183],[185,61,184],[186,57,185],[216,212,186],[192,214,187],[139,34,156],[218,79,237],[147,123,177],[45,44,4],[208,201,32],[98,64,129],[192,213,138],[235,59,219],[141,242,97],[97,2,141],[240,75,235],[229,24,228],[31,25,226],[230,23,229],[231,22,230],[232,26,231],[233,112,232],[244,189,243],[189,221,190],[222,28,221],[223,27,222],[224,29,223],[225,30,224],[113,247,225],[99,60,240],[213,147,215],[60,20,166],[192,187,213],[243,112,244],[244,233,245],[245,128,188],[188,114,174],[134,131,220],[174,217,236],[236,198,134],[215,177,58],[156,143,124],[25,110,7],[31,228,25],[264,356,368],[0,11,267],[451,452,349],[267,302,269],[350,357,277],[350,452,357],[299,333,297],[396,175,377],[280,347,330],[269,303,270],[151,9,337],[344,278,360],[424,418,431],[270,304,409],[272,310,407],[322,270,410],[449,450,347],[432,422,434],[18,313,17],[291,306,375],[259,387,260],[424,335,418],[434,364,416],[391,423,327],[301,251,298],[275,281,4],[254,373,253],[375,307,321],[280,425,411],[200,421,18],[335,321,406],[321,320,405],[314,315,17],[423,426,266],[396,377,369],[270,322,269],[413,417,464],[385,386,258],[248,456,419],[298,284,333],[168,417,8],[448,346,261],[417,413,285],[326,327,328],[277,355,329],[309,392,438],[381,382,256],[279,429,360],[365,364,379],[355,277,437],[282,443,283],[281,275,363],[395,431,369],[299,297,337],[335,273,321],[348,450,349],[359,446,467],[283,293,282],[250,458,462],[300,276,383],[292,308,325],[283,276,293],[264,372,447],[346,352,340],[354,274,19],[363,456,281],[426,436,425],[380,381,252],[267,269,393],[421,200,428],[371,266,329],[432,287,422],[290,250,328],[385,258,384],[446,265,342],[386,387,257],[422,424,430],[445,342,276],[422,273,424],[306,292,307],[352,366,345],[268,271,302],[358,423,371],[327,294,460],[331,279,294],[303,271,304],[436,432,427],[304,272,408],[395,394,431],[378,395,400],[296,334,299],[6,351,168],[376,352,411],[307,325,320],[285,295,336],[320,319,404],[329,330,349],[334,293,333],[366,323,447],[316,15,315],[331,358,279],[317,14,316],[8,285,9],[277,329,350],[253,374,252],[319,318,403],[351,6,419],[324,318,325],[397,367,365],[288,435,397],[278,344,439],[310,272,311],[248,195,281],[375,273,291],[175,396,199],[312,311,268],[276,283,445],[390,373,339],[295,282,296],[448,449,346],[356,264,454],[337,336,299],[337,338,151],[294,278,455],[308,292,415],[429,358,355],[265,340,372],[352,346,280],[295,442,282],[354,19,370],[285,441,295],[195,248,197],[457,440,274],[301,300,368],[417,351,465],[251,301,389],[394,395,379],[399,412,419],[410,436,322],[326,2,393],[354,370,461],[393,164,267],[268,302,12],[312,268,13],[298,293,301],[265,446,340],[280,330,425],[322,426,391],[420,429,437],[393,391,326],[344,440,438],[458,459,461],[364,434,394],[428,396,262],[274,354,457],[317,316,402],[316,315,403],[315,314,404],[314,313,405],[313,421,406],[323,366,361],[292,306,407],[306,291,408],[291,287,409],[287,432,410],[427,434,411],[372,264,383],[459,309,457],[366,352,401],[1,274,4],[418,421,262],[331,294,358],[435,433,367],[392,289,439],[328,462,326],[94,2,370],[289,305,455],[339,254,448],[359,255,446],[254,253,449],[253,252,450],[252,256,451],[256,341,452],[414,413,463],[286,441,414],[286,258,441],[258,257,442],[257,259,443],[259,260,444],[260,467,445],[309,459,250],[305,289,290],[305,290,460],[401,376,435],[309,250,392],[376,411,433],[453,341,464],[357,453,465],[343,357,412],[437,343,399],[344,360,440],[420,437,456],[360,420,363],[361,401,288],[265,372,353],[390,339,249],[339,448,255],[255,339,448]].flat(),z=[.5104879319667817,.33515610277652746,.5174233198165894,.43859300494194037,.5123749554157258,.406469448208809,.5423470318317414,.5244461464881898,.5190713584423066,.46557595014572145,.5194876372814179,.5006013351678849,.5178673148155213,.5855525898933411,.7009655416011811,.5918984371423721,.5193980515003205,.6528422343730926,.520683366060257,.689273599088192,.5248700261116028,.8232529717683792,.5099657952785492,.32301718473434454,.5088536620140076,.31080526888370513,.5081197202205658,.3013389307260514,.5072353065013886,.29900476515293123,.5073091566562653,.28442813932895666,.5065075337886811,.26649361431598667,.5061309516429902,.24778731942176818,.5031875848770142,.22179436564445493,.515326726436615,.4231037962436676,.5375777959823609,.4205444622039795,.8049442350864411,.6867966356873512,.6222659975290299,.570705144405365,.6496635556221009,.567776631116867,.6773027807474137,.5670208501815797,.7126377105712891,.5800703662633897,.5999099642038346,.5764724123477936,.674340370297432,.6495546865463258,.639536875486374,.6477413746714593,.703840109705925,.642201315164566,.7209078550338746,.6294069054722786,.7342745542526246,.5601695317029953,.6015644401311875,.18118685364723203,.7114282578229905,.598883952498436,.809715884923935,.5682615923881531,.7667155593633652,.5767241555452347,.6445030301809311,.45154162526130676,.541424173116684,.34213731765747074,.5359058856964112,.3113374251127243,.5710002213716507,.33134433805942537,.5891562283039093,.31890978991985325,.5585465461015702,.3096196609735489,.5759132236242295,.30601608335971836,.6229794204235077,.2713706839084626,.5398103773593903,.43802148282527925,.545369166135788,.46441581428051,.7616913348436356,.6473416510224344,.5914883643388749,.5243312466144563,.5945767045021058,.44076132655143746,.5964909076690674,.4544808346033096,.7225886166095734,.4498931097984314,.5443432211875916,.49703910827636727,.7029067009687424,.6777765545248986,.7391736537218094,.6677046212553979,.7836920201778412,.7359224516153335,.577455359697342,.6573990839719772,.6085408657789231,.6353888112306596,.6427326381206513,.298196165561676,.7550604224205018,.30743678390979773,.5732827365398407,.4262381809949875,.5523188143968583,.417594336271286,.6096987754106522,.29745593249797825,.6036115020513535,.2985246556997299,.7549919366836548,.6845966669917107,.592850747704506,.4273046988248826,.6501948565244675,.6762702855467797,.6582381755113602,.699515787065029,.682483646273613,.802994977235794,.768890205025673,.710366437137127,.6672395795583725,.752104974091053,.7775519520044327,.6584857258200645,.7920276552438736,.6709628927707671,.5397542297840119,.3256357330083847,.5643998861312867,.3199443298578262,.5826229482889176,.313130943775177,.5657853364944458,.42035281538963326,.606510478258133,.2980171996355057,.5952901721000672,.2918463486433029,.5999826073646546,.29865378022193906,.565356719493866,.4374908703565598,.570739108324051,.30172707617282873,.5532697021961213,.303354971408844,.532040822505951,.3026815611124039,.5385064661502839,.22311560392379765,.5377482950687409,.25083183526992797,.5373399734497071,.26933391273021695,.5351483404636384,.28629542768001554,.5317461371421814,.3004490631818772,.5704152762889863,.30009212374687194,.5761924862861634,.2931597578525544,.5817892730236054,.28451425909996036,.5862761169672013,.27445026516914367,.6169582635164261,.3500816184282303,.7930811375379563,.4456584650278092,.5136566936969758,.41420710563659674,.5836256474256516,.29897587478160864,.5893380820751191,.29504160165786747,.5458188831806183,.4063113230466843,.581692311167717,.41034119904041294,.5490593492984772,.4114610868692398,.6189475685358048,.5063568043708802,.6631498366594315,.48547921061515814,.5990702986717225,.44076220870018007,.7452016949653626,.7754116746783257,.729542288184166,.7380649703741073,.7152380675077439,.6996659177541733,.6012845069169999,.2532631474733353,.5908916622400284,.6924743655323982,.6002487272024155,.7558749470114707,.611236396431923,.817432113289833,.6991332352161408,.5705236423015594,.7608276635408402,.5389788854122162,.5859951555728913,.5837152945995332,.7452233761548996,.6138822454214097,.5740126550197602,.542653586268425,.5829357832670212,.45267452478408815,.7883433729410172,.5171645599603654,.7431249052286149,.5203535276651383,.7091684520244599,.5116798001527787,.6566549122333527,.5192352938652038,.6176983743906022,.532645167708397,.590181502699852,.5458893078565599,.5431278228759766,.5780327129364013,.7785866141319275,.4588600414991379,.7662802815437317,.614813904762268,.528258103132248,.42353384375572206,.5884005159139634,.49679056286811835,.8132390558719635,.5690749335289003,.5698921114206315,.5609081107378007,.5997681200504303,.4383326607942582,.7258545190095902,.5959577548503876,.5829301953315735,.4692867088317872,.7767194837331772,.37870833754539496,.5859857678413392,.5927838939428329,.5655010223388672,.4863545227050781,.7103684276342392,.24216726005077366,.7039464592933655,.21081999421119696,.7955554753541947,.45157338261604313,.7394011497497559,.27975760281085965,.8023439675569535,.6235768947005271,.6065513819456101,.1520459520816803,.5237656712532044,.4144193726778031,.6113508373498917,.4744607317447663,.7872020035982132,.5706054615974427,.6744208365678788,.5840893256664277,.6509357273578644,.5835042405128479,.599469143152237,.28584001839160916,.76683469414711,.4027401643991471,.5548133134841919,.11242247700691227,.6348527550697327,.15134210765361789,.6676738739013672,.17523885548114776,.5231557369232178,.758142014145851,.49590798020362853,.10746171355247497,.6282390981912613,.5856175380945206,.6072420954704285,.5888098138570785,.592762503027916,.5906054276227952,.7843813925981522,.61877524882555,.610203567147255,.6159668180346489,.6345708996057511,.625477318763733,.6599059730768204,.6266139122843744,.6838259130716324,.6209151762723923,.6978932946920395,.6127474161982536,.8138886868953705,.6332776087522507,.690067994594574,.587394626736641,.5115295231342316,.3814830261468887,.593753132224083,.3682318288087845,.5745513767004014,.43174642801284796,.5468618154525757,.38006519258022314,.5175330221652985,.6183956491947173,.6776301890611649,.20638245522975923,.6439310491085053,.1795444029569626,.5587406486272812,.13319884419441225,.7303948730230332,.25156523168087,.5936179041862488,.6020026791095734,.5595558166503907,.5354639637470247,.49903409481048583,.12705478847026824,.5986292988061905,.12926876127719883,.7810411036014557,.3901792484521866,.5526776045560837,.3004089254140854,.5582781463861466,.2904709684848786,.5625745087862015,.2769930589199066,.5656344175338746,.26021293580532073,.5736826092004776,.23544175803661344,.5897697389125824,.3026730704307556,.5960018962621689,.3050022739171982,.6013990819454194,.30801084220409397,.6334722220897675,.32613734483718876,.7345953911542893,.3890004771947861,.5586504369974137,.5622388321161271,.5686756849288941,.6147718372941018,.5835970371961594,.6114995065331459,.58382708132267,.30018893957138065,.7323651343584061,.3204736191034317,.5478970587253571,.6144195291399956,.5885591685771943,.20925473153591162,.5188342511653901,.5294416445493699,.5430448532104493,.5502454686164857,.5189176678657532,.5563708889484407,.5749752998352051,.4918947476148606,.5015926539897919,.1563655036687851,.5023517191410065,.19124654710292815,.5467969954013825,.1949619370698929,.6493796885013581,.2596786844730377,.6223085105419159,.4147812741994858,.6219283074140549,.2305004018545151,.6836527764797211,.41583852946758276,.6457133769989014,.38482945740222935,.7015091359615326,.3687519657611847,.5560723870992661,.1615346747636795,.5877480685710907,.4753766226768494,.672212439775467,.23758670270442966,.6372418433427811,.20715841531753537,.6714329898357392,.2934120523929596,.7559577107429505,.3546825754642487,.7028004407882691,.28965476036071774,.7641248583793641,.3323610144853592,.6633666038513184,.34586538851261145,.5732450067996979,.5168171036243439,.5740206122398377,.4420601803064346,.5862565368413926,.4328912365436554,.5658091634511948,.46056721985340127,.5935333251953125,.6414948242902756,.643502163887024,.6581727835536004,.6862205892801285,.6599488797783852,.71900634765625,.6517863023281099,.7387710094451905,.6366994085907935,.7436862468719483,.5870225805044174,.8067718029022217,.5102852332592012,.719052392244339,.549573050737381,.6912373930215836,.5426725524663925,.6540380597114563,.5452089506387712,.6191460520029068,.5529706466197968,.5933077514171601,.5624450343847276,.5760908752679825,.5711276936531067,.8037864595651627,.5079354095458986,.5832139283418656,.42433229863643646,.5602819353342057,.5111040878295898,.5571386992931366,.44193623840808877,.5406022548675538,.42711933732032775,.5550468444824219,.43675835609436037,.5743813246488572,.4152073520421982,.5367868125438691,.42474128484725954,.5321040332317353,.41727378547191624,.5769275009632111,.5919214832782747,.5631695121526719,.5864408034086228,.555830317735672,.5819090950489045,.7057080000638962,.6055842030048371,.7297580271959305,.614007951617241,.49450652599334716,.5258826154470444,.30584611296653746,.6040364730358123,.4885244846343994,.4224347966909409,.188004332780838,.7111089858412742,.3873521864414215,.5786778944730759,.3588928759098053,.5761974024772645,.32972376346588134,.5772378969192504,.29263614416122435,.5937507289648056,.4124107241630554,.5837435233592987,.3437161326408386,.6627882960438729,.3795058310031891,.6574259343743325,.3114838480949402,.657741964161396,.2904722273349762,.6461278694868089,.2668101370334625,.5759735572338105,.3916287899017334,.18396661460399627,.2956514835357666,.6133467811346054,.17441000342369078,.5913206297159195,.23045413494110106,.5952582108974458,.3695909559726715,.4586390632390976,.4777859032154083,.34189285218715665,.4799880862236023,.31095413148403167,.4436598002910614,.32987600147724155,.42009713053703307,.3173161882162094,.4536511182785034,.3079365211725235,.431768137216568,.30468503117561346,.37606616616249083,.27423435926437384,.49449856877326964,.4396295297145844,.4917183697223663,.4654612708091736,.2524005055427551,.6652582022547722,.4289156973361969,.5291139262914657,.4268526315689087,.44427823305130004,.42474048137664794,.45817836105823523,.2809027314186096,.46354105353355407,.49383275508880614,.49885324716567997,.3271153151988983,.6924127805233002,.28349151015281676,.6843035730719567,.22369228601455687,.7584647151827812,.4591939032077789,.6617383736371993,.40913431644439696,.6426751393079757,.35715471506118773,.30240225076675414,.1987894058227539,.3237072455883026,.4482724845409393,.42876928627491,.4697932779788971,.4196605491638184,.39104996919631957,.2959751355648041,.3971476137638092,.29665681600570676,.26748310327529906,.7016683402657509,.4251814365386963,.4304117369651795,.3845069885253906,.6860294970870018,.3804918110370636,.7099798905849457,.35481985211372374,.8164000543951988,.2475942552089691,.730037857890129,.37163846492767333,.7639490339159964,.23443256616592406,.677293357551098,.2116762578487396,.6924480664730073,.4783883273601532,.32515374898910526,.44883744716644286,.3184075164794922,.42566208839416503,.31092865943908693,.45405327081680297,.4228447753190994,.3932682454586029,.2964416819810867,.4071350872516632,.290535255074501,.40034677386283873,.29673135757446295,.4610676050186157,.44076672971248626,.4361940503120422,.3005809444189072,.45694692730903624,.30211268544197084,.4812539994716644,.30183855772018436,.46574126482009887,.22492808878421783,.47153966426849364,.25130698263645174,.4740802526473999,.2694691020250321,.4768980026245117,.28705804526805884,.48090897798538207,.2996276724338532,.43501039147377013,.2992805469036102,.4293511092662811,.2932880002260208,.4233271360397339,.28415390133857726,.41761367321014403,.27479386210441586,.39445154666900634,.3538810330629349,.16652100086212157,.4672100204229355,.4183532476425171,.29779809594154355,.41378535628318786,.29400077641010286,.47695048451423644,.40816306352615356,.43489335775375365,.41207451105117804,.473628032207489,.41300628066062933,.3975309908390045,.5133917200565339,.34924407601356505,.4949547010660172,.4189921498298645,.44448454558849343,.27738903760910033,.7946441161632538,.29866914749145507,.7549788492918015,.3170970857143402,.7143296006321906,.39919986128807067,.2556870716810226,.4517517566680908,.6986333075165749,.44375439286231994,.7623249980807305,.4346091330051422,.8250303360819817,.3058603286743164,.5830274391174317,.235262531042099,.5560186910629272,.4279192566871643,.5892863947153091,.2622906148433685,.6309370476007461,.45053591132164,.5464099961519242,.44443781971931456,.45605955004692084,.20207332372665404,.5370177584886551,.25663607120513915,.5358516681194305,.29581143260002135,.5243526387214661,.3525206625461578,.5284005987644196,.39442025423049926,.5392975616455078,.42579718232154845,.5511161494255066,.49076547026634215,.5801296907663345,.20957841277122496,.47626241028308874,.23929433822631835,.6331100556254388,.5024659812450409,.4247821944952011,.432133811712265,.5009672063589097,.15906893014907836,.5940177994966507,.4492078602313995,.5648097443580629,.41579030752182006,.4419312763214112,.2798506796360016,.6113770532608032,.44294874668121337,.47275686144828805,.1783646523952484,.3979667472839356,.42730753421783446,.5981915760040284,.46777849197387694,.4889896112680436,.26486464142799376,.2499848622083664,.26026474237442015,.21801546096801755,.17761032581329345,.47220298230648045,.23215438723564147,.29172880232334136,.1906857371330261,.6463678139448166,.3811529755592346,.1541750180721283,.5033367156982422,.41569132089614874,.40528597235679625,.4797393995523453,.2049500823020935,.59123428940773,.3344294309616089,.5942869651317597,.35825960636138915,.5929379391670226,.4015964150428772,.28595646202564245,.21618961095809935,.4194869863986969,.43316020369529723,.11274379968643189,.34098224639892577,.1526068884134293,.3026312172412872,.17882644414901733,.3831480026245117,.5945327538251877,.40483357310295104,.5966399866342544,.419615763425827,.5973996269702913,.2160478115081787,.6388220790028571,.40051244497299193,.6220169800519944,.37555851340293883,.6336345481872558,.3499592423439026,.6373451414704323,.32648445963859557,.6342222797870636,.3108482539653778,.6266552078723908,.16784127354621886,.6591027337312698,.3177972316741943,.5982361245155334,.4220952868461609,.3706905978918075,.4483287215232849,.43451813936233524,.4753179132938385,.38104525983333587,.30160035490989684,.21209139108657843,.33879016637802123,.18215490162372588,.4353105306625366,.1335425513982773,.22725783586502074,.2627154815196991,.4187734603881836,.6076370733976364,.471796441078186,.5377814787626267,.3835057199001312,.13003402531147007,.18837626576423644,.4081169712543488,.4558822691440582,.3006539422273636,.45070006251335143,.29020555198192594,.44506027102470397,.276558490395546,.441160249710083,.26132532536983494,.42807196378707885,.237567846775055,.413764613866806,.300301303267479,.40849854350090026,.3033808845281601,.40325652360916137,.3060078132152558,.3719393193721771,.3296157675981522,.2585947096347809,.4027331072092057,.4712364852428436,.5652889716625213,.4525624096393585,.6187475714087487,.43274884223937987,.6166740807890891,.4197424530982971,.2985221195220948,.25107048749923705,.3324888157844544,.48253663182258605,.6165598976612092,.40862621665000914,.21186126053333282,.4922338902950287,.5517929780483246,.4509614884853363,.49562425196170806,.45456190705299376,.19553345918655402,.3438455045223236,.2646773803234101,.39053775668144225,.41997271955013277,.3724295377731323,.2345973211526871,.32362549304962157,.42551548063755035,.3627460479736328,.39166522800922393,.2982912242412567,.37974442124366764,.44216259121894835,.16258520364761353,.4327280104160309,.47912641644477844,.31535937190055846,.24389803588390352,.35182328820228576,.2114975947141648,.3249718725681305,.3009969878196716,.22358919978141784,.36996547162532806,.2854694604873657,.29810287833213805,.2033691883087158,.34796677708625795,.3403308272361755,.35305335700511936,.4522935628890991,.520306442975998,.45397244691848754,.4453733104467393,.4360526978969574,.4358169931173325,.4670851409435272,.463337938785553,.430365788936615,.6462299782037735,.3818374752998352,.6678127396106721,.3376319885253906,.6731280717253685,.3007634162902832,.6677066612243652,.2756028652191162,.6542664083838463,.25909878611564635,.6035455572605133,.17238967418670653,.5322284626960754,.28373541235923766,.5632325726747514,.3148886442184448,.5544471430778504,.35481600761413573,.554238184094429,.39195387363433837,.5604119020700455,.4199950277805328,.5684955823421478,.4408359706401825,.5755523312091828,.1607656955718994,.5315613377094268,.43638269901275634,.4271241891384125,.4722903251647949,.513996543288231,.4744726598262787,.4443250972032547,.48785080313682555,.4292660462856293,.4740713119506836,.43900651216506964,.443528014421463,.4168834346532822,.49345849752426146,.4267724323272705,.49457465410232543,.4177086848020554,.438745903968811,.5969951617717744,.4560649275779724,.5900395292043685,.4670982837677002,.5844003933668136,.3021982192993164,.6197374525666237,.27794389724731444,.6304952013492584,.6290517628192902,.6082503873109817,.601810845732689,.608769752383232,.6309714198112488,.6319623801112175,.657788547873497,.6077486652135848,.6277183473110199,.5834045577049256,.333698707818985,.6181534442305565,.3082489252090454,.6187389704585076,.3358501076698303,.6419334176182747,.3613401234149933,.618020570576191,.33353258967399596,.5936576622724534],N=468,K=N*3,S=({material:e,faceIndex:n=0,numFaces:s,visible:o=!0,children:a})=>{const{ready:l,node:p}=j(M.XRModel.FACE_TRACKER,s===void 0?void 0:{numFaces:s}),{camera:u}=b.useThree(),f=t.useRef(null),E=t.useRef(null),m=t.useRef(null),R=t.useRef(null),d=t.useRef(null),x=t.useRef(new g.Vector3),h=t.useMemo(()=>{const y=new Uint16Array(X),A=new g.BufferAttribute(y,1),r=new g.Float32BufferAttribute(z,2),i=new Float32Array(K),c=new g.Float32BufferAttribute(i,3);return c.setUsage(g.DynamicDrawUsage),{indexAttr:A,uvAttr:r,positionAttr:c,positions:i}},[]);t.useEffect(()=>{R.current=h.indexAttr,d.current=h.uvAttr,m.current=h.positionAttr,E.current=h.positions;const y=f.current;if(y){const A=y.geometry;A.setAttribute("position",h.positionAttr),A.setAttribute("uv",h.uvAttr),A.setIndex(h.indexAttr)}return()=>{R.current=null,d.current=null,m.current=null,E.current=null}},[h]),b.useFrame(()=>{var C;if(!l||!p||!f.current)return;const{detectionResults:y}=p,A=(C=y==null?void 0:y.faceLandmarks)==null?void 0:C[n],r=f.current.geometry,i=E.current,c=m.current;if(!A||A.length===0||!i||!c){r.drawRange.count!==0&&r.setDrawRange(0,0);return}r.getAttribute("position")!==c&&(r.setAttribute("position",c),r.setAttribute("uv",d.current),r.setIndex(R.current)),r.drawRange.count===0&&r.setDrawRange(0,1/0),I(A,N,i,u,q,x.current),c.needsUpdate=!0,r.computeVertexNormals()});const k=a!=null&&a!==!1;return T.jsxs("mesh",{material:e,ref:f,visible:o,children:[T.jsx("bufferGeometry",{}),!e&&!k&&T.jsx("meshStandardMaterial",{attach:"material",transparent:!0,depthWrite:!1,side:g.DoubleSide,needsUpdate:!0}),!e&&k?a:null]})};S.displayName="FaceMesh";const V={"face.forehead":10,"face.noseTip":1,"face.chin":152,"face.leftEyeOuter":263,"face.rightEyeOuter":33,"face.leftCheek":425,"face.rightCheek":205,"face.mouthCenter":13},Z=({faceIndex:e=0,numFaces:n,scaleWithFace:s=!1,targetFps:o,active:a=!0,children:l})=>{const p=t.useRef(!1),u=t.useRef(null),f=t.useMemo(()=>{if(!(n===void 0&&o===void 0))return{...n===void 0?{}:{numFaces:n},...o===void 0?{}:{targetFps:o}}},[n,o]),{ready:E,node:m}=j(M.XRModel.FACE_TRACKER,f,a),{camera:R}=b.useThree(),d=t.useRef(R);d.current!==R&&(d.current=R,p.current=!1);const x=t.useRef(null);b.useFrame(()=>{if(!E||!m||!u.current)return;x.current=m,!p.current&&d.current&&(m._setCamera(d.current,e),p.current=!0);const r=m.getFace(e);if(!r){u.current.visible=!1;return}u.current.visible=!0;const{position:i,rotation:c,scale:C}=r.transform;u.current.position.set(i.x,i.y,i.z),u.current.rotation.set(c.x,c.y,c.z),s?u.current.scale.set(C.x,C.y,C.z):u.current.scale.set(1,1,1)});const h=t.useCallback(r=>{var D,F;const i=V[r];if(i===void 0)return null;const c=x.current,C=(F=(D=c==null?void 0:c.detectionResults)==null?void 0:D.faceLandmarks)==null?void 0:F[e];if(!C||C.length===0)return null;const w=C[i];return w?{position:M.unprojectToZZero(w,d.current)}:null},[e]),k=t.useMemo(()=>({type:"face",resolveLandmark:h}),[h]);let y;const A=[];return t.Children.forEach(l,r=>{var i,c;t.isValidElement(r)&&(((i=r.type)==null?void 0:i.displayName)==="FaceTracker.Mesh"||((c=r.type)==null?void 0:c.displayName)==="FaceMesh")?y=t.cloneElement(r,{faceIndex:e,numFaces:n}):A.push(r)}),T.jsxs(v.Provider,{value:k,children:[T.jsx("group",{ref:u,renderOrder:M.RENDER_LAYERS.TRACKED,children:A}),y]})},O=e=>T.jsx(S,{...e});O.displayName="FaceTracker.Mesh";const _=Z;_.Mesh=O;const B=_;exports.FaceMesh=S;exports.FaceTracker=_;exports.HeadTracker=B;exports.TrackerContext=v;exports.projectLandmarkWithDepth=H;exports.useTrackerContext=U;exports.useXRModel=j;
|
package/dist/index-BVBVg96G.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const h=require("react/jsx-runtime"),s=require("react"),v=require("./index-PtFmD6B8.cjs"),F=require("@react-three/fiber"),_=require("three"),y=require("./selectors-Bub0o3qy.cjs");function X(t){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const u=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(o,n,u.get?u:{enumerable:!0,get:()=>t[n]})}}return o.default=t,Object.freeze(o)}const b=X(_),E=s.createContext(null),j=()=>{const t=s.useContext(E);if(!t)throw new Error("useScreenSpace must be used within ScreenSpaceUI");return t},R=s.createContext(null),O=()=>s.useContext(R)??1,A=(t,o,n,u,f)=>{const p=t/2,r=o/2,e=n.left*p+u.left,a=n.right*p-u.right,i=n.bottom*r+u.bottom,l=n.top*r-u.top,c=a-e,m=l-i,x=(e+a)/2,g=(i+l)/2,d=f[0]*c/2,S=f[1]*m/2;return{centerX:x,centerY:g,width:c,height:m,pivotX:d,pivotY:S}},L={left:0,right:0,top:0,bottom:0},M={left:0,right:0,top:0,bottom:0},D=[0,0],q=({anchors:t,offsets:o,pivot:n=D,children:u})=>{const{width:f,height:p}=j(),r=s.useMemo(()=>({anchors:{...L,...t??{}},offsets:{...M,...o??{}}}),[t,o]),e=s.useMemo(()=>A(f,p,r.anchors,r.offsets,n),[f,p,r,n]);s.useEffect(()=>{const c=r.anchors;c.left>c.right&&console.warn(`[ScreenTransform] inverted X axis: anchors.left (${c.left}) > anchors.right (${c.right})`),c.bottom>c.top&&console.warn(`[ScreenTransform] inverted Y axis: anchors.bottom (${c.bottom}) > anchors.top (${c.top})`),e.width<=0&&console.warn(`[ScreenTransform] zero or negative width (${e.width.toFixed(3)}) — anchors + offsets collapse the X extent`),e.height<=0&&console.warn(`[ScreenTransform] zero or negative height (${e.height.toFixed(3)}) — anchors + offsets collapse the Y extent`)},[r,e.width,e.height]);const a=n[0]!==0||n[1]!==0,i=a?[1,1,1]:[e.width,e.height,1],l=!a&&e.width>0&&e.height>0?e.width/e.height:null;return h.jsx("group",{position:[e.centerX-e.pivotX,e.centerY-e.pivotY,0],scale:i,renderOrder:v.RENDER_LAYERS.SCREEN_UI,children:h.jsx(R.Provider,{value:l,children:u})})},T={display:"flex",alignItems:"center",justifyContent:"center",height:"100%",background:"#363636",color:"white",fontFamily:"monospace"},Y=()=>h.jsx("div",{style:T,children:"Loading..."}),$=t=>h.jsx("div",{style:T,children:t.error}),C={position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:10},H=({style:t,canvasProps:o,children:n,loadingComponent:u,loadingTransitionDuration:f,errorComponent:p,renderTargetSize:r})=>{const e=s.useRef(null),a=s.useRef(null),i=s.useRef(null),{session:l}=v.useXRContext(),c=y.useXRReady(),m=y.useXRError(),[x,g]=s.useState(!0);return s.useEffect(()=>{if(r){l._setRenderSize(Math.round(r.width),Math.round(r.height));return}const d=()=>{a.current&&l._setRenderTarget(a.current)},S=()=>{i.current!==null&&cancelAnimationFrame(i.current),i.current=requestAnimationFrame(()=>{i.current=null,d()})},w=new ResizeObserver(()=>{S()});return e.current&&w.observe(e.current),S(),()=>{w.disconnect(),i.current!==null&&(cancelAnimationFrame(i.current),i.current=null)}},[r,l]),s.useEffect(()=>{c&&(f?setTimeout(()=>{g(!1)},f):g(!1))},[c,f]),h.jsxs("div",{id:"vincentt-xr-container",ref:e,style:{width:"100%",height:"100%",...t,position:"relative"},children:[x&&h.jsx("div",{style:C,children:u||h.jsx(Y,{})}),m&&h.jsx("div",{style:C,children:p||h.jsx($,{error:m.message})}),h.jsx(F.Canvas,{id:"vincentt-xr-canvas",ref:a,dpr:[1,3],gl:{alpha:!0,preserveDrawingBuffer:!0,antialias:!0,premultipliedAlpha:!1,toneMapping:b.NoToneMapping},...o,onCreated:d=>{r?l._setRenderSize(Math.round(r.width),Math.round(r.height)):l._setRenderTarget(a.current),l._setR3FState({renderer:d.gl,scene:d.scene,camera:d.camera}),d.gl.outputColorSpace=b.SRGBColorSpace,o!=null&&o.onCreated&&o.onCreated(d)},children:n})]})};exports.ScreenRectAspectContext=R;exports.ScreenSpaceContext=E;exports.ScreenTransform=q;exports.XRScene=H;exports.computeScreenTransform=A;exports.useScreenRectAspect=O;exports.useScreenSpace=j;
|
package/dist/index-DtwHElmG.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { jsx as u, jsxs as X } from "react/jsx-runtime";
|
|
2
|
-
import { createContext as b, useContext as E, useMemo as y, useEffect as w, useRef as R, useState as T } from "react";
|
|
3
|
-
import { R as _, u as L } from "./index-CYMj26Ej.js";
|
|
4
|
-
import { Canvas as M } from "@react-three/fiber";
|
|
5
|
-
import * as v from "three";
|
|
6
|
-
import { b as Y, c as D } from "./selectors-BHO6TnoC.js";
|
|
7
|
-
const $ = b(null), I = () => {
|
|
8
|
-
const o = E($);
|
|
9
|
-
if (!o)
|
|
10
|
-
throw new Error("useScreenSpace must be used within ScreenSpaceUI");
|
|
11
|
-
return o;
|
|
12
|
-
}, A = b(null), V = () => E(A) ?? 1, O = (o, i, c, d, l) => {
|
|
13
|
-
const f = o / 2, t = i / 2, e = c.left * f + d.left, a = c.right * f - d.right, r = c.bottom * t + d.bottom, s = c.top * t - d.top, n = a - e, p = s - r, S = (e + a) / 2, m = (r + s) / 2, h = l[0] * n / 2, g = l[1] * p / 2;
|
|
14
|
-
return { centerX: S, centerY: m, width: n, height: p, pivotX: h, pivotY: g };
|
|
15
|
-
}, U = { left: 0, right: 0, top: 0, bottom: 0 }, H = { left: 0, right: 0, top: 0, bottom: 0 }, N = [0, 0], J = ({
|
|
16
|
-
anchors: o,
|
|
17
|
-
offsets: i,
|
|
18
|
-
pivot: c = N,
|
|
19
|
-
children: d
|
|
20
|
-
}) => {
|
|
21
|
-
const { width: l, height: f } = I(), t = y(
|
|
22
|
-
() => ({
|
|
23
|
-
anchors: { ...U, ...o ?? {} },
|
|
24
|
-
offsets: { ...H, ...i ?? {} }
|
|
25
|
-
}),
|
|
26
|
-
[o, i]
|
|
27
|
-
), e = y(
|
|
28
|
-
() => O(l, f, t.anchors, t.offsets, c),
|
|
29
|
-
[l, f, t, c]
|
|
30
|
-
);
|
|
31
|
-
w(() => {
|
|
32
|
-
const n = t.anchors;
|
|
33
|
-
n.left > n.right && console.warn(
|
|
34
|
-
`[ScreenTransform] inverted X axis: anchors.left (${n.left}) > anchors.right (${n.right})`
|
|
35
|
-
), n.bottom > n.top && console.warn(
|
|
36
|
-
`[ScreenTransform] inverted Y axis: anchors.bottom (${n.bottom}) > anchors.top (${n.top})`
|
|
37
|
-
), e.width <= 0 && console.warn(
|
|
38
|
-
`[ScreenTransform] zero or negative width (${e.width.toFixed(3)}) — anchors + offsets collapse the X extent`
|
|
39
|
-
), e.height <= 0 && console.warn(
|
|
40
|
-
`[ScreenTransform] zero or negative height (${e.height.toFixed(3)}) — anchors + offsets collapse the Y extent`
|
|
41
|
-
);
|
|
42
|
-
}, [t, e.width, e.height]);
|
|
43
|
-
const a = c[0] !== 0 || c[1] !== 0, r = a ? [1, 1, 1] : [e.width, e.height, 1], s = !a && e.width > 0 && e.height > 0 ? e.width / e.height : null;
|
|
44
|
-
return /* @__PURE__ */ u(
|
|
45
|
-
"group",
|
|
46
|
-
{
|
|
47
|
-
position: [e.centerX - e.pivotX, e.centerY - e.pivotY, 0],
|
|
48
|
-
scale: r,
|
|
49
|
-
renderOrder: _.SCREEN_UI,
|
|
50
|
-
children: /* @__PURE__ */ u(A.Provider, { value: s, children: d })
|
|
51
|
-
}
|
|
52
|
-
);
|
|
53
|
-
}, F = {
|
|
54
|
-
display: "flex",
|
|
55
|
-
alignItems: "center",
|
|
56
|
-
justifyContent: "center",
|
|
57
|
-
height: "100%",
|
|
58
|
-
background: "#363636",
|
|
59
|
-
color: "white",
|
|
60
|
-
fontFamily: "monospace"
|
|
61
|
-
}, j = () => /* @__PURE__ */ u("div", { style: F, children: "Loading..." }), B = (o) => /* @__PURE__ */ u("div", { style: F, children: o.error }), C = {
|
|
62
|
-
position: "absolute",
|
|
63
|
-
top: 0,
|
|
64
|
-
left: 0,
|
|
65
|
-
width: "100%",
|
|
66
|
-
height: "100%",
|
|
67
|
-
zIndex: 10
|
|
68
|
-
}, K = ({
|
|
69
|
-
style: o,
|
|
70
|
-
canvasProps: i,
|
|
71
|
-
children: c,
|
|
72
|
-
loadingComponent: d,
|
|
73
|
-
loadingTransitionDuration: l,
|
|
74
|
-
errorComponent: f,
|
|
75
|
-
renderTargetSize: t
|
|
76
|
-
}) => {
|
|
77
|
-
const e = R(null), a = R(null), r = R(null), { session: s } = L(), n = Y(), p = D(), [S, m] = T(!0);
|
|
78
|
-
return w(() => {
|
|
79
|
-
if (t) {
|
|
80
|
-
s._setRenderSize(
|
|
81
|
-
Math.round(t.width),
|
|
82
|
-
Math.round(t.height)
|
|
83
|
-
);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const h = () => {
|
|
87
|
-
a.current && s._setRenderTarget(a.current);
|
|
88
|
-
}, g = () => {
|
|
89
|
-
r.current !== null && cancelAnimationFrame(r.current), r.current = requestAnimationFrame(() => {
|
|
90
|
-
r.current = null, h();
|
|
91
|
-
});
|
|
92
|
-
}, x = new ResizeObserver(() => {
|
|
93
|
-
g();
|
|
94
|
-
});
|
|
95
|
-
return e.current && x.observe(e.current), g(), () => {
|
|
96
|
-
x.disconnect(), r.current !== null && (cancelAnimationFrame(r.current), r.current = null);
|
|
97
|
-
};
|
|
98
|
-
}, [t, s]), w(() => {
|
|
99
|
-
n && (l ? setTimeout(() => {
|
|
100
|
-
m(!1);
|
|
101
|
-
}, l) : m(!1));
|
|
102
|
-
}, [n, l]), /* @__PURE__ */ X(
|
|
103
|
-
"div",
|
|
104
|
-
{
|
|
105
|
-
id: "vincentt-xr-container",
|
|
106
|
-
ref: e,
|
|
107
|
-
style: {
|
|
108
|
-
width: "100%",
|
|
109
|
-
height: "100%",
|
|
110
|
-
...o,
|
|
111
|
-
position: "relative"
|
|
112
|
-
},
|
|
113
|
-
children: [
|
|
114
|
-
S && /* @__PURE__ */ u("div", { style: C, children: d || /* @__PURE__ */ u(j, {}) }),
|
|
115
|
-
p && /* @__PURE__ */ u("div", { style: C, children: f || /* @__PURE__ */ u(B, { error: p.message }) }),
|
|
116
|
-
/* @__PURE__ */ u(
|
|
117
|
-
M,
|
|
118
|
-
{
|
|
119
|
-
id: "vincentt-xr-canvas",
|
|
120
|
-
ref: a,
|
|
121
|
-
dpr: [1, 3],
|
|
122
|
-
gl: {
|
|
123
|
-
alpha: !0,
|
|
124
|
-
preserveDrawingBuffer: !0,
|
|
125
|
-
antialias: !0,
|
|
126
|
-
premultipliedAlpha: !1,
|
|
127
|
-
// Disable alpha premultiplication
|
|
128
|
-
toneMapping: v.NoToneMapping
|
|
129
|
-
// Disable tone mapping for accurate video colors
|
|
130
|
-
},
|
|
131
|
-
...i,
|
|
132
|
-
onCreated: (h) => {
|
|
133
|
-
t ? s._setRenderSize(
|
|
134
|
-
Math.round(t.width),
|
|
135
|
-
Math.round(t.height)
|
|
136
|
-
) : s._setRenderTarget(a.current), s._setR3FState({
|
|
137
|
-
renderer: h.gl,
|
|
138
|
-
scene: h.scene,
|
|
139
|
-
camera: h.camera
|
|
140
|
-
}), h.gl.outputColorSpace = v.SRGBColorSpace, i != null && i.onCreated && i.onCreated(h);
|
|
141
|
-
},
|
|
142
|
-
children: c
|
|
143
|
-
}
|
|
144
|
-
)
|
|
145
|
-
]
|
|
146
|
-
}
|
|
147
|
-
);
|
|
148
|
-
};
|
|
149
|
-
export {
|
|
150
|
-
$ as S,
|
|
151
|
-
K as X,
|
|
152
|
-
J as a,
|
|
153
|
-
I as b,
|
|
154
|
-
A as c,
|
|
155
|
-
O as d,
|
|
156
|
-
V as u
|
|
157
|
-
};
|
package/dist/index-PtFmD6B8.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var me=Object.defineProperty;var fe=(i,s,e)=>s in i?me(i,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[s]=e;var h=(i,s,e)=>fe(i,typeof s!="symbol"?s+"":s,e);const pe=require("react/jsx-runtime"),N=require("react"),A=require("@mediapipe/tasks-vision"),b=require("three");function we(i){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const e in i)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(i,e);Object.defineProperty(s,e,t.get?t:{enumerable:!0,get:()=>i[e]})}}return s.default=i,Object.freeze(s)}const T=we(b);var y=(i=>(i.WEBCAM="webcam",i.STREAM="stream",i.CANVAS="canvas",i))(y||{}),P=(i=>(i.HAND_TRACKER="vincentt.xr.hand-tracker",i.GESTURE_TRACKER="vincentt.xr.gesture-tracker",i.FACE_TRACKER="vincentt.xr.face-tracker",i.BODY_TRACKER="vincentt.xr.body-tracker",i.BACKGROUND_SEGMENTATION="vincentt.xr.background-segmentation",i))(P||{});const ve={BACKGROUND:-1e3,WORLD:0,TRACKED:100,SCREEN_UI:1e3};class x extends Error{constructor(s){super(s),this.name="VincenttXRError"}}const R={assetStorageEndpoint:"https://cdn.vincentt.studio",sdkAssetsBaseUrl:"https://cdn.vincentt.studio/assets/sdk/face/v1",loggerPrefix:"[vincentt-xr]:"};class Ce{constructor(s){h(this,"options");const e={verbose:!1,prefix:R.loggerPrefix};this.options={...e,...s}}log(...s){const{verbose:e,prefix:t}=this.options;e&&console.log(t,...s)}error(...s){const{verbose:e,prefix:t}=this.options;e&&console.error(t,...s)}}const O=i=>i*2-1,W=new T.Vector3,G=new T.Vector3,z=({x:i,y:s,z:e},t,n)=>{W.set((i-.5)*2,(.5-s)*2,-e),W.unproject(t),G.copy(W).sub(t.position).normalize();const r=-t.position.z/G.z;return n.copy(t.position).addScaledVector(G,r),n},Se=(i,s)=>z(i,s,new T.Vector3),ke=(i,s,e=.2)=>e*s+(1-e)*i;class X{constructor(s){h(this,"canvas");this.maxDimension=s}draw(s){const e=s.width,t=s.height,n=Math.min(1,this.maxDimension/Math.max(e,t));if(n>=1)return s;const r=Math.max(1,Math.round(e*n)),c=Math.max(1,Math.round(t*n));(!this.canvas||this.canvas.width!==r||this.canvas.height!==c)&&(this.canvas=new OffscreenCanvas(r,c));const d=this.canvas.getContext("2d");return d?(d.setTransform(1,0,0,1,0,0),d.clearRect(0,0,r,c),d.drawImage(s,0,0,r,c),this.canvas):s}dispose(){this.canvas=void 0}}const ye={};async function te(i){const s=await fetch(i);if(!s.ok)throw new Error(`fetchAndVerify: ${s.status} ${i}`);const e=await s.arrayBuffer(),t=Me(i);if(!t)return console.warn(`[xr-sdk integrity] no SRI hash for ${i} — passing through`),e;const n=await Te(e);if(n!==t)throw new Error(`[xr-sdk integrity] SRI mismatch for ${i}: expected ${t}, got ${n}`);return e}async function V(i){const s=await te(i);return new Uint8Array(s)}function Me(i){try{const s=new URL(i);return ye[s.pathname]}catch{return}}async function Te(i){const s=await crypto.subtle.digest("SHA-384",i),e=new Uint8Array(s);let t="";for(let n=0;n<e.byteLength;n++)t+=String.fromCharCode(e[n]);return`sha384-${btoa(t)}`}class B{constructor(){h(this,"disposed",!1);h(this,"paused",!1);h(this,"rafId",null);h(this,"targetFrameIntervalMs",0);h(this,"lastInferenceMs",0)}setTargetFps(s){this.targetFrameIntervalMs=s&&s>0?1e3/s:0}shouldRunInference(){if(this.targetFrameIntervalMs<=0)return!0;const s=performance.now();return s-this.lastInferenceMs<this.targetFrameIntervalMs?!1:(this.lastInferenceMs=s,!0)}async initialize(s){}async run(s){}getModelNode(){return{}}async getPerformanceData(){return{name:this.constructor.name,processingTime:null}}pause(){this.paused=!0,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}resume(){this.paused=!1}dispose(){this.disposed=!0,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}}const Re=768;class Fe extends B{constructor(){super();h(this,"landmarker",null);h(this,"processingTime",null);h(this,"coordinates");h(this,"sourceCanvas");h(this,"downscaler",new X(Re))}async getBodyData(){if(!this.landmarker||!this.sourceCanvas)return;const e=this.downscaler.draw(this.sourceCanvas),t=performance.now(),n=this.landmarker.detectForVideo(e,t),r=performance.now();this.processingTime=r-t;const c=n.landmarks,d=[];if(c)return c.forEach((m,u)=>{d[u]||(d[u]=[]),m.forEach(g=>{const f=O(g.x),w=O(1-g.y),p=O(g.z);d[u].push({x:f,y:w,z:p})})}),{coordinatesList:d}}async processBodyTracking(){if(this.disposed||!this.landmarker)return;const e=await this.getBodyData();e&&(this.coordinates=e.coordinatesList),!(this.disposed||this.paused)&&(this.rafId=requestAnimationFrame(this.processBodyTracking.bind(this)))}resume(){this.paused&&(super.resume(),this.processBodyTracking())}dispose(){if(super.dispose(),this.landmarker){try{this.landmarker.close()}catch{}this.landmarker=null}this.sourceCanvas=void 0,this.downscaler.dispose(),this.coordinates=void 0}getLandmarks2D(e=0){if(this.coordinates)return this.coordinates[e]}async initialize(e){const t=await A.FilesetResolver.forVisionTasks(new URL("/assets/xr/wasm",R.assetStorageEndpoint).toString()),n=await V(new URL("/assets/xr/models/body_tracking.task",R.assetStorageEndpoint).toString());this.landmarker=await A.PoseLandmarker.createFromOptions(t,{baseOptions:{modelAssetBuffer:n,delegate:"GPU"},runningMode:"VIDEO",numPoses:(e==null?void 0:e.numPoses)||1})}async run({sourceCanvas:e}){this.sourceCanvas=e,this.rafId===null&&await this.processBodyTracking()}getModelNode(){return{getLandmarks2D:this.getLandmarks2D.bind(this)}}async getPerformanceData(){return{name:this.constructor.name,processingTime:this.processingTime}}}const xe=.11,Ae=.004;class Ee extends B{constructor(){super();h(this,"landmarker",null);h(this,"processingTime",null);h(this,"sourceCanvas");h(this,"analysisCanvas");h(this,"getSource");h(this,"detectionResults");h(this,"numFaces",1);h(this,"cameras",[]);h(this,"faces",[]);h(this,"leftCheekScratch",[]);h(this,"rightCheekScratch",[]);h(this,"landmarkScratch",{x:0,y:0,z:0,visibility:0});h(this,"rotMatrixScratch",new T.Matrix4);h(this,"rotQuatScratch",new T.Quaternion);h(this,"rotEulerScratch",new T.Euler)}landmarkForSource(e,t){return t?(this.landmarkScratch.x=1-e.x,this.landmarkScratch.y=e.y,this.landmarkScratch.z=e.z,this.landmarkScratch.visibility=e.visibility,this.landmarkScratch):e}extractAndUpdateFaceData(e){var n;if(!e.faceLandmarks.length){this.faces=[];return}const t=e.faceLandmarks.length;for(this.faces.length>t&&(this.faces.length=t,this.leftCheekScratch.length=t,this.rightCheekScratch.length=t);this.faces.length<t;)this.faces.push({transform:{position:new T.Vector3,rotation:new T.Vector3,scale:new T.Vector3},gestures:{}}),this.leftCheekScratch.push(new T.Vector3),this.rightCheekScratch.push(new T.Vector3);for(let r=0;r<t;r+=1){if(!this.cameras[r])continue;const c=this.faces[r],d=(n=this.getSource)==null?void 0:n.call(this),m=!(d==="webcam"||!d),u=e.faceLandmarks[r],g=e.facialTransformationMatrixes[r];this.rotMatrixScratch.fromArray(g.data),this.rotQuatScratch.setFromRotationMatrix(this.rotMatrixScratch),this.rotQuatScratch.set(-this.rotQuatScratch.x,this.rotQuatScratch.y,this.rotQuatScratch.z,this.rotQuatScratch.w),this.rotEulerScratch.setFromQuaternion(this.rotQuatScratch,"XYZ"),c.transform.rotation.set(-this.rotEulerScratch.x,this.rotEulerScratch.y,this.rotEulerScratch.z),z(this.landmarkForSource(u[4],m),this.cameras[r],c.transform.position),z(this.landmarkForSource(u[50],m),this.cameras[r],this.leftCheekScratch[r]),z(this.landmarkForSource(u[280],m),this.cameras[r],this.rightCheekScratch[r]);const w=this.leftCheekScratch[r].distanceTo(this.rightCheekScratch[r])*xe,p=Math.abs(T.MathUtils.radToDeg(this.rotEulerScratch.y)),k=w+p*Ae,C=c.transform.scale.x,F=ke(isNaN(C)?0:C,k);c.transform.scale.set(F,F,F);const I=c.gestures,D=e.faceBlendshapes[r].categories;for(const E of D)I[E.categoryName]=E.score}}async processFaceTracking(){if(this.disposed||this.paused||!this.landmarker||!this.sourceCanvas)return null;if(!this.shouldRunInference()){this.rafId=requestAnimationFrame(this.processFaceTracking.bind(this));return}const e=be(this.numFaces),t=this.sourceCanvas.width,n=this.sourceCanvas.height,r=Math.min(1,e/Math.max(t,n)),c=Math.max(1,Math.round(t*r)),d=Math.max(1,Math.round(n*r));(!this.analysisCanvas||this.analysisCanvas.width!==c||this.analysisCanvas.height!==d)&&(this.analysisCanvas=new OffscreenCanvas(c,d));const m=this.analysisCanvas.getContext("2d");if(!m)return;m.setTransform(1,0,0,1,0,0),m.clearRect(0,0,c,d),m.drawImage(this.sourceCanvas,0,0,c,d);const u=performance.now(),g=this.landmarker.detectForVideo(this.analysisCanvas,u),f=performance.now();this.processingTime=f-u,this.detectionResults=g,this.extractAndUpdateFaceData(g),!(this.disposed||this.paused)&&(this.rafId=requestAnimationFrame(this.processFaceTracking.bind(this)))}resume(){this.paused&&(super.resume(),this.processFaceTracking())}getFace(e=0){return this.faces[e]}getDetectionResults(){return this.detectionResults}getRawFaceTrackingData(e=0){var t,n,r,c;if(this.detectionResults)return{landmarks:(t=this.detectionResults.faceLandmarks)==null?void 0:t[e],blendshapes:(r=(n=this.detectionResults.faceBlendshapes)==null?void 0:n[e])==null?void 0:r.categories,transformationMatrix:(c=this.detectionResults.facialTransformationMatrixes)==null?void 0:c[e]}}async initialize(e){this.numFaces=(e==null?void 0:e.numFaces)||1;const t=await A.FilesetResolver.forVisionTasks(new URL("/assets/xr/wasm",R.assetStorageEndpoint).toString()),n=await V(new URL("/assets/xr/models/face_tracking.task",R.assetStorageEndpoint).toString()),r=await A.FaceLandmarker.createFromOptions(t,{baseOptions:{modelAssetBuffer:n,delegate:"GPU"},minFaceDetectionConfidence:.3,minFacePresenceConfidence:.3,minTrackingConfidence:.3,outputFaceBlendshapes:!0,outputFacialTransformationMatrixes:!0,runningMode:"VIDEO",numFaces:this.numFaces});this.landmarker=r}async run({sourceCanvas:e,getSource:t,targetFps:n}){this.sourceCanvas=e,this.getSource=t,this.setTargetFps(n),this.analysisCanvas=void 0,this.rafId===null&&this.processFaceTracking()}getModelNode(){const e=this,t={get detectionResults(){return e.detectionResults},getDetectionResults:this.getDetectionResults.bind(this),getFace:this.getFace.bind(this),getRawFaceTrackingData:this.getRawFaceTrackingData.bind(this)};return Object.assign(t,{_setCamera:(n,r)=>{this.cameras[r]=n}}),t}async getPerformanceData(){return{name:this.constructor.name,processingTime:this.processingTime}}}const be=i=>i>1?1024:512;var _=(i=>(i.ClosedFist="closed_fist",i.OpenPalm="open_palm",i.PointingUp="pointing_up",i.ThumbDown="thumb_down",i.ThumbUp="thumb_up",i.Victory="victory",i.ILoveYou="i_love_you",i.None="none",i))(_||{});const Ie=512,De={Closed_Fist:_.ClosedFist,Open_Palm:_.OpenPalm,Pointing_Up:_.PointingUp,Thumb_Down:_.ThumbDown,Thumb_Up:_.ThumbUp,Victory:_.Victory,ILoveYou:_.ILoveYou,None:_.None},_e=15;class Pe extends B{constructor(){super();h(this,"landmarker",null);h(this,"processingTime",null);h(this,"coordinates");h(this,"gesture");h(this,"sourceCanvas");h(this,"downscaler",new X(Ie))}async getGestureData(){if(!this.landmarker||!this.sourceCanvas)return;const e=this.downscaler.draw(this.sourceCanvas),t=performance.now(),n=this.landmarker.recognizeForVideo(e,t),r=performance.now();this.processingTime=r-t;const c=n.landmarks[0],d=[];if(c){const m=n.gestures[0][0].categoryName;return c.forEach(u=>{d.push({x:O(u.x),y:O(1-u.y),z:-u.z})}),{coordinates:d,gesture:De[m]}}return{coordinates:void 0,gesture:void 0}}async processGestureTracking(){if(!this.disposed){if(this.shouldRunInference()){const e=await this.getGestureData();e&&(this.coordinates=e.coordinates,this.gesture=e.gesture)}this.disposed||this.paused||(this.rafId=requestAnimationFrame(this.processGestureTracking.bind(this)))}}resume(){this.paused&&(super.resume(),this.processGestureTracking())}dispose(){if(super.dispose(),this.landmarker){try{this.landmarker.close()}catch{}this.landmarker=null}this.sourceCanvas=void 0,this.downscaler.dispose(),this.coordinates=void 0,this.gesture=void 0}async initialize(){const e=await A.FilesetResolver.forVisionTasks(new URL("/assets/xr/wasm",R.assetStorageEndpoint).toString()),t=await V(new URL("/assets/xr/models/gesture_tracking.task",R.assetStorageEndpoint).toString()),n=await A.GestureRecognizer.createFromOptions(e,{baseOptions:{modelAssetBuffer:t,delegate:"GPU"},runningMode:"VIDEO",numHands:1});this.landmarker=n}async run({sourceCanvas:e,targetFps:t}){this.sourceCanvas=e,this.setTargetFps(t??_e),this.rafId===null&&await this.processGestureTracking()}getModelNode(){const e=this;return{get coordinates(){return e.coordinates},get gesture(){return e.gesture}}}async getPerformanceData(){return{name:this.constructor.name,processingTime:this.processingTime}}}const Oe=512;class Ue extends B{constructor(){super();h(this,"landmarker",null);h(this,"processingTime",null);h(this,"coordinates");h(this,"gesture");h(this,"sourceCanvas");h(this,"downscaler",new X(Oe))}async getHandData(){if(!this.landmarker||!this.sourceCanvas)return;const e=this.downscaler.draw(this.sourceCanvas),t=performance.now(),n=this.landmarker.detectForVideo(e,t),r=performance.now();this.processingTime=r-t;const c=n.landmarks[0],d=[];if(c){const m=n.landmarks[0][0].z<0?"closed_fist":"open_palm";return c.forEach(u=>{d.push({x:O(u.x),y:O(1-u.y),z:-u.z})}),{coordinates:d,gesture:m}}return{coordinates:void 0,gesture:void 0}}async processHandTracking(){if(!this.disposed){if(this.shouldRunInference()){const e=await this.getHandData();e&&(this.coordinates=e.coordinates,this.gesture=e.gesture)}this.disposed||this.paused||(this.rafId=requestAnimationFrame(this.processHandTracking.bind(this)))}}resume(){this.paused&&(super.resume(),this.processHandTracking())}dispose(){if(super.dispose(),this.landmarker){try{this.landmarker.close()}catch{}this.landmarker=null}this.sourceCanvas=void 0,this.downscaler.dispose(),this.coordinates=void 0,this.gesture=void 0}async initialize(){const e=await A.FilesetResolver.forVisionTasks(new URL("/assets/xr/wasm",R.assetStorageEndpoint).toString()),t=await V(new URL("/assets/xr/models/hand_tracking.task",R.assetStorageEndpoint).toString()),n=await A.HandLandmarker.createFromOptions(e,{baseOptions:{modelAssetBuffer:t,delegate:"GPU"},runningMode:"VIDEO",numHands:1});this.landmarker=n}async run({sourceCanvas:e,targetFps:t}){this.sourceCanvas=e,this.setTargetFps(t),this.rafId===null&&await this.processHandTracking()}getModelNode(){const e=this;return{get coordinates(){return e.coordinates},get gesture(){return e.gesture}}}async getPerformanceData(){return{name:this.constructor.name,processingTime:this.processingTime}}}const Le=24,ze=720,Ne=[[255,255,255,255],[0,0,0,0]];class Ve extends B{constructor(){super();h(this,"segmenter",null);h(this,"processingTime",null);h(this,"sourceCanvas");h(this,"processCanvas");h(this,"filterCanvas");h(this,"inputSource");h(this,"inputSourceSize");h(this,"glCanvas");h(this,"drawingUtils");h(this,"useGpuMaskPath",!1);h(this,"maskImageData");h(this,"maskCanvas",null);h(this,"segmentationMaskTexture");h(this,"isMaskSetup",!1);h(this,"isProcessing",!1);h(this,"latestMask",null);h(this,"rawCache",null);h(this,"quality","medium");h(this,"stagingCanvas")}getQualityScaleFactor(){switch(this.quality){case"low":return .5;case"medium":return .75;case"high":return 1;default:return .5}}setInputSource(e){this.inputSource=e,this.inputSourceSize=e?this.readIntrinsicSize(e):void 0}readIntrinsicSize(e){if(e instanceof HTMLVideoElement)return e.videoWidth>0?{width:e.videoWidth,height:e.videoHeight}:void 0;if(e instanceof HTMLImageElement)return e.naturalWidth>0?{width:e.naturalWidth,height:e.naturalHeight}:void 0;const t=e.width,n=e.height;return typeof t=="number"&&t>0&&typeof n=="number"&&n>0?{width:t,height:n}:void 0}ensureProcessCanvasForInput(){if(!this.processCanvas||!this.inputSource)return;const e=this.readIntrinsicSize(this.inputSource);if(!e)return;this.inputSourceSize=e;const t=Math.min(1,ze/Math.max(e.width,e.height)),n=Math.max(1,Math.round(e.width*t)),r=Math.max(1,Math.round(e.height*t));this.processCanvas.width===n&&this.processCanvas.height===r||(this.processCanvas.width=n,this.processCanvas.height=r,this.glCanvas&&(this.glCanvas.width=n,this.glCanvas.height=r),this.maskImageData=void 0)}async processSegmentation(){if(this.disposed||!this.isProcessing||!this.maskCanvas||!this.processCanvas)return;if(!this.shouldRunInference()){if(this.disposed||this.paused)return;this.rafId=requestAnimationFrame(this.processSegmentation.bind(this));return}const e=this.inputSource??this.sourceCanvas;if(!this.segmenter||!e){if(this.disposed||this.paused)return;this.rafId=requestAnimationFrame(this.processSegmentation.bind(this));return}const t=performance.now();this.ensureProcessCanvasForInput();const n=this.processCanvas.getContext("2d");if(n){const d=this.processCanvas.width,m=this.processCanvas.height;if(n.clearRect(0,0,d,m),this.inputSource&&this.inputSourceSize){const{width:u,height:g}=this.inputSourceSize,f=Math.min(d/u,m/g),w=u*f,p=g*f;n.drawImage(this.inputSource,(d-w)/2,(m-p)/2,w,p)}else n.drawImage(e,0,0,d,m)}const c=this.segmenter.segmentForVideo(this.processCanvas,performance.now()).categoryMask;if(!c){if(this.disposed||this.paused)return;this.rafId=requestAnimationFrame(this.processSegmentation.bind(this));return}if(this.rawCache=null,this.latestMask&&(this.latestMask.close(),this.latestMask=null),this.useGpuMaskPath&&this.drawingUtils&&this.glCanvas)this.drawingUtils.drawCategoryMask(c,Ne),this.latestMask=c.clone(),c.close(),this.blitGlToMask();else{this.latestMask=c.clone();const d=this.readMaskToImageData(c);c.close(),d&&this.blitImageDataToMask(d)}this.segmentationMaskTexture&&(this.isMaskSetup||(this.segmentationMaskTexture.format=b.RGBAFormat,this.segmentationMaskTexture.minFilter=b.LinearFilter,this.segmentationMaskTexture.magFilter=b.LinearFilter,this.segmentationMaskTexture.generateMipmaps=!1,this.isMaskSetup=!0),this.segmentationMaskTexture.needsUpdate=!0),this.processingTime=performance.now()-t,!(this.disposed||this.paused)&&(this.rafId=requestAnimationFrame(this.processSegmentation.bind(this)))}blitGlToMask(){if(!this.maskCanvas||!this.filterCanvas||!this.glCanvas)return;const e=this.maskCanvas.getContext("2d"),t=this.filterCanvas.getContext("2d");!e||!t||(t.filter="blur(0.5px)",t.clearRect(0,0,this.filterCanvas.width,this.filterCanvas.height),t.drawImage(this.glCanvas,0,0,this.filterCanvas.width,this.filterCanvas.height),e.clearRect(0,0,this.maskCanvas.width,this.maskCanvas.height),e.drawImage(this.filterCanvas,0,0,this.maskCanvas.width,this.maskCanvas.height))}readMaskToImageData(e){const t=e.getAsUint8Array(),{width:n,height:r}=e;if(!t||n<=0||r<=0)return null;(!this.maskImageData||this.maskImageData.width!==n||this.maskImageData.height!==r)&&(this.maskImageData=new ImageData(n,r));const c=this.maskImageData.data;for(let d=0;d<t.length;d+=1){const m=t[d]===255?0:255;c[d*4]=255,c[d*4+1]=m,c[d*4+2]=255,c[d*4+3]=m}return this.maskImageData}blitImageDataToMask(e){if(!this.maskCanvas||!this.filterCanvas)return;const t=this.maskCanvas.getContext("2d"),n=this.filterCanvas.getContext("2d");if(!t||!n)return;const r=this.getStagingCanvas(e.width,e.height),c=r.getContext("2d");c&&(c.putImageData(e,0,0),n.filter="blur(0.5px)",n.clearRect(0,0,this.filterCanvas.width,this.filterCanvas.height),n.drawImage(r,0,0,this.filterCanvas.width,this.filterCanvas.height),t.clearRect(0,0,this.maskCanvas.width,this.maskCanvas.height),t.drawImage(this.filterCanvas,0,0,this.maskCanvas.width,this.maskCanvas.height))}getStagingCanvas(e,t){return this.stagingCanvas||(this.stagingCanvas=document.createElement("canvas")),this.stagingCanvas.width!==e&&(this.stagingCanvas.width=e),this.stagingCanvas.height!==t&&(this.stagingCanvas.height=t),this.stagingCanvas}resume(){this.paused&&(super.resume(),this.processSegmentation())}dispose(){if(super.dispose(),this.isProcessing=!1,this.latestMask){try{this.latestMask.close()}catch{}this.latestMask=null}if(this.rawCache=null,this.segmenter){try{this.segmenter.close()}catch{}this.segmenter=null}this.drawingUtils=void 0,this.glCanvas=void 0,this.maskImageData=void 0,this.segmentationMaskTexture&&(this.segmentationMaskTexture.dispose(),this.segmentationMaskTexture=void 0),this.sourceCanvas=void 0,this.inputSource=void 0,this.inputSourceSize=void 0,this.processCanvas=void 0,this.filterCanvas=void 0,this.stagingCanvas=void 0,this.maskCanvas=null}async initialize(e){this.quality=(e==null?void 0:e.quality)??"low";const t=await A.FilesetResolver.forVisionTasks(new URL("/assets/xr/wasm",R.assetStorageEndpoint).toString()),n=await V(new URL("/assets/xr/models/segmentation.tflite",R.assetStorageEndpoint).toString());this.glCanvas=new OffscreenCanvas(1,1);const r=this.glCanvas.getContext("webgl2",{preserveDrawingBuffer:!0});this.segmenter=await A.ImageSegmenter.createFromOptions(t,{baseOptions:{modelAssetBuffer:n,delegate:"GPU"},...r?{canvas:this.glCanvas}:{},outputCategoryMask:!0,outputConfidenceMasks:!1,runningMode:"VIDEO"}),r?(this.drawingUtils=new A.DrawingUtils(r),this.useGpuMaskPath=!0):this.useGpuMaskPath=!1}async run({sourceCanvas:e,renderWidth:t,renderHeight:n,targetFps:r}){if(!e)return;this.setTargetFps(r??Le),this.isProcessing=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null);const c=this.getQualityScaleFactor();this.sourceCanvas=e,this.processCanvas=document.createElement("canvas"),this.processCanvas.width=e.width*c,this.processCanvas.height=e.height*c,this.glCanvas&&(this.glCanvas.width=this.processCanvas.width,this.glCanvas.height=this.processCanvas.height),this.maskImageData=void 0,this.maskCanvas=document.createElement("canvas"),this.maskCanvas.width=t,this.maskCanvas.height=n,this.filterCanvas=document.createElement("canvas"),this.filterCanvas.width=t,this.filterCanvas.height=n,this.segmentationMaskTexture=new b.CanvasTexture(this.maskCanvas),this.isMaskSetup=!1,this.rawCache=null,this.isProcessing=!0,this.lastInferenceMs=0,this.rafId=requestAnimationFrame(this.processSegmentation.bind(this))}getRawSegmentationData(){if(this.rawCache)return this.rawCache;if(!this.latestMask)return null;const e=this.latestMask.getAsUint8Array();return this.rawCache={maskData:e,width:this.latestMask.width,height:this.latestMask.height},this.rawCache}getModelNode(){const e=this;return{get backgroundSegmentationMask(){return e.segmentationMaskTexture},getMaskCanvas:()=>e.maskCanvas,getRawSegmentationData:()=>e.getRawSegmentationData(),setInputSource:t=>e.setInputSource(t??void 0)}}async getPerformanceData(){return{name:this.constructor.name,processingTime:this.processingTime}}}const J={[P.BACKGROUND_SEGMENTATION]:Ve,[P.HAND_TRACKER]:Ue,[P.GESTURE_TRACKER]:Pe,[P.FACE_TRACKER]:Ee,[P.BODY_TRACKER]:Fe},Be=async i=>{const s=document.createElement("video");s.srcObject=i,s.muted=!0,s.playsInline=!0,s.autoplay=!0,await new Promise(t=>{s.onloadedmetadata=()=>{s.play(),t()}});const e=s;return await new Promise(t=>{const n=setTimeout(t,150),r=()=>{clearTimeout(n),t()};typeof e.requestVideoFrameCallback=="function"?e.requestVideoFrameCallback(r):requestAnimationFrame(()=>requestAnimationFrame(()=>r()))}),s},ee=i=>{const s=new b.CanvasTexture(i);return s.colorSpace=b.SRGBColorSpace,s.format=b.RGBAFormat,s.minFilter=b.LinearFilter,s.magFilter=b.LinearFilter,s.generateMipmaps=!1,s.needsUpdate=!0,s},He=(i,s)=>{const e=i.videoWidth,t=i.videoHeight;e>0&&t>0&&(s.width!==e&&(s.width=e),s.height!==t&&(s.height=t));const n=s.getContext("2d",{colorSpace:"srgb"});n.save(),n.scale(-1,1),n.drawImage(i,-s.width,0,s.width,s.height),n.restore()},qe=(i,s,e=1)=>{const t=s.getContext("2d",{colorSpace:"srgb"}),n=s.width/s.height,r=i.width/i.height;let c,d;r>n?(d=s.height,c=i.width*(s.height/i.height)):(c=s.width,d=i.height*(s.width/i.width));const m=Number.isFinite(e)&&e>0?e:1;c*=m,d*=m;const u=(s.width-c)/2,g=(s.height-d)/2;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,s.width,s.height),t.drawImage(i,0,0,i.width,i.height,u,g,c,d)},Ke=(i,s,e)=>{const t=new Map;return{acquire:async(g,f,w)=>{let p=t.get(g);if(p)return p.refs.add(f),p.activeRefs.add(f),p.initPromise;const k=s[g];if(!k)throw new Error(`Invalid model: ${g}`);const C=new k,F=new Set([f]),I=new Set([f]),D=(async()=>{await C.initialize(w),e&&await e(g,C);const E=t.get(g);return E&&E.refs.size>0&&i.setPipeline(H=>H.set(g,C)),C})();return p={model:C,refs:F,activeRefs:I,initPromise:D,options:w},t.set(g,p),D.catch(()=>{t.get(g)===p&&(t.delete(g),i.setPipeline(H=>H.delete(g)))}),D},release:(g,f)=>{var k;const w=t.get(g);if(!w||(w.refs.delete(f),w.activeRefs.delete(f)&&w.refs.size>0&&w.activeRefs.size===0&&w.model.pause(),w.refs.size>0))return;t.delete(g);const p=w.model;try{(k=p.dispose)==null||k.call(p)}catch(C){console.warn(`[xr-sdk registry] dispose threw for ${g}`,C)}i.setPipeline(C=>C.delete(g))},setActive:(g,f,w)=>{const p=t.get(g);if(!p||!p.refs.has(f))return;const k=p.activeRefs.size>0;w?p.activeRefs.add(f):p.activeRefs.delete(f);const C=p.activeRefs.size>0;k!==C&&(C?p.model.resume():p.model.pause())},get:g=>{var f;return(f=t.get(g))==null?void 0:f.model},getOptions:g=>{var f;return(f=t.get(g))==null?void 0:f.options},releaseAll:()=>{var g;for(const f of Array.from(t.keys())){const w=t.get(f);if(!w)continue;w.refs.clear(),t.delete(f);const p=w.model;try{(g=p.dispose)==null||g.call(p)}catch(k){console.warn(`[xr-sdk registry] dispose threw for ${f}`,k)}}i.setPipeline(f=>f.clear())}}},We={lifecycle:"idle",ready:!1,error:void 0,cameraTexture:void 0,renderWidth:0,renderHeight:0,source:void 0,sourceKind:void 0,pipeline:new Map},Ge=()=>{let i={...We,pipeline:new Map};const s=new Set,e=()=>{s.forEach(t=>t())};return{getSnapshot:()=>i,set:t=>{let n=!1;for(const r of Object.keys(t))if(t[r]!==i[r]){n=!0;break}n&&(i={...i,...t},e())},setPipeline:t=>{const n=new Map(i.pipeline);return t(n),i={...i,pipeline:n},e(),n},subscribe:t=>(s.add(t),()=>{s.delete(t)})}},Xe=({renderHeight:i,renderWidth:s,videoHeight:e,videoWidth:t})=>({height:i||e,width:s||t}),je=i=>{const s=new Ce({verbose:!0}),e=Ge();let t=i;const n=a=>{var l;const o=(l=U.getOptions(a))==null?void 0:l.targetFps;return typeof o=="number"?o:t==null?void 0:t.targetFps};let r,c,d,m,u,g,f,w,p,k,C=!1,F=!1;const I=new Set,D=new Set,E=async(a,o)=>{if(!I.has(a)&&e.getSnapshot().lifecycle==="running"&&u){I.add(a);try{await o.run({sourceCanvas:u,renderWidth:e.getSnapshot().renderWidth,renderHeight:e.getSnapshot().renderHeight,getSource:()=>e.getSnapshot().sourceKind,targetFps:n(a)}),F&&(await new Promise(l=>requestAnimationFrame(()=>l())),await new Promise(l=>requestAnimationFrame(()=>l())),o.pause())}catch(l){throw I.delete(a),l}}},U=Ke(e,J,(a,o)=>E(a,o));e.subscribe(()=>{if(e.getSnapshot().lifecycle!=="running")return;const a=e.getSnapshot().pipeline;for(const[o,l]of a.entries())I.has(o)||E(o,l)});const L=()=>{if(k!==void 0&&(cancelAnimationFrame(k),k=void 0),c){try{c.pause()}catch{}try{c.srcObject=null}catch{}c=void 0}if(d){try{d.getTracks().forEach(a=>a.stop())}catch{}d=void 0}},j=()=>{if(C||!c||!m||!u)return;const a=window.__xr_debugger_metrics;if(a!=null&&a.trackCameraFrame&&a.trackCameraFrame(),(e.getSnapshot().sourceKind??"webcam")==="webcam")He(c,m);else{const v=m.getContext("2d");if(!v)return;const S=c.videoWidth,M=c.videoHeight;m.width!==S&&(m.width=S),m.height!==M&&(m.height=M),v.setTransform(1,0,0,1,0,0),v.clearRect(0,0,S,M),v.drawImage(c,0,0,S,M)}qe(m,u,(t==null?void 0:t.cameraZoom)??1.2);const l=e.getSnapshot().cameraTexture;l&&(l.needsUpdate=!0)},Y=()=>{if(!c||!m||!u)return;if(F){j();return}const a=()=>{k=requestAnimationFrame(a),j()};k=requestAnimationFrame(a)},ie=async a=>{if(a.source===y.WEBCAM)try{const o=t!=null&&t.camRes&&t.camRes>0?t.camRes:960;return await navigator.mediaDevices.getUserMedia({video:{facingMode:"user",frameRate:{min:24,ideal:30,max:60},width:{ideal:o}}})}catch(o){const l=o instanceof DOMException?o.name:"",v=l==="NotReadableError"||l==="TrackStartError"?"Camera is already in use by another app or browser tab. Close it and refresh.":l==="NotFoundError"||l==="DevicesNotFoundError"?"No camera was found on this device.":l==="NotAllowedError"||l==="PermissionDeniedError"?"Camera access was blocked. Allow camera permissions in your browser, then refresh.":"Unable to access camera. Allow camera permissions in your browser, then refresh.";throw e.set({error:{error:"PermissionError",message:v}}),new x(o instanceof Error?o.message:"getUserMedia failed")}return a.stream},q=async a=>{const o=await ie(a);d=o;const l=await Be(o);c=l,m=new OffscreenCanvas(l.videoWidth,l.videoHeight);const{renderWidth:v,renderHeight:S}=e.getSnapshot(),M=Xe({renderWidth:v,renderHeight:S,videoWidth:l.videoWidth,videoHeight:l.videoHeight});if(u)(u.width!==M.width||u.height!==M.height)&&(u.width=M.width,u.height=M.height);else{u=new OffscreenCanvas(M.width,M.height);const ge=ee(u);e.set({cameraTexture:ge})}const Z=a.source===y.STREAM?a.static===!0:!1;F=Z,r=a.source===y.WEBCAM?{source:y.WEBCAM,sourceKind:"webcam"}:{source:y.STREAM,stream:a.stream,static:Z,sourceKind:a.sourceKind??"webcam"},e.set({source:a.source,sourceKind:r.sourceKind,error:void 0})},K=async a=>{const o=a.sourceKind??"webcam";u=a.canvas;const l=ee(u);e.set({cameraTexture:l,source:y.CANVAS,sourceKind:o,renderWidth:u.width,renderHeight:u.height,error:void 0}),r={source:y.CANVAS,canvas:a.canvas,sourceKind:o}},ae=(a,o)=>!o||a.source!==o.source?!1:a.source===y.STREAM&&o.source===y.STREAM?a.stream===o.stream&&(a.sourceKind??"webcam")===o.sourceKind:!0,ne=async()=>{if(!u)return;const a=e.getSnapshot().pipeline;for(const[,o]of a.entries())o.resume();await new Promise(o=>requestAnimationFrame(()=>o())),await new Promise(o=>requestAnimationFrame(()=>o()));for(const[,o]of a.entries())o.pause()},re=(a,o)=>!o||o.source!==y.CANVAS?!1:a.canvas===o.canvas&&(a.sourceKind??"webcam")===o.sourceKind,oe=async a=>{const o=a.source;if(o!==y.WEBCAM&&o!==y.STREAM)throw new x(`Invalid media source: ${String(o)}`);if(ae(a,r)){s.log("Media source unchanged, skipping rebind.");return}const{lifecycle:l}=e.getSnapshot();if(l==="idle"||l==="stopped"){await q(a),e.set({lifecycle:"media-bound"}),s.log("Media source set to:",a.source);return}if(l==="media-bound"){L(),await q(a),s.log("Media source rebound to:",a.source);return}if(C=!0,await new Promise(v=>requestAnimationFrame(()=>v())),L(),await q(a),C=!1,Y(),F)await ne();else{const v=e.getSnapshot().pipeline;for(const[,S]of v.entries())S.resume()}s.log("Media source swapped to:",a.source)},ce=async a=>{if(re(a,r)){s.log("Frame source unchanged, skipping rebind.");return}const{lifecycle:o}=e.getSnapshot();if(o==="idle"||o==="stopped"){await K(a),e.set({lifecycle:"media-bound"}),s.log("Frame source set to canvas.");return}if(o==="media-bound"){L(),await K(a),s.log("Frame source rebound to canvas.");return}C=!0,await new Promise(l=>requestAnimationFrame(()=>l())),L(),await K(a),C=!1,s.log("Frame source swapped to canvas.")},he=async()=>{const{lifecycle:a}=e.getSnapshot();if(a==="running")return;if(a==="idle")throw new x("session.start() called before setMediaSource — call setMediaSource first");if(!u)throw new x("session.start(): media source not bound");const o=(r==null?void 0:r.source)===y.CANVAS;if(!o&&(!c||!m))throw a==="stopped"?new x("session.start() called from stopped state without a media source — call setMediaSource first"):new x("session.start(): media source not bound");o||Y(),e.set({lifecycle:"running"}),await new Promise(v=>requestAnimationFrame(()=>v()));const l=e.getSnapshot().pipeline;for(const[v,S]of l.entries())await E(v,S);e.set({ready:!0}),s.log("XR session started.")},$=async()=>{const{lifecycle:a}=e.getSnapshot();a==="stopped"||a==="idle"||(L(),e.set({lifecycle:"stopped",ready:!1}),s.log("XR session stopped."))},de=async()=>{await $(),U.releaseAll(),D.clear(),I.clear(),r=void 0,u=void 0,m=void 0,F=!1,e.set({lifecycle:"idle",cameraTexture:void 0,source:void 0}),s.log("XR session reset.")},ue=async a=>{const o="legacy:registerXRPipeline",l=[];await Promise.all(a.map(async v=>{const{model:S}=v;if(!J[S])throw new x(`Invalid model: ${S}`);D.has(S)||l.push(S);const M="options"in v?v.options:void 0;await U.acquire(S,o,M)})),l.length>0&&(l.forEach(v=>D.add(v)),s.log("XR pipeline registered."))},le=a=>{const o=U.get(a);if(!o)throw new x(`Model ${a} is not registered in the pipeline`);return o.getModelNode()},Q=async(a,o)=>{a<=0||o<=0||(e.set({renderWidth:a,renderHeight:o}),u&&(u.width!==a||u.height!==o)&&(u.width=a,u.height=o),s.log(`Source canvas set. Render size: ${a}x${o}`))};return{store:e,registry:U,setMediaSource:oe,start:he,stop:$,reset:de,setFrameSource:ce,registerXRPipeline:ue,getModelNode:le,captureFrame:()=>{if(!g)throw new x("session.captureFrame() called before the XRScene render target was bound — make sure <XRScene> is mounted");if(!f||!w||!p)throw new x("session.captureFrame() called before the R3F state was bound — make sure <XRScene> is mounted");return f.render(w,p),g.toDataURL("image/png")},_setRenderTarget:async a=>{var S;g=a;const o=(S=a.getBoundingClientRect)==null?void 0:S.call(a),l=o&&o.width>0?Math.round(o.width):a.clientWidth,v=o&&o.height>0?Math.round(o.height):a.clientHeight;await Q(l,v)},_setRenderSize:Q,_setR3FState:a=>{f=a.renderer,w=a.scene,p=a.camera},_getVideoElement:()=>c,_setPerf:a=>{if(t=a,e.getSnapshot().lifecycle!=="running"||!u)return;const o=e.getSnapshot().pipeline;for(const[l,v]of o.entries())v.run({sourceCanvas:u,renderWidth:e.getSnapshot().renderWidth,renderHeight:e.getSnapshot().renderHeight,getSource:()=>e.getSnapshot().sourceKind,targetFps:n(l)})}}},Ye=i=>{const s=N.useMemo(()=>je(i),[]),e=JSON.stringify(i??{});return N.useEffect(()=>{s._setPerf(i)},[s,e]),s},se=N.createContext(void 0),$e=()=>{const i=N.useContext(se);if(!i)throw new x("XR context can only be used inside XRProvider, did you forget to wrap your app in <XRProvider>?");return i},Qe=({children:i,perf:s})=>{const e=Ye(s),t=N.useMemo(()=>({session:e}),[e]);return pe.jsx(se.Provider,{value:t,children:i})};exports.RENDER_LAYERS=ve;exports.XRMediaSource=y;exports.XRModel=P;exports.XRProvider=Qe;exports.fetchAndVerify=te;exports.libConfig=R;exports.unprojectToZZero=Se;exports.unprojectToZZeroInto=z;exports.useXRContext=$e;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var N=Object.defineProperty;var H=(t,e,r)=>e in t?N(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var i=(t,e,r)=>H(t,typeof e!="symbol"?e+"":e,r);const m=require("react/jsx-runtime"),n=require("react"),z=require("./selectors-Bub0o3qy.cjs"),O=require("./index-PtFmD6B8.cjs"),$=require("@react-three/fiber");require("./hasFullUnitUVBounds-p1Dl0ejX.cjs");const B=({children:t,defaultCollapsed:e=!0,title:r,width:s=320})=>{const[o,a]=n.useState(e);return o?m.jsx("button",{type:"button",onClick:()=>a(!1),"aria-label":`Open ${r}`,title:`Open ${r}`,style:{position:"absolute",right:16,bottom:16,zIndex:40,width:40,height:40,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(15, 23, 42, 0.72)",color:"#e5eefb",boxShadow:"0 12px 30px rgba(0,0,0,0.18)",backdropFilter:"blur(10px)",cursor:"pointer",pointerEvents:"auto"},children:"◫"}):m.jsxs("div",{style:{position:"absolute",right:16,bottom:16,zIndex:40,width:s,maxWidth:"calc(100vw - 32px)",padding:14,borderRadius:14,boxShadow:"0 12px 30px rgba(0,0,0,0.26)",backdropFilter:"blur(10px)",pointerEvents:"auto",background:"rgba(15, 23, 42, 0.78)",border:"1px solid rgba(255,255,255,0.12)",color:"#e5eefb"},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginBottom:10},children:[m.jsx("div",{style:{fontSize:13,fontWeight:700},children:r}),m.jsx("button",{type:"button",onClick:()=>a(!0),"aria-label":`Close ${r}`,title:`Close ${r}`,style:{width:32,height:32,border:"1px solid rgba(255,255,255,0.12)",borderRadius:999,background:"rgba(255,255,255,0.04)",color:"#e5eefb",cursor:"pointer",flex:"0 0 auto"},children:"×"})]}),t]})};class K{constructor(){i(this,"frameTimestamps",[]);i(this,"lastUpdateTime",0);i(this,"currentFPS",0);i(this,"updateInterval",500);this.lastUpdateTime=performance.now()}trackFrame(){const e=performance.now();this.frameTimestamps.push(e);const r=e-this.updateInterval;this.frameTimestamps=this.frameTimestamps.filter(s=>s>r),e-this.lastUpdateTime>=this.updateInterval&&(this.currentFPS=this.frameTimestamps.length*2,this.lastUpdateTime=e)}getFPS(){return this.currentFPS}reset(){this.frameTimestamps=[],this.lastUpdateTime=performance.now(),this.currentFPS=0}}function V(t,e=1){return t.toFixed(e)}function S(t){return t/(1024*1024)}function W(t,e){return e===0?0:t/e*100}class X{constructor(e=1e3){i(this,"intervalId",null);i(this,"memoryUsage",null);i(this,"updateInterval");i(this,"isSupported",!1);this.updateInterval=e,this.checkSupport()}checkSupport(){const e=performance;this.isSupported="memory"in e&&e.memory!==void 0,this.isSupported||console.warn("[MemoryTracker] performance.memory not available (Chrome-only API)")}start(){if(this.intervalId!==null){console.warn("[MemoryTracker] Already running");return}if(!this.isSupported){this.memoryUsage=null;return}this.updateMemory(),this.intervalId=window.setInterval(()=>{this.updateMemory()},this.updateInterval)}stop(){this.intervalId!==null&&(clearInterval(this.intervalId),this.intervalId=null)}updateMemory(){if(!this.isSupported)return;const e=performance;if(!e.memory)return;const r=e.memory.usedJSHeapSize,s=e.memory.jsHeapSizeLimit;this.memoryUsage={used:S(r),total:S(s),percentage:W(r,s)}}getMemoryUsage(){return this.memoryUsage}isMemorySupported(){return this.isSupported}}class J{constructor(){i(this,"resolution","N/A");i(this,"videoElement",null);i(this,"metadataListener",null)}start(e){if(!e){this.resolution="N/A";return}this.videoElement=e,e.videoWidth>0&&e.videoHeight>0&&this.updateResolution(),this.metadataListener=()=>{this.updateResolution()},e.addEventListener("loadedmetadata",this.metadataListener)}stop(){this.videoElement&&this.metadataListener&&(this.videoElement.removeEventListener("loadedmetadata",this.metadataListener),this.metadataListener=null),this.videoElement=null,this.resolution="N/A"}updateResolution(){if(!this.videoElement){this.resolution="N/A";return}const e=this.videoElement.videoWidth,r=this.videoElement.videoHeight;e>0&&r>0?this.resolution=`${e}x${r}`:this.resolution="N/A"}getResolution(){return this.videoElement&&this.updateResolution(),this.resolution}}class G{constructor(e={}){i(this,"options");i(this,"isRunning",!1);i(this,"metrics",{cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"});i(this,"cameraFPSTracker");i(this,"memoryTracker");i(this,"resolutionTracker");i(this,"frameTimes",[]);i(this,"lastEffectiveFPSUpdate",0);this.options={enableMemoryTracking:e.enableMemoryTracking??!0,memoryUpdateInterval:e.memoryUpdateInterval??1e3},this.cameraFPSTracker=new K,this.memoryTracker=new X(this.options.memoryUpdateInterval),this.resolutionTracker=new J}start(e){if(this.isRunning){console.warn("[MetricsCollector] Already running");return}this.isRunning=!0,this.lastEffectiveFPSUpdate=performance.now(),this.options.enableMemoryTracking&&this.memoryTracker.start(),e&&this.resolutionTracker.start(e),this.setupCameraFPSHook(),console.log("[MetricsCollector] Started")}stop(){this.isRunning&&(this.isRunning=!1,this.memoryTracker.stop(),this.resolutionTracker.stop(),this.cameraFPSTracker.reset(),this.cleanupCameraFPSHook(),console.log("[MetricsCollector] Stopped"))}setupCameraFPSHook(){const e=window;e.__xr_debugger_metrics||(e.__xr_debugger_metrics={trackCameraFrame:()=>{this.cameraFPSTracker.trackFrame(),this.metrics.cameraFPS=this.cameraFPSTracker.getFPS()}})}cleanupCameraFPSHook(){const e=window;e.__xr_debugger_metrics&&delete e.__xr_debugger_metrics}getMetrics(){return this.updateMetricsFromTrackers(),{...this.metrics}}updateMetricsFromTrackers(){this.isRunning&&(this.metrics.memory=this.memoryTracker.getMemoryUsage(),this.metrics.resolution=this.resolutionTracker.getResolution(),this.updateEffectiveFPS())}updateRenderTime(e){this.metrics.renderTime=e,this.updateEffectiveFPS()}async updateDetectionTime(e){if(!e||!this.isRunning){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}try{const r=Object.values(e).filter(Boolean);if(r.length===0){this.metrics.detectionTime=0,this.metrics.modelPerformance=[];return}const s=r.map(c=>c&&typeof c.getPerformanceData=="function"?c.getPerformanceData():Promise.resolve({name:"unknown",processingTime:0})),o=await Promise.all(s);this.metrics.modelPerformance=o.map(c=>({name:c.name,processingTime:c.processingTime||0}));const a=o.reduce((c,p)=>c+(p.processingTime||0),0);this.metrics.detectionTime=a,this.updateEffectiveFPS()}catch(r){console.warn("[MetricsCollector] Error updating detection time:",r),this.metrics.detectionTime=0,this.metrics.modelPerformance=[]}}updateEffectiveFPS(){const e=performance.now(),r=this.metrics.detectionTime+this.metrics.renderTime;if(this.frameTimes.push(r),e-this.lastEffectiveFPSUpdate>=1e3){if(this.frameTimes.length>0){const s=this.frameTimes.reduce((o,a)=>o+a,0)/this.frameTimes.length;this.metrics.effectiveFPS=s>0?1e3/s:0}this.frameTimes=[],this.lastEffectiveFPSUpdate=e}}isActive(){return this.isRunning}}const Q=n.lazy(async()=>({default:(await Promise.resolve().then(()=>require("./DebuggerUI-CEfdddkZ.cjs"))).DebuggerUI})),x=n.createContext(null);function Y({children:t,keyboardShortcut:e="ctrl+shift+d",initialEnabled:r=!1,position:s="top-left"}){const[o,a]=n.useState(r),[c,p]=n.useState(!1),[v,_]=n.useState({cameraFPS:0,detectionTime:0,modelPerformance:[],renderTime:0,effectiveFPS:0,memory:null,resolution:"N/A"}),h=n.useRef(null),u=n.useRef(null),{session:g}=O.useXRContext(),T=z.useXRReady();n.useEffect(()=>(h.current||(h.current=new G,window.__xr_metrics_collector=h.current),()=>{h.current&&h.current.stop(),u.current&&clearInterval(u.current),window.__xr_metrics_collector&&delete window.__xr_metrics_collector}),[]),n.useEffect(()=>{const l=h.current;if(l){if(o&&T){const d=g._getVideoElement();l.start(d),u.current=window.setInterval(async()=>{const w=Object.fromEntries(g.store.getSnapshot().pipeline);await l.updateDetectionTime(w);const f=l.getMetrics();_(f)},16)}else l.stop(),u.current&&(clearInterval(u.current),u.current=null);return()=>{u.current&&(clearInterval(u.current),u.current=null)}}},[o,T,g]),n.useEffect(()=>{const l=d=>{const f=e.toLowerCase().split("+"),E=f.includes("ctrl")||f.includes("control"),M=f.includes("shift"),D=f.includes("alt"),I=f[f.length-1],U=E?d.ctrlKey||d.metaKey:!0,j=M?d.shiftKey:!0,L=D?d.altKey:!0,A=d.key.toLowerCase()===I;U&&j&&L&&A&&(d.preventDefault(),a(q=>!q))};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l)}},[e]);const C=n.useCallback(()=>{a(l=>!l)},[]),F=n.useCallback(()=>{a(!0)},[]),y=n.useCallback(()=>{a(!1)},[]),R={state:{enabled:o,collapsed:c,metrics:v},toggle:C,setCollapsed:p,enable:F,disable:y};return m.jsxs(x.Provider,{value:R,children:[t,o&&m.jsx(n.Suspense,{fallback:null,children:m.jsx(Q,{metrics:v,collapsed:c,onCollapse:p,onClose:y,position:s,keyboardShortcut:e})})]})}function Z(){const t=n.useContext(x);if(!t)throw new Error("useDebuggerContext must be used within a DebuggerProvider");return t}function ee({onUpdate:t}){const e=n.useRef(0),r=n.useRef(!0);return $.useFrame(()=>{if(r.current)r.current=!1;else{const o=performance.now()-e.current;t(o)}e.current=performance.now()},-1e3),null}function k(){const t=Z();return{metrics:t.state.metrics,enabled:t.state.enabled,collapsed:t.state.collapsed,toggle:t.toggle,setCollapsed:t.setCollapsed,enable:t.enable,disable:t.disable}}function te(){const{enabled:t}=k(),e=r=>{const s=window;s.__xr_metrics_collector&&s.__xr_metrics_collector.updateRenderTime(r)};return t?m.jsx(ee,{onUpdate:e}):null}const b=600;function P(){if(typeof window>"u")return;const t=window;return t.__xrCalibrationDebugState||(t.__xrCalibrationDebugState={events:[]}),t.__xrCalibrationDebugState}function re(t,e,r){const s=P();s&&(s.events.push({source:t,label:e,payload:r,ts:performance.now()}),s.events.length>b&&s.events.splice(0,s.events.length-b))}function se(t=b){const e=P();return e?e.events.slice(Math.max(0,e.events.length-t)):[]}exports.DebuggerOverlay=te;exports.DebuggerProvider=Y;exports.XRDebugView=B;exports.formatNumber=V;exports.readCalibrationDebugEvents=se;exports.recordCalibrationDebugEvent=re;exports.useDebugger=k;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { XRClientConfig } from '../../types';
|
|
2
|
-
export declare class XRClient {
|
|
3
|
-
private static instance;
|
|
4
|
-
private logger;
|
|
5
|
-
private session?;
|
|
6
|
-
static initialize(config: XRClientConfig): Promise<XRClient>;
|
|
7
|
-
private constructor();
|
|
8
|
-
createSession(): Promise<XRSession>;
|
|
9
|
-
}
|
package/dist/modules/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './XRClient';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wrapper class for making API requests.
|
|
3
|
-
*/
|
|
4
|
-
export declare class ApiService {
|
|
5
|
-
private baseUrl;
|
|
6
|
-
private apiKey;
|
|
7
|
-
constructor(params: {
|
|
8
|
-
baseUrl: string;
|
|
9
|
-
apiKey: string;
|
|
10
|
-
});
|
|
11
|
-
fetch<T = unknown>(url: string, options?: RequestInit): Promise<T>;
|
|
12
|
-
}
|
package/dist/types/client.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { useState as x, useEffect as g } from "react";
|
|
2
|
-
const E = (t) => {
|
|
3
|
-
if (t.length === 0)
|
|
4
|
-
return { minX: 0, minY: 0, maxX: 0, maxY: 0, width: 0, height: 0, centerX: 0, centerY: 0 };
|
|
5
|
-
let n = 1, e = 1, s = 0, a = 0;
|
|
6
|
-
for (let o = 0; o < t.length; o++) {
|
|
7
|
-
const { x: l, y: c } = t[o];
|
|
8
|
-
l < n && (n = l), c < e && (e = c), l > s && (s = l), c > a && (a = c);
|
|
9
|
-
}
|
|
10
|
-
const i = Math.max(0, s - n), h = Math.max(0, a - e);
|
|
11
|
-
return {
|
|
12
|
-
minX: n,
|
|
13
|
-
minY: e,
|
|
14
|
-
maxX: s,
|
|
15
|
-
maxY: a,
|
|
16
|
-
width: i,
|
|
17
|
-
height: h,
|
|
18
|
-
centerX: n + i * 0.5,
|
|
19
|
-
centerY: e + h * 0.5
|
|
20
|
-
};
|
|
21
|
-
}, N = (t, n) => t.map((e) => ({
|
|
22
|
-
landmarks: e,
|
|
23
|
-
bounds: E(e)
|
|
24
|
-
})), P = {
|
|
25
|
-
publishedCount: 0,
|
|
26
|
-
// -Infinity, not 0: the first non-empty frame must publish regardless of its
|
|
27
|
-
// timestamp (a frame at now=0 would otherwise be throttled against 0).
|
|
28
|
-
lastPublishAt: -1 / 0,
|
|
29
|
-
lastNonEmptyAt: -1
|
|
30
|
-
}, X = (t, n, e, s, a) => {
|
|
31
|
-
if (n > 0) {
|
|
32
|
-
const i = { ...t, lastNonEmptyAt: e };
|
|
33
|
-
return e - t.lastPublishAt >= s ? {
|
|
34
|
-
action: "publish",
|
|
35
|
-
state: { publishedCount: n, lastPublishAt: e, lastNonEmptyAt: e }
|
|
36
|
-
} : { action: "none", state: i };
|
|
37
|
-
}
|
|
38
|
-
return t.publishedCount === 0 ? { action: "none", state: t } : t.lastNonEmptyAt >= 0 && e - t.lastNonEmptyAt < a ? { action: "none", state: t } : {
|
|
39
|
-
action: "clear",
|
|
40
|
-
// Reset the throttle anchor so the next reacquired face publishes at once.
|
|
41
|
-
state: { publishedCount: 0, lastPublishAt: -1 / 0, lastNonEmptyAt: t.lastNonEmptyAt }
|
|
42
|
-
};
|
|
43
|
-
}, R = ({
|
|
44
|
-
node: t,
|
|
45
|
-
enabled: n,
|
|
46
|
-
selectedSource: e,
|
|
47
|
-
throttleMs: s = 16,
|
|
48
|
-
holdMs: a = 250,
|
|
49
|
-
onFrame: i
|
|
50
|
-
}) => {
|
|
51
|
-
const [h, o] = x([]);
|
|
52
|
-
return g(() => {
|
|
53
|
-
if (!n || !t) {
|
|
54
|
-
o((u) => u.length === 0 ? u : []);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
let l = 0, c, m = P;
|
|
58
|
-
const p = (u, r, f) => {
|
|
59
|
-
const { action: A, state: y } = X(m, u, r, s, a);
|
|
60
|
-
m = y, A === "publish" ? o(f) : A === "clear" && o((d) => d.length === 0 ? d : []);
|
|
61
|
-
}, b = () => {
|
|
62
|
-
l = requestAnimationFrame(b), i == null || i();
|
|
63
|
-
const u = performance.now(), r = t.getDetectionResults();
|
|
64
|
-
if (!r) {
|
|
65
|
-
p(0, u, []), c = r;
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (r === c) return;
|
|
69
|
-
c = r;
|
|
70
|
-
const f = N(
|
|
71
|
-
r.faceLandmarks ?? []
|
|
72
|
-
);
|
|
73
|
-
p(f.length, u, f);
|
|
74
|
-
};
|
|
75
|
-
return l = requestAnimationFrame(b), () => cancelAnimationFrame(l);
|
|
76
|
-
}, [n, t, e, s, i]), h;
|
|
77
|
-
};
|
|
78
|
-
export {
|
|
79
|
-
E as c,
|
|
80
|
-
R as u
|
|
81
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const y=require("react"),x=t=>{if(t.length===0)return{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0};let n=1,e=1,s=0,a=0;for(let u=0;u<t.length;u++){const{x:c,y:l}=t[u];c<n&&(n=c),l<e&&(e=l),c>s&&(s=c),l>a&&(a=l)}const i=Math.max(0,s-n),h=Math.max(0,a-e);return{minX:n,minY:e,maxX:s,maxY:a,width:i,height:h,centerX:n+i*.5,centerY:e+h*.5}},E=(t,n)=>t.map(e=>({landmarks:e,bounds:x(e)})),N={publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:-1},R=(t,n,e,s,a)=>{if(n>0){const i={...t,lastNonEmptyAt:e};return e-t.lastPublishAt>=s?{action:"publish",state:{publishedCount:n,lastPublishAt:e,lastNonEmptyAt:e}}:{action:"none",state:i}}return t.publishedCount===0?{action:"none",state:t}:t.lastNonEmptyAt>=0&&e-t.lastNonEmptyAt<a?{action:"none",state:t}:{action:"clear",state:{publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:t.lastNonEmptyAt}}},P=({node:t,enabled:n,selectedSource:e,throttleMs:s=16,holdMs:a=250,onFrame:i})=>{const[h,u]=y.useState([]);return y.useEffect(()=>{if(!n||!t){u(o=>o.length===0?o:[]);return}let c=0,l,f=N;const p=(o,r,m)=>{const{action:A,state:g}=R(f,o,r,s,a);f=g,A==="publish"?u(m):A==="clear"&&u(d=>d.length===0?d:[])},b=()=>{c=requestAnimationFrame(b),i==null||i();const o=performance.now(),r=t.getDetectionResults();if(!r){p(0,o,[]),l=r;return}if(r===l)return;l=r;const m=E(r.faceLandmarks??[]);p(m.length,o,m)};return c=requestAnimationFrame(b),()=>cancelAnimationFrame(c)},[n,t,e,s,i]),h};exports.computeLandmarkBounds=x;exports.useFaceResults=P;
|