@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,155 @@
|
|
|
1
|
+
"use strict";const u=require("react/jsx-runtime"),ee=require("@react-three/fiber"),i=require("react"),J=require("three"),q=require("./index-D4bLzBr6.cjs"),je=require("./selectors-2QvO5RYY.cjs"),_e=require("./index-82aENaRq.cjs"),Xt=require("@react-three/drei");function Wt(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const y=Wt(J),ue=8,V={type:"linear",stops:[{offset:0,color:"#38bdf8"},{offset:1,color:"#a78bfa"}],angle:0,center:{x:.5,y:.5},radius:.5},Yt=e=>{const n=e.slice(0,ue).map(t=>({...t,offset:J.MathUtils.clamp(t.offset,0,1)})).sort((t,r)=>t.offset-r.offset);return n.length>=2?n:V.stops.map(t=>({...t}))},Be=e=>({...V,...e,center:{...V.center,...e==null?void 0:e.center},radius:Math.max(.01,(e==null?void 0:e.radius)??V.radius),stops:Yt((e==null?void 0:e.stops)??V.stops)}),Kt=`
|
|
2
|
+
varying vec2 vPosition;
|
|
3
|
+
void main() {
|
|
4
|
+
vPosition = position.xy;
|
|
5
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
6
|
+
}
|
|
7
|
+
`,$t=`
|
|
8
|
+
#define MAX_STOPS 8
|
|
9
|
+
uniform vec3 stopColors[MAX_STOPS];
|
|
10
|
+
uniform float stopOffsets[MAX_STOPS];
|
|
11
|
+
uniform int stopCount;
|
|
12
|
+
uniform int gradientType;
|
|
13
|
+
uniform vec2 direction;
|
|
14
|
+
uniform vec2 center;
|
|
15
|
+
uniform float radius;
|
|
16
|
+
uniform float angleOffset;
|
|
17
|
+
uniform float opacity;
|
|
18
|
+
varying vec2 vPosition;
|
|
19
|
+
|
|
20
|
+
vec3 sampleGradient(float amount) {
|
|
21
|
+
vec3 color = stopColors[0];
|
|
22
|
+
for (int index = 1; index < MAX_STOPS; index++) {
|
|
23
|
+
if (index >= stopCount) break;
|
|
24
|
+
if (amount <= stopOffsets[index]) {
|
|
25
|
+
float width = max(0.0001, stopOffsets[index] - stopOffsets[index - 1]);
|
|
26
|
+
return mix(stopColors[index - 1], stopColors[index], clamp((amount - stopOffsets[index - 1]) / width, 0.0, 1.0));
|
|
27
|
+
}
|
|
28
|
+
color = stopColors[index];
|
|
29
|
+
}
|
|
30
|
+
return color;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
void main() {
|
|
34
|
+
vec2 delta = vPosition - center;
|
|
35
|
+
float amount;
|
|
36
|
+
if (gradientType == 1) {
|
|
37
|
+
amount = clamp(length(delta) / radius, 0.0, 1.0);
|
|
38
|
+
} else if (gradientType == 2) {
|
|
39
|
+
amount = fract(atan(delta.y, delta.x) / 6.28318530718 + 0.5 + angleOffset);
|
|
40
|
+
} else {
|
|
41
|
+
amount = clamp(dot(delta, direction) + 0.5, 0.0, 1.0);
|
|
42
|
+
}
|
|
43
|
+
gl_FragColor = vec4(sampleGradient(amount), opacity);
|
|
44
|
+
}
|
|
45
|
+
`,qt={linear:0,radial:1,angular:2},Ve=({opacity:e=1,value:n})=>{const t=i.useMemo(()=>{const r=Be(n),a=J.MathUtils.degToRad(r.angle),o=r.stops.map(c=>new J.Color(c.color)),s=r.stops.map(c=>c.offset);for(;o.length<ue;)o.push(o[o.length-1]);for(;s.length<ue;)s.push(1);return{stopColors:{value:o},stopOffsets:{value:s},stopCount:{value:r.stops.length},gradientType:{value:qt[r.type]},direction:{value:new J.Vector2(Math.cos(a),Math.sin(a))},center:{value:new J.Vector2(r.center.x-.5,.5-r.center.y)},radius:{value:r.radius},angleOffset:{value:r.angle/360},opacity:{value:e}}},[e,n]);return u.jsx("shaderMaterial",{uniforms:t,vertexShader:Kt,fragmentShader:$t,transparent:e<1,depthTest:!1,depthWrite:!1,toneMapped:!1})},Qt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=",Zt={source:"solid",color:"#ffffff",opacity:1,textureUrl:"",gradient:V},ke=e=>({...V,stops:[{offset:0,color:"#ffffff"},{offset:1,color:e}]}),Jt=({depthTest:e,depthWrite:n,settings:t,side:r,toneMapped:a})=>{const o=ee.useLoader(y.TextureLoader,t.textureUrl||Qt);return u.jsx("meshBasicMaterial",{color:t.color,map:o,transparent:!0,opacity:t.opacity,side:r,depthWrite:n,depthTest:e,toneMapped:a})},Xe=({depthTest:e=!1,depthWrite:n=!1,settings:t,side:r,toneMapped:a=!1})=>{const o=i.useMemo(()=>t.gradient??ke(t.color),[t.color,t.gradient]);return t.source==="gradient"?u.jsx(Ve,{value:o,opacity:t.opacity}):t.source==="texture"?u.jsx(Jt,{settings:t,side:r,depthTest:e,depthWrite:n,toneMapped:a}):u.jsx("meshBasicMaterial",{color:t.color,transparent:!0,opacity:t.opacity,side:r,depthWrite:n,depthTest:e,toneMapped:a})},be=Math.PI/180,xe=180/Math.PI,N=e=>Number(e.toFixed(6)),Ce={enabled:!0,linked:{position:!1,rotation:!1,scale:!1},showTransformControls:!1,transformControlMode:"translate",transformControlSpace:"local",position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1},visible:!0},en=({children:e,objectRef:n,onChange:t,value:r})=>{const a=i.useRef(null),o=i.useRef(n);o.current=n;const[s,c]=i.useState(null),_=i.useCallback(d=>{var S;a.current=d,c(d),(S=o.current)==null||S.call(o,d)},[]),R=i.useCallback(()=>{const d=a.current;!d||!t||t({...r,position:{x:N(d.position.x),y:N(d.position.y),z:N(d.position.z)},rotation:{x:N(d.rotation.x*xe),y:N(d.rotation.y*xe),z:N(d.rotation.z*xe)},scale:{x:N(d.scale.x),y:N(d.scale.y),z:N(d.scale.z)}})},[t,r]);return r.enabled?u.jsxs(u.Fragment,{children:[u.jsx("group",{ref:_,position:[r.position.x,r.position.y,r.position.z],rotation:[r.rotation.x*be,r.rotation.y*be,r.rotation.z*be],scale:[r.scale.x,r.scale.y,r.scale.z],visible:r.visible,children:e}),s&&r.showTransformControls&&u.jsx(Xt.TransformControls,{object:s,mode:r.transformControlMode,space:r.transformControlSpace,size:.85,onMouseUp:R,onObjectChange:R})]}):null},ae=e=>Math.min(1,Math.max(0,e)),k=(e,n,t)=>ae(1-Math.abs(e-n)/t),tn=e=>{let n=1/0,t=-1/0,r=1/0,a=-1/0;for(const c of e)n=Math.min(n,c.x),t=Math.max(t,c.x),r=Math.min(r,c.y),a=Math.max(a,c.y);const o=Math.max(t-n,.001),s=Math.max(a-r,.001);return{centerX:n+o*.5,centerY:r+s*.5,width:o,height:s}},nn=e=>e!=null&&e.enabled?(e.strength??1)!==0&&Object.entries(e).some(([n,t])=>n!=="enabled"&&n!=="strength"&&typeof t=="number"&&t!==0):!1,rn=(e,n,t,r)=>{const a=t.enabled?t.strength??1:0;if(a===0)return r.x=e.x,r.y=e.y,r.z=e.z,r;const o=(e.x-n.centerX)/n.width,s=(e.y-n.centerY)/n.height,c=Math.abs(o),_=ae((-s+.42)/.55),R=k(s,-.02,.34),d=k(s,-.24,.16)*ae((c-.05)/.28),S=k(s,.02,.26)*k(c,0,.18),C=k(s,.29,.18)*k(c,0,.36),I=ae((s-.16)/.36),b=R*k(c,.34,.22),m=_*k(c,0,.48),x=k(s,-.19,.1)*ae((c-.05)/.3),X=k(s,.48,.2)*k(c,0,.26);let f=e.x,l=e.y,h=e.z;const A=(K,U=1)=>{f+=o*n.width*K*a*U},E=(K,U=1)=>{l+=s*n.height*K*a*U};A(t.faceWidth??0),E(t.faceHeight??0),A(t.faceRoundness??0,R*(1-c)),l-=n.height*(t.midfaceHeight??0)*a*R*.25,E(-(t.foreheadHeight??0),m),A(t.foreheadWidth??0,m),A(t.cheekboneWidth??0,k(s,-.06,.16)*k(c,.34,.2)),A(t.cheekWidth??0,b),A(t.jawWidth??0,I),E(t.chinHeight??0,X),l-=n.height*(t.scalpHeight??0)*a*_*.3,h-=(t.midfaceDepth??0)*a*R*.08,h+=(t.cheekHollowness??0)*a*b*.06,h-=(t.browDepth??0)*a*x*.05,l-=n.height*(t.browHeight??0)*a*x*.2,f+=Math.sign(o||1)*n.width*(t.browDistance??0)*a*x*.16;const v=(t.headCurve??0)*a*(s+.1);h-=v*v*.04*Math.sign(t.headCurve??0),f+=n.width*(t.faceTwist??0)*a*s*.18;const j=(t.faceSwirl??0)*a*.22;f+=-s*n.width*j,l+=o*n.height*j;const W=o<0?t.leftEyeSize??0:t.rightEyeSize??0,L=((t.eyeSize??0)+W)*a*d;f+=o*n.width*L*.45,l+=(s+.24)*n.height*L*.7,f+=Math.sign(o||1)*n.width*(t.eyeDistance??0)*a*d*.2,f+=n.width*(o<0?t.leftEyeX??0:t.rightEyeX??0)*a*d*.15,l+=n.height*(o<0?t.leftEyeY??0:t.rightEyeY??0)*a*d*.15;const Y=(t.noseSize??0)*a*S;return f+=o*n.width*Y*.7,l+=(s-.02)*n.height*Y*.5,l+=n.height*(t.noseLength??0)*a*S*Math.max(s+.08,0)*.4,h-=(t.noseSize??0)*a*S*.08,f+=o*n.width*(t.mouthWidth??0)*a*C,l+=(s-.29)*n.height*(t.mouthHeight??0)*a*C,r.x=f,r.y=l,r.z=h,r},ge=new Set([61,146,91,181,84,17,314,405,321,375,291,78,95,88,178,87,14,317,402,318,324,308,191,80,81,82,13,312,311,310,415]),Re=new Set([33,7,163,144,145,153,154,155,133,173,157,158,159,160,161,246]),Se=new Set([362,382,381,380,374,373,390,249,263,466,388,387,386,385,384,398]),an=new Set([814,815,816,817,818,819,830,831,832,833]),on=(e,n,t)=>{const r=ge.has(e)&&ge.has(n)&&ge.has(t),a=Re.has(e)&&Re.has(n)&&Re.has(t),o=Se.has(e)&&Se.has(n)&&Se.has(t);return r?"mouth":a?"leftEye":o?"rightEye":"base"},We=e=>{const n=[],t=[],r=[],a=[],o=[],s=[],c=[];let _=0,R=0;e.split(`
|
|
46
|
+
`).forEach(b=>{const m=b.trim();if(!m)return;if(m.startsWith("v ")){_+=1;return}if(m.startsWith("vt ")){const[,l,h]=m.split(/\s+/);s.push([Number(l),Number(h)]);return}if(!m.startsWith("f "))return;const x=R;R+=1;const[,...X]=m.split(/\s+/),f=X.map(l=>{const[h,A]=l.split("/"),E=Number(h)-1,v=Number(A)-1;return v>=0&&s[v]&&!c[E]&&(c[E]=s[v]),E});if(!(f.length<3))for(let l=1;l<f.length-1;l+=1){const h=f[0],A=f[l],E=f[l+1],v=on(h,A,E);an.has(x)?o.push(h,A,E):v==="mouth"?t.push(h,A,E):v==="leftEye"?r.push(h,A,E):v==="rightEye"?a.push(h,A,E):n.push(h,A,E)}});const d=[];for(let b=0;b<_;b+=1){const[m,x]=c[b]??[0,0];d.push(m,x)}const S=new Uint16Array(r),C=new Uint16Array(a),I=new Uint16Array(r.length+a.length);return I.set(S),I.set(C,S.length),{baseIndices:new Uint16Array(n),mouthIndices:new Uint16Array(t),leftEyeIndices:S,rightEyeIndices:C,eyeIndices:I,noseIndices:new Uint16Array(o),uvs:new Float32Array(d),vertexCount:_}},sn="canonical_face_model.obj",cn=new TextDecoder("utf-8"),ve=new Map,ln=e=>{const n=ve.get(e);if(n)return n;const t=q.fetchAndVerify(e).then(r=>We(cn.decode(r))).catch(r=>{throw ve.delete(e),r});return ve.set(e,t),t},Ye=e=>{const{mesh:n,url:t}=e??{},r=t??`${q.libConfig.sdkAssetsBaseUrl}/${sn}`,[a,o]=i.useState(n??null);return i.useEffect(()=>{if(n){o(n);return}let s=!1;return ln(r).then(c=>{s||o(c)}).catch(c=>{s||console.error(`${q.libConfig.loggerPrefix} canonical face mesh load failed`,c)}),()=>{s=!0}},[n,r]),a},g={basic:"basic",standard:"standard",physical:"physical",toon:"toon",normal:"normal",matcap:"matcap",wireframe:"wireframe",shader:"shader"},G={originalFace:"originalFace",composite:"composite"},H={none:"none",canonical:"canonical",style2:"style2"},$={none:"none",canonical:"canonical"},re={solid:"solid",gradient:"gradient",imageUrl:"imageUrl",mediaUrl:"mediaUrl"},te={front:"front",back:"back",double:"double"},Ue={normal:"normal",add:"add",subtract:"subtract",multiply:"multiply",screen:"screen",overlay:"overlay",softLight:"softLight",hardLight:"hardLight",lighten:"lighten",darken:"darken",difference:"difference",exclusion:"exclusion"},un={textureMap:H.canonical,alphaMap:$.canonical,alphaOpacity:1},ze={...un,blendMode:Ue.hardLight,blendOpacity:.85,baseColor:"#ffffff",opacity:1,compositeShading:!0},O={materialType:g.basic,shaderPreset:G.originalFace,textureMap:H.none,alphaMap:$.none,alphaOpacity:1,side:te.front,blendMode:Ue.normal,blendOpacity:1,baseColor:"#38bdf8",opacity:.45,compositeShading:!1};g.shader,G.composite,te.front;const le={mouth:!0,eyes:!0,nose:!0},ne={textureSource:re.solid,color:"#111111",opacity:.5},dn=24,Ke=10,we=(e,n,t)=>e!==g.shader?"none":n===G.originalFace?"originalFace":n===G.composite?t===H.none?"originalFace":"composite":"none",fn=(e,n)=>e===g.basic||e===g.standard||e===g.physical||e===g.toon||e===g.shader&&n===G.composite,hn=(e,n,t=H.canonical)=>we(e,n,t)==="composite",mn=(e,n,t)=>we(e,n,t)==="originalFace",de=e=>e===re.imageUrl||e===re.mediaUrl,$e=e=>e===re.solid||e===re.gradient,Fe={normal:0,add:1,subtract:2,multiply:3,screen:4,overlay:5,softLight:6,hardLight:7,lighten:8,darken:9,difference:10,exclusion:11},Te="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO2YpZcAAAAASUVORK5CYII=",pn=()=>{const e=new Uint8Array([32,32,32,255,96,96,96,255,176,176,176,255,255,255,255,255]),n=new y.DataTexture(e,4,1,y.RGBAFormat);return n.minFilter=y.NearestFilter,n.magFilter=y.NearestFilter,n.generateMipmaps=!1,n.needsUpdate=!0,n},En=()=>{const e=document.createElement("canvas");e.width=256,e.height=256;const n=e.getContext("2d");if(!n)return new y.CanvasTexture(e);const t=n.createRadialGradient(96,80,10,128,128,128);t.addColorStop(0,"#ffffff"),t.addColorStop(.18,"#f7d794"),t.addColorStop(.45,"#d97706"),t.addColorStop(.72,"#78350f"),t.addColorStop(1,"#120701"),n.fillStyle=t,n.fillRect(0,0,e.width,e.height);const r=new y.CanvasTexture(e);return r.needsUpdate=!0,r},Mn=`
|
|
47
|
+
attribute vec2 faceUv;
|
|
48
|
+
varying vec2 vUv;
|
|
49
|
+
varying vec2 vFaceUv;
|
|
50
|
+
varying vec3 vNormal;
|
|
51
|
+
|
|
52
|
+
void main() {
|
|
53
|
+
vUv = uv;
|
|
54
|
+
vFaceUv = faceUv;
|
|
55
|
+
vNormal = normalize(normalMatrix * normal);
|
|
56
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
57
|
+
}
|
|
58
|
+
`,yn=`
|
|
59
|
+
uniform sampler2D cameraTexture;
|
|
60
|
+
uniform sampler2D canonicalTexture;
|
|
61
|
+
uniform sampler2D alphaMask;
|
|
62
|
+
uniform vec3 textureTint;
|
|
63
|
+
uniform float opacity;
|
|
64
|
+
uniform int blendMode;
|
|
65
|
+
uniform float blendOpacity;
|
|
66
|
+
uniform float useCanonicalTexture;
|
|
67
|
+
uniform float useAlphaMask;
|
|
68
|
+
uniform float alphaOpacity;
|
|
69
|
+
uniform float compositeShading;
|
|
70
|
+
uniform vec3 lightDirection;
|
|
71
|
+
uniform float ambientStrength;
|
|
72
|
+
uniform float directionalStrength;
|
|
73
|
+
varying vec2 vUv;
|
|
74
|
+
varying vec2 vFaceUv;
|
|
75
|
+
varying vec3 vNormal;
|
|
76
|
+
|
|
77
|
+
vec3 linearToSrgb(vec3 value) {
|
|
78
|
+
vec3 low = value * 12.92;
|
|
79
|
+
vec3 high = 1.055 * pow(max(value, vec3(0.0)), vec3(1.0 / 2.4)) - 0.055;
|
|
80
|
+
return mix(high, low, step(value, vec3(0.0031308)));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
vec3 srgbToLinear(vec3 value) {
|
|
84
|
+
vec3 low = value / 12.92;
|
|
85
|
+
vec3 high = pow(max((value + 0.055) / 1.055, vec3(0.0)), vec3(2.4));
|
|
86
|
+
return mix(high, low, step(value, vec3(0.04045)));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
float overlayChannel(float base, float blend) {
|
|
90
|
+
return base < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
float hardLightChannel(float base, float blend) {
|
|
94
|
+
return blend < 0.5 ? 2.0 * base * blend : 1.0 - 2.0 * (1.0 - base) * (1.0 - blend);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
float softLightChannel(float base, float blend) {
|
|
98
|
+
if (blend <= 0.5) {
|
|
99
|
+
return base - (1.0 - 2.0 * blend) * base * (1.0 - base);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
float d = base <= 0.25
|
|
103
|
+
? ((16.0 * base - 12.0) * base + 4.0) * base
|
|
104
|
+
: sqrt(base);
|
|
105
|
+
|
|
106
|
+
return base + (2.0 * blend - 1.0) * (d - base);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
vec3 applyBlendMode(vec3 base, vec3 blend, int mode) {
|
|
110
|
+
if (mode == 0) return blend;
|
|
111
|
+
if (mode == 1) return min(base + blend, 1.0);
|
|
112
|
+
if (mode == 2) return max(base - blend, 0.0);
|
|
113
|
+
if (mode == 3) return base * blend;
|
|
114
|
+
if (mode == 4) return 1.0 - (1.0 - base) * (1.0 - blend);
|
|
115
|
+
if (mode == 5) {
|
|
116
|
+
return vec3(
|
|
117
|
+
overlayChannel(base.r, blend.r),
|
|
118
|
+
overlayChannel(base.g, blend.g),
|
|
119
|
+
overlayChannel(base.b, blend.b)
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
if (mode == 6) {
|
|
123
|
+
return vec3(
|
|
124
|
+
softLightChannel(base.r, blend.r),
|
|
125
|
+
softLightChannel(base.g, blend.g),
|
|
126
|
+
softLightChannel(base.b, blend.b)
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
if (mode == 7) {
|
|
130
|
+
return vec3(
|
|
131
|
+
hardLightChannel(base.r, blend.r),
|
|
132
|
+
hardLightChannel(base.g, blend.g),
|
|
133
|
+
hardLightChannel(base.b, blend.b)
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
if (mode == 8) return max(base, blend);
|
|
137
|
+
if (mode == 9) return min(base, blend);
|
|
138
|
+
if (mode == 10) return abs(base - blend);
|
|
139
|
+
return base + blend - 2.0 * base * blend;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
void main() {
|
|
143
|
+
vec3 base = linearToSrgb(texture2D(cameraTexture, vFaceUv).rgb);
|
|
144
|
+
vec4 textureSample = texture2D(canonicalTexture, vUv);
|
|
145
|
+
vec3 blend = linearToSrgb(textureSample.rgb) * textureTint;
|
|
146
|
+
float light = ambientStrength + max(dot(normalize(vNormal), normalize(lightDirection)), 0.0) * directionalStrength;
|
|
147
|
+
blend *= mix(1.0, clamp(light, 0.35, 1.35), compositeShading);
|
|
148
|
+
float maskSample = texture2D(alphaMask, vUv).r;
|
|
149
|
+
float mask = useAlphaMask > 0.5 ? mix(1.0, maskSample, alphaOpacity) : 1.0;
|
|
150
|
+
float textureAlpha = useCanonicalTexture > 0.5 ? textureSample.a : 1.0;
|
|
151
|
+
vec3 blended = applyBlendMode(base, blend, blendMode);
|
|
152
|
+
vec3 color = useCanonicalTexture > 0.5 ? mix(base, blended, blendOpacity) : base;
|
|
153
|
+
gl_FragColor = vec4(srgbToLinear(color), opacity * mask * textureAlpha);
|
|
154
|
+
}
|
|
155
|
+
`,qe=({alphaMap:e,alphaOpacity:n,blendMode:t,blendOpacity:r,cameraTexture:a,color:o,compositeShading:s,faceAlphaMaskUrl:c,faceTextureStyle2Url:_,faceTextureUrl:R,masked:d=!1,maskColor:S,maskOpacity:C,maskSourceUrl:I,maskTextureSource:b,materialType:m,opacity:x,shaderPreset:X,side:f,textureMap:l})=>{const h=ee.useLoader(y.TextureLoader,R||Te),A=ee.useLoader(y.TextureLoader,_||R||Te),E=ee.useLoader(y.TextureLoader,c||Te),v=i.useMemo(()=>pn(),[]),j=i.useMemo(()=>En(),[]);i.useEffect(()=>()=>{v.dispose(),j.dispose()},[j,v]);const W=l===H.style2?A:h,L=l!==H.none,Y=we(m,X,l),K=["composite-material",l,e,n,t,r,s?"lit":"flat",o,x,R,_,c].join("|"),U={side:f,transparent:!0,opacity:x,wireframe:!1},fe=i.useMemo(()=>({source:de(b)?"texture":b,color:$e(b)?S:"#ffffff",opacity:C,textureUrl:de(b)?I:"",gradient:ke(S)}),[S,C,I,b]),T=i.useMemo(()=>({cameraTexture:{value:null},canonicalTexture:{value:null},alphaMask:{value:null},textureTint:{value:new y.Color(o)},opacity:{value:x},blendMode:{value:Fe[t]},blendOpacity:{value:r},useCanonicalTexture:{value:L?1:0},useAlphaMask:{value:e===$.canonical?1:0},alphaOpacity:{value:n},compositeShading:{value:s?1:0},lightDirection:{value:new y.Vector3(.3,.65,.7).normalize()},ambientStrength:{value:.78},directionalStrength:{value:.38}}),[e,n,t,r,o,s,L,x]);if(i.useEffect(()=>{T.cameraTexture.value=a??h,T.canonicalTexture.value=W,T.alphaMask.value=E,T.textureTint.value.set(o),T.opacity.value=x,T.blendMode.value=Fe[t],T.blendOpacity.value=r,T.useCanonicalTexture.value=L?1:0,T.useAlphaMask.value=e===$.canonical?1:0,T.alphaOpacity.value=n,T.compositeShading.value=s?1:0},[e,E,n,t,r,a,o,s,T,h,L,x,W]),d)return u.jsx(Xe,{settings:fe,side:f},`masked-${b}-material`);if(m===g.wireframe)return u.jsx("meshBasicMaterial",{color:o,transparent:!0,opacity:x,side:f,depthWrite:!1,depthTest:!1,wireframe:!0,toneMapped:!1},"wireframe-material");if(Y==="originalFace"&&a)return u.jsx("meshBasicMaterial",{map:a,alphaMap:E,transparent:!0,opacity:x,side:f,depthWrite:!1,depthTest:!0,toneMapped:!1},"use-original-face-material");if(Y==="composite"&&a)return u.jsx("shaderMaterial",{uniforms:T,vertexShader:Mn,fragmentShader:yn,transparent:!0,side:f,depthWrite:!1,depthTest:!0,toneMapped:!1},K);const z=L?W:null,Q=e===$.canonical&&n>0?E:null,B=`${m}-${l}-${e}-${n>0?"alpha-on":"alpha-off"}`;return m===g.standard?u.jsx("meshStandardMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!0,depthTest:!0,metalness:.05,roughness:.72},B):m===g.physical?u.jsx("meshPhysicalMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!0,depthTest:!0,roughness:.58,metalness:.08,clearcoat:.35,clearcoatRoughness:.4},B):m===g.toon?u.jsx("meshToonMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,gradientMap:v,depthWrite:!0,depthTest:!0},B):m===g.normal?u.jsx("meshNormalMaterial",{...U,depthWrite:!0,depthTest:!0,flatShading:!1},"normal-material"):m===g.matcap?u.jsx("meshMatcapMaterial",{...U,color:o,matcap:j,depthWrite:!0,depthTest:!0},"matcap-material"):u.jsx("meshBasicMaterial",{...U,color:o,map:z??void 0,alphaMap:Q??void 0,depthWrite:!1,depthTest:l!==H.none||e!==$.none,toneMapped:!1},B)},Qe=[{key:"base",getIndices:e=>e.baseIndices,masked:!1,renderOrderOffset:0},{key:"mouth",getIndices:e=>e.mouthIndices,masked:!1,renderOrderOffset:2},{key:"left-eye",getIndices:e=>e.leftEyeIndices,masked:!1,renderOrderOffset:2},{key:"right-eye",getIndices:e=>e.rightEyeIndices,masked:!1,renderOrderOffset:2},{key:"nose",getIndices:e=>e.noseIndices,masked:!1,renderOrderOffset:2},{key:"mouth-mask",getIndices:e=>e.mouthIndices,masked:!0,renderOrderOffset:3},{key:"left-eye-mask",getIndices:e=>e.leftEyeIndices,masked:!0,renderOrderOffset:3},{key:"right-eye-mask",getIndices:e=>e.rightEyeIndices,masked:!0,renderOrderOffset:3},{key:"nose-mask",getIndices:e=>e.noseIndices,masked:!0,renderOrderOffset:3}],An={[te.front]:y.FrontSide,[te.back]:y.BackSide,[te.double]:y.DoubleSide},bn=(e,n,t)=>{e.setAttribute("position",n.position),e.setAttribute("uv",n.uv),e.setAttribute("faceUv",n.faceUv),e.setIndex(new y.BufferAttribute(t,1))},Ze=({faceIndex:e=0,baseColor:n,color:t=O.baseColor,opacity:r=O.opacity,materialType:a=O.materialType,shaderPreset:o=O.shaderPreset,textureMap:s=O.textureMap,alphaMap:c=O.alphaMap,alphaOpacity:_=O.alphaOpacity,side:R=O.side,blendMode:d=O.blendMode,blendOpacity:S=O.blendOpacity,showOverlayMask:C=!1,showMouthMask:I=le.mouth,showEyeMask:b=le.eyes,showLeftEyeMask:m,showRightEyeMask:x,showNoseMask:X=le.nose,showEyeGeometry:f=!0,showLeftEyeGeometry:l,showRightEyeGeometry:h,showMouthGeometry:A=!0,showNoseGeometry:E=!0,maskTextureSource:v=ne.textureSource,maskSourceUrl:j="",maskColor:W=ne.color,maskOpacity:L=ne.opacity,faceTextureUrl:Y="",faceTextureStyle2Url:K="",faceAlphaMaskUrl:U="",compositeShading:fe=!1,faceWarp3D:T,transform:z,renderOrder:Q=Ke,externalScale:B=1,mesh:at,meshUrl:ot})=>{const he=je.useXRModelNode(q.XRModel.FACE_TRACKER),st=je.useXRCameraTexture(),{camera:it}=ee.useThree(),D=Ye({mesh:at,url:ot}),Oe=i.useRef(null),ct=i.useRef(null),lt=i.useRef(null),ut=i.useRef(null),dt=i.useRef(null),ft=i.useRef(null),ht=i.useRef(null),mt=i.useRef(null),pt=i.useRef(null),Et=i.useRef(null),Mt=i.useRef(null),yt=i.useRef(null),At=i.useRef(null),bt=i.useRef(null),xt=i.useRef(null),gt=i.useRef(null),Rt=i.useRef(null),St=i.useRef(null),me=i.useRef(null),pe=i.useRef(null),Ee=i.useRef(null),Ie=i.useRef(null),vt=i.useRef(new y.Vector3),Tt=i.useRef({x:0,y:0,z:0}),_t=i.useRef({x:0,y:0,z:0}),Ct=i.useRef({x:0,y:0,z:0}),oe=i.useRef(!1),Ft=An[R],kt=n??t,Ut=l??f,wt=h??f,Ot=C||(m??b),It=C||(x??b),Lt=C||I,Dt=C||X,Pt={base:Oe,mouth:ct,"left-eye":lt,"right-eye":ut,nose:dt,"mouth-mask":ft,"left-eye-mask":ht,"right-eye-mask":mt,"nose-mask":pt},Nt={base:Et,mouth:Mt,"left-eye":yt,"right-eye":At,nose:bt,"mouth-mask":xt,"left-eye-mask":gt,"right-eye-mask":Rt,"nose-mask":St},Gt={base:!0,mouth:A,"left-eye":Ut,"right-eye":wt,nose:E,"mouth-mask":Lt,"left-eye-mask":Ot,"right-eye-mask":It,"nose-mask":Dt},Ht=M=>u.jsx(qe,{alphaMap:c,alphaOpacity:_,blendMode:d,blendOpacity:S,cameraTexture:st,color:kt,compositeShading:fe,faceAlphaMaskUrl:U,faceTextureStyle2Url:K,faceTextureUrl:Y,masked:M,maskColor:W,maskOpacity:L,maskSourceUrl:j,maskTextureSource:v,materialType:a,opacity:r,shaderPreset:o,side:Ft,textureMap:s}),Z=Qe.map(M=>({...M,geometryRef:Pt[M.key],meshRef:Nt[M.key],visible:Gt[M.key]})),jt=M=>_e.projectLandmarkWithDepth(M,it,vt.current);return ee.useFrame(()=>{var Ne,Ge;const M=Oe.current,P=(Ge=(Ne=he==null?void 0:he.detectionResults)==null?void 0:Ne.faceLandmarks)==null?void 0:Ge[e],zt=Z.every(p=>p.geometryRef.current&&p.meshRef.current);if(!D||!M||!zt)return;if(!P||P.length<D.vertexCount){Z.forEach(p=>{p.meshRef.current.visible=!1});return}if(Ie.current!==D){me.current=new Float32Array(D.vertexCount*3),pe.current=new Float32Array(D.uvs),Ee.current=new Float32Array(D.vertexCount*2);const p={position:new y.BufferAttribute(me.current,3),uv:new y.BufferAttribute(pe.current,2),faceUv:new y.BufferAttribute(Ee.current,2)};Z.forEach(F=>{bn(F.geometryRef.current,p,F.getIndices(D))}),p.uv.needsUpdate=!0,Ie.current=D,oe.current=!1}const se=me.current,Me=Ee.current,ie=pe.current;if(!se||!Me||!ie)return;const Le=mn(a,o,s),De=nn(T),Pe=De?tn(P):null,w=z?Ct.current:null;if(w){w.x=0,w.y=0,w.z=0;for(let p=0;p<P.length;p++){const F=P[p];w.x+=F.x,w.y+=F.y,w.z+=F.z}w.x/=P.length,w.y/=P.length,w.z/=P.length}const Bt=Math.min(P.length,D.vertexCount);for(let p=0;p<Bt;p++){const F=P[p],He=De&&Pe?rn(F,Pe,T,Tt.current):F,Vt=z&&w?_e.transformFaceMeshLandmark(He,w,z,_t.current):He,ye=p*3,ce=p*2,Ae=jt(Vt);se[ye]=Ae.x,se[ye+1]=Ae.y,se[ye+2]=Ae.z,Me[ce]=F.x,Me[ce+1]=1-F.y,Le&&(ie[ce]=F.x,ie[ce+1]=1-F.y)}Le?(M.attributes.uv.needsUpdate=!0,oe.current=!0):oe.current&&(ie.set(D.uvs),M.attributes.uv.needsUpdate=!0,oe.current=!1),Z.forEach(p=>{p.meshRef.current.visible=p.visible}),M.attributes.position.needsUpdate=!0,M.attributes.faceUv.needsUpdate=!0,Z.forEach(p=>{p.geometryRef.current.computeVertexNormals()})}),u.jsx("group",{scale:[B,B,B],children:Z.map(M=>u.jsxs("mesh",{ref:M.meshRef,renderOrder:Q+M.renderOrderOffset,frustumCulled:!1,children:[u.jsx("bufferGeometry",{ref:M.geometryRef}),Ht(M.masked)]},M.key))})},Je=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color.png`,et=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color_style_2.png`,tt=`${q.libConfig.sdkAssetsBaseUrl}/Canonical_Face_Color_Mask.png`,nt={...Ce,position:{...Ce.position,y:.001}},xn={enabled:!0,faceIndex:0,targetFps:dn,...O,showLeftEyeGeometry:!0,showRightEyeGeometry:!0,showMouthGeometry:!0,showNoseGeometry:!0,externalScale:1,showOverlayMask:!1,showMouthMask:!1,showLeftEyeMask:!1,showRightEyeMask:!1,showNoseMask:!1,maskTextureSource:ne.textureSource,maskSourceUrl:"",maskColor:ne.color,maskOpacity:ne.opacity,faceTextureUrl:Je,faceTextureStyle2Url:et,faceAlphaMaskUrl:tt,renderOrder:Ke},rt=e=>{const{externalMeshUrl:n,...t}=e;return{...t,color:t.baseColor,meshUrl:n}},gn=(e,n)=>{const t={...e,...n};return n.maskTextureSource&&!de(n.maskTextureSource)&&(t.maskSourceUrl=""),t.materialType===g.shader&&n.shaderPreset===G.composite?{...t,...ze,materialType:g.shader,shaderPreset:G.composite}:t.materialType===g.shader&&t.shaderPreset===G.composite&&t.textureMap===H.none?{...t,textureMap:ze.textureMap}:t},Rn=({transform:e,value:n})=>n.enabled?u.jsxs(u.Fragment,{children:[u.jsx(_e.FaceTracker,{active:n.enabled,faceIndex:n.faceIndex,numFaces:n.faceIndex+1,targetFps:n.targetFps}),u.jsx(Ze,{...rt(n),transform:e??nt})]}):null;exports.CANONICAL_FACE_MESH_GEOMETRY_SPECS=Qe;exports.CanonicalFaceMeshRenderer=Ze;exports.DEFAULT_APPEARANCE=O;exports.DEFAULT_FACE_MESH_RENDERER=xn;exports.DEFAULT_FACE_MESH_TRANSFORM=nt;exports.DEFAULT_MASKING=le;exports.DEFAULT_MATERIAL_FILL=Zt;exports.DEFAULT_SCREEN_GRADIENT=V;exports.DEFAULT_TRANSFORM_3D=Ce;exports.FACE_MESH_ALPHA_MAPS=$;exports.FACE_MESH_BLEND_MODES=Ue;exports.FACE_MESH_MASK_TEXTURE_SOURCES=re;exports.FACE_MESH_MATERIAL_TYPES=g;exports.FACE_MESH_SHADER_PRESETS=G;exports.FACE_MESH_SIDES=te;exports.FACE_MESH_TEXTURE_MAPS=H;exports.FaceMeshMaterial=qe;exports.FaceMeshRenderer=Rn;exports.MAX_SCREEN_GRADIENT_STOPS=ue;exports.MaterialFill=Xe;exports.ScreenGradientMaterial=Ve;exports.Transform3D=en;exports.blendModeIndices=Fe;exports.canonicalFaceAlphaMaskUrl=tt;exports.canonicalFaceTextureStyle2Url=et;exports.canonicalFaceTextureUrl=Je;exports.createTwoStopGradient=ke;exports.mapFaceMeshRendererSettingsToProps=rt;exports.normalizeScreenGradient=Be;exports.parseCanonicalFaceModel=We;exports.resolveFaceMeshRendererSettings=gn;exports.supportsBlendMode=hn;exports.supportsTexturePanel=fn;exports.useCanonicalFaceMesh=Ye;exports.usesMaskColor=$e;exports.usesMaskSourceUrl=de;
|