@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +5651 -82
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +43 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +75 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +17 -0
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LipEffect/LipEffect.d.ts +27 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +46 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +375 -0
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +128 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -0
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/PersonCutout/index.d.ts +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/constants/index.d.ts +4 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +7 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +18 -3
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2695 -2547
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +20 -2
- package/dist/entries/face-effects.d.ts +123 -9
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +49 -3
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +60 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2324 -1
- package/dist/face-effects.js +14208 -2268
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +98 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +114 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +76 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/index-w1S7fI2B.js +1432 -0
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +27 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +89 -0
- package/dist/landmarkMask-BFDyBnKM.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1190 -675
- package/dist/main.cjs +1 -1
- package/dist/main.js +1190 -452
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +3 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +4 -12
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-C8rE26Uf.js +366 -0
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +52 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/settings-BJ7FMBsO.js +111 -0
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +62 -0
- package/dist/subjects/types.d.ts +55 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1326 -506
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +47 -3
- package/dist/types/segmentation.d.ts +24 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
- package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +21 -1
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/coordinate-spaces.mdx +168 -0
- package/docs/api/cross-camera.mdx +89 -0
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +9 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +8 -9
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +209 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +164 -0
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +247 -0
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +98 -0
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +136 -0
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +114 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +51 -1
- package/docs/examples/lip-shaders.mdx +273 -0
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +368 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +23 -1
- package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
- package/dist/DebuggerUI-BjOMr8q_.js +0 -269
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-ByhzppYl.js +0 -663
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-C4QpCQIY.js +0 -118
- package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BjmTe9eM.cjs +0 -1
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DXT3WccE.js +0 -2089
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/index-VJ0SJwmG.js +0 -214
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/session-CpkiK5YA.cjs +0 -31
- package/dist/session-DLFN_VII.js +0 -363
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a hint loops from rest into the pose and back. Every hint takes a
|
|
3
|
+
* `loop`, merged over its defaults.
|
|
4
|
+
*/
|
|
5
|
+
export type HintLoop = {
|
|
6
|
+
/** Seconds per cycle (rest → pose → rest). `0` holds the full pose. */
|
|
7
|
+
seconds?: number;
|
|
8
|
+
/** Share of the cycle held at the full pose (0..0.95). Default ≈0.54. */
|
|
9
|
+
hold?: number;
|
|
10
|
+
/** Where each cycle starts, 0 = the model's rest .. 1 = the pose (the hand starts relaxed, 0.35). */
|
|
11
|
+
from?: number;
|
|
12
|
+
/** Easing of the move (0..1 → 0..1). Default smoothstep (the hand closes with a small settle). */
|
|
13
|
+
easing?: (t: number) => number;
|
|
14
|
+
};
|
|
15
|
+
/** The default hold share: the full pose for ≈54 % of each cycle. */
|
|
16
|
+
export declare const HINT_LOOP_HOLD: number;
|
|
17
|
+
export type HintLoopSample = {
|
|
18
|
+
/** 0..1 through the cycle. */
|
|
19
|
+
phase: number;
|
|
20
|
+
/** The raw drive, 0 (rest) → 1 (pose, held) → 0, before easing and `from`. */
|
|
21
|
+
drive: number;
|
|
22
|
+
/** In the first half of the cycle (moving into the pose). */
|
|
23
|
+
closing: boolean;
|
|
24
|
+
/** How far into the pose: `from` + eased drive, 0..1. */
|
|
25
|
+
amount: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Samples a hint loop at `time` seconds: rest → pose (held) → rest. Pure; call
|
|
29
|
+
* it from `useFrame` with `clock.elapsedTime` to drive your own hint.
|
|
30
|
+
*/
|
|
31
|
+
export declare const sampleHintLoop: (time: number, { seconds, hold, from, easing }?: HintLoop) => HintLoopSample;
|
|
32
|
+
/**
|
|
33
|
+
* The auto orbit's yaw (radians) at `time`: a ping-pong swing of ±`degrees`
|
|
34
|
+
* about the vertical, `seconds` per swing (`0` = still).
|
|
35
|
+
*/
|
|
36
|
+
export declare const sampleHintOrbit: (time: number, degrees: number, seconds: number) => number;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { InstructionOptions } from './InstructionCue';
|
|
3
|
+
import { InstructionDetector } from './useInstructionHold';
|
|
4
|
+
export type InstructionProps = InstructionOptions & {
|
|
5
|
+
/** Instruction copy. */
|
|
6
|
+
text: string;
|
|
7
|
+
/**
|
|
8
|
+
* What drives it: any detector hook's result (`useHandGesture`,
|
|
9
|
+
* `useFaceExpression`, `useBodyPose`, `useInstructionHold`) or your own
|
|
10
|
+
* `{ status, isInView }`.
|
|
11
|
+
*/
|
|
12
|
+
detector: Pick<InstructionDetector, "status" | "isInView">;
|
|
13
|
+
/**
|
|
14
|
+
* The symbol over the text, drawn `height` tall (screen-space world units)
|
|
15
|
+
* in the given render order: a hint (`HandGestureHint`, …), your own model
|
|
16
|
+
* in a `HintStage`, a `ScreenImage`, an emoji `TextLabel` …
|
|
17
|
+
*/
|
|
18
|
+
symbol: (height: number, renderOrder: number) => ReactNode;
|
|
19
|
+
/** The symbol's slot height × the size preset (a standing figure uses 2.1). Default 1. */
|
|
20
|
+
symbolAspect?: number;
|
|
21
|
+
/** `false` hides it. Default `true`. (Pause the detector with its own `active`.) */
|
|
22
|
+
active?: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The instruction layout on its own: a symbol over your copy, a nudge line
|
|
26
|
+
* when nothing is in view, status reports, and on completion a pop, a ring
|
|
27
|
+
* and a fade-out. Bring any detector and any symbol; `HandInstruction`,
|
|
28
|
+
* `FaceInstruction` and `BodyInstruction` are this with their hint and hook.
|
|
29
|
+
* Mount inside `XRScene`; it draws in its own `ScreenSpaceUI`, over the AR
|
|
30
|
+
* content (`INSTRUCTION_RENDER_ORDER` 2000+).
|
|
31
|
+
*
|
|
32
|
+
* ```tsx
|
|
33
|
+
* const wave = useHandGesture(myWave, { onComplete: start });
|
|
34
|
+
* <Instruction
|
|
35
|
+
* detector={wave}
|
|
36
|
+
* text="Wave hello"
|
|
37
|
+
* symbol={(h, order) => <HandGestureHint gesture={myWave} model={hand} height={h} renderOrder={order} />}
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const Instruction: ({ active, ...props }: InstructionProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { HintMeshSet } from './ghost';
|
|
2
|
+
import { HintLook, ResolvedHintLook } from './hintLook';
|
|
3
|
+
import * as THREE from "three";
|
|
4
|
+
export type GhostModel = {
|
|
5
|
+
/** The ghost copy of the model to render (`<primitive object={ghost.object} />`). */
|
|
6
|
+
object: THREE.Object3D;
|
|
7
|
+
/** Its meshes, each with its depth pre-pass and halo twins (copy morph weights to all three). */
|
|
8
|
+
meshes: HintMeshSet[];
|
|
9
|
+
/** The ghost material per part (material name); empty with `look.material`. */
|
|
10
|
+
materials: Map<string, THREE.Material>;
|
|
11
|
+
/** The back-glow disc's material (`null` with `glow: false`); `HintStage` draws it. */
|
|
12
|
+
glowMaterial: THREE.MeshBasicMaterial | null;
|
|
13
|
+
/** The resolved look. */
|
|
14
|
+
look: ResolvedHintLook;
|
|
15
|
+
/** Lights bones up: `weight(bone)` 0..1 per skinned bone (0 everywhere clears it). */
|
|
16
|
+
setHighlight: (weight: (bone: THREE.Bone) => number) => void;
|
|
17
|
+
/** How formed the pose is, 0..1: fades the highlight and the glow in. Call it every frame. */
|
|
18
|
+
setStrength: (amount: number) => void;
|
|
19
|
+
};
|
|
20
|
+
export type UseGhostModelOptions = {
|
|
21
|
+
/** The hint's default look, `look` is merged over it. Default: the plain ghost. */
|
|
22
|
+
base?: HintLook;
|
|
23
|
+
/** Render order of the hint (its pre-pass and halo draw just before it). */
|
|
24
|
+
renderOrder?: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Turns any model into an instruction-hint ghost: a skeleton-safe copy with a
|
|
28
|
+
* translucent matcap ghost per part, a depth pre-pass (only the front surface
|
|
29
|
+
* shows), a halo and a back-glow, all from one `look`. The building block the
|
|
30
|
+
* hand / face / body hints use; use it for a hint on your own model, then pose
|
|
31
|
+
* `ghost.object` yourself (e.g. `createClipBlend`) inside a `HintStage`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const useGhostModel: (model: THREE.Object3D, look?: HintLook, { base, renderOrder }?: UseGhostModelOptions) => GhostModel;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { MutableRefObject } from 'react';
|
|
2
|
+
import { GestureHoldState, GestureHoldStatus } from './gestureHold';
|
|
3
|
+
/**
|
|
4
|
+
* What an `<Instruction>` reads from its detector. `useHandGesture`,
|
|
5
|
+
* `useFaceExpression`, `useBodyPose` and `useInstructionHold` all return one,
|
|
6
|
+
* so any of them (or your own) can drive the layout.
|
|
7
|
+
*/
|
|
8
|
+
export type InstructionDetector = {
|
|
9
|
+
/** `"waiting"` → `"holding"` → `"done"`; re-renders only when this changes. */
|
|
10
|
+
status: GestureHoldStatus;
|
|
11
|
+
/** Live hold state (progress 0..1) — read it in `useFrame`, not in render. */
|
|
12
|
+
holdRef: MutableRefObject<GestureHoldState>;
|
|
13
|
+
/** Whether it matched on the latest frame (before hold timing) — read it in `useFrame`. */
|
|
14
|
+
matchedRef: MutableRefObject<boolean>;
|
|
15
|
+
/** Whether something usable (a hand, a face, a body) is in view right now. */
|
|
16
|
+
isInView: () => boolean;
|
|
17
|
+
/** Start over (e.g. to ask again). */
|
|
18
|
+
reset: () => void;
|
|
19
|
+
};
|
|
20
|
+
export type InstructionHoldOptions = {
|
|
21
|
+
/** How long it must be held to complete. Default 400 ms. */
|
|
22
|
+
holdMs?: number;
|
|
23
|
+
/** Dropouts shorter than this do not restart the hold. Default 150 ms. */
|
|
24
|
+
graceMs?: number;
|
|
25
|
+
/** Called once when it completes (until `reset`). */
|
|
26
|
+
onComplete?: () => void;
|
|
27
|
+
/** `false` pauses it. Default `true`. */
|
|
28
|
+
active?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The hold state machine behind every detector hook: `step(matched)` once per
|
|
32
|
+
* frame; a new `resetKey` starts a new prompt.
|
|
33
|
+
*/
|
|
34
|
+
export declare const useHoldTracker: (resetKey: unknown, { holdMs, graceMs, onComplete, }: Omit<InstructionHoldOptions, "active">) => {
|
|
35
|
+
status: GestureHoldStatus;
|
|
36
|
+
holdRef: MutableRefObject<GestureHoldState>;
|
|
37
|
+
matchedRef: MutableRefObject<boolean>;
|
|
38
|
+
reset: () => void;
|
|
39
|
+
step: (matched: boolean) => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* A stable key for a gesture / expression / pose spec, so an inline rule or
|
|
43
|
+
* definition object does not restart the hold every render (functions are
|
|
44
|
+
* read live and do not re-key; change a React `key` or call `reset` for a new
|
|
45
|
+
* prompt with the same function).
|
|
46
|
+
*/
|
|
47
|
+
export declare const specKey: (spec: unknown) => string;
|
|
48
|
+
export type UseInstructionHoldOptions = InstructionHoldOptions & {
|
|
49
|
+
/**
|
|
50
|
+
* Whether something usable is in view (drives the `"waiting"` status and the
|
|
51
|
+
* nudge). Default: always in view.
|
|
52
|
+
*/
|
|
53
|
+
isInView?: () => boolean;
|
|
54
|
+
/** A new value starts a new prompt (the hold restarts). */
|
|
55
|
+
resetKey?: unknown;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Hold-to-complete for ANY condition: `match` is called every frame and must
|
|
59
|
+
* hold for `holdMs`. Combine detectors by reading their `matchedRef`s (call
|
|
60
|
+
* those hooks first, in the same component):
|
|
61
|
+
*
|
|
62
|
+
* ```tsx
|
|
63
|
+
* const hand = useHandGesture("palm");
|
|
64
|
+
* const face = useFaceExpression("smile");
|
|
65
|
+
* const both = useInstructionHold(() => hand.matchedRef.current && face.matchedRef.current, {
|
|
66
|
+
* isInView: () => hand.isInView() && face.isInView(),
|
|
67
|
+
* onComplete: start,
|
|
68
|
+
* });
|
|
69
|
+
* <Instruction detector={both} text="Wave and smile" symbol={…} />
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare const useInstructionHold: (match: () => boolean, { isInView, resetKey, active, ...options }?: UseInstructionHoldOptions) => InstructionDetector;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { IrisEye } from '../../iris/types';
|
|
2
|
+
import * as THREE from "three";
|
|
3
|
+
/**
|
|
4
|
+
* Uniforms every iris material receives. Values are refreshed in place each
|
|
5
|
+
* frame by `updateIrisUniforms`; keep the object identity stable (three
|
|
6
|
+
* captures it at program compile).
|
|
7
|
+
*/
|
|
8
|
+
export type IrisUniforms = {
|
|
9
|
+
/** Iris center in MediaPipe image space (0..1, top-left origin). */
|
|
10
|
+
irisCenter: {
|
|
11
|
+
value: THREE.Vector2;
|
|
12
|
+
};
|
|
13
|
+
/** Iris radius in image-width units. */
|
|
14
|
+
irisRadius: {
|
|
15
|
+
value: number;
|
|
16
|
+
};
|
|
17
|
+
/** Iris position inside the eye opening, [-1, 1] per axis (+x person's left, +y up). Not gaze. */
|
|
18
|
+
irisOffset: {
|
|
19
|
+
value: THREE.Vector2;
|
|
20
|
+
};
|
|
21
|
+
/** 0..1 eyelid-opening confidence, scaled by the hold decay. */
|
|
22
|
+
irisConfidence: {
|
|
23
|
+
value: number;
|
|
24
|
+
};
|
|
25
|
+
/** Eyelid gap / eye width. */
|
|
26
|
+
irisOpenness: {
|
|
27
|
+
value: number;
|
|
28
|
+
};
|
|
29
|
+
/** Seconds since the effect mounted. */
|
|
30
|
+
time: {
|
|
31
|
+
value: number;
|
|
32
|
+
};
|
|
33
|
+
color: {
|
|
34
|
+
value: THREE.Color;
|
|
35
|
+
};
|
|
36
|
+
opacity: {
|
|
37
|
+
value: number;
|
|
38
|
+
};
|
|
39
|
+
/** 1 when the material is mirrored horizontally, else 0. */
|
|
40
|
+
mirror: {
|
|
41
|
+
value: number;
|
|
42
|
+
};
|
|
43
|
+
/** 1 to multiply the image by `color` in the image material, else 0. */
|
|
44
|
+
tintImage: {
|
|
45
|
+
value: number;
|
|
46
|
+
};
|
|
47
|
+
/** Image for the image material (null in shader mode). */
|
|
48
|
+
map: {
|
|
49
|
+
value: THREE.Texture | null;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
export declare const createIrisUniforms: () => IrisUniforms;
|
|
53
|
+
/** Copy one eye's live values into the uniforms. */
|
|
54
|
+
export declare const updateIrisUniforms: (uniforms: IrisUniforms, eye: IrisEye, options: {
|
|
55
|
+
time: number;
|
|
56
|
+
color?: THREE.ColorRepresentation;
|
|
57
|
+
opacity?: number;
|
|
58
|
+
mirrored?: boolean;
|
|
59
|
+
tintImage?: boolean;
|
|
60
|
+
map?: THREE.Texture | null;
|
|
61
|
+
}) => IrisUniforms;
|
|
62
|
+
export declare const IRIS_VERTEX_SHADER = "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n";
|
|
63
|
+
/**
|
|
64
|
+
* Built-in procedural iris: a tinted disc with radial fibre bands, a pupil
|
|
65
|
+
* that follows \`irisOffset\`, a limbal ring, and alpha fading with
|
|
66
|
+
* \`irisConfidence\` so a closing eye dissolves the effect. The quad spans
|
|
67
|
+
* the iris diameter (uv 0.5 is the iris center).
|
|
68
|
+
*/
|
|
69
|
+
export declare const IRIS_SHADER_FRAGMENT = "\n uniform vec2 irisOffset;\n uniform float irisConfidence;\n uniform float time;\n uniform vec3 color;\n uniform float opacity;\n uniform float mirror;\n varying vec2 vUv;\n\n float hash(float n) { return fract(sin(n) * 43758.5453123); }\n\n void main() {\n vec2 p = vUv - 0.5;\n p.x = mix(p.x, -p.x, mirror);\n float r = length(p) * 2.0;\n if (r > 1.0) discard;\n float angle = atan(p.y, p.x);\n // Radial fibres: a few overlapping angular frequencies, slowly rotating.\n float fibres = 0.5\n + 0.25 * sin(angle * 36.0 + time * 0.3)\n + 0.15 * sin(angle * 91.0 - r * 6.0)\n + 0.10 * sin(angle * 17.0 + time * 0.7);\n vec3 base = color * (0.55 + 0.6 * fibres) * (1.1 - 0.5 * r);\n // Limbal ring: darken the outer edge.\n base *= 1.0 - smoothstep(0.78, 1.0, r) * 0.7;\n // Pupil: a soft dark disc offset slightly with the iris position in the eye.\n vec2 pupil = p - irisOffset * 0.08;\n float pupilR = length(pupil) * 2.0;\n float pupilMask = 1.0 - smoothstep(0.26, 0.36, pupilR);\n base = mix(base, vec3(0.02), pupilMask);\n // Specular glint.\n float glint = 1.0 - smoothstep(0.0, 0.14, length(p - vec2(-0.18, 0.2)));\n base += glint * 0.8;\n float edge = 1.0 - smoothstep(0.92, 1.0, r);\n gl_FragColor = vec4(base, opacity * edge * irisConfidence);\n #include <colorspace_fragment>\n }\n";
|
|
70
|
+
/** Image material: the texture covers the quad, tinted by \`color\`, fading with confidence. */
|
|
71
|
+
export declare const IRIS_IMAGE_FRAGMENT = "\n uniform sampler2D map;\n uniform float irisConfidence;\n uniform vec3 color;\n uniform float opacity;\n uniform float mirror;\n uniform float tintImage;\n varying vec2 vUv;\n void main() {\n vec2 uv = vUv;\n uv.x = mix(uv.x, 1.0 - uv.x, mirror);\n vec4 texel = texture2D(map, uv);\n // Image as authored; multiplied by the tint only when tintImage is on.\n vec3 rgb = texel.rgb * mix(vec3(1.0), color, tintImage);\n gl_FragColor = vec4(rgb, texel.a * opacity * irisConfidence);\n #include <colorspace_fragment>\n }\n";
|
|
72
|
+
export declare const createIrisShaderMaterial: (uniforms: IrisUniforms) => THREE.ShaderMaterial;
|
|
73
|
+
export declare const createIrisImageMaterial: (uniforms: IrisUniforms) => THREE.ShaderMaterial;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { IrisTrackingHandle } from '../../hooks/useIrisTracking';
|
|
2
|
+
import { IrisResult, IrisSide } from '../../iris/types';
|
|
3
|
+
import { IrisUniforms } from './IrisMaterial';
|
|
4
|
+
import { IrisEffectSettings } from './settings';
|
|
5
|
+
import * as THREE from "three";
|
|
6
|
+
export declare const DEFAULT_IRIS_EFFECT_RENDER_ORDER: 100;
|
|
7
|
+
/** What a custom iris material factory receives, once per eye, when the tracker is ready. */
|
|
8
|
+
export type IrisMaterialContext = {
|
|
9
|
+
side: IrisSide;
|
|
10
|
+
/** Stable uniforms, refreshed in place every frame; wire them into your shader. */
|
|
11
|
+
uniforms: IrisUniforms;
|
|
12
|
+
/** The live result (stable object) for anything the uniforms do not carry. */
|
|
13
|
+
result: IrisResult;
|
|
14
|
+
/** The loaded image in `image` mode, else null. */
|
|
15
|
+
texture: THREE.Texture | null;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A three.js material instance (shared, the caller owns it), or a factory
|
|
19
|
+
* called once per eye for each `material` identity; the effect disposes what
|
|
20
|
+
* a factory created when the factory changes or on unmount. Read the live
|
|
21
|
+
* texture from `uniforms.map`, not from the context, which only carries the
|
|
22
|
+
* texture known when the factory ran.
|
|
23
|
+
*/
|
|
24
|
+
export type IrisMaterialOverride = THREE.Material | ((context: IrisMaterialContext) => THREE.Material);
|
|
25
|
+
export type IrisEffectProps = Partial<IrisEffectSettings> & {
|
|
26
|
+
/** Maximum faces requested from the shared face model. Default `faceIndex + 1`. */
|
|
27
|
+
numFaces?: number;
|
|
28
|
+
/** Pauses the tracker interest. Default true. */
|
|
29
|
+
active?: boolean;
|
|
30
|
+
/** Extrapolate held faces along their velocity for up to this long (ms). Default 0. */
|
|
31
|
+
predictMs?: number;
|
|
32
|
+
/** Pre-loaded image for `image` mode; takes precedence over `textureUrl`. */
|
|
33
|
+
texture?: THREE.Texture | null;
|
|
34
|
+
/** Replace the built-in materials with your own (receives the shared uniforms). */
|
|
35
|
+
material?: IrisMaterialOverride;
|
|
36
|
+
renderOrder?: number;
|
|
37
|
+
/** Called with the handle once per mount, for HUDs that read `handle.result` in `useFrame`. */
|
|
38
|
+
onTracking?: (handle: IrisTrackingHandle) => void;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Draws a material over each tracked iris: the built-in procedural shader,
|
|
42
|
+
* an image, or your own material fed by the same uniforms. Tracking comes
|
|
43
|
+
* from `useIrisTracking` (the shared face model, hold/predict, smoothing);
|
|
44
|
+
* the quads hide as soon as the face is dropped, so no stale eye effect
|
|
45
|
+
* lingers. `confidence` fades the built-ins as the eye closes.
|
|
46
|
+
*/
|
|
47
|
+
export declare const IrisEffect: ({ numFaces, active, predictMs, texture: textureProp, material, renderOrder, onTracking, ...settingsInput }: IrisEffectProps) => import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export { IRIS_IMAGE_FRAGMENT, IRIS_SHADER_FRAGMENT, IRIS_VERTEX_SHADER, createIrisImageMaterial, createIrisShaderMaterial, createIrisUniforms, updateIrisUniforms, } from './IrisMaterial';
|
|
49
|
+
export type { IrisUniforms } from './IrisMaterial';
|
|
50
|
+
export { DEFAULT_IRIS_EFFECT_SETTINGS, IRIS_EFFECT_EYES, IRIS_EFFECT_MODES, IRIS_EFFECT_SETTINGS_FIELDS, patchIrisEffectSettings, resolveIrisEffectSettings, } from './settings';
|
|
51
|
+
export type { IrisEffectEye, IrisEffectMode, IrisEffectSettings } from './settings';
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export declare const IRIS_EFFECT_EYES: readonly ["both", "left", "right"];
|
|
2
|
+
export type IrisEffectEye = (typeof IRIS_EFFECT_EYES)[number];
|
|
3
|
+
export declare const IRIS_EFFECT_MODES: readonly ["shader", "image"];
|
|
4
|
+
export type IrisEffectMode = (typeof IRIS_EFFECT_MODES)[number];
|
|
5
|
+
/** Flat, serializable settings for `<IrisEffect>`; the debug panel edits these. */
|
|
6
|
+
export type IrisEffectSettings = {
|
|
7
|
+
eye: IrisEffectEye;
|
|
8
|
+
mode: IrisEffectMode;
|
|
9
|
+
/** Tint for the shader iris, multiplied into the image in `image` mode. */
|
|
10
|
+
color: string;
|
|
11
|
+
/** Image for `image` mode. Empty = none (the effect hides). */
|
|
12
|
+
textureUrl: string;
|
|
13
|
+
/** Multiply the image by `color` in `image` mode. Default false (image as authored). */
|
|
14
|
+
tintImage: boolean;
|
|
15
|
+
/** Multiplier on the tracked iris radius. 1 = cover the iris. */
|
|
16
|
+
scale: number;
|
|
17
|
+
opacity: number;
|
|
18
|
+
/**
|
|
19
|
+
* Inference cap (fps) requested for the shared face model; `0` keeps the
|
|
20
|
+
* session's `perf.targetFps`. The first mounted face consumer wins, so
|
|
21
|
+
* pass the same value everywhere the face model is acquired.
|
|
22
|
+
*/
|
|
23
|
+
targetFps: number;
|
|
24
|
+
/** One Euro smoothing of the iris center and radius (0 = raw). */
|
|
25
|
+
smoothing: number;
|
|
26
|
+
/** Max extrapolation between inference samples (ms); 0 = hold-and-jump. */
|
|
27
|
+
leadMs: number;
|
|
28
|
+
/** Flip the material horizontally (image orientation / shader +x). */
|
|
29
|
+
mirrored: boolean;
|
|
30
|
+
faceIndex: number;
|
|
31
|
+
holdMs: number;
|
|
32
|
+
};
|
|
33
|
+
export declare const DEFAULT_IRIS_EFFECT_SETTINGS: IrisEffectSettings;
|
|
34
|
+
export declare const IRIS_EFFECT_SETTINGS_FIELDS: [{
|
|
35
|
+
readonly key: "eye";
|
|
36
|
+
readonly label: "Eye";
|
|
37
|
+
readonly type: "select";
|
|
38
|
+
readonly options: {
|
|
39
|
+
label: "left" | "right" | "both";
|
|
40
|
+
value: "left" | "right" | "both";
|
|
41
|
+
}[];
|
|
42
|
+
}, {
|
|
43
|
+
readonly key: "mode";
|
|
44
|
+
readonly label: "Material";
|
|
45
|
+
readonly type: "select";
|
|
46
|
+
readonly options: {
|
|
47
|
+
label: "image" | "shader";
|
|
48
|
+
value: "image" | "shader";
|
|
49
|
+
}[];
|
|
50
|
+
}, {
|
|
51
|
+
readonly key: "color";
|
|
52
|
+
readonly label: "Color / tint";
|
|
53
|
+
readonly type: "color";
|
|
54
|
+
}, {
|
|
55
|
+
readonly key: "textureUrl";
|
|
56
|
+
readonly label: "Image URL (image mode)";
|
|
57
|
+
readonly type: "text";
|
|
58
|
+
}, {
|
|
59
|
+
readonly key: "tintImage";
|
|
60
|
+
readonly label: "Tint image with color";
|
|
61
|
+
readonly type: "boolean";
|
|
62
|
+
}, {
|
|
63
|
+
readonly key: "scale";
|
|
64
|
+
readonly label: "Scale (× iris radius)";
|
|
65
|
+
readonly type: "number";
|
|
66
|
+
readonly min: 0.2;
|
|
67
|
+
readonly max: 4;
|
|
68
|
+
readonly step: 0.05;
|
|
69
|
+
}, {
|
|
70
|
+
readonly key: "opacity";
|
|
71
|
+
readonly label: "Opacity";
|
|
72
|
+
readonly type: "number";
|
|
73
|
+
readonly min: 0;
|
|
74
|
+
readonly max: 1;
|
|
75
|
+
readonly step: 0.05;
|
|
76
|
+
}, {
|
|
77
|
+
readonly key: "targetFps";
|
|
78
|
+
readonly label: "Face FPS (0 = session)";
|
|
79
|
+
readonly type: "number";
|
|
80
|
+
readonly min: 0;
|
|
81
|
+
readonly max: 60;
|
|
82
|
+
readonly step: 1;
|
|
83
|
+
}, {
|
|
84
|
+
readonly key: "smoothing";
|
|
85
|
+
readonly label: "Smoothing (0 = raw)";
|
|
86
|
+
readonly type: "number";
|
|
87
|
+
readonly min: 0;
|
|
88
|
+
readonly max: 60;
|
|
89
|
+
readonly step: 1;
|
|
90
|
+
}, {
|
|
91
|
+
readonly key: "leadMs";
|
|
92
|
+
readonly label: "Lead between samples (ms)";
|
|
93
|
+
readonly type: "number";
|
|
94
|
+
readonly min: 0;
|
|
95
|
+
readonly max: 200;
|
|
96
|
+
readonly step: 10;
|
|
97
|
+
}, {
|
|
98
|
+
readonly key: "mirrored";
|
|
99
|
+
readonly label: "Mirror material";
|
|
100
|
+
readonly type: "boolean";
|
|
101
|
+
}, {
|
|
102
|
+
readonly key: "faceIndex";
|
|
103
|
+
readonly label: "Face index";
|
|
104
|
+
readonly type: "number";
|
|
105
|
+
readonly min: 0;
|
|
106
|
+
readonly max: 3;
|
|
107
|
+
readonly step: 1;
|
|
108
|
+
}, {
|
|
109
|
+
readonly key: "holdMs";
|
|
110
|
+
readonly label: "Hold (ms)";
|
|
111
|
+
readonly type: "number";
|
|
112
|
+
readonly min: 0;
|
|
113
|
+
readonly max: 1000;
|
|
114
|
+
readonly step: 10;
|
|
115
|
+
}];
|
|
116
|
+
export declare const resolveIrisEffectSettings: (value?: Partial<IrisEffectSettings>) => IrisEffectSettings;
|
|
117
|
+
export declare const patchIrisEffectSettings: (current: IrisEffectSettings, patch: Partial<IrisEffectSettings>) => IrisEffectSettings;
|
|
@@ -1,2 +1,28 @@
|
|
|
1
1
|
import { LipEffectProps } from './types';
|
|
2
|
-
|
|
2
|
+
import * as THREE from "three";
|
|
3
|
+
/**
|
|
4
|
+
* `outer-and-inner-lips` paints only the lip surface: the mouth interior
|
|
5
|
+
* writes the mouth stencil bit and the lip material skips those pixels.
|
|
6
|
+
* `outer-lips` paints everything inside the outer lip ring, interior included.
|
|
7
|
+
*/
|
|
8
|
+
export declare const shouldWriteMouthStencil: (maskMode: LipEffectProps["maskMode"]) => boolean;
|
|
9
|
+
export declare const getLipEffectMouthStencilMaterial: () => THREE.MeshBasicMaterial;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the lip layers keep the `faceUv` attribute current: the `faceUv`
|
|
12
|
+
* prop when given, else only for a custom (not built-in) `material` or
|
|
13
|
+
* `sharedMaterial`. The built-in material never reads it.
|
|
14
|
+
*/
|
|
15
|
+
export declare const lipEffectWantsFaceUv: ({ faceUv, material, sharedMaterial, }: Pick<LipEffectProps, "faceUv" | "material" | "sharedMaterial">) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Lipstick, gloss, tint, shimmer, glitter or a painted design on the lips of
|
|
18
|
+
* a tracked face, shaded against the person's own skin and light by the
|
|
19
|
+
* makeup core. It draws two `FaceAtlasLayer`s on the face's shared surface:
|
|
20
|
+
* the mouth interior (the stencil cut-out, or painted in `outer-lips` mode)
|
|
21
|
+
* and the lips, at `MAKEUP_RENDER_ORDER.lips`.
|
|
22
|
+
*
|
|
23
|
+
* It works alone (it starts the face model itself; no `FaceTracker`
|
|
24
|
+
* needed), inside a `FaceTracker` (that face), or nested in a `FaceRig` /
|
|
25
|
+
* `FaceWarp3D` / `FaceMorph` (it rides that face). Its design textures load
|
|
26
|
+
* through R3F's `useLoader`, so keep it under a `<Suspense>`, as in alpha.8.
|
|
27
|
+
*/
|
|
28
|
+
export declare const LipEffect: ({ faceIndex, numFaces, mirrored, designTexture, lowerDesignTexture, material, sharedMaterial, faceUv, holdMs, renderOrder, ...settingsInput }: LipEffectProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,10 +1,98 @@
|
|
|
1
|
+
import { LipEffectSettings } from './settings';
|
|
1
2
|
import { LipEffectMaterialContext } from './types';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
import { LipUvBounds } from './uvGuide';
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_SKIN_STATS_DEFINE, LIP_EFFECT_VERTEX_SHADER, } from './shader';
|
|
6
|
+
/** Everything the built-in lip material reads. */
|
|
7
|
+
export type LipEffectMaterialInputs = Pick<LipEffectMaterialContext, "cameraTexture" | "designTexture"> & {
|
|
8
|
+
settings: LipEffectSettings;
|
|
9
|
+
/** Lower-lip design texture, used when `settings.splitLips` is on. */
|
|
10
|
+
lowerDesignTexture?: THREE.Texture | null;
|
|
11
|
+
/** Lip region of the face atlas; defaults to the atlas's own (`getLipUvBounds()`). */
|
|
12
|
+
lipUvBounds?: LipUvBounds;
|
|
13
|
+
/** Skip pixels the mouth-interior stencil marked (see `LipEffect` mask modes). */
|
|
8
14
|
subtractMouth?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* `personLeftSign(mirrored)`: −1 on the mirrored webcam flips the design so
|
|
17
|
+
* it keeps the person's sides. Inside a `LipEffect` the layer's own sign is
|
|
18
|
+
* used at draw time; this is the value outside one. Default 1.
|
|
19
|
+
*/
|
|
20
|
+
personLeftSign?: 1 | -1;
|
|
9
21
|
};
|
|
10
|
-
export
|
|
22
|
+
export type LipEffectMaterialProps = LipEffectMaterialInputs;
|
|
23
|
+
type Uniform<T> = THREE.IUniform<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the shader decodes a design texture's sRGB itself (1) or reads it
|
|
26
|
+
* as linear (0); use the same rule in a custom lip shader. A texture tagged `SRGBColorSpace` is decoded by the GPU, a
|
|
27
|
+
* linear one or a render target's is used as is; anything else (an image,
|
|
28
|
+
* canvas or video loaded without a colour space, as `TextureLoader` leaves
|
|
29
|
+
* it) is taken as authored sRGB. Cached textures are never re-tagged.
|
|
30
|
+
*/
|
|
31
|
+
export declare const lipEffectDesignDecode: (texture: THREE.Texture) => 0 | 1;
|
|
32
|
+
/**
|
|
33
|
+
* One face's per-draw values for a built-in lip material: the layer's
|
|
34
|
+
* uniforms (camera, presence, side sign), the face's skin probe and the
|
|
35
|
+
* sparkle quality of the tier. A shared material (`LipEffects`,
|
|
36
|
+
* `sharedMaterial`) draws several faces; it copies the face of each draw's
|
|
37
|
+
* geometry in `onBeforeRender`.
|
|
38
|
+
*/
|
|
39
|
+
export type LipEffectFaceBinding = {
|
|
40
|
+
layer: {
|
|
41
|
+
uCameraMap: Uniform<THREE.Texture | null>;
|
|
42
|
+
uPresence: Uniform<number>;
|
|
43
|
+
uPersonLeftSign: Uniform<number>;
|
|
44
|
+
};
|
|
45
|
+
skin: {
|
|
46
|
+
uSkinMap: Uniform<THREE.Texture | null>;
|
|
47
|
+
uSkinLod: Uniform<number>;
|
|
48
|
+
uSkinSqrt: Uniform<number>;
|
|
49
|
+
uSkinStats: Uniform<THREE.Texture | null>;
|
|
50
|
+
uSkinStatsPacked: Uniform<number>;
|
|
51
|
+
};
|
|
52
|
+
sparkleQuality: Uniform<number>;
|
|
53
|
+
};
|
|
54
|
+
/** Ties a lip layer geometry to its face (internal: `LipEffect` binds each layer it draws). */
|
|
55
|
+
export declare const bindLipEffectFace: (geometry: THREE.BufferGeometry, binding: LipEffectFaceBinding) => void;
|
|
56
|
+
/** Copies the bound face's per-draw values into a built-in lip material. Returns whether one was bound. */
|
|
57
|
+
export declare const applyLipEffectFaceBinding: (material: THREE.ShaderMaterial, geometry: THREE.BufferGeometry) => boolean;
|
|
58
|
+
/** Whether `material` is a built-in lip material (`createLipEffectMaterial`). */
|
|
59
|
+
export declare const isLipEffectMaterial: (material: unknown) => material is THREE.ShaderMaterial;
|
|
60
|
+
/**
|
|
61
|
+
* Create the built-in lip material as a plain three.js object. Pair it with
|
|
62
|
+
* `updateLipEffectMaterial`, or let `useLipEffectMaterial` own it. One
|
|
63
|
+
* material can be shared by several faces and lip layers: each draw reads
|
|
64
|
+
* its own face (presence, skin probe, side sign).
|
|
65
|
+
*
|
|
66
|
+
* It draws `LipEffect`'s face-atlas layers (`LipEffect` binds each draw to
|
|
67
|
+
* its face; elsewhere it would not fade, shade or flip): opaque pass,
|
|
68
|
+
* premultiplied over (`MAKEUP_BLENDING`), depth-tested without depth writes,
|
|
69
|
+
* and the mouth stencil test on bit `FACE_ATLAS_STENCIL.mouth` only.
|
|
70
|
+
*/
|
|
71
|
+
export declare const createLipEffectMaterial: () => THREE.ShaderMaterial;
|
|
72
|
+
/** Push the current inputs into a material made by `createLipEffectMaterial`. */
|
|
73
|
+
export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, personLeftSign, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
|
|
74
|
+
/**
|
|
75
|
+
* Like `useLipEffectMaterial`, but allocates nothing while `enabled` is false.
|
|
76
|
+
* Lets a component keep a constant hook order without paying for materials it
|
|
77
|
+
* will not render (for example when a shared or custom material is supplied).
|
|
78
|
+
*/
|
|
79
|
+
export declare const useOptionalLipEffectMaterial: (inputs: LipEffectMaterialInputs, enabled: boolean) => THREE.ShaderMaterial | null;
|
|
80
|
+
/**
|
|
81
|
+
* Own one built-in lip material for the component's lifetime and keep it in
|
|
82
|
+
* sync with the inputs on every render. Pass the result to `LipEffect`'s
|
|
83
|
+
* `sharedMaterial` or return it from a `material` factory. It reads its face
|
|
84
|
+
* (presence fade, skin probe, side sign) only where `LipEffect` /
|
|
85
|
+
* `LipEffects` draw it; on another mesh it would draw unfaded, unshaded and
|
|
86
|
+
* unflipped.
|
|
87
|
+
*/
|
|
88
|
+
export declare const useLipEffectMaterial: (inputs: LipEffectMaterialInputs) => THREE.ShaderMaterial;
|
|
89
|
+
/**
|
|
90
|
+
* The built-in lip material as a React node: the design texture (face
|
|
91
|
+
* atlas) or a procedural fill, tinted per lip, with gradient, inner-lip tint
|
|
92
|
+
* and feathered edge, shaded by the makeup core against the person's own
|
|
93
|
+
* skin and light (finish, coverage, `shading`), plus the extra lip
|
|
94
|
+
* highlight. Transparent design pixels leave the skin untouched.
|
|
95
|
+
*
|
|
96
|
+
* Each instance owns its own material; use `useLipEffectMaterial` to share one.
|
|
97
|
+
*/
|
|
98
|
+
export declare const LipEffectMaterial: (props: LipEffectMaterialProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LipEffectFaceConfig, LipEffectsProps } from './types';
|
|
2
|
+
/** The config `LipEffects` uses for one face, or `null` to skip that face. */
|
|
3
|
+
export declare const resolveLipEffectFaceConfig: (faces: LipEffectsProps["faces"], faceIndex: number) => LipEffectFaceConfig | null;
|
|
4
|
+
/**
|
|
5
|
+
* Lip effects for several tracked faces at once. Pass one config for every
|
|
6
|
+
* face, or a function that picks settings, textures or a material per face.
|
|
7
|
+
* With a single config the faces share one built-in material by default:
|
|
8
|
+
* each draw still reads its own face (presence, skin probe, side sign).
|
|
9
|
+
* Without a `FaceTracker` above, the lips start the face model with
|
|
10
|
+
* `maxFaces` faces.
|
|
11
|
+
*/
|
|
12
|
+
export declare const LipEffects: ({ maxFaces, faces, shareMaterial, holdMs, renderOrder, }: LipEffectsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Default draw order of `LipEffect`: `MAKEUP_RENDER_ORDER.lips` (-1.64), the
|
|
3
|
+
* last makeup layer of the opaque face layer, so hands (`HandCutout`), the
|
|
4
|
+
* head occluder, glasses and accessories draw over the lips. alpha.8 drew
|
|
5
|
+
* them transparent at 30.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_LIP_EFFECT_RENDER_ORDER: -1.64;
|
|
8
|
+
/**
|
|
9
|
+
* How far before the lips the mouth layer draws: in `outer-and-inner-lips`
|
|
10
|
+
* mode it writes the mouth stencil bit the lips then test.
|
|
11
|
+
*/
|
|
12
|
+
export declare const LIP_EFFECT_MOUTH_ORDER_OFFSET = 0.001;
|
|
13
|
+
/** Complete defaults: the serializable settings plus the render order. */
|
|
2
14
|
export declare const DEFAULT_LIP_EFFECT: {
|
|
15
|
+
renderOrder: -1.64;
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
preset: import('./settings').LipEffectPreset;
|
|
18
|
+
shade: import('../Makeup').MakeupShadeSetting<"lips">;
|
|
19
|
+
maskMode: import('./types').LipMaskMode;
|
|
20
|
+
colorMode: import('./settings').LipEffectColorMode;
|
|
3
21
|
color: string;
|
|
4
22
|
opacity: number;
|
|
23
|
+
coverage: number;
|
|
24
|
+
finish: import('../Makeup').MakeupFinish;
|
|
25
|
+
shine: number;
|
|
26
|
+
sparkleColor: string;
|
|
27
|
+
sparkleDensity: number;
|
|
28
|
+
sparkleSize: number;
|
|
5
29
|
intensity: number;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
30
|
+
shading: number;
|
|
31
|
+
gloss: number;
|
|
32
|
+
roughness: number;
|
|
33
|
+
highlightColor: string;
|
|
34
|
+
gradientColor: string;
|
|
35
|
+
gradientAmount: number;
|
|
36
|
+
gradientDirection: import('./settings').LipEffectGradientDirection;
|
|
37
|
+
edgeSoftness: number;
|
|
38
|
+
innerLipColor: string;
|
|
39
|
+
innerLipAmount: number;
|
|
40
|
+
innerLipWidth: number;
|
|
41
|
+
splitLips: boolean;
|
|
42
|
+
lowerLipColor: string;
|
|
43
|
+
lowerLipOpacity: number;
|
|
44
|
+
textureScaleX: number;
|
|
45
|
+
textureScaleY: number;
|
|
46
|
+
textureOffsetX: number;
|
|
47
|
+
textureOffsetY: number;
|
|
48
|
+
textureRotation: number;
|
|
49
|
+
textureFlipX: boolean;
|
|
50
|
+
textureFlipY: boolean;
|
|
9
51
|
};
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export { LipEffect } from './LipEffect';
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
2
|
+
export { LipEffects, resolveLipEffectFaceConfig } from './LipEffects';
|
|
3
|
+
export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, lipEffectDesignDecode, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
|
|
4
|
+
export type { LipEffectMaterialInputs, LipEffectMaterialProps } from './LipEffectMaterial';
|
|
5
|
+
export { useLipDesignTextures } from './useLipDesignTextures';
|
|
6
|
+
export type { LipDesignTextureSource } from './useLipDesignTextures';
|
|
7
|
+
export { DEFAULT_LIP_EFFECT, DEFAULT_LIP_EFFECT_RENDER_ORDER } from './defaults';
|
|
8
|
+
export { DEFAULT_LIP_EFFECT_SETTINGS, LIP_EFFECT_COLOR_MODES, LIP_EFFECT_GRADIENT_DIRECTIONS, LIP_EFFECT_PRESETS, LIP_EFFECT_PRESET_KEYS, LIP_EFFECT_SETTINGS_FIELDS, createLipTextureTransform, isLipEffectPresetKey, patchLipEffectSettings, resolveLipEffectSettings, } from './settings';
|
|
9
|
+
export type { LipEffectColorMode, LipEffectGradientDirection, LipEffectPreset, LipEffectPresetKey, LipEffectSettings, } from './settings';
|
|
10
|
+
export { CANONICAL_LIP_UV_BOUNDS, LIP_UV_GUIDE_COLORS, createLipUvGuideDataUrl, createLipUvGuidePngBlob, createLipUvGuideSvg, getLipUvBounds, lipUvToPixel, } from './uvGuide';
|
|
11
|
+
export type { LipUvBounds, LipUvGuideOptions } from './uvGuide';
|
|
12
|
+
export type { LipEffectFaceConfig, LipEffectMaterialContext, LipEffectMaterialResult, LipEffectMaterialSpec, LipEffectProps, LipEffectsProps, LipMaskMode, } from './types';
|