@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,91 @@
|
|
|
1
|
+
import { FacePhotoWarning, FaceTextureError } from '../../face-character/facePhoto';
|
|
2
|
+
import { FaceTexture, FaceTextureSource } from '../../face-character/faceTexture';
|
|
3
|
+
import { FaceSwapSourceLike } from './settings';
|
|
4
|
+
import { FaceTextureStatus } from './useFaceTexture';
|
|
5
|
+
/**
|
|
6
|
+
* The pure part of `<FaceSwap>` and `<FaceMirror>`: their source and status
|
|
7
|
+
* types, which tracked faces they draw on, how many faces they start the
|
|
8
|
+
* face model with, and the draw order of overlapping faces.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Where `<FaceSwap>` takes the face it draws:
|
|
12
|
+
* - `eachOther` (default): two tracked people swap faces (faces 0 and 1);
|
|
13
|
+
* - `photo`: a face found in any photo, baked once;
|
|
14
|
+
* - `canonicalTexture`: a face painted in the face atlas (`FACE_ATLAS_UVS`);
|
|
15
|
+
* - `faceTexture`: a `FaceTexture` you made (`useFaceTexture`,
|
|
16
|
+
* `createFaceTexture`, `useLiveFaceTexture`); it stays yours to dispose.
|
|
17
|
+
*/
|
|
18
|
+
export type FaceSwapSource = {
|
|
19
|
+
kind: "eachOther";
|
|
20
|
+
} | FaceTextureSource | {
|
|
21
|
+
kind: "faceTexture";
|
|
22
|
+
face: FaceTexture;
|
|
23
|
+
};
|
|
24
|
+
/** Where the swap's source is: `waiting` (no source yet, or fewer than two people for `eachOther`), `loading`, `ready`, `error`. */
|
|
25
|
+
export type FaceSwapSourceStatus = "waiting" | "loading" | "ready" | "error";
|
|
26
|
+
/** What `<FaceSwap onStatus>` reports, on change only. */
|
|
27
|
+
export type FaceSwapStatus = {
|
|
28
|
+
/** Drawn now (fading in, shown or fading out). `eachOther`: after both faces were tracked for 5 inference results. */
|
|
29
|
+
active: boolean;
|
|
30
|
+
/** Faces in the newest face result. */
|
|
31
|
+
faces: number;
|
|
32
|
+
source: FaceSwapSourceStatus;
|
|
33
|
+
/** Photo warnings (`turned`, `eyesClosed`, `mouthOpen`, `small`, `severalFaces`); empty otherwise. */
|
|
34
|
+
warnings: readonly FacePhotoWarning[];
|
|
35
|
+
/** Why a photo or painted face failed to load; null otherwise. */
|
|
36
|
+
error: FaceTextureError | null;
|
|
37
|
+
};
|
|
38
|
+
/** The two-person swap, the default source (one object, shared). */
|
|
39
|
+
export declare const FACE_SWAP_EACH_OTHER: FaceSwapSource;
|
|
40
|
+
/** The `resolveFaceSwapSettings` source of a `<FaceSwap>` source (its default preset). */
|
|
41
|
+
export declare const faceSwapSourceLike: (source: FaceSwapSource) => FaceSwapSourceLike;
|
|
42
|
+
/** The source a baked hook loads (`useFaceTexture`): photos and painted faces only. */
|
|
43
|
+
export declare const faceSwapTextureSource: (source: FaceSwapSource) => FaceTextureSource | null;
|
|
44
|
+
/** A `useFaceTexture` status as the swap's source status. */
|
|
45
|
+
export declare const faceSwapSourceStatus: (status: FaceTextureStatus) => FaceSwapSourceStatus;
|
|
46
|
+
export type FaceEffectTargetsInput = {
|
|
47
|
+
/** `<FaceSwap source={{ kind: "eachOther" }}>`: faces 0 and 1, at least two faces. */
|
|
48
|
+
eachOther?: boolean;
|
|
49
|
+
/** Only this tracked face (ignored for `eachOther`). */
|
|
50
|
+
faceIndex?: number;
|
|
51
|
+
/** Faces to start the face model with (default 2 for `eachOther`, else 1). */
|
|
52
|
+
numFaces?: number;
|
|
53
|
+
/** The running face model's face count (`XRModelNodeFaceTracking.numFaces`), when known. */
|
|
54
|
+
modelFaces?: number;
|
|
55
|
+
};
|
|
56
|
+
export type FaceEffectTargets = {
|
|
57
|
+
/** Faces the component starts the face model with. */
|
|
58
|
+
numFaces: number;
|
|
59
|
+
/** The tracked faces it draws on, in index order. */
|
|
60
|
+
targets: number[];
|
|
61
|
+
/** The highest face it needs: a warning names the fix when the model can never track it. */
|
|
62
|
+
checkFace: number;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Which tracked faces a face swap or mirror draws on, and the face count it
|
|
66
|
+
* starts the model with:
|
|
67
|
+
* - `eachOther`: faces 0 and 1, at least two faces;
|
|
68
|
+
* - `faceIndex`: that face only, at least `faceIndex + 1` faces;
|
|
69
|
+
* - otherwise every face the model tracks: `numFaces` (default 1), or more
|
|
70
|
+
* when the model was started with more (a `<FaceTracker numFaces={2}>`).
|
|
71
|
+
*/
|
|
72
|
+
export declare const resolveFaceEffectTargets: ({ eachOther, faceIndex, numFaces, modelFaces, }: FaceEffectTargetsInput) => FaceEffectTargets;
|
|
73
|
+
/**
|
|
74
|
+
* Render-order step between overlapping swapped faces: the larger face draws
|
|
75
|
+
* `rank` steps above `FACE_SURFACE_RENDER_ORDER`, still below the makeup
|
|
76
|
+
* pre-pass (−1.99) for up to nine faces.
|
|
77
|
+
*/
|
|
78
|
+
export declare const FACE_SWAP_RANK_RENDER_STEP = 0.001;
|
|
79
|
+
/** The render order of a swapped face of draw rank `rank` (`rankFacesBySize`: 0 draws first). */
|
|
80
|
+
export declare const faceSwapRenderOrder: (rank: number) => number;
|
|
81
|
+
/** Whether two statuses say the same (so `onStatus` fires on change only). */
|
|
82
|
+
export declare const sameFaceSwapStatus: (a: FaceSwapStatus | null, b: FaceSwapStatus) => boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Settings as a component hands them to its `FaceTextureLayer`s: without
|
|
85
|
+
* `amount` (a live value the component passes itself) and `smoothing` (only
|
|
86
|
+
* an explicit smoothing is a preference for the shared live faces).
|
|
87
|
+
*/
|
|
88
|
+
export declare const faceLayerSettings: <T extends {
|
|
89
|
+
amount: number;
|
|
90
|
+
smoothing: number;
|
|
91
|
+
}>(settings: T) => Omit<T, "amount" | "smoothing">;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { FaceSwap } from './FaceSwap';
|
|
2
|
+
export type { FaceSwapProps } from './FaceSwap';
|
|
3
|
+
export { FaceMirror } from './FaceMirror';
|
|
4
|
+
export type { FaceMirrorProps } from './FaceMirror';
|
|
5
|
+
export { FACE_SWAP_EACH_OTHER, FACE_SWAP_RANK_RENDER_STEP, faceSwapRenderOrder, resolveFaceEffectTargets, } from './faceSwapPlan';
|
|
6
|
+
export type { FaceEffectTargets, FaceEffectTargetsInput, FaceSwapSource, FaceSwapSourceStatus, FaceSwapStatus, } from './faceSwapPlan';
|
|
7
|
+
export { FaceTextureLayer } from './FaceTextureLayer';
|
|
8
|
+
export type { FaceTextureLayerProps } from './FaceTextureLayer';
|
|
9
|
+
export { useFaceTexture } from './useFaceTexture';
|
|
10
|
+
export type { FaceTextureStatus, UseFaceTextureOptions, UseFaceTextureResult, } from './useFaceTexture';
|
|
11
|
+
export { useLiveFaceTexture } from './useLiveFaceTexture';
|
|
12
|
+
export type { UseLiveFaceTextureOptions } from './useLiveFaceTexture';
|
|
13
|
+
export * from './settings';
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings for `<FaceSwap>` and `<FaceMirror>` (FACE-2). Every field is a
|
|
3
|
+
* plain value, so a set can live in URL state or a scene store and drive a
|
|
4
|
+
* settings panel directly. Distances are in cm on the face.
|
|
5
|
+
*/
|
|
6
|
+
/** Where `<FaceSwap>` takes the face it draws. */
|
|
7
|
+
export declare const FACE_SWAP_SOURCE_KINDS: readonly ["eachOther", "photo", "canonicalTexture", "faceTexture"];
|
|
8
|
+
export type FaceSwapSourceKind = (typeof FACE_SWAP_SOURCE_KINDS)[number];
|
|
9
|
+
export declare const FACE_SWAP_PRESET_KEYS: readonly ["natural", "keepColors", "raw"];
|
|
10
|
+
export type FaceSwapPresetKey = (typeof FACE_SWAP_PRESET_KEYS)[number];
|
|
11
|
+
export type FaceSwapPreset = FaceSwapPresetKey | "custom";
|
|
12
|
+
export type FaceSwapSettings = {
|
|
13
|
+
/**
|
|
14
|
+
* The look the colour and edge fields came from. A named preset always
|
|
15
|
+
* means its values: once a field it sets differs from it, this is `"custom"`.
|
|
16
|
+
*/
|
|
17
|
+
preset: FaceSwapPreset;
|
|
18
|
+
/** 0..1: the source takes the target's skin tone, exposure and white balance. */
|
|
19
|
+
matchSkinTone: number;
|
|
20
|
+
/** 0..1: the target's light and shadow fall on the source. */
|
|
21
|
+
matchLighting: number;
|
|
22
|
+
/** 0..1: the band inside the face edge always takes the target's tone and light, so no seam shows. */
|
|
23
|
+
edgeMatch: number;
|
|
24
|
+
/** cm, 0.3..3: width of the fade inside the face edge. */
|
|
25
|
+
edgeSoftness: number;
|
|
26
|
+
/** cm, 0..1.5: pulls the edge inside the tracked outline. */
|
|
27
|
+
edgeInset: number;
|
|
28
|
+
/** The target keeps its own live eyes inside the source's lids. */
|
|
29
|
+
ownEyes: boolean;
|
|
30
|
+
/** The target keeps its own live mouth interior (teeth, tongue). */
|
|
31
|
+
ownMouth: boolean;
|
|
32
|
+
/** cm, 0.1..0.6: soft rim around the kept eyes and mouth. */
|
|
33
|
+
featureSoftness: number;
|
|
34
|
+
/** 0..1: source sharpness; lower softens it to match a soft camera. */
|
|
35
|
+
detail: number;
|
|
36
|
+
/** 0..1: landmark smoothing (shape-preserving One Euro); 0 = raw landmarks. */
|
|
37
|
+
smoothing: number;
|
|
38
|
+
/** 0..1: overall strength. */
|
|
39
|
+
amount: number;
|
|
40
|
+
};
|
|
41
|
+
/** The defaults are the `natural` preset. */
|
|
42
|
+
export declare const DEFAULT_FACE_SWAP_SETTINGS: FaceSwapSettings;
|
|
43
|
+
/**
|
|
44
|
+
* Built-in looks. A preset sets only the fields it lists; smoothing, inset,
|
|
45
|
+
* feature softness and amount are never touched by a preset.
|
|
46
|
+
* - `natural`: photos and two people. The source takes the target's skin tone and light.
|
|
47
|
+
* - `keepColors`: painted or stylised faces. The paint keeps its colours and takes the room's light.
|
|
48
|
+
* - `raw`: as captured, with a short fade: a mask look, or for debugging.
|
|
49
|
+
*/
|
|
50
|
+
export declare const FACE_SWAP_PRESETS: {
|
|
51
|
+
readonly natural: {
|
|
52
|
+
readonly matchSkinTone: 1;
|
|
53
|
+
readonly matchLighting: 1;
|
|
54
|
+
readonly edgeMatch: 1;
|
|
55
|
+
readonly edgeSoftness: 1.2;
|
|
56
|
+
readonly ownEyes: true;
|
|
57
|
+
readonly ownMouth: true;
|
|
58
|
+
readonly detail: 1;
|
|
59
|
+
};
|
|
60
|
+
readonly keepColors: {
|
|
61
|
+
readonly matchSkinTone: 0;
|
|
62
|
+
readonly matchLighting: 0.7;
|
|
63
|
+
readonly edgeMatch: 1;
|
|
64
|
+
readonly edgeSoftness: 1;
|
|
65
|
+
};
|
|
66
|
+
readonly raw: {
|
|
67
|
+
readonly matchSkinTone: 0;
|
|
68
|
+
readonly matchLighting: 0;
|
|
69
|
+
readonly edgeMatch: 0;
|
|
70
|
+
readonly edgeSoftness: 0.4;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export declare const isFaceSwapPresetKey: (value: unknown) => value is FaceSwapPresetKey;
|
|
74
|
+
/** What `defaultFaceSwapPreset` reads of a `<FaceSwap>` source. */
|
|
75
|
+
export type FaceSwapSourceLike = {
|
|
76
|
+
kind: FaceSwapSourceKind;
|
|
77
|
+
face?: {
|
|
78
|
+
kind: string;
|
|
79
|
+
} | null;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The preset a source starts from when none is given: painted faces
|
|
83
|
+
* (`canonicalTexture`, or a `faceTexture` whose face is `"canonical"`) keep
|
|
84
|
+
* their colours; photos and two people use `natural`.
|
|
85
|
+
*/
|
|
86
|
+
export declare const defaultFaceSwapPreset: (source?: FaceSwapSourceLike | null) => FaceSwapPresetKey;
|
|
87
|
+
/** A painted face: `canonicalTexture`, or a `faceTexture` whose face is `"canonical"`. */
|
|
88
|
+
export declare const isPaintedFaceSwapSource: (source?: FaceSwapSourceLike | null) => boolean;
|
|
89
|
+
/**
|
|
90
|
+
* `featureSoftness` (cm) of a painted face when none is given: the paint's
|
|
91
|
+
* liner and lip line hold right up to the wearer's own eyes and mouth (at
|
|
92
|
+
* the 0.25 cm default, a stripe of the wearer's own lips shows through a
|
|
93
|
+
* painted mouth).
|
|
94
|
+
*/
|
|
95
|
+
export declare const FACE_SWAP_PAINTED_FEATURE_SOFTNESS = 0.1;
|
|
96
|
+
/** Valid ranges of the numeric fields; `resolveFaceSwapSettings` clamps to them. */
|
|
97
|
+
export declare const FACE_SWAP_SETTINGS_RANGES: {
|
|
98
|
+
readonly matchSkinTone: readonly [0, 1];
|
|
99
|
+
readonly matchLighting: readonly [0, 1];
|
|
100
|
+
readonly edgeMatch: readonly [0, 1];
|
|
101
|
+
readonly edgeSoftness: readonly [0.3, 3];
|
|
102
|
+
readonly edgeInset: readonly [0, 1.5];
|
|
103
|
+
readonly featureSoftness: readonly [0.1, 0.6];
|
|
104
|
+
readonly detail: readonly [0, 1];
|
|
105
|
+
readonly smoothing: readonly [0, 1];
|
|
106
|
+
readonly amount: readonly [0, 1];
|
|
107
|
+
};
|
|
108
|
+
/** True when every field the preset sets has the preset's value. */
|
|
109
|
+
export declare const matchesFaceSwapPreset: (settings: FaceSwapSettings, preset: FaceSwapPresetKey) => boolean;
|
|
110
|
+
export type ResolveFaceSwapSettingsOptions = {
|
|
111
|
+
/**
|
|
112
|
+
* The source the settings are for. Without a `preset` in the input, its
|
|
113
|
+
* default is used: `keepColors` for painted faces (`canonicalTexture`, or a
|
|
114
|
+
* `faceTexture` on the canonical face), `natural` for photos and two people
|
|
115
|
+
* (see `defaultFaceSwapPreset`). No source: `natural`. A painted face also
|
|
116
|
+
* defaults `featureSoftness` to `FACE_SWAP_PAINTED_FEATURE_SOFTNESS` (0.1
|
|
117
|
+
* cm) whatever the preset, since no preset sets it.
|
|
118
|
+
*/
|
|
119
|
+
source?: FaceSwapSourceLike | null;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Resolve partial settings (e.g. `<FaceSwap>` props) to a complete, clamped
|
|
123
|
+
* set: the defaults, then the preset, then every explicit value. Without a
|
|
124
|
+
* `preset` in the input, the source's default preset applies (pass
|
|
125
|
+
* `{ source }`); `"custom"` applies no preset. When an explicit value moves a
|
|
126
|
+
* field the preset sets away from it, the result is `"custom"`, so a named
|
|
127
|
+
* preset always means its values.
|
|
128
|
+
*/
|
|
129
|
+
export declare const resolveFaceSwapSettings: (input?: Partial<FaceSwapSettings>, options?: ResolveFaceSwapSettingsOptions) => FaceSwapSettings;
|
|
130
|
+
/**
|
|
131
|
+
* Apply an edit (a sparse patch, or a panel's whole object). The result
|
|
132
|
+
* keeps the rule of `resolveFaceSwapSettings`: a named preset always means
|
|
133
|
+
* its values.
|
|
134
|
+
* - Choosing a preset applies it. Fields the patch actually changes win
|
|
135
|
+
* over it; if one of them is a field the preset sets, the result is
|
|
136
|
+
* `"custom"`. Choosing a preset that differs from the current values
|
|
137
|
+
* (e.g. the current one while `"custom"` would differ) re-applies it.
|
|
138
|
+
* - Editing a field the current preset sets, away from the preset's value,
|
|
139
|
+
* sets `"custom"`. Fields no preset sets (smoothing, inset, feature
|
|
140
|
+
* softness, amount) keep the preset's name.
|
|
141
|
+
* - A panel emit that changes nothing returns the same values.
|
|
142
|
+
*/
|
|
143
|
+
export declare const patchFaceSwapSettings: (current: FaceSwapSettings, patch: Partial<FaceSwapSettings>) => FaceSwapSettings;
|
|
144
|
+
export declare const FACE_SWAP_SETTINGS_FIELDS: [{
|
|
145
|
+
readonly key: "preset";
|
|
146
|
+
readonly label: "Preset";
|
|
147
|
+
readonly type: "select";
|
|
148
|
+
readonly options: [{
|
|
149
|
+
readonly label: "Custom";
|
|
150
|
+
readonly value: "custom";
|
|
151
|
+
}, ...{
|
|
152
|
+
label: string;
|
|
153
|
+
value: "natural" | "keepColors" | "raw";
|
|
154
|
+
}[]];
|
|
155
|
+
}, {
|
|
156
|
+
readonly min: 0;
|
|
157
|
+
readonly max: 1;
|
|
158
|
+
readonly step: 0.01;
|
|
159
|
+
readonly key: "matchSkinTone";
|
|
160
|
+
readonly label: "Match skin tone";
|
|
161
|
+
readonly type: "number";
|
|
162
|
+
}, {
|
|
163
|
+
readonly min: 0;
|
|
164
|
+
readonly max: 1;
|
|
165
|
+
readonly step: 0.01;
|
|
166
|
+
readonly key: "matchLighting";
|
|
167
|
+
readonly label: "Match lighting";
|
|
168
|
+
readonly type: "number";
|
|
169
|
+
}, {
|
|
170
|
+
readonly min: 0;
|
|
171
|
+
readonly max: 1;
|
|
172
|
+
readonly step: 0.01;
|
|
173
|
+
readonly key: "edgeMatch";
|
|
174
|
+
readonly label: "Match at the edge";
|
|
175
|
+
readonly type: "number";
|
|
176
|
+
}, {
|
|
177
|
+
readonly min: 0 | 0.3 | 0.1;
|
|
178
|
+
readonly max: 1 | 3 | 0.6 | 1.5;
|
|
179
|
+
readonly step: number;
|
|
180
|
+
readonly key: "edgeSoftness";
|
|
181
|
+
readonly label: "Edge softness (cm)";
|
|
182
|
+
readonly type: "number";
|
|
183
|
+
}, {
|
|
184
|
+
readonly min: 0 | 0.3 | 0.1;
|
|
185
|
+
readonly max: 1 | 3 | 0.6 | 1.5;
|
|
186
|
+
readonly step: number;
|
|
187
|
+
readonly key: "edgeInset";
|
|
188
|
+
readonly label: "Edge inset (cm)";
|
|
189
|
+
readonly type: "number";
|
|
190
|
+
}, {
|
|
191
|
+
readonly key: "ownEyes";
|
|
192
|
+
readonly label: "Keep own eyes";
|
|
193
|
+
readonly type: "boolean";
|
|
194
|
+
}, {
|
|
195
|
+
readonly key: "ownMouth";
|
|
196
|
+
readonly label: "Keep own mouth";
|
|
197
|
+
readonly type: "boolean";
|
|
198
|
+
}, {
|
|
199
|
+
readonly min: 0 | 0.3 | 0.1;
|
|
200
|
+
readonly max: 1 | 3 | 0.6 | 1.5;
|
|
201
|
+
readonly step: number;
|
|
202
|
+
readonly key: "featureSoftness";
|
|
203
|
+
readonly label: "Eye and mouth rim (cm)";
|
|
204
|
+
readonly type: "number";
|
|
205
|
+
}, {
|
|
206
|
+
readonly min: 0;
|
|
207
|
+
readonly max: 1;
|
|
208
|
+
readonly step: 0.01;
|
|
209
|
+
readonly key: "detail";
|
|
210
|
+
readonly label: "Detail";
|
|
211
|
+
readonly type: "number";
|
|
212
|
+
}, {
|
|
213
|
+
readonly min: 0;
|
|
214
|
+
readonly max: 1;
|
|
215
|
+
readonly step: 0.01;
|
|
216
|
+
readonly key: "smoothing";
|
|
217
|
+
readonly label: "Smoothing";
|
|
218
|
+
readonly type: "number";
|
|
219
|
+
}, {
|
|
220
|
+
readonly min: 0;
|
|
221
|
+
readonly max: 1;
|
|
222
|
+
readonly step: 0.01;
|
|
223
|
+
readonly key: "amount";
|
|
224
|
+
readonly label: "Amount";
|
|
225
|
+
readonly type: "number";
|
|
226
|
+
}];
|
|
227
|
+
/**
|
|
228
|
+
* `<FaceMirror>` variants. Left and right are the person's OWN sides on
|
|
229
|
+
* every feed (mirrored webcam, rear camera, video).
|
|
230
|
+
* - `leftLeft`: both halves are the person's own left half.
|
|
231
|
+
* - `rightRight`: both halves are the person's own right half.
|
|
232
|
+
* - `flip`: left and right swapped; a left wink shows on the right.
|
|
233
|
+
* - `upsideDown`: each eye and the mouth flipped top to bottom in place (the
|
|
234
|
+
* Thatcher effect); the rest of the face is unchanged.
|
|
235
|
+
*/
|
|
236
|
+
export declare const FACE_MIRROR_VARIANTS: readonly ["leftLeft", "rightRight", "flip", "upsideDown"];
|
|
237
|
+
export type FaceMirrorVariant = (typeof FACE_MIRROR_VARIANTS)[number];
|
|
238
|
+
/** Short labels for chips. */
|
|
239
|
+
export declare const FACE_MIRROR_VARIANT_LABELS: Record<FaceMirrorVariant, string>;
|
|
240
|
+
export declare const isFaceMirrorVariant: (value: unknown) => value is FaceMirrorVariant;
|
|
241
|
+
export type FaceMirrorSettings = {
|
|
242
|
+
variant: FaceMirrorVariant;
|
|
243
|
+
/** 0..1: the real side light stays where it falls; 0 = raw mirrored pixels. */
|
|
244
|
+
matchLighting: number;
|
|
245
|
+
/** cm, 0.3..3: width of the fade inside the face edge. */
|
|
246
|
+
edgeSoftness: number;
|
|
247
|
+
/** 0..1: landmark smoothing (shape-preserving One Euro); 0 = raw landmarks. */
|
|
248
|
+
smoothing: number;
|
|
249
|
+
/** 0..1: overall strength. */
|
|
250
|
+
amount: number;
|
|
251
|
+
};
|
|
252
|
+
export declare const DEFAULT_FACE_MIRROR_SETTINGS: FaceMirrorSettings;
|
|
253
|
+
/** Resolve partial settings over the defaults, clamped to the same ranges as `<FaceSwap>`. */
|
|
254
|
+
export declare const resolveFaceMirrorSettings: (input?: Partial<FaceMirrorSettings>) => FaceMirrorSettings;
|
|
255
|
+
export declare const patchFaceMirrorSettings: (current: FaceMirrorSettings, patch: Partial<FaceMirrorSettings>) => FaceMirrorSettings;
|
|
256
|
+
export declare const FACE_MIRROR_SETTINGS_FIELDS: [{
|
|
257
|
+
readonly key: "variant";
|
|
258
|
+
readonly label: "Variant";
|
|
259
|
+
readonly type: "select";
|
|
260
|
+
readonly options: {
|
|
261
|
+
label: string;
|
|
262
|
+
value: "flip" | "leftLeft" | "rightRight" | "upsideDown";
|
|
263
|
+
}[];
|
|
264
|
+
}, {
|
|
265
|
+
readonly min: 0;
|
|
266
|
+
readonly max: 1;
|
|
267
|
+
readonly step: 0.01;
|
|
268
|
+
readonly key: "matchLighting";
|
|
269
|
+
readonly label: "Match lighting";
|
|
270
|
+
readonly type: "number";
|
|
271
|
+
}, {
|
|
272
|
+
readonly min: 0 | 0.3 | 0.1;
|
|
273
|
+
readonly max: 1 | 3 | 0.6 | 1.5;
|
|
274
|
+
readonly step: number;
|
|
275
|
+
readonly key: "edgeSoftness";
|
|
276
|
+
readonly label: "Edge softness (cm)";
|
|
277
|
+
readonly type: "number";
|
|
278
|
+
}, {
|
|
279
|
+
readonly min: 0;
|
|
280
|
+
readonly max: 1;
|
|
281
|
+
readonly step: 0.01;
|
|
282
|
+
readonly key: "smoothing";
|
|
283
|
+
readonly label: "Smoothing";
|
|
284
|
+
readonly type: "number";
|
|
285
|
+
}, {
|
|
286
|
+
readonly min: 0;
|
|
287
|
+
readonly max: 1;
|
|
288
|
+
readonly step: 0.01;
|
|
289
|
+
readonly key: "amount";
|
|
290
|
+
readonly label: "Amount";
|
|
291
|
+
readonly type: "number";
|
|
292
|
+
}];
|
|
293
|
+
/**
|
|
294
|
+
* The transfer settings a mirror variant draws with. The face is its own
|
|
295
|
+
* source, so the skin tone always matches; `matchLighting` puts the real
|
|
296
|
+
* side light back everywhere, the edge band included, so 0 shows the raw
|
|
297
|
+
* mirrored pixels. The source's eyes and mouth are always drawn (they are
|
|
298
|
+
* part of every variant: a left wink in `flip` shows on the right).
|
|
299
|
+
*/
|
|
300
|
+
export declare const faceMirrorTransferSettings: (mirror: FaceMirrorSettings) => Omit<FaceSwapSettings, "preset">;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FacePhotoWarning, FaceTextureError } from '../../face-character/facePhoto';
|
|
2
|
+
import { FaceTexture, FaceTextureSource } from '../../face-character/faceTexture';
|
|
3
|
+
import { FaceTextureResolution } from '../../face-character/faceTextureBaker';
|
|
4
|
+
export type UseFaceTextureOptions = {
|
|
5
|
+
/** The map's size (px, square). Default 1024. */
|
|
6
|
+
resolution?: FaceTextureResolution;
|
|
7
|
+
};
|
|
8
|
+
export type FaceTextureStatus = "idle" | "loading" | "ready" | "error";
|
|
9
|
+
export type UseFaceTextureResult = {
|
|
10
|
+
/** The baked face, or null while idle, loading or failed. */
|
|
11
|
+
face: FaceTexture | null;
|
|
12
|
+
status: FaceTextureStatus;
|
|
13
|
+
/** Photo warnings (`turned`, `eyesClosed`, `mouthOpen`, `small`, `severalFaces`); empty otherwise. */
|
|
14
|
+
warnings: readonly FacePhotoWarning[];
|
|
15
|
+
error: FaceTextureError | null;
|
|
16
|
+
/** Faces found in the photo (1 for a painted face, 0 before it is baked). */
|
|
17
|
+
faceCount: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A photo or a painted face, baked once into a `FaceTexture`
|
|
21
|
+
* (`createFaceTexture`): pass the same source object shape as `<FaceSwap
|
|
22
|
+
* source>`. It is keyed by the URL or by the identity of the File, image,
|
|
23
|
+
* canvas, bitmap or texture (plus its options), so an inline source object
|
|
24
|
+
* re-made on every render bakes once. A new source aborts the old load;
|
|
25
|
+
* the baked face is disposed when the source changes or on unmount. Photos
|
|
26
|
+
* stay in memory only.
|
|
27
|
+
*
|
|
28
|
+
* Needs the renderer: call it inside `<XRScene>`.
|
|
29
|
+
*
|
|
30
|
+
* ```tsx
|
|
31
|
+
* const photo = useFaceTexture(file ? { kind: "photo", src: file } : null);
|
|
32
|
+
* <FaceTextureLayer face={photo.face} />
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const useFaceTexture: (source: FaceTextureSource | null, options?: UseFaceTextureOptions) => UseFaceTextureResult;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { FaceSwapQuality, LiveFaceEntry } from '../../face-character/liveFaceRegistry';
|
|
2
|
+
/**
|
|
3
|
+
* The live-face registry from React (internal to the face swap components):
|
|
4
|
+
* one shared `LiveFaceEntry` per renderer and face, refcounted by every
|
|
5
|
+
* consumer, stepped once per frame at `LIVE_FACE_FRAME_PRIORITY`.
|
|
6
|
+
*/
|
|
7
|
+
export type UseLiveFaceOptions = {
|
|
8
|
+
/** The face map (the camera face in the face atlas) is wanted, not only the statistics. Default false. */
|
|
9
|
+
map?: boolean;
|
|
10
|
+
/** Fill the hidden half of a turned face from the other side when the map is made (high and medium tiers). Default false. */
|
|
11
|
+
mirrorFill?: boolean;
|
|
12
|
+
/** `"auto"` (default) follows the session's quality tier. The best any consumer of the face asks for wins. */
|
|
13
|
+
quality?: FaceSwapQuality;
|
|
14
|
+
/** Landmark smoothing, 0..1 (the most any consumer of the face asks for wins). Default: no preference (0.35). */
|
|
15
|
+
smoothing?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Faces to start the face model with when this starts it (no `FaceTracker`
|
|
18
|
+
* or face rig above): at least `faceIndex + 1`. The first component to
|
|
19
|
+
* start the model sets its count.
|
|
20
|
+
*/
|
|
21
|
+
numFaces?: number;
|
|
22
|
+
/** `false` lets go of the face (the last consumer frees it). Default true. */
|
|
23
|
+
enabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* `false`: only reads the face model, never starts it (`FaceTextureLayer`
|
|
26
|
+
* holds its start back for one commit). Internal; default true.
|
|
27
|
+
*/
|
|
28
|
+
startModel?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The shared live face `faceIndex` (null on the first render, while
|
|
32
|
+
* disabled, or outside a canvas). Starts the face model when nothing above
|
|
33
|
+
* does (`useFaceModelAcquisition`), and warns once when the model was
|
|
34
|
+
* started with too few faces to ever report `faceIndex`. Read the entry's
|
|
35
|
+
* per-frame state (`face`, `liveMap`, `quality`, `track`) inside `useFrame`
|
|
36
|
+
* at a priority after `LIVE_FACE_FRAME_PRIORITY`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const useLiveFace: (faceIndex: number, options?: UseLiveFaceOptions) => LiveFaceEntry | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { FaceTexture } from '../../face-character/faceTexture';
|
|
2
|
+
import { UseLiveFaceOptions } from './useLiveFace';
|
|
3
|
+
export type UseLiveFaceTextureOptions = Omit<UseLiveFaceOptions, "map" | "startModel"> & {
|
|
4
|
+
/** `false` keeps only the skin statistics (`low`, `mean`; `map` stays null). Default true. */
|
|
5
|
+
map?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* A tracked face as a `FaceTexture`: the camera face unwrapped into the face
|
|
9
|
+
* atlas on every new landmark result (never between results, so it cannot
|
|
10
|
+
* swim) from smoothed landmarks, plus its skin statistics. Shared per
|
|
11
|
+
* renderer and face index and refcounted: every component asking for the
|
|
12
|
+
* same face shares one unwrap and one set of statistics. The returned object
|
|
13
|
+
* is stable and updated in place (`version` increases; `ready` once the map
|
|
14
|
+
* and the statistics hold the face), so pass it straight to
|
|
15
|
+
* `<FaceTextureLayer face>` without re-rendering. `null` until it is made.
|
|
16
|
+
*
|
|
17
|
+
* Needs the renderer (inside `<XRScene>`); starts the face model when no
|
|
18
|
+
* `FaceTracker` above does (`numFaces`, at least `faceIndex + 1`). The
|
|
19
|
+
* first component to start the model sets its face count: a
|
|
20
|
+
* `FaceTextureLayer` below this hook waits a commit so this one starts it,
|
|
21
|
+
* but anything else that may start it first needs `numFaces` too (a
|
|
22
|
+
* console warning names the fix when face `faceIndex` can never be
|
|
23
|
+
* tracked). The face keeps its last frame while it is not tracked; the
|
|
24
|
+
* layer fades out 250 ms after it leaves.
|
|
25
|
+
*
|
|
26
|
+
* ```tsx
|
|
27
|
+
* const other = useLiveFaceTexture(1, { mirrorFill: true });
|
|
28
|
+
* <FaceTextureLayer face={other} faceIndex={0} numFaces={2} />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare const useLiveFaceTexture: (faceIndex: number, options?: UseLiveFaceTextureOptions) => FaceTexture | null;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { LiveValue } from '../../face-character/liveValue';
|
|
3
|
+
import { FaceRigProps } from '../FaceCharacter/FaceRig';
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
export type FaceWarp3DProps = Omit<FaceRigProps, "children"> & {
|
|
6
|
+
/**
|
|
7
|
+
* The blend shapes: a model in the canonical head frame (cm) whose meshes
|
|
8
|
+
* carry shape keys (glTF morph targets). Sculpted on the canonical face
|
|
9
|
+
* topology they apply exactly; any other mesh is transferred through its
|
|
10
|
+
* base surface; a model without shape keys gives one key, `"shape"` (your
|
|
11
|
+
* face takes its shape). `null`: no deformation (the face mesh only).
|
|
12
|
+
*/
|
|
13
|
+
deformation?: THREE.Object3D | null;
|
|
14
|
+
/**
|
|
15
|
+
* Weight per shape key, by name (a key left out is at 1) — or a ref to such
|
|
16
|
+
* a record, read every frame (drive keys from `useFrame` or a
|
|
17
|
+
* `FaceExpressionController` `set` output without re-rendering).
|
|
18
|
+
*/
|
|
19
|
+
weights?: LiveValue<Record<string, number>>;
|
|
20
|
+
/** Overall strength, multiplying every key (or a ref). Default 1. */
|
|
21
|
+
weight?: LiveValue<number>;
|
|
22
|
+
/** Expression strength (or a ref): 1 (default) is the face's own, 0 freezes it, > 1 exaggerates. */
|
|
23
|
+
expression?: LiveValue<number>;
|
|
24
|
+
/** Subdivisions of the face mesh (2 ≈ 7 500 vertices: smooth sculpts). Default 2. */
|
|
25
|
+
subdivisions?: number;
|
|
26
|
+
/** Opacity of the warped face. Default 1. */
|
|
27
|
+
opacity?: number;
|
|
28
|
+
/** The shape keys found on `deformation` (for sliders), once bound. At most `FACE_WARP_MAX_KEYS` apply. */
|
|
29
|
+
onKeys?: (names: string[]) => void;
|
|
30
|
+
/** More content in the canonical head frame. A `PinToFaceMesh` here rides the warped face. */
|
|
31
|
+
children?: ReactNode;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* The live face, reshaped by blend shapes and wearing the camera image itself
|
|
35
|
+
* (Spark AR's face mesh deformation): bigger eyes, a longer nose, a chubby
|
|
36
|
+
* face — the person's real pixels move, their own expression carries on
|
|
37
|
+
* underneath. Every pixel samples the camera where its undeformed point is on
|
|
38
|
+
* screen, so weight 0 is the camera image untouched and the edge of the face
|
|
39
|
+
* blends into it. The blend shapes are shape keys on a model (`deformation`):
|
|
40
|
+
* sculpted on the canonical face topology, transferred from any other mesh, or
|
|
41
|
+
* a model's own shape (`"shape"`). Mount inside a `FaceTracker` (it runs its
|
|
42
|
+
* own `FaceRig`) or a `FaceRig`.
|
|
43
|
+
*
|
|
44
|
+
* ```tsx
|
|
45
|
+
* <FaceTracker>
|
|
46
|
+
* <FaceWarp3D deformation={gltf.scene} weights={{ bigEyes: 0.8 }} />
|
|
47
|
+
* </FaceTracker>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare const FaceWarp3D: ({ faceIndex, smoothing, expressionSmoothing, holdMs, neutral, neutralMs, leadMs, neutralKey, onTrackingChange, ...props }: FaceWarp3DProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { FaceWarp3DHead, type FaceWarp3DHeadProps } from './FaceWarp3DHead';
|
|
1
|
+
export { FaceWarp3D } from './FaceWarp3D';
|
|
2
|
+
export type { FaceWarp3DProps } from './FaceWarp3D';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { FacelessStyle } from '../../face-character/faceless';
|
|
2
|
+
import { FaceTexture } from '../../face-character/faceTexture';
|
|
3
|
+
import { FaceSwapQuality } from '../../face-character/liveFaceRegistry';
|
|
4
|
+
import { LiveValue } from '../../face-character/liveValue';
|
|
5
|
+
/**
|
|
6
|
+
* After the live faces update (−0.75), before the face texture layers draw
|
|
7
|
+
* them (−0.5): each faceless texture is made from this frame's live face.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FACELESS_FRAME_PRIORITY = -0.6;
|
|
10
|
+
/** Faces it erases at most. */
|
|
11
|
+
export declare const FACELESS_MAX_FACES = 4;
|
|
12
|
+
export type UseFacelessTextureOptions = {
|
|
13
|
+
style?: FacelessStyle;
|
|
14
|
+
/** Grain on the erased skin, 0..1. Default 1 (matched to the skin's own detail). */
|
|
15
|
+
grain?: number;
|
|
16
|
+
/** Faces to start the face model with when this starts it. */
|
|
17
|
+
numFaces?: number;
|
|
18
|
+
/** Landmark smoothing, 0..1 (the live face's). */
|
|
19
|
+
smoothing?: number;
|
|
20
|
+
quality?: FaceSwapQuality;
|
|
21
|
+
/** `false` lets go of the face. Default true. */
|
|
22
|
+
enabled?: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Face `faceIndex` as a faceless `FaceTexture`: its live face texture with
|
|
26
|
+
* the eyes, brows, nose and mouth erased (`style` `"real"`: the person's own
|
|
27
|
+
* skin around them, with grain) or the whole face evened (`"smooth"`). Stable
|
|
28
|
+
* and updated in place; pass it to `FaceTextureLayer` on the same face with
|
|
29
|
+
* `ownEyes` and `ownMouth` off (`<Faceless>` does). `ready` once made
|
|
30
|
+
* (null before mount and while not `enabled`).
|
|
31
|
+
*/
|
|
32
|
+
export declare const useFacelessTexture: (faceIndex: number, { style, grain, numFaces, smoothing, quality, enabled, }?: UseFacelessTextureOptions) => FaceTexture | null;
|
|
33
|
+
export type FacelessProps = UseFacelessTextureOptions & {
|
|
34
|
+
/** 0 the real face … 1 faceless, or a ref read every frame. Default 1. */
|
|
35
|
+
amount?: LiveValue<number>;
|
|
36
|
+
/** Only this face. Default: the enclosing `FaceTracker`'s face, else every tracked face. */
|
|
37
|
+
faceIndex?: number;
|
|
38
|
+
/** Default the face layer (`FACE_SURFACE_RENDER_ORDER`, −2). */
|
|
39
|
+
renderOrder?: number;
|
|
40
|
+
/** False: nothing drawn, no face model. Default true. */
|
|
41
|
+
active?: boolean;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Faceless (experimental): erases the eyes, brows, nose and mouth of every
|
|
45
|
+
* tracked face (or `faceIndex`) with the person's own skin, keeping their
|
|
46
|
+
* light and colour (`style` `"real"`), or evens the whole face (`"smooth"`,
|
|
47
|
+
* a mannequin). It is drawn as the face (render order −2): makeup, designs,
|
|
48
|
+
* glasses and hats draw over it, and a liquify warps it. Blinks and an open
|
|
49
|
+
* mouth never show. Starts the face model itself.
|
|
50
|
+
*/
|
|
51
|
+
export declare const Faceless: ({ style, grain, amount, faceIndex, numFaces: numFacesProp, smoothing, quality, renderOrder, active, }: FacelessProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { UseGestureOptions } from '../../hooks/useGesture';
|
|
2
|
+
import { GestureRef } from '../../gestures/definitions';
|
|
3
|
+
export type GestureListenerProps = UseGestureOptions & {
|
|
4
|
+
/** A built-in gesture name (`"pinch"`, `"headNod"`, …) or a `defineGesture` definition. */
|
|
5
|
+
gesture: GestureRef;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Declarative `useGesture`: mount it anywhere inside the scene and act on
|
|
9
|
+
* `onBegin` / `onEnd`. Renders nothing.
|
|
10
|
+
*/
|
|
11
|
+
export declare const GestureListener: ({ gesture, ...options }: GestureListenerProps) => null;
|