@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
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Vincentt XR SDK Docs"
|
|
3
|
+
description: "Author XR scenes with scene objects, typed components, runtime renderers, and inspector panels."
|
|
4
|
+
sidebarTitle: "Introduction"
|
|
5
|
+
icon: "book-open"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The Vincentt XR SDK now supports a scene-object authoring model.
|
|
9
|
+
Instead of treating every renderable as a one-off React component, the SDK can
|
|
10
|
+
describe scene content as stable objects with attached components.
|
|
11
|
+
|
|
12
|
+
## Current focus
|
|
13
|
+
|
|
14
|
+
The current docs cover the scene-object API added for:
|
|
15
|
+
|
|
16
|
+
- Screen Image objects
|
|
17
|
+
- Screen Text objects
|
|
18
|
+
- Screen Shape objects, including gradient and glass fills
|
|
19
|
+
- Screen-space coordinate conversion and smoothing utilities
|
|
20
|
+
- FaceInfo effect-logic data
|
|
21
|
+
- Face binding presets and custom anchors
|
|
22
|
+
- Face, hand, gesture, body, and segmentation trackers
|
|
23
|
+
- Face meshes, warp, retouch, head binding, and occlusion
|
|
24
|
+
- Texture-source playback, capture/recording, and audio
|
|
25
|
+
- 3D Object runtime APIs
|
|
26
|
+
- Render-group ordering
|
|
27
|
+
- Runtime object rendering
|
|
28
|
+
- Hierarchy and object inspector panels
|
|
29
|
+
- reusable debug-ui scene editor primitives
|
|
30
|
+
- Harness client integration
|
|
31
|
+
|
|
32
|
+
## Mental model
|
|
33
|
+
|
|
34
|
+
A scene object is the user-facing item in a hierarchy. It has an ID, name,
|
|
35
|
+
enabled state, owning render group, and ordered component IDs.
|
|
36
|
+
|
|
37
|
+
A component owns one piece of behavior or rendering state:
|
|
38
|
+
|
|
39
|
+
- `Transform`
|
|
40
|
+
- `ScreenTransform`
|
|
41
|
+
- `ScreenImage`
|
|
42
|
+
- `ScreenText`
|
|
43
|
+
- `ScreenShape`
|
|
44
|
+
- `TrackingAnchor`
|
|
45
|
+
- `MeshRenderer`
|
|
46
|
+
- `Light`
|
|
47
|
+
- `LookAt`
|
|
48
|
+
- `PinToMesh`
|
|
49
|
+
- `Material`
|
|
50
|
+
- `Texture`
|
|
51
|
+
|
|
52
|
+
Use the API Reference pages for definitions and examples:
|
|
53
|
+
|
|
54
|
+
- Runtime 3D: `Transform3D`, `MeshRenderer`, `VideoBackground`, `LightObject`,
|
|
55
|
+
`LookAt`, `PinToMesh`, and `SceneObjectRenderer`
|
|
56
|
+
- Material Render State: `depthTest`, `depthWrite`, `colorMask`, culling,
|
|
57
|
+
blending, and polygon offset
|
|
58
|
+
- Behavior Components: `LookAt` and `PinToMesh` target resolution, offsets, and
|
|
59
|
+
defaults
|
|
60
|
+
- Scene Object Store: serialized object/component types, default factories, and
|
|
61
|
+
immutable update helpers
|
|
62
|
+
- Debug UI Scene Editor: `XRSceneEditorProvider`, `XRSceneViewport`,
|
|
63
|
+
`SceneHierarchyPanel`, `SceneInspectorPanel`, `ViewportToolbar`, and settings
|
|
64
|
+
panels
|
|
65
|
+
|
|
66
|
+
## Basic composition
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
import {
|
|
70
|
+
createDefaultComponent,
|
|
71
|
+
createRenderPlan,
|
|
72
|
+
createSceneObject,
|
|
73
|
+
migrateToRenderGroups,
|
|
74
|
+
} from "@vincentt-xr/sdk/scene-object";
|
|
75
|
+
|
|
76
|
+
const object = createSceneObject({ name: "Cube", renderGroupId: "general" });
|
|
77
|
+
const transform = createDefaultComponent("Transform", object.id);
|
|
78
|
+
const meshRenderer = createDefaultComponent("MeshRenderer", object.id);
|
|
79
|
+
|
|
80
|
+
object.componentIds = [transform.id, meshRenderer.id];
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Render the object through the runtime bridge:
|
|
84
|
+
|
|
85
|
+
```tsx
|
|
86
|
+
import { SceneObjectRenderer } from "@vincentt-xr/sdk";
|
|
87
|
+
|
|
88
|
+
const scene = migrateToRenderGroups(store);
|
|
89
|
+
const [entry] = createRenderPlan(scene);
|
|
90
|
+
|
|
91
|
+
<SceneObjectRenderer
|
|
92
|
+
objectId={entry.objectId}
|
|
93
|
+
store={scene}
|
|
94
|
+
renderOrder={entry.renderOrder}
|
|
95
|
+
renderLayer={entry.renderLayer}
|
|
96
|
+
/>;
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Open these source-backed docs at `/docs`. The verified in-repo editor is
|
|
100
|
+
`/layer-panel-test`, and `test001` is the canonical external Harness client.
|
|
101
|
+
|
|
102
|
+
## Current example routes
|
|
103
|
+
|
|
104
|
+
Source of truth: `example/src/navigation/routes.tsx`. This list is a readable
|
|
105
|
+
summary only.
|
|
106
|
+
|
|
107
|
+
- `/unified-architecture`: current debug-ui composition for a unified
|
|
108
|
+
face-tracking scene.
|
|
109
|
+
- `/testing-hook`: multi-face face-mesh sanity example using reusable
|
|
110
|
+
scene-object/debug-ui APIs.
|
|
111
|
+
- `/body`: visible body-tracking anchors using `BodyTracker` and
|
|
112
|
+
`TrackingAnchor`.
|
|
113
|
+
- `/debugger`: minimal debugger overlay example for metrics and runtime
|
|
114
|
+
inspection.
|
|
115
|
+
- `/viewport-editor`: reusable 3D scene editor fixture.
|
|
116
|
+
- `/face-retouch-legacy`: legacy face-retouch shader controls with debug-ui
|
|
117
|
+
settings.
|
|
118
|
+
|
|
119
|
+
Example-app assets are organized by purpose: reusable media in
|
|
120
|
+
`example/src/assets/media`, GLB files in `example/src/assets/models`, and
|
|
121
|
+
domain-owned effect assets in folders such as `example/src/assets/face-effects`.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Scene Object Overview"
|
|
3
|
+
description: "The shared object/component model used by Screen Image, Screen Text, and 3D Object authoring."
|
|
4
|
+
sidebarTitle: "Overview"
|
|
5
|
+
icon: "layers"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
The scene-object model separates identity from behavior.
|
|
9
|
+
|
|
10
|
+
Import scene-object types, factories, selectors, and store operations from
|
|
11
|
+
`@vincentt-xr/sdk/scene-object`. Runtime renderers remain in
|
|
12
|
+
`@vincentt-xr/sdk`.
|
|
13
|
+
|
|
14
|
+
Internal source layout: serialized scene-object helpers stay in
|
|
15
|
+
`lib/scene-object/`; render helpers live in `lib/render/`; screen settings live
|
|
16
|
+
in `lib/screen-image/` and `lib/screen-text/`. Public imports stay unchanged.
|
|
17
|
+
|
|
18
|
+
## SceneObject
|
|
19
|
+
|
|
20
|
+
`SceneObject` is the stable object users see in the editor hierarchy.
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
type SceneObject = {
|
|
24
|
+
id: SceneObjectId;
|
|
25
|
+
name: string;
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
parentObjectId?: SceneObjectId | null;
|
|
28
|
+
childObjectIds?: SceneObjectId[];
|
|
29
|
+
renderGroupId?: string;
|
|
30
|
+
componentIds: SceneComponentId[];
|
|
31
|
+
};
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The object does not directly know how to render. Its ordered `componentIds`
|
|
35
|
+
determine which systems apply to it.
|
|
36
|
+
|
|
37
|
+
`parentObjectId` and `childObjectIds` model nested hierarchy. Child transforms
|
|
38
|
+
are evaluated in parent space, so a child can keep its own local transform while
|
|
39
|
+
parent movement affects the full subtree. Parenting does not rewrite the child
|
|
40
|
+
Transform; existing child values become local-to-parent values. Use
|
|
41
|
+
`setSceneObjectParent` instead of manually editing both fields. Editor surfaces
|
|
42
|
+
that should avoid visual jumps can use
|
|
43
|
+
`setSceneObjectParentPreserveWorldTransform`.
|
|
44
|
+
|
|
45
|
+
World preservation is exact for transforms representable by the component.
|
|
46
|
+
Rotation combined with non-uniform scale in an ancestor introduces matrix shear;
|
|
47
|
+
because `Transform` and `ScreenTransform` do not expose shear, reparenting that
|
|
48
|
+
case is approximate.
|
|
49
|
+
|
|
50
|
+
## SceneComponent
|
|
51
|
+
|
|
52
|
+
`SceneComponent` stores one typed component instance.
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
type SceneComponent<TType extends SceneComponentType = SceneComponentType> = {
|
|
56
|
+
id: SceneComponentId;
|
|
57
|
+
objectId: SceneObjectId;
|
|
58
|
+
type: TType;
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
settings: ComponentRegistry[TType];
|
|
61
|
+
};
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## ComponentRegistry
|
|
65
|
+
|
|
66
|
+
The registry maps component names to settings. This keeps the inspector,
|
|
67
|
+
serialization layer, and runtime renderer type-aware.
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
type ComponentRegistry = {
|
|
71
|
+
Transform: Transform3DSettings;
|
|
72
|
+
ScreenTransform: ScreenTransform2DSettings;
|
|
73
|
+
ScreenImage: ScreenImageSettings;
|
|
74
|
+
ScreenText: ScreenTextSettings;
|
|
75
|
+
ScreenShape: ScreenShapeSettings;
|
|
76
|
+
TrackingAnchor: TrackingAnchorSettings;
|
|
77
|
+
MeshRenderer: MeshRendererSettings;
|
|
78
|
+
Material: MaterialSettings;
|
|
79
|
+
Texture: TextureSettings;
|
|
80
|
+
Light: LightSettings;
|
|
81
|
+
LookAt: LookAtSettings;
|
|
82
|
+
PinToMesh: PinToMeshSettings;
|
|
83
|
+
};
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Current 3D scene objects use `Transform` + `MeshRenderer`, optionally with
|
|
87
|
+
`LookAt` and/or `PinToMesh` behavior components. Light objects use `Transform` +
|
|
88
|
+
`Light`. Screen-space objects use `ScreenTransform` with `ScreenImage`,
|
|
89
|
+
`ScreenText`, or `ScreenShape`. Add `TrackingAnchor` to a 2D or 3D object for
|
|
90
|
+
face binding. Null/container objects use only `Transform` for 3D or only
|
|
91
|
+
`ScreenTransform` for 2D.
|
|
92
|
+
|
|
93
|
+
## Store shape
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
type SceneObjectStore = {
|
|
97
|
+
objects: Record<SceneObjectId, SceneObject>;
|
|
98
|
+
components: Record<SceneComponentId, SceneComponent>;
|
|
99
|
+
};
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Apps can extend the store with UI state:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
type EditorStore = SceneObjectStore & {
|
|
106
|
+
selectedObjectId: SceneObjectId;
|
|
107
|
+
};
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Store helper functions preserve extra app-owned fields.
|
|
111
|
+
|
|
112
|
+
Parent only within one transform domain: `Transform` children belong under 3D
|
|
113
|
+
parents and `ScreenTransform` children under 2D parents. Mixed 2D/3D parenting
|
|
114
|
+
is rejected. `setSceneObjectParentPreserveWorldTransform` supports both domains.
|
|
115
|
+
|
|
116
|
+
Grouped editors extend the store with materialized groups:
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
type RenderGroupSceneObjectStore = SceneObjectStore & {
|
|
120
|
+
renderGroups: Record<RenderGroupId, RenderGroup>;
|
|
121
|
+
renderGroupOrder: RenderGroupId[];
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Use `migrateToRenderGroups(store, legacyObjectOrder?)` to construct this state.
|
|
126
|
+
Only groups backed by compatible scene objects are materialized. Group order is
|
|
127
|
+
derived state, not a hardcoded list.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Render Groups"
|
|
3
|
+
description: "Materialize compatible scene groups and control cross-domain composition."
|
|
4
|
+
sidebarTitle: "Render Groups"
|
|
5
|
+
icon: "layer-group"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Render groups are user-facing composition units. They are not Three.js camera
|
|
9
|
+
layers and are not a fixed list.
|
|
10
|
+
|
|
11
|
+
Import all render-group types, policies, migration, compatibility checks, reorder
|
|
12
|
+
helpers, and `createRenderPlan` from `@vincentt-xr/sdk/scene-object`.
|
|
13
|
+
|
|
14
|
+
Internal source layout: render-group helpers live under `lib/render/`
|
|
15
|
+
(`renderGroups.ts`, `renderPasses.ts`, `layerStack.ts`). Public imports stay
|
|
16
|
+
`@vincentt-xr/sdk/scene-object` or `@vincentt-xr/sdk`.
|
|
17
|
+
|
|
18
|
+
## State
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
type RenderGroup = {
|
|
22
|
+
id: RenderGroupId;
|
|
23
|
+
name: string;
|
|
24
|
+
domain: RenderGroupDomain;
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
objectIds: SceneObjectId[];
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`renderGroupOrder` controls order between groups. A group's `objectIds` controls
|
|
31
|
+
order inside that group. The first group renders first; the last group renders
|
|
32
|
+
last and composites in front.
|
|
33
|
+
|
|
34
|
+
## Supported domains
|
|
35
|
+
|
|
36
|
+
| Domain | Required composition | Status |
|
|
37
|
+
| ------------------ | -------------------------------------------------- | --------- |
|
|
38
|
+
| General / 3D Scene | `Transform` + `MeshRenderer` | Supported |
|
|
39
|
+
| 2D Foreground | `ScreenTransform` + `ScreenText` or `ScreenImage` | Supported |
|
|
40
|
+
| Background | editor camera-texture plane or external background | Partial |
|
|
41
|
+
| AR Tracking | Tracking scene-object components | Reserved |
|
|
42
|
+
| Post Effects | Post-processing scene object | Reserved |
|
|
43
|
+
|
|
44
|
+
Reserved and empty groups are not materialized or shown in the Hierarchy.
|
|
45
|
+
|
|
46
|
+
## Structural helpers
|
|
47
|
+
|
|
48
|
+
- `reorderRenderGroup` changes `renderGroupOrder`.
|
|
49
|
+
- `reorderObjectWithinGroup` changes one group's `objectIds`.
|
|
50
|
+
- `validateGroupCompatibility` checks a cross-group move without mutation.
|
|
51
|
+
- `moveObjectToGroup` updates group membership and `object.renderGroupId` only
|
|
52
|
+
when compatibility passes.
|
|
53
|
+
- `createRenderPlan` assigns each enabled object a sorting band and internal
|
|
54
|
+
camera layer. It omits groups beyond `MAX_RENDER_GROUP_PASSES` rather than
|
|
55
|
+
throwing or reusing a camera layer.
|
|
56
|
+
|
|
57
|
+
Unknown IDs and incompatible moves are safe no-ops.
|
|
58
|
+
|
|
59
|
+
## Internal camera layers
|
|
60
|
+
|
|
61
|
+
Camera layers are visibility masks used by sequential render passes. Their
|
|
62
|
+
numeric values do not define visual order. Layer 0 is shared by lights,
|
|
63
|
+
infrastructure, and editor controls. Managed groups use layers 1–30.
|
|
64
|
+
Import `MAX_RENDER_GROUP_PASSES` from `@vincentt-xr/sdk` when guarding group
|
|
65
|
+
creation in an authoring client.
|
|
66
|
+
|
|
67
|
+
`VideoBackground` is a flat external camera-background component, not a managed
|
|
68
|
+
scene object. The reusable `XRSceneViewport` owns a separate editor-only
|
|
69
|
+
camera-texture plane when the camera feed should behave as depth-writing 3D
|
|
70
|
+
geometry. `EXTERNAL_BACKGROUND_RENDER_LAYER` (31) remains temporary
|
|
71
|
+
infrastructure for legacy external background composition.
|
|
72
|
+
|
|
73
|
+
## Grouping flat stores
|
|
74
|
+
|
|
75
|
+
`migrateToRenderGroups` validates explicit `renderGroupId` values, infers missing
|
|
76
|
+
or incompatible assignments from object components, and derives the initial group
|
|
77
|
+
order from the first object occurrence.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Runtime Rendering"
|
|
3
|
+
description: "Render scene objects from component data with SceneObjectRenderer."
|
|
4
|
+
sidebarTitle: "Runtime Rendering"
|
|
5
|
+
icon: "play"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
`SceneObjectRenderer` converts scene-object data into runtime React Three Fiber
|
|
9
|
+
objects.
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
type SceneObjectRendererProps = {
|
|
15
|
+
objectId: SceneObjectId;
|
|
16
|
+
store: SceneObjectStore;
|
|
17
|
+
editorMode?: boolean;
|
|
18
|
+
renderOrder?: number;
|
|
19
|
+
renderLayer?: number;
|
|
20
|
+
onComponentChange?: (component: SceneComponent) => void;
|
|
21
|
+
fallback?: (message: string) => ReactNode;
|
|
22
|
+
};
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Supported combinations
|
|
26
|
+
|
|
27
|
+
| Object type | Components | Runtime result |
|
|
28
|
+
| -------------------- | -------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
29
|
+
| 3D Null | `Transform` | invisible 3D transform container |
|
|
30
|
+
| 3D Object | `Transform` + `MeshRenderer` | transformed primitive or asset mesh |
|
|
31
|
+
| 3D Object + behavior | `Transform` + `MeshRenderer` + optional `LookAt` / `PinToMesh` | mesh with behavior components resolved by scene-object target IDs |
|
|
32
|
+
| Light | `Transform` + `Light` | ambient, directional, point, or spot light |
|
|
33
|
+
| 2D Null | `ScreenTransform` | invisible screen-space transform container |
|
|
34
|
+
| Screen Image | `ScreenTransform` + `ScreenImage` | screen-space image |
|
|
35
|
+
| Screen Text | `ScreenTransform` + `ScreenText` | screen-space text |
|
|
36
|
+
| Screen Shape | `ScreenTransform` + `ScreenShape` | vector shape with solid, gradient, or glass fill |
|
|
37
|
+
| Face-bound object | `Transform` or `ScreenTransform` + `TrackingAnchor` | content attached to a face preset or custom face-local point |
|
|
38
|
+
|
|
39
|
+
## Render an object
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { getRenderGroupLayer, SceneObjectRenderer, SequentialRenderPasses } from "@vincentt-xr/sdk";
|
|
43
|
+
import { createRenderPlan } from "@vincentt-xr/sdk/scene-object";
|
|
44
|
+
|
|
45
|
+
const plan = createRenderPlan(scene);
|
|
46
|
+
const passLayers = Array.from(new Set(plan.map((entry) => entry.renderLayer)));
|
|
47
|
+
|
|
48
|
+
<SequentialRenderPasses layers={passLayers} />;
|
|
49
|
+
{
|
|
50
|
+
plan.map((entry) => (
|
|
51
|
+
<SceneObjectRenderer
|
|
52
|
+
key={entry.objectId}
|
|
53
|
+
objectId={entry.objectId}
|
|
54
|
+
store={scene}
|
|
55
|
+
renderOrder={entry.renderOrder}
|
|
56
|
+
renderLayer={entry.renderLayer}
|
|
57
|
+
editorMode={entry.objectId === scene.selectedObjectId}
|
|
58
|
+
onComponentChange={replaceComponent}
|
|
59
|
+
/>
|
|
60
|
+
));
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
When `editorMode` is enabled, runtime transform controls can write changed
|
|
65
|
+
component settings back through `onComponentChange`.
|
|
66
|
+
|
|
67
|
+
For 3D objects, `SceneObjectRenderer` registers each rendered object ID with the
|
|
68
|
+
runtime object registry. `LookAt` and `PinToMesh` then resolve
|
|
69
|
+
`targetObjectId` values against that registry, so serialized scene data can point
|
|
70
|
+
to other scene objects without hardcoded React refs.
|
|
71
|
+
|
|
72
|
+
`SequentialRenderPasses` must be mounted inside `XRScene`. It renders groups from
|
|
73
|
+
first to last, preserves color, and clears depth before later groups. The last
|
|
74
|
+
group therefore composites in front. `captureFrame()` uses the same registered
|
|
75
|
+
grouped renderer.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Texture API: client usage
|
|
2
|
+
|
|
3
|
+
Use `ScreenImage` for the rendered object. Keep the resolver/controller outside
|
|
4
|
+
the component and bind diagnostics or inspector controls to the same state.
|
|
5
|
+
|
|
6
|
+
```tsx
|
|
7
|
+
import { ScreenImage, ScreenSpaceUI } from "@vincentt-xr/sdk";
|
|
8
|
+
import {
|
|
9
|
+
createTextureSourceResolver,
|
|
10
|
+
disposeResolvedTextureSource,
|
|
11
|
+
type ResolvedTextureSource,
|
|
12
|
+
} from "@vincentt-xr/sdk/low-level";
|
|
13
|
+
|
|
14
|
+
const resolver = createTextureSourceResolver(providers);
|
|
15
|
+
|
|
16
|
+
function MediaImage({ source, transform }) {
|
|
17
|
+
const [resolved, setResolved] = useState<ResolvedTextureSource>();
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
let active: ResolvedTextureSource | undefined;
|
|
21
|
+
void resolver(source, controller.signal).then((next) => {
|
|
22
|
+
active = next;
|
|
23
|
+
setResolved(next);
|
|
24
|
+
});
|
|
25
|
+
return () => {
|
|
26
|
+
controller.abort();
|
|
27
|
+
disposeResolvedTextureSource(active);
|
|
28
|
+
};
|
|
29
|
+
}, [source]);
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<ScreenSpaceUI>
|
|
33
|
+
<ScreenImage
|
|
34
|
+
source={resolved ? { kind: "texture", texture: resolved.texture } : { kind: "default" }}
|
|
35
|
+
transform={transform}
|
|
36
|
+
materialType="unlit"
|
|
37
|
+
onScreenTransformChange={/* write the live scene-object state */}
|
|
38
|
+
/>
|
|
39
|
+
</ScreenSpaceUI>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Rules: abort stale loads; dispose only owned results; preserve transform/material
|
|
45
|
+
settings during source changes; capability-gate playback controls; and expose
|
|
46
|
+
loading, error, retry, paused, ended, and cleanup state to the caller.
|
|
47
|
+
|
|
48
|
+
Media event compatibility:
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
const unsubscribe = resolved.controller?.on("PlayEnd", ({ snapshot }) => {
|
|
52
|
+
console.log(snapshot.frame, snapshot.time);
|
|
53
|
+
});
|
|
54
|
+
// unsubscribe on source replacement/unmount
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Supported events: `KeyFrameInSecond`, `Pause`, `PlayBegin`, `PlayEnd`, `Resume`,
|
|
58
|
+
and `Stop`.
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vincentt-xr/sdk",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.2",
|
|
4
4
|
"description": "XR SDK by Vincentt",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/rangoon-x/vincentt-xr-sdk.git"
|
|
8
|
+
},
|
|
5
9
|
"license": "UNLICENSED",
|
|
6
10
|
"keywords": [
|
|
7
11
|
"Vincentt",
|
|
@@ -13,7 +17,17 @@
|
|
|
13
17
|
"sideEffects": false,
|
|
14
18
|
"files": [
|
|
15
19
|
"/dist",
|
|
16
|
-
"GROUNDING.md"
|
|
20
|
+
"GROUNDING.md",
|
|
21
|
+
"docs/api",
|
|
22
|
+
"docs/examples",
|
|
23
|
+
"docs/guides",
|
|
24
|
+
"docs/inspector",
|
|
25
|
+
"docs/scene-objects",
|
|
26
|
+
"docs/docs.json",
|
|
27
|
+
"docs/introduction.mdx",
|
|
28
|
+
"docs/MIGRATION_GUIDE.md",
|
|
29
|
+
"docs/SDK_DOCUMENTATION.md",
|
|
30
|
+
"docs/texture-api-consumer.md"
|
|
17
31
|
],
|
|
18
32
|
"main": "./dist/main.cjs",
|
|
19
33
|
"module": "./dist/main.js",
|
|
@@ -39,16 +53,37 @@
|
|
|
39
53
|
"import": "./dist/low-level.js",
|
|
40
54
|
"require": "./dist/low-level.cjs"
|
|
41
55
|
},
|
|
56
|
+
"./scene-object": {
|
|
57
|
+
"types": "./dist/entries/scene-object.d.ts",
|
|
58
|
+
"import": "./dist/scene-object.js",
|
|
59
|
+
"require": "./dist/scene-object.cjs"
|
|
60
|
+
},
|
|
42
61
|
"./internal": {
|
|
43
62
|
"types": "./dist/entries/internal.d.ts",
|
|
44
63
|
"import": "./dist/internal.js",
|
|
45
64
|
"require": "./dist/internal.cjs"
|
|
65
|
+
},
|
|
66
|
+
"./debug-ui": {
|
|
67
|
+
"types": "./dist/debug-ui/index.d.ts",
|
|
68
|
+
"import": "./dist/debug-ui.js",
|
|
69
|
+
"require": "./dist/debug-ui.cjs"
|
|
70
|
+
},
|
|
71
|
+
"./debug-ui/media-source": {
|
|
72
|
+
"types": "./dist/debug-ui/media-source/index.d.ts",
|
|
73
|
+
"import": "./dist/debug-ui/media-source.js",
|
|
74
|
+
"require": "./dist/debug-ui/media-source.cjs"
|
|
75
|
+
},
|
|
76
|
+
"./debug-ui/default-setting": {
|
|
77
|
+
"types": "./dist/debug-ui/default-setting/index.d.ts",
|
|
78
|
+
"import": "./dist/debug-ui/default-setting.js",
|
|
79
|
+
"require": "./dist/debug-ui/default-setting.cjs"
|
|
46
80
|
}
|
|
47
81
|
},
|
|
48
82
|
"peerDependencies": {
|
|
49
83
|
"@mediapipe/tasks-vision": "^0.10.18",
|
|
50
84
|
"@react-three/drei": "9.105.6",
|
|
51
85
|
"@react-three/fiber": "8.18.0",
|
|
86
|
+
"onnxruntime-web": "^1.27.0",
|
|
52
87
|
"react": "^18.2.0",
|
|
53
88
|
"react-dom": "^18.2.0",
|
|
54
89
|
"three": "0.173.0"
|
|
@@ -56,9 +91,14 @@
|
|
|
56
91
|
"peerDependenciesMeta": {
|
|
57
92
|
"@mediapipe/tasks-vision": {
|
|
58
93
|
"optional": false
|
|
94
|
+
},
|
|
95
|
+
"onnxruntime-web": {
|
|
96
|
+
"optional": true
|
|
59
97
|
}
|
|
60
98
|
},
|
|
61
99
|
"devDependencies": {
|
|
100
|
+
"@eslint/js": "^9.14.0",
|
|
101
|
+
"@mdx-js/rollup": "^3.1.1",
|
|
62
102
|
"@types/node": "^22.9.0",
|
|
63
103
|
"@types/react": "^18.3.12",
|
|
64
104
|
"@types/react-dom": "^18.3.1",
|
|
@@ -69,8 +109,6 @@
|
|
|
69
109
|
"commit-and-tag-version": "^12.5.0",
|
|
70
110
|
"cz-conventional-changelog": "^3.3.0",
|
|
71
111
|
"eslint": "^9.14.0",
|
|
72
|
-
"eslint-config-airbnb": "^19.0.4",
|
|
73
|
-
"eslint-config-airbnb-typescript": "^18.0.0",
|
|
74
112
|
"eslint-config-prettier": "^9.1.0",
|
|
75
113
|
"eslint-plugin-prettier": "^5.2.1",
|
|
76
114
|
"eslint-plugin-react": "^7.37.2",
|
|
@@ -78,9 +116,14 @@
|
|
|
78
116
|
"eslint-plugin-react-refresh": "^0.4.14",
|
|
79
117
|
"husky": "^9.1.6",
|
|
80
118
|
"lint-staged": "^15.2.10",
|
|
119
|
+
"omggif": "^1.0.10",
|
|
120
|
+
"onnxruntime-web": "^1.27.0",
|
|
81
121
|
"prettier": "3.3.3",
|
|
82
122
|
"qrcode-terminal": "^0.12.0",
|
|
83
123
|
"react-router-dom": "^6.28.0",
|
|
124
|
+
"remark-frontmatter": "^5.0.0",
|
|
125
|
+
"remark-gfm": "^4.0.1",
|
|
126
|
+
"remark-mdx-frontmatter": "^5.2.0",
|
|
84
127
|
"typescript": "^5.6.3",
|
|
85
128
|
"vite": "^5.4.11",
|
|
86
129
|
"vite-plugin-dts": "^4.3.0",
|
|
@@ -95,17 +138,22 @@
|
|
|
95
138
|
"path": "./node_modules/cz-conventional-changelog"
|
|
96
139
|
}
|
|
97
140
|
},
|
|
141
|
+
"dependencies": {
|
|
142
|
+
"lucide-react": "^1.14.0"
|
|
143
|
+
},
|
|
98
144
|
"scripts": {
|
|
99
145
|
"dev": "vite --config example/vite.config.ts --mode dev",
|
|
100
146
|
"preview:tunnel": "node example/scripts/preview.mjs",
|
|
101
147
|
"preview:local": "node example/scripts/preview.mjs --local",
|
|
102
148
|
"build": "vite build",
|
|
103
149
|
"build:watch": "vite build --watch",
|
|
104
|
-
"
|
|
105
|
-
"
|
|
150
|
+
"typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
|
|
151
|
+
"typecheck:example": "tsc --noEmit -p example/tsconfig.json",
|
|
152
|
+
"format:check": "prettier --check 'lib/**/*.{ts,tsx}' 'example/**/*.{ts,tsx}' '*.{json,md,mjs,ts}' '.github/**/*.{md,yml}' 'docs/**/*.{md,mdx,json}'",
|
|
153
|
+
"format": "prettier --write 'lib/**/*.{js,jsx,ts,tsx}' 'example/**/*.{js,jsx,ts,tsx}'",
|
|
106
154
|
"test": "vitest run",
|
|
107
155
|
"test:watch": "vitest",
|
|
108
|
-
"lint:check": "eslint
|
|
156
|
+
"lint:check": "eslint lib --max-warnings 0",
|
|
109
157
|
"example:build": "vite build --config example/vite.config.ts",
|
|
110
158
|
"example:preview": "vite preview --config example/vite.config.ts --outDir dist-example",
|
|
111
159
|
"release": "commit-and-tag-version"
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { FaceLandmark2D, FaceRetouchRegion } from '../../types/face';
|
|
2
|
-
export declare const DEFAULT_FEATURE_GROUPS: number[][];
|
|
3
|
-
export declare const DEFAULT_FEATURE_POINT_INDICES: number[];
|
|
4
|
-
export type CreateFaceRetouchRegionsOptions = {
|
|
5
|
-
faceOvalIndices?: number[];
|
|
6
|
-
featureGroups?: number[][];
|
|
7
|
-
featurePointIndices?: number[];
|
|
8
|
-
faceBoundsExpansion?: number;
|
|
9
|
-
featureBoundsExpansion?: number;
|
|
10
|
-
minRegionRadius?: number;
|
|
11
|
-
faceRegionStrength?: number;
|
|
12
|
-
featureRegionStrength?: number;
|
|
13
|
-
featurePointRegionStrength?: number;
|
|
14
|
-
featurePointRadiusRatio?: number;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Compute elliptical retouch regions from MediaPipe face landmarks.
|
|
18
|
-
*
|
|
19
|
-
* The defaults match the V2 face-retouch demo. Override `featureGroups`
|
|
20
|
-
* or `featurePointIndices` to retouch a different anatomy (or a different
|
|
21
|
-
* landmark model).
|
|
22
|
-
*/
|
|
23
|
-
export declare const createFaceRetouchRegions: (landmarks: FaceLandmark2D[] | undefined, options?: CreateFaceRetouchRegionsOptions) => FaceRetouchRegion[];
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FaceRetouchRegion } from '../../types/face';
|
|
2
|
-
import { XRModelNodeFaceTracking } from '../../types/nodes';
|
|
3
|
-
import { CreateFaceRetouchRegionsOptions } from './retouchRegions';
|
|
4
|
-
/**
|
|
5
|
-
* Continuously recompute face-retouch regions from the active face's
|
|
6
|
-
* landmarks. Returns a stable array reference when the regions haven't
|
|
7
|
-
* meaningfully changed (4-decimal precision).
|
|
8
|
-
*
|
|
9
|
-
* Pass `options` to retouch a different anatomy or landmark model — see
|
|
10
|
-
* `createFaceRetouchRegions`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const useFaceRetouchRegions: (faceNode: XRModelNodeFaceTracking | null, options?: CreateFaceRetouchRegionsOptions) => FaceRetouchRegion[];
|