@vincentt-xr/sdk 2.0.0-alpha.8 → 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 +4643 -170
- 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/gltfLoader.d.ts +16 -0
- package/dist/assets/loaders.d.ts +16 -1
- 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 +11 -6
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -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 +10 -2
- 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 +5 -3
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
- package/dist/components/FaceMesh/index.d.ts +1 -1
- 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/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/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/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/LipEffect/LipEffect.d.ts +22 -2
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
- package/dist/components/LipEffect/LipEffects.d.ts +5 -2
- package/dist/components/LipEffect/defaults.d.ts +21 -2
- package/dist/components/LipEffect/index.d.ts +1 -1
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +117 -13
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +82 -10
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
- package/dist/components/LipEffect/uvGuide.d.ts +31 -16
- 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/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/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/config/index.d.ts +0 -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/index.d.ts +2 -0
- package/dist/coordinates/side.d.ts +40 -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/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/index.d.ts +4 -3
- 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 +3 -2
- 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/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 +3 -2
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2250 -2472
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +3 -2
- package/dist/entries/face-effects.d.ts +114 -8
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +28 -1
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/tracking.d.ts +37 -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 +2252 -83
- package/dist/face-effects.js +14234 -1231
- 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 +15 -2
- package/dist/gestures/index.d.ts +1 -1
- package/dist/gestures/measures.d.ts +21 -8
- 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 +8 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- 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/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
- 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 +7 -5
- package/dist/iris/types.d.ts +6 -4
- package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
- 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 +666 -602
- package/dist/main.cjs +1 -1
- package/dist/main.js +866 -1182
- package/dist/models/Body/index.d.ts +2 -0
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +3 -11
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Segmentation/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.cjs +1 -1
- package/dist/product.js +29 -29
- package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-O4KmaMl9.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/types.d.ts +6 -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-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
- 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/tracking.cjs +10 -1
- package/dist/tracking.js +1002 -855
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/nodes.d.ts +20 -1
- package/dist/types/segmentation.d.ts +5 -0
- 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-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
- package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +17 -0
- 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/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +1 -1
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +1 -1
- package/docs/api/coordinate-spaces.mdx +7 -4
- package/docs/api/cross-camera.mdx +3 -2
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- 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 +3 -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 +4 -7
- 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 +68 -32
- 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 +6 -1
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +24 -19
- 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 +4 -1
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +1 -1
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +5 -2
- package/docs/api/segmentation-overlay.mdx +1 -1
- package/docs/docs.json +29 -1
- package/docs/examples/lip-shaders.mdx +82 -33
- 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 +178 -102
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -1
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +11 -1
- package/dist/DebuggerUI-C-ldiozL.js +0 -269
- package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
- package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
- package/dist/FaceRetouch-C7h7x9kd.js +0 -683
- package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
- package/dist/GLTFLoader-C5q63sKO.js +0 -1633
- package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
- package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
- 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-CO0sd4JQ.cjs +0 -1
- package/dist/contexts-FzlnnMYD.js +0 -669
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-BkZfaQs-.js +0 -118
- package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
- package/dist/index--RgGzZ6X.cjs +0 -47
- package/dist/index-CHVbH0hz.js +0 -214
- package/dist/index-CeVkgsag.cjs +0 -1
- package/dist/index-CnGox6Xr.js +0 -3054
- package/dist/index-DKBAh6hV.cjs +0 -1
- package/dist/index-DsZwTfG0.cjs +0 -1
- package/dist/index-Dw6tj2Mi.js +0 -144
- package/dist/index-OCPjOaeP.cjs +0 -1
- package/dist/index-s9pF4zkG.js +0 -2053
- package/dist/internal-BYza1h8_.cjs +0 -1
- package/dist/measures-9dQPdw96.js +0 -154
- package/dist/measures-KfJzpvod.cjs +0 -1
- package/dist/providers-YNwkmNeK.cjs +0 -62
- package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
- package/dist/screenTransform-BenfCtZt.js +0 -44
- package/dist/screenTransform-BiXdpVf0.cjs +0 -1
- package/dist/segmentation-9PhSvc-R.cjs +0 -1
- package/dist/segmentation-CeOTKemr.js +0 -5
- package/dist/selectors-C5G1PMYL.js +0 -195
- package/dist/selectors-Du_PsVnW.cjs +0 -1
- package/dist/session-BBr0yN8h.cjs +0 -31
- package/dist/session-Cy0m7l7-.js +0 -363
- package/dist/settings-DRR7-snV.cjs +0 -1
- package/dist/useFaceInfo-Blf7FCu3.js +0 -303
- package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
|
@@ -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,39 @@
|
|
|
1
|
+
import { SpringSettings } from '../../spring/spring';
|
|
2
|
+
import * as THREE from "three";
|
|
3
|
+
/** A lock of hair swings slower and further than jewellery. */
|
|
4
|
+
export declare const HAIR_LOCK_SPRING: Readonly<SpringSettings>;
|
|
5
|
+
/** A lock's shape when its props leave it out. */
|
|
6
|
+
export declare const HAIR_LOCK_DEFAULTS: Readonly<{
|
|
7
|
+
length: 16;
|
|
8
|
+
segments: 8;
|
|
9
|
+
thickness: readonly [number, number];
|
|
10
|
+
color: "#3b2416";
|
|
11
|
+
}>;
|
|
12
|
+
export type HairLockProps = Partial<SpringSettings> & {
|
|
13
|
+
/** The root, in head centimetres (the canonical head frame: +X MediaPipe's left, +Y up, +Z out of the face). */
|
|
14
|
+
position?: [number, number, number];
|
|
15
|
+
/** The way the lock leaves the root (head frame); it curves down from there. Default straight down. */
|
|
16
|
+
direction?: [number, number, number];
|
|
17
|
+
/** Length, cm. Default 16. */
|
|
18
|
+
length?: number;
|
|
19
|
+
/** Joints along it. Default 8. */
|
|
20
|
+
segments?: number;
|
|
21
|
+
/** Radius at the root and at the tip, cm. Default `[1.2, 0.3]`. */
|
|
22
|
+
thickness?: number | readonly [number, number];
|
|
23
|
+
/** Default a dark brown. */
|
|
24
|
+
color?: THREE.ColorRepresentation;
|
|
25
|
+
/** False: it hangs still at rest. Default true. */
|
|
26
|
+
enabled?: boolean;
|
|
27
|
+
/** The tracked face (when it runs its own head fit). Default 0. */
|
|
28
|
+
faceIndex?: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Experimental: its props and look may change in a later alpha.
|
|
32
|
+
*
|
|
33
|
+
* A lock of hair on a tracked head (a pigtail, a ponytail, a strand): a
|
|
34
|
+
* chain of springs from its root that swings with head motion and settles,
|
|
35
|
+
* drawn as a tapered tube. It hangs along the head's own down. Put it in a
|
|
36
|
+
* `HeadBinding` (its occluder hides the part behind the head); inside a
|
|
37
|
+
* `CanonicalHeadFrame` it reuses that fit, otherwise it runs its own.
|
|
38
|
+
*/
|
|
39
|
+
export declare const HairLock: (props: HairLockProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* A hair lock's mesh (pure): a tube of `rings × sides` vertices plus a tip
|
|
4
|
+
* vertex, rewritten in place every frame along the lock's current points
|
|
5
|
+
* (parallel-transported frames, so it never twists), its radius tapering
|
|
6
|
+
* from root to tip.
|
|
7
|
+
*/
|
|
8
|
+
/** A tube geometry with room for `rings` rings of `sides` vertices and a closed tip. */
|
|
9
|
+
export declare const createLockGeometry: (rings: number, sides: number) => THREE.BufferGeometry;
|
|
10
|
+
/**
|
|
11
|
+
* Writes the tube along `points` (one ring each; at least 2) with radii
|
|
12
|
+
* tapering from `rootRadius` to `tipRadius`, into the geometry's positions
|
|
13
|
+
* and normals, and the tip vertex a little past the last point.
|
|
14
|
+
*/
|
|
15
|
+
export declare const writeLock: (geometry: THREE.BufferGeometry, points: readonly THREE.Vector3[], sides: number, rootRadius: number, tipRadius: number) => void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { HandCutoutOptions } from '../../hand/handCutout';
|
|
2
|
+
import * as THREE from "three";
|
|
3
|
+
export type HandCutoutProps = HandCutoutOptions & {
|
|
4
|
+
/** Show the silhouette (translucent magenta) instead of only cutting. Default false. */
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Draw order: before the content it hides. Default -900 (after the camera
|
|
8
|
+
* background). It applies in the scene root's tier, outside the tracker
|
|
9
|
+
* group's, so it holds against content anywhere in the scene.
|
|
10
|
+
*/
|
|
11
|
+
renderOrder?: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The cut-out's material: depth only, at the near plane. The depth test stays
|
|
15
|
+
* ON with an always-pass function: WebGL writes no depth at all while the
|
|
16
|
+
* depth test is disabled, so `depthTest: false` would draw nothing into the
|
|
17
|
+
* depth buffer and hide nothing.
|
|
18
|
+
*/
|
|
19
|
+
export declare const createHandCutoutMaterial: () => THREE.ShaderMaterial;
|
|
20
|
+
/**
|
|
21
|
+
* Hands in front of the face (or of anything 3D): the tracked hands'
|
|
22
|
+
* silhouettes on screen (palm, fingers, forearm) are drawn as depth only at
|
|
23
|
+
* the near plane, so 3D content drawn after them is hidden there and the real
|
|
24
|
+
* hand in the camera image shows through — a hand over a `FaceWarp3D`,
|
|
25
|
+
* `FaceMorph`, character or accessory stays in front. Mount inside a
|
|
26
|
+
* `HandTracker` (it reads the tracker's model; it does not start one), in the
|
|
27
|
+
* same scene as the content. Content must test depth (the default).
|
|
28
|
+
*
|
|
29
|
+
* ```tsx
|
|
30
|
+
* <HandTracker numHands={2}>
|
|
31
|
+
* <HandCutout />
|
|
32
|
+
* </HandTracker>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const HandCutout: ({ inflate, forearm, debug, renderOrder, }: HandCutoutProps) => import("react/jsx-runtime").JSX.Element;
|