@vincentt-xr/sdk 2.0.0-alpha.7 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +5651 -82
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/cache.d.ts +99 -0
- package/dist/assets/estimate.d.ts +11 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/index.d.ts +7 -0
- package/dist/assets/loaders.d.ts +43 -0
- package/dist/assets/react.d.ts +33 -0
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +75 -0
- package/dist/calibration/index.d.ts +6 -0
- package/dist/calibration/storage.d.ts +13 -0
- package/dist/calibration/types.d.ts +53 -0
- package/dist/calibration/useXRCalibration.d.ts +46 -0
- package/dist/camera/CameraPermissionGate.d.ts +26 -0
- package/dist/camera/devices.d.ts +26 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/permission.d.ts +86 -0
- package/dist/camera/useCameraPermission.d.ts +35 -0
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/capabilities/detect.d.ts +45 -0
- package/dist/capabilities/index.d.ts +5 -0
- package/dist/capabilities/types.d.ts +120 -0
- package/dist/capabilities/useXRCapabilities.d.ts +18 -0
- package/dist/compat/environment.d.ts +5 -0
- package/dist/compat/index.d.ts +4 -0
- package/dist/compat/run.d.ts +18 -0
- package/dist/compat/scenarios.d.ts +10 -0
- package/dist/compat/types.d.ts +101 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +17 -0
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +37 -5
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/shaders.d.ts +1 -1
- package/dist/components/FaceMesh/index.d.ts +2 -2
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/GestureListener/index.d.ts +11 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HandTracker/index.d.ts +10 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/HolisticTracker/index.d.ts +69 -0
- package/dist/components/HolisticTracker/settings.d.ts +58 -0
- package/dist/components/HolisticTracker/signals.d.ts +49 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/IrisEffect/IrisMaterial.d.ts +73 -0
- package/dist/components/IrisEffect/index.d.ts +51 -0
- package/dist/components/IrisEffect/settings.d.ts +117 -0
- package/dist/components/LipEffect/LipEffect.d.ts +27 -1
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +95 -7
- package/dist/components/LipEffect/LipEffects.d.ts +12 -0
- package/dist/components/LipEffect/defaults.d.ts +46 -4
- package/dist/components/LipEffect/index.d.ts +11 -3
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +375 -0
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +128 -9
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +17 -0
- package/dist/components/LipEffect/uvGuide.d.ts +74 -0
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/PersonCutout/index.d.ts +50 -0
- package/dist/components/PersonCutout/personCutout.d.ts +16 -0
- package/dist/components/ScreenImage/components/ScreenImageBody.d.ts +1 -1
- package/dist/components/ScreenImage/index.d.ts +3 -1
- package/dist/components/ScreenImage/materials/ScreenImageBlendMaterial.d.ts +1 -1
- package/dist/components/ScreenImage/materials/ScreenImageMaskMaterial.d.ts +11 -0
- package/dist/components/ScreenImage/source.d.ts +6 -0
- package/dist/components/ScreenImage/types.d.ts +18 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlay.d.ts +37 -0
- package/dist/components/SegmentationOverlay/SegmentationOverlayMaterial.d.ts +31 -0
- package/dist/components/SegmentationOverlay/index.d.ts +9 -0
- package/dist/components/SegmentationOverlay/maskTexture.d.ts +23 -0
- package/dist/components/SegmentationOverlay/providers.d.ts +72 -0
- package/dist/components/SegmentationOverlay/settings.d.ts +65 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRProvider/index.d.ts +16 -2
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/XRViewport/hooks/useViewportExternalFaces.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportMediaSource.d.ts +1 -1
- package/dist/components/XRViewport/hooks/useViewportPipeline.d.ts +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/constants/index.d.ts +4 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/feed.d.ts +52 -0
- package/dist/coordinates/index.d.ts +7 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/coordinates/spaces.d.ts +49 -0
- package/dist/coordinates/viewport.d.ts +22 -0
- package/dist/coordinates/world.d.ts +15 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/gesture-settings/index.d.ts +14 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/holistic-tracker-settings/index.d.ts +16 -0
- package/dist/debug-ui/index.d.ts +18 -3
- package/dist/debug-ui/iris-effect-settings/index.d.ts +12 -0
- package/dist/debug-ui/lip-effect-settings/index.d.ts +15 -0
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +25 -0
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/segmentation-overlay-settings/index.d.ts +12 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +26 -0
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2695 -2547
- package/dist/detector-K8aej4MB.js +59 -0
- package/dist/detector-ijypGtse.cjs +1 -0
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +20 -2
- package/dist/entries/face-effects.d.ts +123 -9
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +49 -3
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/product.d.ts +11 -0
- package/dist/entries/tracking.d.ts +60 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2324 -1
- package/dist/face-effects.js +14208 -2268
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +98 -0
- package/dist/gestures/detector.d.ts +87 -0
- package/dist/gestures/index.d.ts +8 -0
- package/dist/gestures/measures.d.ts +114 -0
- package/dist/gestures/settings.d.ts +49 -0
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +76 -1
- package/dist/hooks/useCalibrationFaceTracker.d.ts +1 -1
- package/dist/hooks/useFaceInfo.d.ts +13 -1
- package/dist/hooks/useFaceInfos.d.ts +1 -1
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useGesture.d.ts +32 -0
- package/dist/hooks/useIrisTracking.d.ts +45 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/hooks/useXRDiagnostics.d.ts +81 -0
- package/dist/hooks/useXRModel.d.ts +7 -0
- package/dist/hooks/useXRSession/facade.d.ts +42 -2
- package/dist/hooks/useXRSession/index.d.ts +2 -2
- package/dist/hooks/useXRSession/reason.d.ts +3 -1
- package/dist/hooks/useXRSession/registry.d.ts +14 -0
- package/dist/hooks/useXRSession/store.d.ts +52 -3
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/index-w1S7fI2B.js +1432 -0
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-Dmk1cTXq.js → internal-B90P-clC.js} +138 -119
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +27 -0
- package/dist/iris/index.d.ts +4 -0
- package/dist/iris/lead.d.ts +19 -0
- package/dist/iris/types.d.ts +89 -0
- package/dist/landmarkMask-BFDyBnKM.js +224 -0
- package/dist/landmarkMask-u7es2k4X.cjs +1 -0
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +1190 -675
- package/dist/main.cjs +1 -1
- package/dist/main.js +1190 -452
- package/dist/models/Base/index.d.ts +49 -0
- package/dist/models/Body/index.d.ts +3 -1
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +4 -12
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/GestureTracking.d.ts +1 -1
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Holistic/index.d.ts +49 -0
- package/dist/models/Holistic/result.d.ts +68 -0
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/SemanticSegmentation/index.d.ts +31 -0
- package/dist/models/SemanticSegmentation/presets.d.ts +28 -0
- package/dist/models/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product/ProductDimensions.d.ts +16 -0
- package/dist/product/ProductHotspot.d.ts +16 -0
- package/dist/product/ProductViewer.d.ts +9 -0
- package/dist/product/details.d.ts +53 -0
- package/dist/product/index.d.ts +14 -0
- package/dist/product/loadModelViewer.d.ts +4 -0
- package/dist/product/types.d.ts +71 -0
- package/dist/product/useProductAr.d.ts +37 -0
- package/dist/product/useProductDetails.d.ts +60 -0
- package/dist/product.cjs +1 -0
- package/dist/product.js +414 -0
- package/dist/providers-C8rE26Uf.js +366 -0
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/quality/XRQualityController.d.ts +25 -0
- package/dist/quality/controller.d.ts +33 -0
- package/dist/quality/index.d.ts +6 -0
- package/dist/quality/types.d.ts +100 -0
- package/dist/quality/useXRQuality.d.ts +28 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-KZk6eRiY.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-80H3DpTl.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/faceMemory.d.ts +28 -0
- package/dist/segmentation2d/faceRegions.d.ts +24 -0
- package/dist/segmentation2d/index.d.ts +9 -0
- package/dist/segmentation2d/maskUv.d.ts +23 -0
- package/dist/segmentation2d/rasterize.d.ts +14 -0
- package/dist/segmentation2d/types.d.ts +52 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/settings-BJ7FMBsO.js +111 -0
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/subjects/index.d.ts +2 -0
- package/dist/subjects/select.d.ts +62 -0
- package/dist/subjects/types.d.ts +55 -0
- package/dist/tracking-config/apply.d.ts +57 -0
- package/dist/tracking-config/index.d.ts +7 -0
- package/dist/tracking-config/resolve.d.ts +25 -0
- package/dist/tracking-config/storage.d.ts +8 -0
- package/dist/tracking-config/types.d.ts +106 -0
- package/dist/tracking-config/useXRTrackingConfig.d.ts +38 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1326 -506
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/compositor.d.ts +21 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/holistic.d.ts +121 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/model.d.ts +22 -2
- package/dist/types/nodes.d.ts +47 -3
- package/dist/types/segmentation.d.ts +24 -0
- package/dist/types/session.d.ts +41 -3
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/useXRCapabilities-Cr3RzuAW.cjs +1 -0
- package/dist/useXRCapabilities-Cxmlmpbd.js +30 -0
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/fns.d.ts +6 -3
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +21 -1
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/utils/updateThrottle.d.ts +2 -0
- package/dist/utils/useStableUniforms.d.ts +18 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-ByoNj0QP.js → uv-DJU_XfmN.js} +15 -247
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +104 -0
- package/docs/api/asset-lifecycle.mdx +78 -0
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +142 -0
- package/docs/api/coordinate-spaces.mdx +168 -0
- package/docs/api/cross-camera.mdx +89 -0
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/diagnostics-calibration.mdx +97 -0
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +9 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +8 -9
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +209 -0
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +164 -0
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +247 -0
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +98 -0
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +136 -0
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +114 -0
- package/docs/api/product-details.mdx +78 -0
- package/docs/api/screen-space-coordinates.mdx +4 -1
- package/docs/api/segmentation-overlay.mdx +301 -0
- package/docs/api/session-lifecycle.mdx +136 -0
- package/docs/api/trackers.mdx +5 -0
- package/docs/api/tracking-config.mdx +108 -0
- package/docs/docs.json +51 -1
- package/docs/examples/lip-shaders.mdx +273 -0
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +368 -0
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -0
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +23 -1
- package/dist/DebuggerUI-B6bP6P9r.cjs +0 -1
- package/dist/DebuggerUI-BjOMr8q_.js +0 -269
- package/dist/FaceMeshRenderer-C5l6VLdO.cjs +0 -155
- package/dist/FaceMeshRenderer-wjAHrJzP.js +0 -1270
- package/dist/FaceRetouch-BkJzoA79.cjs +0 -134
- package/dist/FaceRetouch-DwbKQJAN.js +0 -551
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-ByhzppYl.js +0 -663
- package/dist/contexts-Dr62It_K.cjs +0 -1
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-C4QpCQIY.js +0 -118
- package/dist/getFaceInfo-fA1bFBub.cjs +0 -1
- package/dist/index-9dlAQAhy.js +0 -1462
- package/dist/index-BjmTe9eM.cjs +0 -1
- package/dist/index-BpEf2BBb.cjs +0 -1
- package/dist/index-CyUUurQT.cjs +0 -1
- package/dist/index-DCiMbxC3.cjs +0 -1
- package/dist/index-DXT3WccE.js +0 -2089
- package/dist/index-DpI-qo5X.cjs +0 -17
- package/dist/index-DyVF4vEW.js +0 -111
- package/dist/index-VJ0SJwmG.js +0 -214
- package/dist/internal-Cq-TEQ5Y.cjs +0 -1
- package/dist/renderLayers-lDtL0_43.cjs +0 -1
- package/dist/renderLayers-zrK2pv5O.js +0 -13
- package/dist/renderPasses-BOoBSr8z.cjs +0 -21
- package/dist/renderPasses-BcquyVtu.js +0 -1500
- package/dist/selectors-B8H97CKA.js +0 -59
- package/dist/selectors-CZLKT2Iv.cjs +0 -1
- package/dist/session-CpkiK5YA.cjs +0 -31
- package/dist/session-DLFN_VII.js +0 -363
- package/dist/useFaceInfo-BJ8-_MOs.cjs +0 -1
- package/dist/useFaceInfo-Dk426LTu.js +0 -62
- package/dist/useFaceResults-CtetsO9M.js +0 -19
- package/dist/useFaceResults-wBJF3zyp.cjs +0 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { MakeupSkin, Vec3 } from '../../face-atlas/shading';
|
|
2
|
+
import { LipEffectSettings } from './settings';
|
|
3
|
+
/**
|
|
4
|
+
* The lip-specific part of the built-in lip shader, as constants the GLSL is
|
|
5
|
+
* generated from and a TypeScript mirror of each step (tests and docs). The
|
|
6
|
+
* rest of the shading is the makeup core (`lib/face-atlas/shading.ts`).
|
|
7
|
+
*/
|
|
8
|
+
export declare const LIP_EFFECT_SHADING: Readonly<{
|
|
9
|
+
/** Half-width (atlas v) of the blend between the upper and lower lip at the mouth line. */
|
|
10
|
+
readonly seam: 0.004;
|
|
11
|
+
/** The extra lip highlight (`gloss`): Blinn-Phong exponent at `roughness` 0 … 1 (alpha.8's). */
|
|
12
|
+
readonly highlightSharp: 96;
|
|
13
|
+
readonly highlightBroad: 4;
|
|
14
|
+
/** `shading` at or above this follows the light fully (no flattening work in the shader). */
|
|
15
|
+
readonly fullShading: 0.999;
|
|
16
|
+
}>;
|
|
17
|
+
/** The opacity uniforms: `uOpacity` and the per-lip amounts `uLipOpacity = (upper, lower)`. */
|
|
18
|
+
export type LipEffectOpacity = {
|
|
19
|
+
/** `uOpacity`: the larger of the two lips' opacities (the finish's gate reads it). */
|
|
20
|
+
opacity: number;
|
|
21
|
+
/** The upper lip's opacity (both lips without `splitLips`), linear. */
|
|
22
|
+
upper: number;
|
|
23
|
+
/** The lower lip's opacity (`lowerLipOpacity` with `splitLips`), linear. */
|
|
24
|
+
lower: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Opacity is linear: 0.8 paints 80 % of the product. With `splitLips` the
|
|
28
|
+
* lower lip has its own amount; the shader scales the lip's mask by
|
|
29
|
+
* `lipOpacity / uOpacity`, so each lip's amount is exact and the finish's
|
|
30
|
+
* gloss and glitter terms keep their opacity gate.
|
|
31
|
+
*/
|
|
32
|
+
export declare const resolveLipEffectOpacity: (settings: Pick<LipEffectSettings, "opacity" | "splitLips" | "lowerLipOpacity">) => LipEffectOpacity;
|
|
33
|
+
/** 1 on the upper lip, 0 on the lower, blended over `seam` at the mouth line (atlas v). */
|
|
34
|
+
export declare const lipEffectUpperWeight: (v: number, mouthLineV: number) => number;
|
|
35
|
+
/**
|
|
36
|
+
* The mask scale of one fragment: its lip's opacity relative to `uOpacity`,
|
|
37
|
+
* so `mask · fade · uOpacity` (the finish's amount) is that lip's opacity.
|
|
38
|
+
*/
|
|
39
|
+
export declare const lipEffectMaskScale: (upperWeight: number, opacity: LipEffectOpacity) => number;
|
|
40
|
+
/**
|
|
41
|
+
* Where a lip fragment samples the design (before the texture transform).
|
|
42
|
+
* Designs are painted as on an unmirrored photo: image-left is the person's
|
|
43
|
+
* right. On the mirrored webcam (`personLeftSign` −1) the person's sides sit
|
|
44
|
+
* at the other atlas side, so the design is read at `(1 − u, v)`; the atlas
|
|
45
|
+
* is symmetric, so this is exact.
|
|
46
|
+
*/
|
|
47
|
+
export declare const lipEffectDesignUv: (u: number, v: number, personLeftSign: number) => [number, number];
|
|
48
|
+
/** The extra lip highlight's Blinn-Phong exponent for `roughness` (0 tight … 1 broad). */
|
|
49
|
+
export declare const lipEffectHighlightExponent: (roughness: number) => number;
|
|
50
|
+
/**
|
|
51
|
+
* Lips are darker and redder than the skin, so measured against the skin
|
|
52
|
+
* (`Rs`) their own colour would read as shadow and darken an opaque shade.
|
|
53
|
+
* The lip shader re-bases the light terms on the person's own lip colour
|
|
54
|
+
* (the probe's settled lip average, `lipStat`): `Rs' = lip`, so
|
|
55
|
+
* `S = lum(C) / lum(lip)` (1 on the average lip under the settled light);
|
|
56
|
+
* the local low-pass `L` is scaled by `lum(lip) / lum(Rs)`, so the local
|
|
57
|
+
* light level is unchanged and the camera highlight is measured above the
|
|
58
|
+
* lip's level; `Rf` keeps its light colour relative to the new reference.
|
|
59
|
+
* Until the probe has a lip colour (`ready`, or no lip seen) the sample is
|
|
60
|
+
* unchanged. Mirrors GLSL `lipReferenceSample`.
|
|
61
|
+
*/
|
|
62
|
+
export declare const lipEffectReferenceSample: <T extends MakeupSkin>(sample: T, lipStat: Vec3, ready: number) => T;
|
|
63
|
+
/**
|
|
64
|
+
* `shading` (0..1): how much of the camera's light the paint follows.
|
|
65
|
+
* 1 is the full skin-relative shading (`S = lum(C) / lum(Rs)`, the local
|
|
66
|
+
* clip, the camera highlight, the light colour); lower values move the
|
|
67
|
+
* skin references toward this pixel's own light, so at 0 the paint shows
|
|
68
|
+
* the shade as picked, with no camera highlight and no colour cast. The
|
|
69
|
+
* finish's own highlights stay. Mirrors GLSL `lipShadingSample`: the light
|
|
70
|
+
* terms of the result (`makeupLighting`) are `S' = mix(1, S, t)`,
|
|
71
|
+
* `local' = mix(1, local, t)`, `lightTint' = mix(1, lightTint, t)`.
|
|
72
|
+
*/
|
|
73
|
+
export declare const lipEffectShadingSample: <T extends MakeupSkin>(sample: T, shading: number) => T;
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
import { MakeupFinish } from '../Makeup/constants';
|
|
2
|
+
import { MakeupShadeSetting } from '../Makeup/shades';
|
|
3
|
+
import { LipMaskMode } from './types';
|
|
4
|
+
import { LipUvBounds } from './uvGuide';
|
|
5
|
+
import * as THREE from "three";
|
|
6
|
+
export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient", "shimmer", "glitter"];
|
|
7
|
+
export type LipEffectPresetKey = (typeof LIP_EFFECT_PRESET_KEYS)[number];
|
|
8
|
+
export type LipEffectPreset = LipEffectPresetKey | "custom";
|
|
9
|
+
export declare const LIP_EFFECT_COLOR_MODES: readonly ["texture", "solid"];
|
|
10
|
+
/** `texture` samples the design texture when one is given; `solid` ignores it. */
|
|
11
|
+
export type LipEffectColorMode = (typeof LIP_EFFECT_COLOR_MODES)[number];
|
|
12
|
+
export declare const LIP_EFFECT_GRADIENT_DIRECTIONS: readonly ["outward", "vertical", "horizontal"];
|
|
13
|
+
/** `outward` runs from the mouth line to the outer edge; the others span the lip box. */
|
|
14
|
+
export type LipEffectGradientDirection = (typeof LIP_EFFECT_GRADIENT_DIRECTIONS)[number];
|
|
15
|
+
/**
|
|
16
|
+
* Serializable lip effect settings. Every field is a plain value so the set
|
|
17
|
+
* can live in a scene store and drive the `LipEffectSettingsPanel` directly.
|
|
18
|
+
*
|
|
19
|
+
* Texture transform fields act on the design texture around the lip region:
|
|
20
|
+
* scale is a multiplier, offset is a fraction of the lip region's size
|
|
21
|
+
* (`1` = one lip width / height), rotation is degrees counter-clockwise as
|
|
22
|
+
* seen on the face, and the flips mirror the design across the lip centre.
|
|
23
|
+
* The design and the transform keep the person's sides on every feed (the
|
|
24
|
+
* lip material flips the design on the mirrored webcam).
|
|
25
|
+
*/
|
|
26
|
+
export type LipEffectSettings = {
|
|
27
|
+
/** `false` draws nothing. Looks use it for lips they leave bare. */
|
|
28
|
+
enabled: boolean;
|
|
29
|
+
preset: LipEffectPreset;
|
|
30
|
+
/**
|
|
31
|
+
* A named colour from `MAKEUP_SHADES.lips` (sets `color`), `"auto"` (the
|
|
32
|
+
* person's own lip colour, deepened; `color` is the fallback until it is
|
|
33
|
+
* measured) or `"custom"` (`color` as given). An explicit `color` that
|
|
34
|
+
* differs from the shade wins and the shade becomes `"custom"`.
|
|
35
|
+
*/
|
|
36
|
+
shade: MakeupShadeSetting<"lips">;
|
|
37
|
+
maskMode: LipMaskMode;
|
|
38
|
+
/** `solid` paints procedurally (colour and gradient only), even if a design texture is set. */
|
|
39
|
+
colorMode: LipEffectColorMode;
|
|
40
|
+
/** Tint multiplied into the design (or the fill colour without a design texture). */
|
|
41
|
+
color: string;
|
|
42
|
+
opacity: number;
|
|
43
|
+
/** 0 = sheer (filters the person's own lip colour, never lightens), 1 = opaque (covers it). */
|
|
44
|
+
coverage: number;
|
|
45
|
+
/** How the lips reflect light. Choosing a finish sets `shine` and the sparkle fields. */
|
|
46
|
+
finish: MakeupFinish;
|
|
47
|
+
/** Strength of the finish highlight, 0..1. */
|
|
48
|
+
shine: number;
|
|
49
|
+
/** Flake colour for `shimmer` / `glitter`; `""` derives it from the shade. */
|
|
50
|
+
sparkleColor: string;
|
|
51
|
+
/** Flake density, 0..1 (`shimmer` and `glitter` only). */
|
|
52
|
+
sparkleDensity: number;
|
|
53
|
+
/** Flake size in millimetres, 0.1..1.5. */
|
|
54
|
+
sparkleSize: number;
|
|
55
|
+
/** 0 shows the design as painted, 1 multiplies it fully by `color`. */
|
|
56
|
+
intensity: number;
|
|
57
|
+
/**
|
|
58
|
+
* How much of the camera's light and shadow the paint follows, 0..1. 1 (the
|
|
59
|
+
* default) is the full skin-relative shading: the lips' own light and
|
|
60
|
+
* shadow, their real highlight and the light's colour. 0 flattens the
|
|
61
|
+
* opaque part: the shade as picked, with only the finish's own highlight.
|
|
62
|
+
* The sheer part (`coverage` below 1) still filters the live lips, so their
|
|
63
|
+
* own light and texture show through it; use `coverage: 1` for a fully
|
|
64
|
+
* flat fill.
|
|
65
|
+
*/
|
|
66
|
+
shading: number;
|
|
67
|
+
/** Extra specular lip highlight on top of the finish. */
|
|
68
|
+
gloss: number;
|
|
69
|
+
/** Highlight spread: 0 = tight mirror-like, 1 = broad and soft. */
|
|
70
|
+
roughness: number;
|
|
71
|
+
highlightColor: string;
|
|
72
|
+
/** Second colour blended in towards the outer lip edge by `gradientAmount`. */
|
|
73
|
+
gradientColor: string;
|
|
74
|
+
gradientAmount: number;
|
|
75
|
+
gradientDirection: LipEffectGradientDirection;
|
|
76
|
+
/** Feather width at the outer lip boundary as a fraction of the lip band. 0 = hard edge. */
|
|
77
|
+
edgeSoftness: number;
|
|
78
|
+
/** Separate tint for the inner lip (and the mouth interior in `outer-lips` mode). */
|
|
79
|
+
innerLipColor: string;
|
|
80
|
+
innerLipAmount: number;
|
|
81
|
+
/** How far the inner tint reaches out from the mouth line, as a fraction of the band. */
|
|
82
|
+
innerLipWidth: number;
|
|
83
|
+
/** Give the lower lip its own colour, opacity and (via `lowerDesignTexture`) texture. */
|
|
84
|
+
splitLips: boolean;
|
|
85
|
+
lowerLipColor: string;
|
|
86
|
+
lowerLipOpacity: number;
|
|
87
|
+
textureScaleX: number;
|
|
88
|
+
textureScaleY: number;
|
|
89
|
+
textureOffsetX: number;
|
|
90
|
+
textureOffsetY: number;
|
|
91
|
+
textureRotation: number;
|
|
92
|
+
textureFlipX: boolean;
|
|
93
|
+
textureFlipY: boolean;
|
|
94
|
+
};
|
|
95
|
+
export declare const DEFAULT_LIP_EFFECT_SETTINGS: LipEffectSettings;
|
|
96
|
+
/**
|
|
97
|
+
* Built-in looks. A preset sets the material fields and the finish; it never
|
|
98
|
+
* touches the mask mode or the texture transform, which belong to the design.
|
|
99
|
+
* The finish then sets `shine` and the sparkle fields.
|
|
100
|
+
*/
|
|
101
|
+
export declare const LIP_EFFECT_PRESETS: Record<LipEffectPresetKey, Partial<LipEffectSettings>>;
|
|
102
|
+
export declare const isLipEffectPresetKey: (value: unknown) => value is LipEffectPresetKey;
|
|
103
|
+
/**
|
|
104
|
+
* Resolve partial settings to a complete, clamped set. Defaults come first,
|
|
105
|
+
* then the named preset (if any), then the finish's `shine` and sparkle
|
|
106
|
+
* values, then the shade's colour, then every explicitly provided value.
|
|
107
|
+
*
|
|
108
|
+
* A resolved object carries the values its preset and finish produced, so a
|
|
109
|
+
* `preset` or `finish` spread after it changes nothing else: edit resolved
|
|
110
|
+
* settings with `patchLipEffectSettings`. A named shade spread after it still
|
|
111
|
+
* replaces a colour that a shade or the preset produced, not a custom one.
|
|
112
|
+
*/
|
|
113
|
+
export declare const resolveLipEffectSettings: (input?: Partial<LipEffectSettings>) => LipEffectSettings;
|
|
114
|
+
/**
|
|
115
|
+
* Apply an edit, from a panel (the whole object) or from code (a sparse
|
|
116
|
+
* patch).
|
|
117
|
+
*
|
|
118
|
+
* - Choosing a different preset re-applies that preset's values.
|
|
119
|
+
* - Choosing a different finish (directly or through the preset) re-applies
|
|
120
|
+
* its `shine` and sparkle values.
|
|
121
|
+
* - A named or `"auto"` shade keeps setting `color` (also across a preset
|
|
122
|
+
* switch); a `color` that differs from the current one makes the shade
|
|
123
|
+
* `"custom"`.
|
|
124
|
+
* - The patch's other values win over the preset's and finish's values.
|
|
125
|
+
*
|
|
126
|
+
* A whole-object patch counts only the fields that differ from `current`, so
|
|
127
|
+
* its unchanged fields never pin the old preset's or finish's values. A
|
|
128
|
+
* sparse patch (one that leaves out fields of `current`) keeps every value it
|
|
129
|
+
* sets, also one equal to the current value: `{ finish: "gloss", shine: 0.3 }`
|
|
130
|
+
* keeps `shine` 0.3.
|
|
131
|
+
*/
|
|
132
|
+
export declare const patchLipEffectSettings: (current: LipEffectSettings, patch: Partial<LipEffectSettings>) => LipEffectSettings;
|
|
133
|
+
export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
134
|
+
readonly key: "enabled";
|
|
135
|
+
readonly label: "On";
|
|
136
|
+
readonly type: "boolean";
|
|
137
|
+
}, {
|
|
138
|
+
readonly key: "preset";
|
|
139
|
+
readonly label: "Preset";
|
|
140
|
+
readonly type: "select";
|
|
141
|
+
readonly options: [{
|
|
142
|
+
readonly label: "Custom";
|
|
143
|
+
readonly value: "custom";
|
|
144
|
+
}, ...{
|
|
145
|
+
label: string;
|
|
146
|
+
value: "gradient" | "tint" | "matte" | "gloss" | "shimmer" | "metallic" | "glitter" | "lipstick";
|
|
147
|
+
}[]];
|
|
148
|
+
}, {
|
|
149
|
+
readonly key: "shade";
|
|
150
|
+
readonly label: "Shade";
|
|
151
|
+
readonly type: "select";
|
|
152
|
+
readonly options: {
|
|
153
|
+
label: string;
|
|
154
|
+
value: string;
|
|
155
|
+
}[];
|
|
156
|
+
}, {
|
|
157
|
+
readonly key: "maskMode";
|
|
158
|
+
readonly label: "Mask mode";
|
|
159
|
+
readonly type: "select";
|
|
160
|
+
readonly options: [{
|
|
161
|
+
readonly label: "Outer + inner lips (mouth cut out)";
|
|
162
|
+
readonly value: "outer-and-inner-lips";
|
|
163
|
+
}, {
|
|
164
|
+
readonly label: "Outer lips (mouth included)";
|
|
165
|
+
readonly value: "outer-lips";
|
|
166
|
+
}];
|
|
167
|
+
}, {
|
|
168
|
+
readonly key: "colorMode";
|
|
169
|
+
readonly label: "Color mode";
|
|
170
|
+
readonly type: "select";
|
|
171
|
+
readonly options: [{
|
|
172
|
+
readonly label: "Design texture";
|
|
173
|
+
readonly value: "texture";
|
|
174
|
+
}, {
|
|
175
|
+
readonly label: "Procedural (solid / gradient)";
|
|
176
|
+
readonly value: "solid";
|
|
177
|
+
}];
|
|
178
|
+
}, {
|
|
179
|
+
readonly key: "color";
|
|
180
|
+
readonly label: "Tint color";
|
|
181
|
+
readonly type: "color";
|
|
182
|
+
}, {
|
|
183
|
+
readonly min: 0;
|
|
184
|
+
readonly max: 1;
|
|
185
|
+
readonly step: 0.01;
|
|
186
|
+
readonly key: "opacity";
|
|
187
|
+
readonly label: "Opacity";
|
|
188
|
+
readonly type: "number";
|
|
189
|
+
}, {
|
|
190
|
+
readonly min: 0;
|
|
191
|
+
readonly max: 1;
|
|
192
|
+
readonly step: 0.01;
|
|
193
|
+
readonly key: "coverage";
|
|
194
|
+
readonly label: "Coverage (sheer → opaque)";
|
|
195
|
+
readonly type: "number";
|
|
196
|
+
}, {
|
|
197
|
+
readonly key: "finish";
|
|
198
|
+
readonly label: "Finish";
|
|
199
|
+
readonly type: "select";
|
|
200
|
+
readonly options: {
|
|
201
|
+
label: string;
|
|
202
|
+
value: "matte" | "satin" | "gloss" | "shimmer" | "metallic" | "glitter";
|
|
203
|
+
}[];
|
|
204
|
+
}, {
|
|
205
|
+
readonly min: 0;
|
|
206
|
+
readonly max: 1;
|
|
207
|
+
readonly step: 0.01;
|
|
208
|
+
readonly key: "shine";
|
|
209
|
+
readonly label: "Shine";
|
|
210
|
+
readonly type: "number";
|
|
211
|
+
}, {
|
|
212
|
+
readonly key: "sparkleColor";
|
|
213
|
+
readonly label: "Sparkle color (blank = from shade)";
|
|
214
|
+
readonly type: "text";
|
|
215
|
+
}, {
|
|
216
|
+
readonly min: 0;
|
|
217
|
+
readonly max: 1;
|
|
218
|
+
readonly step: 0.01;
|
|
219
|
+
readonly key: "sparkleDensity";
|
|
220
|
+
readonly label: "Sparkle density";
|
|
221
|
+
readonly type: "number";
|
|
222
|
+
}, {
|
|
223
|
+
readonly key: "sparkleSize";
|
|
224
|
+
readonly label: "Sparkle size (mm)";
|
|
225
|
+
readonly type: "number";
|
|
226
|
+
readonly min: 0.1;
|
|
227
|
+
readonly max: 1.5;
|
|
228
|
+
readonly step: 0.05;
|
|
229
|
+
}, {
|
|
230
|
+
readonly min: 0;
|
|
231
|
+
readonly max: 1;
|
|
232
|
+
readonly step: 0.01;
|
|
233
|
+
readonly key: "intensity";
|
|
234
|
+
readonly label: "Tint intensity";
|
|
235
|
+
readonly type: "number";
|
|
236
|
+
}, {
|
|
237
|
+
readonly min: 0;
|
|
238
|
+
readonly max: 1;
|
|
239
|
+
readonly step: 0.01;
|
|
240
|
+
readonly key: "shading";
|
|
241
|
+
readonly label: "Follow light (0 = flat)";
|
|
242
|
+
readonly type: "number";
|
|
243
|
+
}, {
|
|
244
|
+
readonly min: 0;
|
|
245
|
+
readonly max: 1;
|
|
246
|
+
readonly step: 0.01;
|
|
247
|
+
readonly key: "gloss";
|
|
248
|
+
readonly label: "Gloss";
|
|
249
|
+
readonly type: "number";
|
|
250
|
+
}, {
|
|
251
|
+
readonly min: 0;
|
|
252
|
+
readonly max: 1;
|
|
253
|
+
readonly step: 0.01;
|
|
254
|
+
readonly key: "roughness";
|
|
255
|
+
readonly label: "Roughness";
|
|
256
|
+
readonly type: "number";
|
|
257
|
+
}, {
|
|
258
|
+
readonly key: "highlightColor";
|
|
259
|
+
readonly label: "Highlight color";
|
|
260
|
+
readonly type: "color";
|
|
261
|
+
}, {
|
|
262
|
+
readonly key: "gradientColor";
|
|
263
|
+
readonly label: "Gradient color";
|
|
264
|
+
readonly type: "color";
|
|
265
|
+
}, {
|
|
266
|
+
readonly min: 0;
|
|
267
|
+
readonly max: 1;
|
|
268
|
+
readonly step: 0.01;
|
|
269
|
+
readonly key: "gradientAmount";
|
|
270
|
+
readonly label: "Gradient amount";
|
|
271
|
+
readonly type: "number";
|
|
272
|
+
}, {
|
|
273
|
+
readonly key: "gradientDirection";
|
|
274
|
+
readonly label: "Gradient direction";
|
|
275
|
+
readonly type: "select";
|
|
276
|
+
readonly options: [{
|
|
277
|
+
readonly label: "Mouth line → outer edge";
|
|
278
|
+
readonly value: "outward";
|
|
279
|
+
}, {
|
|
280
|
+
readonly label: "Bottom → top";
|
|
281
|
+
readonly value: "vertical";
|
|
282
|
+
}, {
|
|
283
|
+
readonly label: "Person's right → left corner";
|
|
284
|
+
readonly value: "horizontal";
|
|
285
|
+
}];
|
|
286
|
+
}, {
|
|
287
|
+
readonly min: 0;
|
|
288
|
+
readonly max: 1;
|
|
289
|
+
readonly step: 0.01;
|
|
290
|
+
readonly key: "edgeSoftness";
|
|
291
|
+
readonly label: "Edge softness";
|
|
292
|
+
readonly type: "number";
|
|
293
|
+
}, {
|
|
294
|
+
readonly key: "innerLipColor";
|
|
295
|
+
readonly label: "Inner lip color";
|
|
296
|
+
readonly type: "color";
|
|
297
|
+
}, {
|
|
298
|
+
readonly min: 0;
|
|
299
|
+
readonly max: 1;
|
|
300
|
+
readonly step: 0.01;
|
|
301
|
+
readonly key: "innerLipAmount";
|
|
302
|
+
readonly label: "Inner lip amount";
|
|
303
|
+
readonly type: "number";
|
|
304
|
+
}, {
|
|
305
|
+
readonly min: 0;
|
|
306
|
+
readonly max: 1;
|
|
307
|
+
readonly step: 0.01;
|
|
308
|
+
readonly key: "innerLipWidth";
|
|
309
|
+
readonly label: "Inner lip width";
|
|
310
|
+
readonly type: "number";
|
|
311
|
+
}, {
|
|
312
|
+
readonly key: "splitLips";
|
|
313
|
+
readonly label: "Separate lower lip";
|
|
314
|
+
readonly type: "boolean";
|
|
315
|
+
}, {
|
|
316
|
+
readonly key: "lowerLipColor";
|
|
317
|
+
readonly label: "Lower lip color";
|
|
318
|
+
readonly type: "color";
|
|
319
|
+
}, {
|
|
320
|
+
readonly min: 0;
|
|
321
|
+
readonly max: 1;
|
|
322
|
+
readonly step: 0.01;
|
|
323
|
+
readonly key: "lowerLipOpacity";
|
|
324
|
+
readonly label: "Lower lip opacity";
|
|
325
|
+
readonly type: "number";
|
|
326
|
+
}, {
|
|
327
|
+
readonly key: "textureScaleX";
|
|
328
|
+
readonly label: "Texture scale X";
|
|
329
|
+
readonly type: "number";
|
|
330
|
+
readonly min: 0.1;
|
|
331
|
+
readonly max: 10;
|
|
332
|
+
readonly step: 0.05;
|
|
333
|
+
}, {
|
|
334
|
+
readonly key: "textureScaleY";
|
|
335
|
+
readonly label: "Texture scale Y";
|
|
336
|
+
readonly type: "number";
|
|
337
|
+
readonly min: 0.1;
|
|
338
|
+
readonly max: 10;
|
|
339
|
+
readonly step: 0.05;
|
|
340
|
+
}, {
|
|
341
|
+
readonly key: "textureOffsetX";
|
|
342
|
+
readonly label: "Texture offset X";
|
|
343
|
+
readonly type: "number";
|
|
344
|
+
readonly min: -1;
|
|
345
|
+
readonly max: 1;
|
|
346
|
+
readonly step: 0.01;
|
|
347
|
+
}, {
|
|
348
|
+
readonly key: "textureOffsetY";
|
|
349
|
+
readonly label: "Texture offset Y";
|
|
350
|
+
readonly type: "number";
|
|
351
|
+
readonly min: -1;
|
|
352
|
+
readonly max: 1;
|
|
353
|
+
readonly step: 0.01;
|
|
354
|
+
}, {
|
|
355
|
+
readonly key: "textureRotation";
|
|
356
|
+
readonly label: "Texture rotation°";
|
|
357
|
+
readonly type: "number";
|
|
358
|
+
readonly min: -180;
|
|
359
|
+
readonly max: 180;
|
|
360
|
+
readonly step: 1;
|
|
361
|
+
}, {
|
|
362
|
+
readonly key: "textureFlipX";
|
|
363
|
+
readonly label: "Flip horizontal";
|
|
364
|
+
readonly type: "boolean";
|
|
365
|
+
}, {
|
|
366
|
+
readonly key: "textureFlipY";
|
|
367
|
+
readonly label: "Flip vertical";
|
|
368
|
+
readonly type: "boolean";
|
|
369
|
+
}];
|
|
370
|
+
/**
|
|
371
|
+
* The UV-space sampling matrix for the design texture: `designUv = M * [u, v, 1]`.
|
|
372
|
+
* It is the inverse of the visual transform (scale, rotate, offset, flip
|
|
373
|
+
* about the lip region centre), so the design moves the way the settings read.
|
|
374
|
+
*/
|
|
375
|
+
export declare const createLipTextureTransform: (settings: Pick<LipEffectSettings, "textureScaleX" | "textureScaleY" | "textureOffsetX" | "textureOffsetY" | "textureRotation" | "textureFlipX" | "textureFlipY">, bounds: LipUvBounds, target?: THREE.Matrix3) => THREE.Matrix3;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The define that makes `LIP_EFFECT_VERTEX_SHADER` read the skin probe's
|
|
3
|
+
* stats (`uSkinStats`, `uSkinStatsPacked`: spread `skin.uniforms`). The
|
|
4
|
+
* built-in material sets it; without it the probe varyings read "not
|
|
5
|
+
* ready" and the shader binds no probe texture.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LIP_EFFECT_SKIN_STATS_DEFINE = "LIP_EFFECT_SKIN_STATS";
|
|
8
|
+
/**
|
|
9
|
+
* The lip vertex shader, for a `FaceAtlasLayer` geometry (the face-atlas
|
|
10
|
+
* surface's attributes). It writes every varying of the makeup core
|
|
11
|
+
* (`MAKEUP_VARYINGS_GLSL`: the camera at the un-warped point, the atlas uv,
|
|
12
|
+
* rest point and normals, `lipEdge`, and, with `LIP_EFFECT_SKIN_STATS`
|
|
13
|
+
* defined, the skin probe's stats) and, for custom lip shaders written
|
|
14
|
+
* against alpha.8, the old varyings:
|
|
15
|
+
*
|
|
16
|
+
* - `vUv`: the face-atlas uv (`FACE_ATLAS_UVS`, the design texture's layout);
|
|
17
|
+
* - `vFaceUv`: the camera-image uv (the `faceUv` attribute; `LipEffect` keeps
|
|
18
|
+
* it current for custom materials);
|
|
19
|
+
* - `vLipEdge`: 0 on the outer lip ring, 1 at the mouth line;
|
|
20
|
+
* - `vNormal`: the live normal in view space; `vViewDir`: surface → eye, view space.
|
|
21
|
+
*
|
|
22
|
+
* `gl_Position` is computed exactly as the face's depth pre-pass does.
|
|
23
|
+
*/
|
|
24
|
+
export declare const LIP_EFFECT_VERTEX_SHADER: string;
|
|
25
|
+
/**
|
|
26
|
+
* The lip-specific fragment code, after the makeup core chunks: the design
|
|
27
|
+
* (flipped on mirrored feeds, sRGB-decoded when the GPU does not), the
|
|
28
|
+
* per-lip shade, gradient and inner-lip tint, the feathered mask with each
|
|
29
|
+
* lip's linear opacity, `shading`, the finish (`makeupFinish`) and the
|
|
30
|
+
* alpha.8 extra highlight (`gloss`, `roughness`, `highlightColor`).
|
|
31
|
+
* Mirrors `lipShading.ts`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const LIP_EFFECT_GLSL: string;
|
|
34
|
+
/**
|
|
35
|
+
* The built-in lip fragment shader: the makeup core (`common` → `shading`
|
|
36
|
+
* → `sparkle` → `finish`) plus the lip code. Premultiplied output; draw it
|
|
37
|
+
* with `MAKEUP_BLENDING`.
|
|
38
|
+
*/
|
|
39
|
+
export declare const LIP_EFFECT_FRAGMENT_SHADER: string;
|
|
@@ -1,22 +1,141 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import { FaceAtlasUniforms } from '../../face-atlas/registry';
|
|
3
|
+
import { FaceSkinReference, FaceSkinUniforms } from '../FaceAtlas/useFaceSkin';
|
|
4
|
+
import { LipEffectSettings } from './settings';
|
|
5
|
+
import { LipUvBounds } from './uvGuide';
|
|
2
6
|
import type * as THREE from "three";
|
|
3
7
|
export type LipMaskMode = "outer-lips" | "outer-and-inner-lips";
|
|
8
|
+
/**
|
|
9
|
+
* Inputs handed to a custom lip material factory: everything alpha.8 gave,
|
|
10
|
+
* plus the face-atlas surface's rest positions, the face's skin probe, the
|
|
11
|
+
* side sign and the layer's uniforms. The default `LipEffectMaterial` is
|
|
12
|
+
* built from the same inputs.
|
|
13
|
+
*/
|
|
4
14
|
export type LipEffectMaterialContext = {
|
|
15
|
+
/** Live camera frame; sample it with `faceUv` to read the skin under the lips. */
|
|
5
16
|
cameraTexture: THREE.Texture | null;
|
|
17
|
+
/** The creator's design texture in the face atlas (`FACE_ATLAS_UVS`), or `null` when none was given. */
|
|
6
18
|
designTexture: THREE.Texture | null;
|
|
7
|
-
|
|
8
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Live per-vertex camera-texture UVs. The same attribute is bound to the lip
|
|
21
|
+
* geometry as `attribute vec2 faceUv` (kept current while a custom material
|
|
22
|
+
* is in use), so a custom vertex shader can read it directly; the object is
|
|
23
|
+
* exposed for uniforms, debugging, or readback.
|
|
24
|
+
*/
|
|
25
|
+
faceUv: THREE.BufferAttribute;
|
|
26
|
+
/** Static per-vertex lip band position, bound as `attribute float lipEdge` (0 outer ring, 1 mouth line). */
|
|
27
|
+
lipEdge: THREE.BufferAttribute;
|
|
28
|
+
/** Rest position of each vertex in canonical cm (+X is canonical, not a side), `attribute vec3 restPosition`. */
|
|
29
|
+
restPosition: THREE.BufferAttribute;
|
|
30
|
+
/** Design texture for the lower lip when `splitLips` is on, or `null`. */
|
|
31
|
+
lowerDesignTexture: THREE.Texture | null;
|
|
9
32
|
faceIndex: number;
|
|
33
|
+
/** The active mask mode, so a custom material can decide whether to honour the mouth stencil. */
|
|
34
|
+
maskMode: LipMaskMode;
|
|
35
|
+
/** Lip region of the face atlas, for texture transforms and gradients. */
|
|
36
|
+
lipUvBounds: LipUvBounds;
|
|
37
|
+
/** The resolved settings driving the built-in material. */
|
|
38
|
+
settings: LipEffectSettings;
|
|
39
|
+
/**
|
|
40
|
+
* `personLeftSign(mirrored)`: +1 on an unmirrored feed, −1 on the mirrored
|
|
41
|
+
* webcam. Designs are painted as on an unmirrored photo; sample them at
|
|
42
|
+
* `(1 − u, v)` when it is −1 so they keep the person's sides.
|
|
43
|
+
*/
|
|
44
|
+
personLeftSign: 1 | -1;
|
|
45
|
+
/**
|
|
46
|
+
* The face's skin probe (`useFaceSkin`): spread `skin.uniforms` into a
|
|
47
|
+
* material whose vertex shader is `LIP_EFFECT_VERTEX_SHADER` (it reads
|
|
48
|
+
* `uSkinStats`), or read the person's skin, light and lip colour yourself.
|
|
49
|
+
*/
|
|
50
|
+
skin: FaceSkinReference;
|
|
51
|
+
/**
|
|
52
|
+
* The layer's uniforms with the face's live skin probe: `uCameraMap`,
|
|
53
|
+
* `uPresence` (fade in / out with the face), `uPersonLeftSign`, and
|
|
54
|
+
* `skin.uniforms` (`uSkinStats`, `uSkinStatsPacked`, `uSkinMap`, `uSkinLod`,
|
|
55
|
+
* `uSkinSqrt`). Spread it whole into a material's `uniforms`; the `{ value }`
|
|
56
|
+
* objects are the ones the SDK updates every frame.
|
|
57
|
+
*/
|
|
58
|
+
uniforms: FaceAtlasUniforms & FaceSkinUniforms;
|
|
10
59
|
};
|
|
11
|
-
|
|
12
|
-
export type
|
|
60
|
+
/** A material node, or a three.js material instance (which can be shared across meshes and faces). */
|
|
61
|
+
export type LipEffectMaterialResult = ReactNode | THREE.Material;
|
|
62
|
+
export type LipEffectMaterialSpec = LipEffectMaterialResult | ((context: LipEffectMaterialContext) => LipEffectMaterialResult);
|
|
63
|
+
export type LipEffectProps = Partial<LipEffectSettings> & {
|
|
64
|
+
/**
|
|
65
|
+
* Which tracked face. Default: the face of the `FaceRig` / `FaceWarp3D` /
|
|
66
|
+
* `FaceMorph` it is nested in (it rides that face), else the enclosing
|
|
67
|
+
* `FaceTracker`'s `faceIndex`, else 0.
|
|
68
|
+
*/
|
|
13
69
|
faceIndex?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Faces to ask the face model for when the lips start it themselves (no
|
|
72
|
+
* `FaceTracker` above): at least `faceIndex + 1`. Pass the same count to
|
|
73
|
+
* every face component; the first to start the model sets it. A
|
|
74
|
+
* `FaceTracker` mounted beside the lips in the same commit starts it first
|
|
75
|
+
* (its `numFaces` and `targetFps` win); one that mounts later, in another
|
|
76
|
+
* commit (a later `Suspense`), does not: give the lips its `numFaces`.
|
|
77
|
+
*/
|
|
78
|
+
numFaces?: number;
|
|
79
|
+
/** Whether the feed is mirrored, for the design's sides. Default: the session's (`useXRMirrored`). */
|
|
80
|
+
mirrored?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Design texture in the face atlas, painted as on an unmirrored photo
|
|
83
|
+
* (image-left = the person's right). Without one the lips are filled with `color`.
|
|
84
|
+
*/
|
|
14
85
|
designTexture?: THREE.Texture | string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
intensity?: number;
|
|
18
|
-
maskMode?: LipMaskMode;
|
|
19
|
-
shading?: boolean;
|
|
86
|
+
/** Lower-lip design texture, used when `splitLips` is on. Falls back to `designTexture`. */
|
|
87
|
+
lowerDesignTexture?: THREE.Texture | string;
|
|
20
88
|
material?: LipEffectMaterialSpec;
|
|
89
|
+
/**
|
|
90
|
+
* Use this material instead of the built-in one (and instead of `material`),
|
|
91
|
+
* for example one from `useLipEffectMaterial` shared by several faces.
|
|
92
|
+
*/
|
|
93
|
+
sharedMaterial?: THREE.Material;
|
|
94
|
+
/**
|
|
95
|
+
* Keep the `faceUv` attribute (camera-image uv per vertex) current for a
|
|
96
|
+
* custom material: one projection of the face's landmarks per frame.
|
|
97
|
+
* Default: on for a custom `material` or `sharedMaterial`, off for the
|
|
98
|
+
* built-in one (a `LipEffectMaterial` node, a `createLipEffectMaterial` /
|
|
99
|
+
* `useLipEffectMaterial` instance). A factory function cannot be inspected
|
|
100
|
+
* in advance: pass `faceUv={false}` when it returns the built-in material.
|
|
101
|
+
*/
|
|
102
|
+
faceUv?: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* @deprecated Ignored. The lips ride the face's shared surface, which
|
|
105
|
+
* follows every landmark update (and leads between them by quality tier).
|
|
106
|
+
*/
|
|
107
|
+
maxUpdateFps?: number;
|
|
108
|
+
/**
|
|
109
|
+
* Keep the face on its last landmarks for this long (ms) across tracker
|
|
110
|
+
* dropouts, then fade it out. Default 250. The hold is the face's shared
|
|
111
|
+
* surface's (as `FaceAtlasLayer`'s `holdMs`): every layer on the face
|
|
112
|
+
* shares it, and the largest `holdMs` any of them asks for wins. Nested in
|
|
113
|
+
* a `FaceRig` / `FaceWarp3D` / `FaceMorph`, the rig's own `holdMs` applies.
|
|
114
|
+
*/
|
|
115
|
+
holdMs?: number;
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated Ignored. The face's shared surface leads the landmarks by the
|
|
118
|
+
* quality tier's interval (`FaceAtlasLayer` `leadMs`) and holds them still
|
|
119
|
+
* through dropouts.
|
|
120
|
+
*/
|
|
121
|
+
predictMs?: number;
|
|
122
|
+
/** Draw order of the lips. Default `MAKEUP_RENDER_ORDER.lips` (-1.64). */
|
|
123
|
+
renderOrder?: number;
|
|
124
|
+
};
|
|
125
|
+
/** Per-face configuration for `LipEffects`: everything but the face index. */
|
|
126
|
+
export type LipEffectFaceConfig = Omit<LipEffectProps, "faceIndex">;
|
|
127
|
+
export type LipEffectsProps = {
|
|
128
|
+
/** How many face slots to render. Match the tracker's `numFaces`. Default 2. */
|
|
129
|
+
maxFaces?: number;
|
|
130
|
+
/** One config for all faces, or a picker per face (`null` skips a face). */
|
|
131
|
+
faces: LipEffectFaceConfig | ((faceIndex: number) => LipEffectFaceConfig | null);
|
|
132
|
+
/** Share one built-in material across faces. Default: on for a single config, off for a picker. */
|
|
133
|
+
shareMaterial?: boolean;
|
|
134
|
+
/** @deprecated Ignored (see `LipEffectProps.maxUpdateFps`). */
|
|
135
|
+
maxUpdateFps?: number;
|
|
136
|
+
/** The faces' hold through dropouts (see `LipEffectProps.holdMs`: the largest on a face wins). */
|
|
137
|
+
holdMs?: number;
|
|
138
|
+
/** @deprecated Ignored (see `LipEffectProps.predictMs`). */
|
|
139
|
+
predictMs?: number;
|
|
21
140
|
renderOrder?: number;
|
|
22
141
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
export type LipDesignTextureSource = THREE.Texture | string | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the design texture props (URL or texture object) to textures.
|
|
5
|
+
* URLs load through R3F's loader cache, so faces sharing a URL share one
|
|
6
|
+
* texture; a constant hook count keeps the pair reloadable.
|
|
7
|
+
*
|
|
8
|
+
* The textures are returned as they are: a cached texture is shared with
|
|
9
|
+
* every other user of its URL, so its `colorSpace` is never changed here.
|
|
10
|
+
* The lip material decodes sRGB itself for a texture without a colour space
|
|
11
|
+
* (as `TextureLoader` loads it) and lets the GPU decode one tagged
|
|
12
|
+
* `SRGBColorSpace`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const useLipDesignTextures: (designTexture: LipDesignTextureSource, lowerDesignTexture: LipDesignTextureSource) => {
|
|
15
|
+
designTexture: THREE.Texture | null;
|
|
16
|
+
lowerDesignTexture: THREE.Texture | null;
|
|
17
|
+
};
|