@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,589 @@
|
|
|
1
|
+
# Migration Guide
|
|
2
|
+
|
|
3
|
+
This guide helps you migrate from the old portal-based architecture to the new unified architecture introduced in January 2025.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [What Changed](#what-changed)
|
|
8
|
+
- [Benefits of the New Architecture](#benefits-of-the-new-architecture)
|
|
9
|
+
- [Migration Steps](#migration-steps)
|
|
10
|
+
- [Component Changes](#component-changes)
|
|
11
|
+
- [Breaking Changes](#breaking-changes)
|
|
12
|
+
- [Side-by-Side Comparison](#side-by-side-comparison)
|
|
13
|
+
|
|
14
|
+
## What Changed
|
|
15
|
+
|
|
16
|
+
The SDK has been completely refactored from a **portal-based dual-camera system** to a **unified scene architecture**:
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
- ❌ Portal-based scene isolation
|
|
21
|
+
- ❌ Manual event handling with `onPointerEvent`
|
|
22
|
+
- ❌ Manual `gl.render()` calls
|
|
23
|
+
- ❌ Custom `OrthographicCamera` component
|
|
24
|
+
- ❌ `SegmentationPlane` component
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- ✅ `VideoBackground` component for camera feed rendering
|
|
29
|
+
- ✅ `ScreenSpaceUI` component for 2D UI positioning
|
|
30
|
+
- ✅ Standard R3F rendering pipeline
|
|
31
|
+
- ✅ Native event system support
|
|
32
|
+
- ✅ Postprocessing support
|
|
33
|
+
|
|
34
|
+
### Deprecated (but still available)
|
|
35
|
+
|
|
36
|
+
- ⚠️ Custom `PerspectiveCamera` (use drei's `PerspectiveCamera` instead)
|
|
37
|
+
- ⚠️ Custom `OrthographicCamera` (use `VideoBackground` instead)
|
|
38
|
+
|
|
39
|
+
## Benefits of the New Architecture
|
|
40
|
+
|
|
41
|
+
### 1. Events Work Correctly
|
|
42
|
+
|
|
43
|
+
**Old:** Manual event handling was required
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
// Old - Manual event handling
|
|
47
|
+
<mesh onPointerEvent={(event) => {
|
|
48
|
+
if (event.type === 'click') {
|
|
49
|
+
handleClick();
|
|
50
|
+
}
|
|
51
|
+
}}>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**New:** Standard R3F events work
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
// New - Standard events
|
|
58
|
+
<mesh
|
|
59
|
+
onClick={handleClick}
|
|
60
|
+
onPointerOver={handleHover}
|
|
61
|
+
onPointerOut={handleUnhover}
|
|
62
|
+
>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2. Postprocessing Works
|
|
66
|
+
|
|
67
|
+
**Old:** Postprocessing didn't work due to portal isolation
|
|
68
|
+
|
|
69
|
+
**New:** EffectComposer and all effects work
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
import { EffectComposer, Bloom, Glitch } from "@react-three/postprocessing";
|
|
73
|
+
|
|
74
|
+
<XRScene>
|
|
75
|
+
{/* Your content */}
|
|
76
|
+
<EffectComposer>
|
|
77
|
+
<Bloom intensity={0.5} />
|
|
78
|
+
<Glitch />
|
|
79
|
+
</EffectComposer>
|
|
80
|
+
</XRScene>;
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 3. All Drei Components Work
|
|
84
|
+
|
|
85
|
+
**Old:** Components like `Html`, `Text`, etc. had issues
|
|
86
|
+
|
|
87
|
+
**New:** All Drei components work correctly
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
import { Html, Text } from "@react-three/drei";
|
|
91
|
+
|
|
92
|
+
<HeadTracker>
|
|
93
|
+
<Html>
|
|
94
|
+
<div>HTML UI attached to face</div>
|
|
95
|
+
</Html>
|
|
96
|
+
<Text fontSize={0.5}>3D Text</Text>
|
|
97
|
+
</HeadTracker>;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 4. Simpler Architecture
|
|
101
|
+
|
|
102
|
+
**Old:** Two cameras, portal system, manual rendering
|
|
103
|
+
|
|
104
|
+
**New:** Single camera, standard R3F rendering
|
|
105
|
+
|
|
106
|
+
## Migration Steps
|
|
107
|
+
|
|
108
|
+
## XRViewport Migration Direction
|
|
109
|
+
|
|
110
|
+
For new responsive apps, use `XRViewport` as app root and treat direct
|
|
111
|
+
`XRScene` usage as legacy-first.
|
|
112
|
+
|
|
113
|
+
### Old API -> New API Mapping
|
|
114
|
+
|
|
115
|
+
- `XRScene` root -> `XRViewport mode="r3f"` or `mode="hybrid"`
|
|
116
|
+
- `XRScene` + separate DOM overlay -> `XRViewport mode="hybrid"`
|
|
117
|
+
- calibration/debug DOM preview -> `XRViewport mode="dom"`
|
|
118
|
+
- session-owned legacy media flow -> `XRViewport mediaStrategy="external"`
|
|
119
|
+
- viewport-owned new media flow -> `XRViewport mediaStrategy="internal"`
|
|
120
|
+
- `initialSource` / `initialImageId` / `initialVideoId` -> `source={{ kind, assetId }}`
|
|
121
|
+
|
|
122
|
+
### Example
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
<XRProvider>
|
|
126
|
+
<XRViewport mode="r3f" mediaStrategy="external">
|
|
127
|
+
<XRViewport.Scene>
|
|
128
|
+
<PerspectiveCamera makeDefault position={[0, 0, 5]} fov={45} />
|
|
129
|
+
<VideoBackground />
|
|
130
|
+
<FaceTracker>{/* AR content */}</FaceTracker>
|
|
131
|
+
</XRViewport.Scene>
|
|
132
|
+
</XRViewport>
|
|
133
|
+
</XRProvider>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Migration Gotchas
|
|
137
|
+
|
|
138
|
+
- `XRViewport mode="dom"` with `mediaStrategy="internal"` owns preview media itself. Do not also start a parallel session media source for same page.
|
|
139
|
+
- `XRViewport mode="r3f"` and `mode="hybrid"` can use `mediaStrategy="external"` while legacy pages still bootstrap session media separately.
|
|
140
|
+
- New responsive tracking flows should prefer direct frame/canvas input through viewport-managed internals instead of `captureStream()` bridges.
|
|
141
|
+
- During migration, keep one owner for media truth per page. Mixed ownership is where resize and mirror bugs appear.
|
|
142
|
+
- `mediaStrategy="external"` viewport state can still expose `faces` to overlay/scene slot consumers, but selected source kind should be passed through `source={{ kind: ... }}` for correct source-aware transforms.
|
|
143
|
+
|
|
144
|
+
### Removal Criteria For Direct XRScene Entry
|
|
145
|
+
|
|
146
|
+
- old demos that matter must run under `XRViewport`
|
|
147
|
+
- calibration workflow must stay correct for webcam, image, and video
|
|
148
|
+
- resize must stay correct without refresh in viewport-owned flows
|
|
149
|
+
- docs/examples must point to `XRViewport` first
|
|
150
|
+
|
|
151
|
+
### Step 1: Update Camera Setup
|
|
152
|
+
|
|
153
|
+
**Before:**
|
|
154
|
+
|
|
155
|
+
```tsx
|
|
156
|
+
<XRScene>
|
|
157
|
+
<OrthographicCamera>
|
|
158
|
+
<SegmentationPlane alphaMask={mask} />
|
|
159
|
+
</OrthographicCamera>
|
|
160
|
+
|
|
161
|
+
<PerspectiveCamera>{/* AR content */}</PerspectiveCamera>
|
|
162
|
+
</XRScene>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**After:**
|
|
166
|
+
|
|
167
|
+
```tsx
|
|
168
|
+
import { PerspectiveCamera } from "@react-three/drei";
|
|
169
|
+
|
|
170
|
+
<XRScene>
|
|
171
|
+
<PerspectiveCamera makeDefault position={[0, 0, 5]} fov={45} />
|
|
172
|
+
|
|
173
|
+
<VideoBackground segmentationMask={mask} />
|
|
174
|
+
|
|
175
|
+
{/* AR content */}
|
|
176
|
+
</XRScene>;
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Step 2: Replace SegmentationPlane with VideoBackground
|
|
180
|
+
|
|
181
|
+
**Before:**
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
<OrthographicCamera>
|
|
185
|
+
<SegmentationPlane alphaMask={segmentationMask} backgroundColor="#6366f1" />
|
|
186
|
+
</OrthographicCamera>
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**After:**
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
<VideoBackground
|
|
193
|
+
segmentationMask={segmentationMask}
|
|
194
|
+
customBackground="#6366f1"
|
|
195
|
+
renderOrder={-999}
|
|
196
|
+
/>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Step 3: Update 2D UI to Use ScreenSpaceUI
|
|
200
|
+
|
|
201
|
+
**Before:**
|
|
202
|
+
|
|
203
|
+
```tsx
|
|
204
|
+
// Manual positioning for 2D UI
|
|
205
|
+
<OrthographicCamera>
|
|
206
|
+
<Text position={[-5, 3, 0]} fontSize={0.15}>
|
|
207
|
+
Top Left Text
|
|
208
|
+
</Text>
|
|
209
|
+
</OrthographicCamera>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**After:**
|
|
213
|
+
|
|
214
|
+
```tsx
|
|
215
|
+
<ScreenSpaceUI>
|
|
216
|
+
<ScreenSpaceUI.TopLeft>
|
|
217
|
+
<Text fontSize={0.15} color="white" anchorX="left" anchorY="top">
|
|
218
|
+
Top Left Text
|
|
219
|
+
</Text>
|
|
220
|
+
</ScreenSpaceUI.TopLeft>
|
|
221
|
+
</ScreenSpaceUI>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Step 4: Update Event Handlers
|
|
225
|
+
|
|
226
|
+
**Before:**
|
|
227
|
+
|
|
228
|
+
```tsx
|
|
229
|
+
<mesh
|
|
230
|
+
onPointerEvent={(event) => {
|
|
231
|
+
if (event.type === 'click') {
|
|
232
|
+
setClickCount(prev => prev + 1);
|
|
233
|
+
}
|
|
234
|
+
if (event.type === 'pointerover') {
|
|
235
|
+
setHovered(true);
|
|
236
|
+
}
|
|
237
|
+
}}
|
|
238
|
+
>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**After:**
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
<mesh
|
|
245
|
+
onClick={() => setClickCount(prev => prev + 1)}
|
|
246
|
+
onPointerOver={() => setHovered(true)}
|
|
247
|
+
onPointerOut={() => setHovered(false)}
|
|
248
|
+
>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Step 5: Remove Manual Render Calls
|
|
252
|
+
|
|
253
|
+
**Before:**
|
|
254
|
+
|
|
255
|
+
```tsx
|
|
256
|
+
// Manual render calls in useFrame
|
|
257
|
+
useFrame(({ gl, scene, camera }) => {
|
|
258
|
+
gl.render(scene, camera);
|
|
259
|
+
});
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**After:**
|
|
263
|
+
|
|
264
|
+
```tsx
|
|
265
|
+
// No manual rendering needed - R3F handles it
|
|
266
|
+
useFrame(() => {
|
|
267
|
+
// Your frame logic
|
|
268
|
+
});
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Component Changes
|
|
272
|
+
|
|
273
|
+
### VideoBackground
|
|
274
|
+
|
|
275
|
+
Replaces `SegmentationPlane` and renders the camera feed.
|
|
276
|
+
|
|
277
|
+
**Props:**
|
|
278
|
+
|
|
279
|
+
- `segmentationMask?: Texture` - Person segmentation mask
|
|
280
|
+
- `customBackground?: string | Texture` - Background color/texture
|
|
281
|
+
- `renderOrder?: number` - Render order (default: -999)
|
|
282
|
+
|
|
283
|
+
**Example:**
|
|
284
|
+
|
|
285
|
+
```tsx
|
|
286
|
+
<VideoBackground segmentationMask={segmentationMask} customBackground="#6366f1" />
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### ScreenSpaceUI
|
|
290
|
+
|
|
291
|
+
New component for 2D UI positioning with helper components.
|
|
292
|
+
|
|
293
|
+
**Helper Components:**
|
|
294
|
+
|
|
295
|
+
- `TopLeft`, `TopCenter`, `TopRight`
|
|
296
|
+
- `CenterLeft`, `Center`, `CenterRight`
|
|
297
|
+
- `BottomLeft`, `BottomCenter`, `BottomRight`
|
|
298
|
+
|
|
299
|
+
**Example:**
|
|
300
|
+
|
|
301
|
+
```tsx
|
|
302
|
+
<ScreenSpaceUI>
|
|
303
|
+
<ScreenSpaceUI.TopLeft>
|
|
304
|
+
<Text>UI Element</Text>
|
|
305
|
+
</ScreenSpaceUI.TopLeft>
|
|
306
|
+
</ScreenSpaceUI>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### HeadTracker
|
|
310
|
+
|
|
311
|
+
No changes - works the same but now supports standard events.
|
|
312
|
+
|
|
313
|
+
**Example:**
|
|
314
|
+
|
|
315
|
+
```tsx
|
|
316
|
+
<HeadTracker faceIndex={0}>
|
|
317
|
+
<mesh onClick={handleClick}>
|
|
318
|
+
<boxGeometry args={[1, 1, 1]} />
|
|
319
|
+
<meshStandardMaterial color="red" />
|
|
320
|
+
</mesh>
|
|
321
|
+
</HeadTracker>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## Breaking Changes
|
|
325
|
+
|
|
326
|
+
### 1. OrthographicCamera Removed
|
|
327
|
+
|
|
328
|
+
**Impact:** High - Required for old architecture
|
|
329
|
+
|
|
330
|
+
**Migration:** Replace with `VideoBackground` for camera feed rendering
|
|
331
|
+
|
|
332
|
+
### 2. SegmentationPlane Removed
|
|
333
|
+
|
|
334
|
+
**Impact:** High - Used for background effects
|
|
335
|
+
|
|
336
|
+
**Migration:** Use `VideoBackground` with `segmentationMask` prop
|
|
337
|
+
|
|
338
|
+
### 3. Custom PerspectiveCamera Deprecated
|
|
339
|
+
|
|
340
|
+
**Impact:** Medium - Still works but deprecated
|
|
341
|
+
|
|
342
|
+
**Migration:** Use drei's `PerspectiveCamera` with `makeDefault`
|
|
343
|
+
|
|
344
|
+
### 4. Manual Event Handling
|
|
345
|
+
|
|
346
|
+
**Impact:** Medium - Custom event system removed
|
|
347
|
+
|
|
348
|
+
**Migration:** Use standard R3F events (onClick, onPointerOver, etc.)
|
|
349
|
+
|
|
350
|
+
### 5. Portal System
|
|
351
|
+
|
|
352
|
+
**Impact:** Low - Internal implementation detail
|
|
353
|
+
|
|
354
|
+
**Migration:** No action needed - automatically handled
|
|
355
|
+
|
|
356
|
+
## Side-by-Side Comparison
|
|
357
|
+
|
|
358
|
+
### Complete Old Example
|
|
359
|
+
|
|
360
|
+
```tsx
|
|
361
|
+
import { useEffect, useState } from "react";
|
|
362
|
+
import {
|
|
363
|
+
XRProvider,
|
|
364
|
+
XRScene,
|
|
365
|
+
useXRContext,
|
|
366
|
+
OrthographicCamera,
|
|
367
|
+
PerspectiveCamera,
|
|
368
|
+
SegmentationPlane,
|
|
369
|
+
HeadTracker,
|
|
370
|
+
XRMediaSource,
|
|
371
|
+
XRModel,
|
|
372
|
+
} from "@vincentt-xr/sdk";
|
|
373
|
+
|
|
374
|
+
const Content = () => {
|
|
375
|
+
const { session } = useXRContext();
|
|
376
|
+
const [segmentationMask, setSegmentationMask] = useState();
|
|
377
|
+
|
|
378
|
+
useEffect(() => {
|
|
379
|
+
const initSession = async () => {
|
|
380
|
+
await session.setMediaSource({ source: XRMediaSource.WEBCAM });
|
|
381
|
+
await session.registerXRPipeline([
|
|
382
|
+
{ model: XRModel.FACE_TRACKER },
|
|
383
|
+
{ model: XRModel.BACKGROUND_SEGMENTATION },
|
|
384
|
+
]);
|
|
385
|
+
await session.start();
|
|
386
|
+
};
|
|
387
|
+
initSession();
|
|
388
|
+
}, []);
|
|
389
|
+
|
|
390
|
+
useEffect(() => {
|
|
391
|
+
if (session.ready) {
|
|
392
|
+
const segNode = session.getModelNode(XRModel.BACKGROUND_SEGMENTATION);
|
|
393
|
+
setSegmentationMask(segNode?.backgroundSegmentationMask);
|
|
394
|
+
}
|
|
395
|
+
}, [session.ready]);
|
|
396
|
+
|
|
397
|
+
return (
|
|
398
|
+
<XRScene>
|
|
399
|
+
{/* Old: Two cameras with portal isolation */}
|
|
400
|
+
<OrthographicCamera>
|
|
401
|
+
<SegmentationPlane alphaMask={segmentationMask} backgroundColor="#6366f1" />
|
|
402
|
+
</OrthographicCamera>
|
|
403
|
+
|
|
404
|
+
<PerspectiveCamera>
|
|
405
|
+
<ambientLight intensity={1} />
|
|
406
|
+
|
|
407
|
+
{/* Old: Custom event handling */}
|
|
408
|
+
<HeadTracker>
|
|
409
|
+
<mesh
|
|
410
|
+
onPointerEvent={(event) => {
|
|
411
|
+
if (event.type === "click") {
|
|
412
|
+
console.log("Clicked!");
|
|
413
|
+
}
|
|
414
|
+
}}
|
|
415
|
+
>
|
|
416
|
+
<boxGeometry args={[1, 1, 1]} />
|
|
417
|
+
<meshStandardMaterial color="red" />
|
|
418
|
+
</mesh>
|
|
419
|
+
</HeadTracker>
|
|
420
|
+
</PerspectiveCamera>
|
|
421
|
+
</XRScene>
|
|
422
|
+
);
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
export default function App() {
|
|
426
|
+
return (
|
|
427
|
+
<XRProvider>
|
|
428
|
+
<Content />
|
|
429
|
+
</XRProvider>
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### Complete New Example
|
|
435
|
+
|
|
436
|
+
```tsx
|
|
437
|
+
import { PerspectiveCamera } from "@react-three/drei";
|
|
438
|
+
import { useEffect, useState } from "react";
|
|
439
|
+
import { Texture } from "three";
|
|
440
|
+
import {
|
|
441
|
+
XRProvider,
|
|
442
|
+
XRScene,
|
|
443
|
+
useXRContext,
|
|
444
|
+
VideoBackground,
|
|
445
|
+
HeadTracker,
|
|
446
|
+
ScreenSpaceUI,
|
|
447
|
+
XRMediaSource,
|
|
448
|
+
XRModel,
|
|
449
|
+
XRModelNodeSegmentation,
|
|
450
|
+
} from "@vincentt-xr/sdk";
|
|
451
|
+
|
|
452
|
+
const Content = () => {
|
|
453
|
+
const { session } = useXRContext();
|
|
454
|
+
const [segmentationMask, setSegmentationMask] = useState<Texture | undefined>();
|
|
455
|
+
|
|
456
|
+
useEffect(() => {
|
|
457
|
+
const initSession = async () => {
|
|
458
|
+
await session.setMediaSource({ source: XRMediaSource.WEBCAM });
|
|
459
|
+
await session.registerXRPipeline([
|
|
460
|
+
{ model: XRModel.FACE_TRACKER },
|
|
461
|
+
{ model: XRModel.BACKGROUND_SEGMENTATION },
|
|
462
|
+
]);
|
|
463
|
+
await session.start();
|
|
464
|
+
};
|
|
465
|
+
initSession();
|
|
466
|
+
}, []);
|
|
467
|
+
|
|
468
|
+
useEffect(() => {
|
|
469
|
+
if (session.ready) {
|
|
470
|
+
const segNode = session.getModelNode<XRModelNodeSegmentation>(
|
|
471
|
+
XRModel.BACKGROUND_SEGMENTATION,
|
|
472
|
+
);
|
|
473
|
+
setSegmentationMask(segNode?.backgroundSegmentationMask);
|
|
474
|
+
}
|
|
475
|
+
}, [session.ready]);
|
|
476
|
+
|
|
477
|
+
return (
|
|
478
|
+
<XRScene>
|
|
479
|
+
{/* New: Single camera from drei */}
|
|
480
|
+
<PerspectiveCamera makeDefault position={[0, 0, 5]} fov={45} />
|
|
481
|
+
|
|
482
|
+
{/* New: VideoBackground component */}
|
|
483
|
+
<VideoBackground segmentationMask={segmentationMask} customBackground="#6366f1" />
|
|
484
|
+
|
|
485
|
+
<ambientLight intensity={1} />
|
|
486
|
+
|
|
487
|
+
{/* New: Standard R3F events work */}
|
|
488
|
+
<HeadTracker>
|
|
489
|
+
<mesh onClick={() => console.log("Clicked!")}>
|
|
490
|
+
<boxGeometry args={[1, 1, 1]} />
|
|
491
|
+
<meshStandardMaterial color="red" />
|
|
492
|
+
</mesh>
|
|
493
|
+
</HeadTracker>
|
|
494
|
+
|
|
495
|
+
{/* New: ScreenSpaceUI for 2D UI */}
|
|
496
|
+
<ScreenSpaceUI>
|
|
497
|
+
<ScreenSpaceUI.TopLeft>
|
|
498
|
+
<Text fontSize={0.15} color="white">
|
|
499
|
+
Click the box!
|
|
500
|
+
</Text>
|
|
501
|
+
</ScreenSpaceUI.TopLeft>
|
|
502
|
+
</ScreenSpaceUI>
|
|
503
|
+
</XRScene>
|
|
504
|
+
);
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
export default function App() {
|
|
508
|
+
return (
|
|
509
|
+
<XRProvider>
|
|
510
|
+
<Content />
|
|
511
|
+
</XRProvider>
|
|
512
|
+
);
|
|
513
|
+
}
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
## Common Migration Issues
|
|
517
|
+
|
|
518
|
+
### Issue 1: Events Not Working
|
|
519
|
+
|
|
520
|
+
**Problem:** Click events not firing after migration
|
|
521
|
+
|
|
522
|
+
**Solution:** Make sure you're using drei's `PerspectiveCamera` with `makeDefault`:
|
|
523
|
+
|
|
524
|
+
```tsx
|
|
525
|
+
import { PerspectiveCamera } from "@react-three/drei";
|
|
526
|
+
|
|
527
|
+
<PerspectiveCamera makeDefault position={[0, 0, 5]} fov={45} />;
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Issue 2: UI Elements Not Visible
|
|
531
|
+
|
|
532
|
+
**Problem:** Screen-space UI not appearing
|
|
533
|
+
|
|
534
|
+
**Solution:** Use `material-depthTest={false}` and proper `renderOrder`:
|
|
535
|
+
|
|
536
|
+
```tsx
|
|
537
|
+
<ScreenSpaceUI>
|
|
538
|
+
<ScreenSpaceUI.TopLeft>
|
|
539
|
+
<Text material-depthTest={false} renderOrder={999}>
|
|
540
|
+
UI Text
|
|
541
|
+
</Text>
|
|
542
|
+
</ScreenSpaceUI.TopLeft>
|
|
543
|
+
</ScreenSpaceUI>
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### Issue 3: Video Background Not Showing
|
|
547
|
+
|
|
548
|
+
**Problem:** Camera feed not rendering
|
|
549
|
+
|
|
550
|
+
**Solution:** Ensure `VideoBackground` is placed before other content and has correct `renderOrder`:
|
|
551
|
+
|
|
552
|
+
```tsx
|
|
553
|
+
<VideoBackground renderOrder={-999} />
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### Issue 4: Postprocessing Not Working
|
|
557
|
+
|
|
558
|
+
**Problem:** Effects not applying to scene
|
|
559
|
+
|
|
560
|
+
**Solution:** Make sure `EffectComposer` is inside `XRScene` and using drei's camera:
|
|
561
|
+
|
|
562
|
+
```tsx
|
|
563
|
+
import { EffectComposer, Bloom } from "@react-three/postprocessing";
|
|
564
|
+
import { PerspectiveCamera } from "@react-three/drei";
|
|
565
|
+
|
|
566
|
+
<XRScene>
|
|
567
|
+
<PerspectiveCamera makeDefault position={[0, 0, 5]} fov={45} />
|
|
568
|
+
{/* Your content */}
|
|
569
|
+
<EffectComposer>
|
|
570
|
+
<Bloom intensity={0.5} />
|
|
571
|
+
</EffectComposer>
|
|
572
|
+
</XRScene>;
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
## Need Help?
|
|
576
|
+
|
|
577
|
+
If you encounter issues during migration:
|
|
578
|
+
|
|
579
|
+
1. Check the [Getting Started Guide](./GETTING_STARTED.md) for complete API reference
|
|
580
|
+
2. Review the example in `example/src/pages/UnifiedArchitecture`
|
|
581
|
+
3. Ensure you're using the correct peer dependency versions:
|
|
582
|
+
- `@react-three/fiber`: `8.18.0`
|
|
583
|
+
- `@react-three/drei`: `9.105.6`
|
|
584
|
+
- `three`: `0.173.0`
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
**Migration Date:** January 2025
|
|
589
|
+
**SDK Version:** 2.0.0+
|