@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,71 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { FaceMorphShapeName } from '../../face-character/faceMorph';
|
|
3
|
+
import { FaceReprojectionRegion, FaceReprojectionShading } from '../../face-character/faceReprojection';
|
|
4
|
+
import { FaceFeatureAlignment } from '../../face-character/featureWarp';
|
|
5
|
+
import { LiveValue } from '../../face-character/liveValue';
|
|
6
|
+
import { FaceRigProps } from './FaceRig';
|
|
7
|
+
import * as THREE from "three";
|
|
8
|
+
export type FaceMorphProps = Omit<FaceRigProps, "children"> & {
|
|
9
|
+
/**
|
|
10
|
+
* What the face morphs into: a built-in `"sphere"` / `"cube"`, or a model
|
|
11
|
+
* (e.g. a GLTF scene) in the canonical head frame (cm, like
|
|
12
|
+
* `ExternalFaceMesh`). A model's mesh with a morph target named `morphKey`
|
|
13
|
+
* morphs into that shape key, its base positions binding it to the face
|
|
14
|
+
* (the Blender workflow: sculpt the key from a face-fitting basis);
|
|
15
|
+
* without one, the mesh is its own base.
|
|
16
|
+
*/
|
|
17
|
+
shape: FaceMorphShapeName | THREE.Object3D;
|
|
18
|
+
/** 0 = the person's live face, 1 = the shape (or a ref, read every frame). Default 1. */
|
|
19
|
+
weight?: LiveValue<number>;
|
|
20
|
+
/** How strongly the shape takes the face's expression (Snap's Expression Multiplier; or a ref). Default 1. */
|
|
21
|
+
expression?: LiveValue<number>;
|
|
22
|
+
/** Scale of the shape around the head (Snap's External Scale). Default 1. */
|
|
23
|
+
scale?: number;
|
|
24
|
+
/** The shape key a model morphs into. Default `"morph"`. */
|
|
25
|
+
morphKey?: string;
|
|
26
|
+
/**
|
|
27
|
+
* A stylised model's own eye / mouth / nose / chin positions (its
|
|
28
|
+
* canonical-frame cm): it binds as if those sat on the real face's, so
|
|
29
|
+
* your eyes flow into its eyes as it morphs. See `FaceFeatureAlignment`.
|
|
30
|
+
*/
|
|
31
|
+
align?: FaceFeatureAlignment;
|
|
32
|
+
/**
|
|
33
|
+
* How much of the camera face the shape wears, 0..1 — 0 shows the shape's
|
|
34
|
+
* own material (a character's skin), 1 the face. Default 1.
|
|
35
|
+
*/
|
|
36
|
+
faceTexture?: number;
|
|
37
|
+
/** Which part of the camera face it wears (see `FaceReprojectionRegion`). Default `"face"`. */
|
|
38
|
+
region?: FaceReprojectionRegion;
|
|
39
|
+
/** `"unlit"` (default): the camera's colours; `"lit"`: shaded by the scene lights. */
|
|
40
|
+
shading?: FaceReprojectionShading;
|
|
41
|
+
/** Base colour of a built-in shape where it shows no face. Default `"#f1c6a8"`. */
|
|
42
|
+
color?: THREE.ColorRepresentation;
|
|
43
|
+
/** Subdivisions of a built-in shape (smoother edges and corners). Default 2. */
|
|
44
|
+
subdivisions?: number;
|
|
45
|
+
/** How far from the face (cm, base pose) a model's vertex still morphs and wears it. Default `[1, 3]`. */
|
|
46
|
+
falloff?: readonly [number, number];
|
|
47
|
+
/** Facing cut-off of the camera face (see `FaceUnwrapFrameOptions`). Default `[0.05, 0.3]`. */
|
|
48
|
+
facing?: readonly [number, number];
|
|
49
|
+
/** Camera face texture size, px. Default 512. */
|
|
50
|
+
unwrapResolution?: number;
|
|
51
|
+
/** Most texture updates per second (`0` = every new camera frame). Default 30. */
|
|
52
|
+
fps?: number;
|
|
53
|
+
/** More content in the canonical head frame. A `PinToFaceMesh` here rides the morphing face. */
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* The person's face morphing into another shape — a sphere, a cube, a
|
|
58
|
+
* character — wearing their live camera face all the way (Snap's Face
|
|
59
|
+
* Morph). `weight` 0 is the live face itself, 1 the shape, which still moves
|
|
60
|
+
* with the expression (`expression`). A model morphs from its base positions
|
|
61
|
+
* (where it sits on a face) into its `morphKey` shape key; `faceTexture`
|
|
62
|
+
* fades between the camera face and the model's own material. Mount inside a
|
|
63
|
+
* `FaceTracker` (it runs its own `FaceRig`) or a `FaceRig`.
|
|
64
|
+
*
|
|
65
|
+
* ```tsx
|
|
66
|
+
* <FaceTracker>
|
|
67
|
+
* <FaceMorph shape="sphere" weight={0.8} />
|
|
68
|
+
* </FaceTracker>
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const FaceMorph: ({ faceIndex, smoothing, expressionSmoothing, holdMs, neutral, neutralMs, leadMs, neutralKey, onTrackingChange, ...props }: FaceMorphProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { FacePinSurface } from '../../face-character/facePin';
|
|
3
|
+
import { FacePiercingKind, FacePiercingName, FacePiercingNudge } from '../../face-character/facePiercings';
|
|
4
|
+
import { FaceRigProps } from './FaceRig';
|
|
5
|
+
import * as THREE from "three";
|
|
6
|
+
/** Rig props a piercing forwards when it runs its own rig. */
|
|
7
|
+
type PiercingRigProps = Omit<FaceRigProps, "children" | "smoothing">;
|
|
8
|
+
export type FacePiercingProps = PiercingRigProps & {
|
|
9
|
+
/**
|
|
10
|
+
* The spot: `"nose.left"`, `"nose.right"`, `"septum"`, `"lip.centre"`,
|
|
11
|
+
* `"lip.left"`, `"lip.right"`, `"brow.left"`, `"brow.right"`
|
|
12
|
+
* (`FACE_PIERCING_NAMES`). Left and right are the person's real sides.
|
|
13
|
+
*/
|
|
14
|
+
preset: FacePiercingName;
|
|
15
|
+
/** `"stud"` or `"ring"`. Defaults to the spot's classic kind (`FACE_PIERCINGS[preset].kind`). */
|
|
16
|
+
kind?: FacePiercingKind;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the feed is mirrored. Defaults to the session's (`useXRMirrored`:
|
|
19
|
+
* the front webcam is), which is what keeps `"left"` on the person's left.
|
|
20
|
+
*/
|
|
21
|
+
mirrored?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Hide what passes behind the skin (a ring's inner half) with a depth-only
|
|
24
|
+
* patch of the live face around the hole. Default `true`; off with `onto`
|
|
25
|
+
* (a worn character's own depth hides it).
|
|
26
|
+
*/
|
|
27
|
+
occlude?: boolean;
|
|
28
|
+
/** `"face"` (default): the person's real face; `"model"`: the canonical face (a worn character). */
|
|
29
|
+
surface?: FacePinSurface;
|
|
30
|
+
/** Per-frame EMA on the pin, `1` = none (default). */
|
|
31
|
+
smoothing?: number;
|
|
32
|
+
/** A worn face model to sit on (see `PinToFaceMesh`'s `onto`). */
|
|
33
|
+
onto?: RefObject<THREE.Object3D | null> | THREE.Object3D | null;
|
|
34
|
+
/**
|
|
35
|
+
* A nudge in the piercing frame: `position` (cm), `rotation` (degrees),
|
|
36
|
+
* `scale`. Mirrored with the spot, so one offset fits a left / right pair.
|
|
37
|
+
*/
|
|
38
|
+
offset?: FacePiercingNudge;
|
|
39
|
+
/**
|
|
40
|
+
* The jewellery, authored in the piercing frame (cm; origin the hole, +Z out
|
|
41
|
+
* of the skin, +Y up; a ring in the YZ plane hanging toward −Y from the
|
|
42
|
+
* origin). Default: a plain silver stud or ring sized for the spot.
|
|
43
|
+
*/
|
|
44
|
+
children?: ReactNode;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Jewellery on a named piercing spot of the live face: nostril, septum, lip
|
|
48
|
+
* (centre / labret, sides) and brow. A preset over `PinToFaceMesh`: it knows
|
|
49
|
+
* where the hole is on the face mesh and how a stud or ring sits there (a stud
|
|
50
|
+
* faces out of the skin, a septum ring hangs below the septum, a lip ring
|
|
51
|
+
* wraps the lip, a brow ring goes through the brow), so no landmark lookup is
|
|
52
|
+
* needed. It rides the face through expressions; left and right are the
|
|
53
|
+
* person's real sides on every feed. Wrap several in one `FaceRig`.
|
|
54
|
+
*
|
|
55
|
+
* ```tsx
|
|
56
|
+
* <FaceTracker>
|
|
57
|
+
* <FaceRig>
|
|
58
|
+
* <FacePiercing preset="nose.left" />
|
|
59
|
+
* <FacePiercing preset="septum" kind="ring"><MyRing /></FacePiercing>
|
|
60
|
+
* </FaceRig>
|
|
61
|
+
* </FaceTracker>
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare const FacePiercing: ({ preset, kind, mirrored, occlude, surface, smoothing, onto, offset, children, faceIndex, expressionSmoothing, holdMs, neutral, neutralMs, leadMs, neutralKey, onTrackingChange, }: FacePiercingProps) => import("react/jsx-runtime").JSX.Element;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { FaceFeatureAlignment } from '../../face-character/featureWarp';
|
|
2
|
+
import { FaceReprojectionRegion, FaceReprojectionShading } from '../../face-character/faceReprojection';
|
|
3
|
+
import type * as THREE from "three";
|
|
4
|
+
export type FaceReprojectionProps = {
|
|
5
|
+
/**
|
|
6
|
+
* Which of the model's meshes wear the camera face, by object name. Default:
|
|
7
|
+
* every `"surface"` part (the skin; not eyeballs or teeth). UVs are not
|
|
8
|
+
* needed to wear it; the atlas texture (`onTexture`) covers the meshes that
|
|
9
|
+
* have them, which must share one atlas.
|
|
10
|
+
*/
|
|
11
|
+
meshes?: readonly string[];
|
|
12
|
+
/**
|
|
13
|
+
* A stylised character's own eye / mouth / nose / chin positions (its
|
|
14
|
+
* canonical-frame cm): the camera face is laid on it as if those sat on the
|
|
15
|
+
* real face's — your eyes on its (big, low) eyes. See `FaceFeatureAlignment`.
|
|
16
|
+
*/
|
|
17
|
+
align?: FaceFeatureAlignment;
|
|
18
|
+
/** Which part of the camera face to take (see `FaceReprojectionRegion`). Default `"face"`. */
|
|
19
|
+
region?: FaceReprojectionRegion;
|
|
20
|
+
/** How much of the camera face shows, 0..1. Default 1. */
|
|
21
|
+
amount?: number;
|
|
22
|
+
/** `"unlit"` (default): as the camera saw it; `"lit"`: shaded by the scene lights. */
|
|
23
|
+
shading?: FaceReprojectionShading;
|
|
24
|
+
/**
|
|
25
|
+
* A mask in the model's own UV layout (red channel; load it like the
|
|
26
|
+
* model's own map — glTF textures have `flipY = false`).
|
|
27
|
+
*/
|
|
28
|
+
mask?: THREE.Texture | null;
|
|
29
|
+
/** A mask in the canonical face UV layout (red channel), e.g. painted over the canonical face texture. */
|
|
30
|
+
canonicalMask?: THREE.Texture | null;
|
|
31
|
+
/** Output texture size, px. Default 1024. */
|
|
32
|
+
resolution?: number;
|
|
33
|
+
/** Unwrapped (canonical layout) texture size, px. Default 512. */
|
|
34
|
+
unwrapResolution?: number;
|
|
35
|
+
/** Edge padding around the model's UV islands, px (0–4). Default 2. */
|
|
36
|
+
padding?: number;
|
|
37
|
+
/** Most updates per second (`0` = every new camera frame). Default 30. */
|
|
38
|
+
fps?: number;
|
|
39
|
+
/** Facing cut-off as cosines `[hidden, full]` (see `FaceUnwrapFrameOptions`). Default `[0.05, 0.3]`. */
|
|
40
|
+
facing?: readonly [number, number];
|
|
41
|
+
/** Distance from the canonical face (cm) over which the model stops taking it. Default `[1, 3]`. */
|
|
42
|
+
falloff?: readonly [number, number];
|
|
43
|
+
/**
|
|
44
|
+
* Skin beyond the face (`region="face"` only; skin parts, not eyes): the
|
|
45
|
+
* neck, ears, scalp and back of the head take the person's skin. Next to
|
|
46
|
+
* the face it continues the real edge skin (push-pull from the face's
|
|
47
|
+
* edge); farther out it settles to the face's average skin colour. It
|
|
48
|
+
* shades like the face (`shading`). Default `false`.
|
|
49
|
+
*/
|
|
50
|
+
fill?: boolean;
|
|
51
|
+
/** cm from the face where the fill has faded back to the model's own material. Default 30. */
|
|
52
|
+
fillReach?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Put the camera face on the meshes' materials (a patched clone of each,
|
|
55
|
+
* reading it per vertex — no UVs needed; restored on unmount). `false`:
|
|
56
|
+
* only render the atlas texture — use `onTexture` and your own material.
|
|
57
|
+
* Default `true`.
|
|
58
|
+
*/
|
|
59
|
+
apply?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* The textures once created: `texture` (the face in the meshes' own UV
|
|
62
|
+
* atlas — rendered only when this is given or `apply` is `false`) and
|
|
63
|
+
* `unwrap` (the canonical layout).
|
|
64
|
+
*/
|
|
65
|
+
onTexture?: (textures: {
|
|
66
|
+
texture: THREE.Texture;
|
|
67
|
+
unwrap: THREE.Texture;
|
|
68
|
+
}) => void;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* The live camera face, worn by a face model (`ExternalFaceMesh`) — any
|
|
72
|
+
* topology, any UV atlas (or none). The camera face is unwrapped into the
|
|
73
|
+
* canonical face UV layout (the eyes and the inside of the mouth included),
|
|
74
|
+
* and each vertex wears it at its closest point on the canonical face (after
|
|
75
|
+
* `align` for a stylised character). The whole face, or only the eyes and /
|
|
76
|
+
* or mouth (`region`). `onTexture` also gets it remapped into the model's own
|
|
77
|
+
* atlas, for a custom material. Mount it as a child of an `ExternalFaceMesh`.
|
|
78
|
+
*
|
|
79
|
+
* ```tsx
|
|
80
|
+
* <ExternalFaceMesh model={gltf.scene}>
|
|
81
|
+
* <FaceReprojection region="eyesAndMouth" />
|
|
82
|
+
* </ExternalFaceMesh>
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare const FaceReprojection: ({ meshes: names, align, region, amount, shading, mask, canonicalMask, resolution, unwrapResolution, padding, fps, facing, falloff, fill, fillReach, apply, onTexture, }: FaceReprojectionProps) => null;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MutableRefObject, PropsWithChildren } from 'react';
|
|
2
|
+
import { FaceRigOptions, FaceRigState } from '../../face-character/faceRig';
|
|
3
|
+
export type FaceRigProps = PropsWithChildren<FaceRigOptions & {
|
|
4
|
+
/**
|
|
5
|
+
* Which tracked face drives it. Defaults to the parent `FaceTracker`'s (or
|
|
6
|
+
* `HeadBinding`'s) `faceIndex`.
|
|
7
|
+
*/
|
|
8
|
+
faceIndex?: number;
|
|
9
|
+
/** Fires once on face found (`true`) and once on face lost (`false`). */
|
|
10
|
+
onTrackingChange?: (tracked: boolean) => void;
|
|
11
|
+
/**
|
|
12
|
+
* A new value captures the neutral (rest) face again from the next frames
|
|
13
|
+
* — e.g. bump it from a "Recalibrate" button while the person relaxes.
|
|
14
|
+
*/
|
|
15
|
+
neutralKey?: unknown;
|
|
16
|
+
}>;
|
|
17
|
+
/** The rig a `FaceRig` publishes to its subtree (read it in `useFrame`). */
|
|
18
|
+
export declare const FaceRigContext: import('react').Context<MutableRefObject<FaceRigState> | null>;
|
|
19
|
+
/**
|
|
20
|
+
* The live face rig of the nearest `FaceRig` above: head pose, the landmarks
|
|
21
|
+
* in the head frame and the per-landmark expression offsets. Read
|
|
22
|
+
* `rig.current` inside `useFrame` (it changes every frame without
|
|
23
|
+
* re-rendering). `null` outside a `FaceRig`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const useFaceRig: () => MutableRefObject<FaceRigState> | null;
|
|
26
|
+
/**
|
|
27
|
+
* A group, inside a `FaceTracker`, whose children are authored in canonical
|
|
28
|
+
* centimetres (the same frame as `CanonicalHeadFrame`) and that also tracks the
|
|
29
|
+
* face's EXPRESSION: every frame it re-expresses the 468 landmarks in the head
|
|
30
|
+
* frame and publishes their offsets from the canonical rest (`useFaceRig`).
|
|
31
|
+
* Face-character components inside it (`ExternalFaceMesh`, …) share that one
|
|
32
|
+
* rig. Holds its last pose through dropouts shorter than `holdMs`, hides when
|
|
33
|
+
* lost, snaps on reacquire. `leadMs` (default 0) runs the landmarks through
|
|
34
|
+
* a `LandmarkLead` so its geometry keeps up with the camera image between
|
|
35
|
+
* inferences; makeup nested inside rides this rig with the same lead. The
|
|
36
|
+
* frame step itself is `stepFaceRigFromModel`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const FaceRig: ({ children, faceIndex: faceIndexOption, onTrackingChange, neutralKey, ...options }: FaceRigProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { MutableRefObject } from 'react';
|
|
2
|
+
import { Object3D } from 'three';
|
|
3
|
+
/**
|
|
4
|
+
* How a face effect moves the face's surface this frame: per landmark, its
|
|
5
|
+
* displacement from the tracked face (canonical cm, flat, 468 × 3). Published
|
|
6
|
+
* by `FaceWarp3D` and `FaceMorph` to their children, before they update, so a
|
|
7
|
+
* `PinToFaceMesh` inside them rides the warped or morphed face.
|
|
8
|
+
*/
|
|
9
|
+
export type FaceSurfaceState = {
|
|
10
|
+
offsets: Float32Array;
|
|
11
|
+
/** `false` while nothing is moved (offsets all zero). */
|
|
12
|
+
active: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare const createFaceSurfaceState: () => FaceSurfaceState;
|
|
15
|
+
export declare const FaceSurfaceContext: import('react').Context<MutableRefObject<FaceSurfaceState> | null>;
|
|
16
|
+
/** The nearest `FaceWarp3D` / `FaceMorph` surface above (read in `useFrame`), or `null`. */
|
|
17
|
+
export declare const useFaceSurface: () => MutableRefObject<FaceSurfaceState> | null;
|
|
18
|
+
/**
|
|
19
|
+
* The frame priority of effects that publish a face surface: after the
|
|
20
|
+
* `FaceRig` (-1), before ordinary children (0) such as pins.
|
|
21
|
+
*/
|
|
22
|
+
export declare const FACE_SURFACE_FRAME_PRIORITY = -0.5;
|
|
23
|
+
/**
|
|
24
|
+
* Render order of everything that IS the face (`FaceWarp3D`, `FaceMorph`, an
|
|
25
|
+
* `ExternalFaceMesh` character): before the head occluder
|
|
26
|
+
* (`HEAD_OCCLUDER_RENDER_ORDER`, -1), so the occluder hides accessories behind
|
|
27
|
+
* the head but never the face itself, wherever an effect moves it. The hand
|
|
28
|
+
* cut-out (-900) still comes first, so hands stay in front.
|
|
29
|
+
*/
|
|
30
|
+
export declare const FACE_SURFACE_RENDER_ORDER = -2;
|
|
31
|
+
/**
|
|
32
|
+
* Puts a subtree's drawables (meshes, points, lines) in the face layer. Not
|
|
33
|
+
* its groups: three sorts by the nearest group's render order first, so a
|
|
34
|
+
* group set apart would leave the shared tier (and draw before the camera
|
|
35
|
+
* background).
|
|
36
|
+
*/
|
|
37
|
+
export declare const markFaceSurface: (root: Object3D) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Blending for a face effect drawn in the opaque pass (where the render order
|
|
40
|
+
* puts it before the occluder) that still fades at its edges: normal alpha
|
|
41
|
+
* blending, set as custom so three applies it to a non-transparent material.
|
|
42
|
+
*/
|
|
43
|
+
export declare const faceSurfaceBlending: {
|
|
44
|
+
readonly blending: 5;
|
|
45
|
+
readonly blendSrc: 204;
|
|
46
|
+
readonly blendDst: 205;
|
|
47
|
+
readonly blendSrcAlpha: 201;
|
|
48
|
+
readonly blendDstAlpha: 205;
|
|
49
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FacePinAnchor, FacePinSurface, FaceSurfacePatch } from '../../face-character/facePin';
|
|
2
|
+
import { FaceRigProps } from './FaceRig';
|
|
3
|
+
export type FaceSurfaceOccluderProps = Omit<FaceRigProps, "children" | "smoothing"> & {
|
|
4
|
+
/** The surface to occlude with: the person's real face (`"face"`, default) or the canonical one (`"model"`). */
|
|
5
|
+
surface?: FacePinSurface;
|
|
6
|
+
/**
|
|
7
|
+
* Only the skin around this point (a `PinToFaceMesh` anchor; a named left /
|
|
8
|
+
* right one is the person's own side, as on the pin); the whole face when
|
|
9
|
+
* omitted.
|
|
10
|
+
*/
|
|
11
|
+
around?: FacePinAnchor;
|
|
12
|
+
/**
|
|
13
|
+
* Whether the feed is mirrored. Defaults to the session's (`useXRMirrored`:
|
|
14
|
+
* the front webcam is), so a named `around` lands where the same-named
|
|
15
|
+
* `PinToFaceMesh` does.
|
|
16
|
+
*/
|
|
17
|
+
mirrored?: boolean;
|
|
18
|
+
/** How far around `around` (cm, default 2.5). */
|
|
19
|
+
radius?: number;
|
|
20
|
+
/** Render order of the occluder mesh. Default `-1` (the head occluder's tier: after the face, before accessories). */
|
|
21
|
+
renderOrder?: number;
|
|
22
|
+
/** Draw it visibly (a translucent wireframe) to check what it covers. Never ship it on. */
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* The patch of skin a `FaceSurfaceOccluder` covers on this feed: around the
|
|
27
|
+
* same surface point a `PinToFaceMesh` with the same anchor binds
|
|
28
|
+
* (`facePinAnchorForFeed`), or the whole face without `around`.
|
|
29
|
+
*/
|
|
30
|
+
export declare const faceSurfaceOccluderPatch: (around: FacePinAnchor | undefined, radius: number, mirrored: boolean) => FaceSurfacePatch;
|
|
31
|
+
/**
|
|
32
|
+
* A depth-only mesh of the live face surface: the same skin a `PinToFaceMesh`
|
|
33
|
+
* rides (face shape + expression, and a `FaceWarp3D` / `FaceMorph` surface
|
|
34
|
+
* when inside one). Content behind the skin is hidden: the half of a ring that
|
|
35
|
+
* passes through a nostril or a brow, a stud's post. `around` + `radius` keep
|
|
36
|
+
* it to a patch of skin (a piercing mounts its own). Runs on the nearest
|
|
37
|
+
* `FaceRig` (or its own, inside a `FaceTracker`).
|
|
38
|
+
*/
|
|
39
|
+
export declare const FaceSurfaceOccluder: ({ surface, around, mirrored, radius, renderOrder, debug, faceIndex, expressionSmoothing, holdMs, neutral, neutralMs, leadMs, neutralKey, onTrackingChange, }: FaceSurfaceOccluderProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ReactNode, RefObject } from 'react';
|
|
2
|
+
import { FacePinAnchor, FacePinOrient, FacePinSurface } from '../../face-character/facePin';
|
|
3
|
+
import { FaceRigProps } from './FaceRig';
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
/** Rig props a pin forwards when it runs its own rig (the pose smoothing stays the rig default). */
|
|
6
|
+
type PinRigProps = Omit<FaceRigProps, "children" | "smoothing">;
|
|
7
|
+
export type PinToFaceMeshProps = PinRigProps & {
|
|
8
|
+
/**
|
|
9
|
+
* Where on the face: a face target name (`"face.noseTip"`, `"face.leftCheek"`
|
|
10
|
+
* …; left / right = the person's own side on every feed), `{ landmark }`,
|
|
11
|
+
* `{ point }` (canonical cm) or `{ triangle, weights }`. See `FacePinAnchor`.
|
|
12
|
+
*/
|
|
13
|
+
anchor: FacePinAnchor;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the feed is mirrored. Defaults to the session's (`useXRMirrored`:
|
|
16
|
+
* the front webcam is), which is what keeps a named `"face.left…"` anchor
|
|
17
|
+
* on the person's own left.
|
|
18
|
+
*/
|
|
19
|
+
mirrored?: boolean;
|
|
20
|
+
/** Follow the person's real face (`"face"`, default) or the canonical / character face (`"model"`). */
|
|
21
|
+
surface?: FacePinSurface;
|
|
22
|
+
/** `"surface"` (default): turn with the skin under it; `"head"`: keep the head's orientation. */
|
|
23
|
+
orient?: FacePinOrient;
|
|
24
|
+
/**
|
|
25
|
+
* An offset in the pin's frame (X along the face toward the screen's right
|
|
26
|
+
* on a face looking at the camera, Y up, Z out of the skin): `position` in
|
|
27
|
+
* centimetres, `rotation` in degrees, `scale` a factor.
|
|
28
|
+
*/
|
|
29
|
+
offset?: {
|
|
30
|
+
position?: readonly [number, number, number];
|
|
31
|
+
rotation?: readonly [number, number, number];
|
|
32
|
+
scale?: number;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Per-frame EMA on the pin's position and turn, `1` = none (default: the
|
|
36
|
+
* rig's expression smoothing already steadies the surface).
|
|
37
|
+
*/
|
|
38
|
+
smoothing?: number;
|
|
39
|
+
/**
|
|
40
|
+
* A face model to sit on (an `ExternalFaceMesh`'s group, in the same rig):
|
|
41
|
+
* once it has loaded, the pin moves along the surface normal onto that
|
|
42
|
+
* model's own skin — a character whose cheek or lip is not exactly the
|
|
43
|
+
* canonical surface — then rides the expression from there.
|
|
44
|
+
*/
|
|
45
|
+
onto?: RefObject<THREE.Object3D | null> | THREE.Object3D | null;
|
|
46
|
+
/** The pinned content, authored in centimetres around its origin. */
|
|
47
|
+
children?: ReactNode;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Pins content to a point on the live face surface: it follows the head AND
|
|
51
|
+
* the skin under it through expressions (a cheek sticker rides a smile, a
|
|
52
|
+
* lip stud follows the mouth), turning with the surface. Anchor by face target
|
|
53
|
+
* name, landmark index, canonical point or exact triangle; offset in the pin's
|
|
54
|
+
* own frame. Unlike the generic `PinToMesh`, the surface it follows moves every
|
|
55
|
+
* frame. Inside a `FaceRig` (or an `ExternalFaceMesh`'s children) it shares
|
|
56
|
+
* that rig; otherwise it runs its own (mount it in a `FaceTracker`). Hidden
|
|
57
|
+
* while the face is lost; snaps on reacquire.
|
|
58
|
+
*
|
|
59
|
+
* ```tsx
|
|
60
|
+
* <FaceTracker>
|
|
61
|
+
* <PinToFaceMesh anchor="face.leftCheek" offset={{ position: [0, 0, 0.1] }}>
|
|
62
|
+
* <mesh><circleGeometry args={[1.2, 32]} /></mesh>
|
|
63
|
+
* </PinToFaceMesh>
|
|
64
|
+
* </FaceTracker>
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare const PinToFaceMesh: ({ faceIndex, expressionSmoothing, holdMs, neutral, neutralMs, leadMs, neutralKey, onTrackingChange, ...props }: PinToFaceMeshProps) => import("react/jsx-runtime").JSX.Element;
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { FaceRig, FaceRigContext, useFaceRig } from './FaceRig';
|
|
2
|
+
export type { FaceRigProps } from './FaceRig';
|
|
3
|
+
export { ExternalFaceMesh, ExternalFaceMeshContext, FACE_HEAD_WIDTH_RATIO, faceHeadWidth, useExternalFaceMesh, } from './ExternalFaceMesh';
|
|
4
|
+
export type { ExternalFaceMeshBinding, ExternalFaceMeshPart, ExternalFaceMeshProps, } from './ExternalFaceMesh';
|
|
5
|
+
export { FaceExpressionController, useExpressionValues } from './FaceExpressionController';
|
|
6
|
+
export type { FaceExpressionControllerProps, FaceExpressionControllerRule, ExpressionOutputs, UseExpressionValuesResult, } from './FaceExpressionController';
|
|
7
|
+
export { PinToFaceMesh } from './PinToFaceMesh';
|
|
8
|
+
export type { PinToFaceMeshProps } from './PinToFaceMesh';
|
|
9
|
+
export { FacePiercing } from './FacePiercing';
|
|
10
|
+
export type { FacePiercingProps } from './FacePiercing';
|
|
11
|
+
export { FaceSurfaceOccluder } from './FaceSurfaceOccluder';
|
|
12
|
+
export type { FaceSurfaceOccluderProps } from './FaceSurfaceOccluder';
|
|
13
|
+
export { FaceReprojection } from './FaceReprojection';
|
|
14
|
+
export type { FaceReprojectionProps } from './FaceReprojection';
|
|
15
|
+
export { FaceMorph } from './FaceMorph';
|
|
16
|
+
export type { FaceMorphProps } from './FaceMorph';
|
|
17
|
+
export { FACE_SURFACE_FRAME_PRIORITY, FACE_SURFACE_RENDER_ORDER, FaceSurfaceContext, faceSurfaceBlending, createFaceSurfaceState, markFaceSurface, useFaceSurface, } from './FaceSurface';
|
|
18
|
+
export type { FaceSurfaceState } from './FaceSurface';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FaceReprojector, FaceReprojectorOptions } from '../../face-character/faceReprojector';
|
|
2
|
+
/**
|
|
3
|
+
* A `FaceReprojector` for this component's lifetime (created after mount,
|
|
4
|
+
* disposed on unmount), kept in step with `options` (sizes, padding, facing;
|
|
5
|
+
* `null` until created). Rendered every new camera frame of the nearest
|
|
6
|
+
* `FaceRig`'s face (at most `fps` a second, `0` = every frame) while that
|
|
7
|
+
* face is tracked; through a dropout the textures keep the last face.
|
|
8
|
+
* Inside a `<MadeUpCamera>` it unwraps the made-up camera (the makeup shows).
|
|
9
|
+
*/
|
|
10
|
+
export declare const useFaceReprojector: (options: Pick<FaceReprojectorOptions, "resolution" | "unwrapResolution" | "padding" | "facing" | "unwrapMipmaps">, fps: number) => FaceReprojector | null;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { FaceTarget } from '../../types/tracking';
|
|
2
|
+
import { FaceInsetPart } from './frame';
|
|
3
|
+
/**
|
|
4
|
+
* An inset's draw order on the face: after the face itself (`FaceWarp3D`,
|
|
5
|
+
* `FaceMorph`, a character, at `FACE_SURFACE_RENDER_ORDER`), so it shows on
|
|
6
|
+
* top of them, and before the head occluder (-1).
|
|
7
|
+
*/
|
|
8
|
+
export declare const FACE_INSET_RENDER_ORDER: number;
|
|
9
|
+
/** Where an inset is shown: over the face, or as a plane in its parent's frame. */
|
|
10
|
+
export declare const FACE_INSET_PLACEMENTS: readonly ["face", "plane"];
|
|
11
|
+
export type FaceInsetPlacement = (typeof FACE_INSET_PLACEMENTS)[number];
|
|
12
|
+
export type FaceInsetProps = {
|
|
13
|
+
/** Which part to cut (see `FACE_INSET_PARTS`). */
|
|
14
|
+
part: FaceInsetPart;
|
|
15
|
+
/**
|
|
16
|
+
* `"face"` (default): over the live face, at the part's own place (or `at`),
|
|
17
|
+
* `magnify` times bigger. `"plane"`: a plane in its parent's frame (on an
|
|
18
|
+
* object, beside the head, anywhere in the scene), `height` units tall.
|
|
19
|
+
*/
|
|
20
|
+
placement?: FaceInsetPlacement;
|
|
21
|
+
/**
|
|
22
|
+
* `"face"` only: how much bigger than life, about the part's own middle.
|
|
23
|
+
* 1 = life size, below 1 shrinks it. Default 1.5.
|
|
24
|
+
*/
|
|
25
|
+
magnify?: number;
|
|
26
|
+
/**
|
|
27
|
+
* `"plane"` only: the plane's height in local units; its width follows the
|
|
28
|
+
* part's shape (`faceInsetAspect`). Default 1.
|
|
29
|
+
*/
|
|
30
|
+
height?: number;
|
|
31
|
+
/**
|
|
32
|
+
* `"face"` only: show it centred on another face point instead of its own
|
|
33
|
+
* place (`"face.forehead"`, `"face.chin"`, …). With `at`, `"eyes"` is one
|
|
34
|
+
* strip, both eyes together.
|
|
35
|
+
*/
|
|
36
|
+
at?: Exclude<FaceTarget, "face.custom">;
|
|
37
|
+
/** Soft edge, 0 (hard) .. 1 (fades from the middle). Default 0.4. */
|
|
38
|
+
feather?: number;
|
|
39
|
+
/** How much around the part is cut, a multiple of its box (`FACE_INSET_BOXES`). Default 1. */
|
|
40
|
+
size?: number;
|
|
41
|
+
/** 0..1. Default 1. */
|
|
42
|
+
opacity?: number;
|
|
43
|
+
/** Which tracked face. Default: the enclosing `FaceTracker`'s, else 0. */
|
|
44
|
+
faceIndex?: number;
|
|
45
|
+
/** `"plane"` only: the texture's longer side, px. Default 256. */
|
|
46
|
+
resolution?: number;
|
|
47
|
+
/** Draw order. Default `FACE_INSET_RENDER_ORDER` (-1.5) on the face, 0 as a plane. */
|
|
48
|
+
renderOrder?: number;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Face inset (Lens Studio's Face Inset): a face part cut out of the live
|
|
52
|
+
* camera image with a soft edge, following the face every frame. Over the
|
|
53
|
+
* face it magnifies the part in place (big cartoon eyes, a giant mouth, a big
|
|
54
|
+
* or tiny face) or shows it on another face point (`at`); as a `"plane"` it
|
|
55
|
+
* is a card in the scene (on a product, beside the head). For your own
|
|
56
|
+
* material or a `ScreenImage`, use `useFaceInsetTexture`. Follows the
|
|
57
|
+
* enclosing `FaceTracker`'s face; needs a `FaceTracker` mounted (it starts no
|
|
58
|
+
* tracker). Inside a `<MadeUpCamera>` it cuts the part from the made-up
|
|
59
|
+
* camera, so the makeup shows in it.
|
|
60
|
+
*
|
|
61
|
+
* ```tsx
|
|
62
|
+
* <FaceTracker>
|
|
63
|
+
* <FaceInset part="eyes" magnify={1.8} />
|
|
64
|
+
* <FaceInset part="mouth" at="face.forehead" magnify={0.8} />
|
|
65
|
+
* </FaceTracker>
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare const FaceInset: ({ part, placement, magnify, height, at, feather, size, opacity, faceIndex, resolution, renderOrder, }: FaceInsetProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { FaceImageLandmark } from '../../face-character/faceReprojection';
|
|
2
|
+
/**
|
|
3
|
+
* Face inset geometry (pure): where a face part is cut from the camera image.
|
|
4
|
+
* Each part has a box on the camera image, upright in the face's own frame
|
|
5
|
+
* (it turns with the head's roll), sized from the face (the 3D distance
|
|
6
|
+
* between the eyes, so it holds still while the mouth opens or the head
|
|
7
|
+
* turns), and a soft elliptical mask inside it.
|
|
8
|
+
*/
|
|
9
|
+
/** The face parts an inset can cut. */
|
|
10
|
+
export declare const FACE_INSET_PARTS: readonly ["leftEye", "rightEye", "eyes", "mouth", "nose", "face"];
|
|
11
|
+
export type FaceInsetPart = (typeof FACE_INSET_PARTS)[number];
|
|
12
|
+
/**
|
|
13
|
+
* Each part's box, in eye distances (the 3D distance between the eye
|
|
14
|
+
* centres), before `size`. Measured on the canonical face: an eye is 0.4 wide,
|
|
15
|
+
* the mouth 0.76, the face 2.4 wide and 2.7 tall.
|
|
16
|
+
*/
|
|
17
|
+
export declare const FACE_INSET_BOXES: Readonly<Record<FaceInsetPart, {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
}>>;
|
|
21
|
+
/** A part's box width over its height (pixels): the inset texture's shape. */
|
|
22
|
+
export declare const faceInsetAspect: (part: FaceInsetPart) => number;
|
|
23
|
+
/**
|
|
24
|
+
* An eye fades out as the head turns away from it (its far side smears over
|
|
25
|
+
* the nose): hidden when it is this narrow next to the other eye, fully shown
|
|
26
|
+
* from this wide.
|
|
27
|
+
*/
|
|
28
|
+
export declare const FACE_INSET_FAR_EYE: readonly [number, number];
|
|
29
|
+
/** One mask ellipse in box space (−1..1 across the box, y down the face). */
|
|
30
|
+
export type FaceInsetEllipse = {
|
|
31
|
+
x: number;
|
|
32
|
+
y: number;
|
|
33
|
+
rx: number;
|
|
34
|
+
ry: number;
|
|
35
|
+
alpha: number;
|
|
36
|
+
};
|
|
37
|
+
export type FaceInsetFrame = {
|
|
38
|
+
/** The box's centre on the camera image (0..1, top-left origin, y down). */
|
|
39
|
+
center: {
|
|
40
|
+
x: number;
|
|
41
|
+
y: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Half the box along the face's x (to the image right on an upright face)
|
|
45
|
+
* and y (down the face), as offsets on the camera image (0..1 per axis).
|
|
46
|
+
*/
|
|
47
|
+
axisX: {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
};
|
|
51
|
+
axisY: {
|
|
52
|
+
x: number;
|
|
53
|
+
y: number;
|
|
54
|
+
};
|
|
55
|
+
/** The face's scale: the 3D distance between the eye centres, in image heights. */
|
|
56
|
+
unit: number;
|
|
57
|
+
/** The mask: one ellipse, or two for `"eyes"` (`count`). `alpha` fades an eye turning away. */
|
|
58
|
+
ellipses: [FaceInsetEllipse, FaceInsetEllipse];
|
|
59
|
+
count: 1 | 2;
|
|
60
|
+
};
|
|
61
|
+
export declare const createFaceInsetFrame: () => FaceInsetFrame;
|
|
62
|
+
/** How much of an eye shows, 0..1, from its width next to the wider eye. */
|
|
63
|
+
export declare const faceInsetEyeVisibility: (width: number, widest: number) => number;
|
|
64
|
+
export type FaceInsetFrameOptions = {
|
|
65
|
+
/** How much around the part is cut: a multiple of its box (`FACE_INSET_BOXES`). Default 1. */
|
|
66
|
+
size?: number;
|
|
67
|
+
/**
|
|
68
|
+
* The feed is mirrored (the front webcam; `useXRMirrored()`, or the face's
|
|
69
|
+
* `mirrored`). `"leftEye"` / `"rightEye"` are the person's own eyes, so they
|
|
70
|
+
* read the other mesh eye on a mirrored feed. Default `false`.
|
|
71
|
+
*/
|
|
72
|
+
mirrored?: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* One frame of a part's inset: writes its box on the camera image and its
|
|
76
|
+
* mask into `out`. `landmarks` are the tracker's for one face (≥ 468, the
|
|
77
|
+
* camera image's own space, as `FaceInfo.landmarks`); `aspect` is the camera
|
|
78
|
+
* image's width / height. The box stays upright on the face whichever way the
|
|
79
|
+
* mesh labels its sides (a mirrored webcam included); `"leftEye"` is the
|
|
80
|
+
* person's own left eye when `mirrored` says how the feed is drawn. Returns
|
|
81
|
+
* `false` (and leaves `out`) without a usable face.
|
|
82
|
+
*/
|
|
83
|
+
export declare const writeFaceInsetFrame: (landmarks: ArrayLike<FaceImageLandmark> | null | undefined, personPart: FaceInsetPart, aspect: number, { size, mirrored }: FaceInsetFrameOptions, out: FaceInsetFrame) => boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Where a box point lands on the image: `(qx, qy)` in box space (−1..1, y
|
|
86
|
+
* down the face) → camera image (0..1, y down). Mirrors the shader.
|
|
87
|
+
*/
|
|
88
|
+
export declare const faceInsetPoint: (frame: FaceInsetFrame, qx: number, qy: number, out?: {
|
|
89
|
+
x: number;
|
|
90
|
+
y: number;
|
|
91
|
+
}) => {
|
|
92
|
+
x: number;
|
|
93
|
+
y: number;
|
|
94
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { FACE_INSET_PLACEMENTS, FACE_INSET_RENDER_ORDER, FaceInset } from './FaceInset';
|
|
2
|
+
export type { FaceInsetPlacement, FaceInsetProps } from './FaceInset';
|
|
3
|
+
export { FACE_INSET_HOLD_MS, useFaceInsetTexture } from './useFaceInsetTexture';
|
|
4
|
+
export type { FaceInsetTextureOptions } from './useFaceInsetTexture';
|
|
5
|
+
export { FACE_INSET_BOXES, FACE_INSET_PARTS, createFaceInsetFrame, faceInsetAspect, writeFaceInsetFrame, } from './frame';
|
|
6
|
+
export type { FaceInsetEllipse, FaceInsetFrame, FaceInsetFrameOptions, FaceInsetPart, } from './frame';
|