@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
|
@@ -2,27 +2,75 @@ import { LipEffectSettings } from './settings';
|
|
|
2
2
|
import { LipEffectMaterialContext } from './types';
|
|
3
3
|
import { LipUvBounds } from './uvGuide';
|
|
4
4
|
import * as THREE from "three";
|
|
5
|
+
export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_SKIN_STATS_DEFINE, LIP_EFFECT_VERTEX_SHADER, } from './shader';
|
|
5
6
|
/** Everything the built-in lip material reads. */
|
|
6
7
|
export type LipEffectMaterialInputs = Pick<LipEffectMaterialContext, "cameraTexture" | "designTexture"> & {
|
|
7
8
|
settings: LipEffectSettings;
|
|
8
9
|
/** Lower-lip design texture, used when `settings.splitLips` is on. */
|
|
9
10
|
lowerDesignTexture?: THREE.Texture | null;
|
|
10
|
-
/** Lip region of the
|
|
11
|
+
/** Lip region of the face atlas; defaults to the atlas's own (`getLipUvBounds()`). */
|
|
11
12
|
lipUvBounds?: LipUvBounds;
|
|
12
13
|
/** Skip pixels the mouth-interior stencil marked (see `LipEffect` mask modes). */
|
|
13
14
|
subtractMouth?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* `personLeftSign(mirrored)`: −1 on the mirrored webcam flips the design so
|
|
17
|
+
* it keeps the person's sides. Inside a `LipEffect` the layer's own sign is
|
|
18
|
+
* used at draw time; this is the value outside one. Default 1.
|
|
19
|
+
*/
|
|
20
|
+
personLeftSign?: 1 | -1;
|
|
14
21
|
};
|
|
15
22
|
export type LipEffectMaterialProps = LipEffectMaterialInputs;
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
type Uniform<T> = THREE.IUniform<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the shader decodes a design texture's sRGB itself (1) or reads it
|
|
26
|
+
* as linear (0); use the same rule in a custom lip shader. A texture tagged `SRGBColorSpace` is decoded by the GPU, a
|
|
27
|
+
* linear one or a render target's is used as is; anything else (an image,
|
|
28
|
+
* canvas or video loaded without a colour space, as `TextureLoader` leaves
|
|
29
|
+
* it) is taken as authored sRGB. Cached textures are never re-tagged.
|
|
30
|
+
*/
|
|
31
|
+
export declare const lipEffectDesignDecode: (texture: THREE.Texture) => 0 | 1;
|
|
32
|
+
/**
|
|
33
|
+
* One face's per-draw values for a built-in lip material: the layer's
|
|
34
|
+
* uniforms (camera, presence, side sign), the face's skin probe and the
|
|
35
|
+
* sparkle quality of the tier. A shared material (`LipEffects`,
|
|
36
|
+
* `sharedMaterial`) draws several faces; it copies the face of each draw's
|
|
37
|
+
* geometry in `onBeforeRender`.
|
|
38
|
+
*/
|
|
39
|
+
export type LipEffectFaceBinding = {
|
|
40
|
+
layer: {
|
|
41
|
+
uCameraMap: Uniform<THREE.Texture | null>;
|
|
42
|
+
uPresence: Uniform<number>;
|
|
43
|
+
uPersonLeftSign: Uniform<number>;
|
|
44
|
+
};
|
|
45
|
+
skin: {
|
|
46
|
+
uSkinMap: Uniform<THREE.Texture | null>;
|
|
47
|
+
uSkinLod: Uniform<number>;
|
|
48
|
+
uSkinSqrt: Uniform<number>;
|
|
49
|
+
uSkinStats: Uniform<THREE.Texture | null>;
|
|
50
|
+
uSkinStatsPacked: Uniform<number>;
|
|
51
|
+
};
|
|
52
|
+
sparkleQuality: Uniform<number>;
|
|
53
|
+
};
|
|
54
|
+
/** Ties a lip layer geometry to its face (internal: `LipEffect` binds each layer it draws). */
|
|
55
|
+
export declare const bindLipEffectFace: (geometry: THREE.BufferGeometry, binding: LipEffectFaceBinding) => void;
|
|
56
|
+
/** Copies the bound face's per-draw values into a built-in lip material. Returns whether one was bound. */
|
|
57
|
+
export declare const applyLipEffectFaceBinding: (material: THREE.ShaderMaterial, geometry: THREE.BufferGeometry) => boolean;
|
|
58
|
+
/** Whether `material` is a built-in lip material (`createLipEffectMaterial`). */
|
|
59
|
+
export declare const isLipEffectMaterial: (material: unknown) => material is THREE.ShaderMaterial;
|
|
18
60
|
/**
|
|
19
61
|
* Create the built-in lip material as a plain three.js object. Pair it with
|
|
20
62
|
* `updateLipEffectMaterial`, or let `useLipEffectMaterial` own it. One
|
|
21
|
-
* material can be shared by several faces and lip
|
|
63
|
+
* material can be shared by several faces and lip layers: each draw reads
|
|
64
|
+
* its own face (presence, skin probe, side sign).
|
|
65
|
+
*
|
|
66
|
+
* It draws `LipEffect`'s face-atlas layers (`LipEffect` binds each draw to
|
|
67
|
+
* its face; elsewhere it would not fade, shade or flip): opaque pass,
|
|
68
|
+
* premultiplied over (`MAKEUP_BLENDING`), depth-tested without depth writes,
|
|
69
|
+
* and the mouth stencil test on bit `FACE_ATLAS_STENCIL.mouth` only.
|
|
22
70
|
*/
|
|
23
71
|
export declare const createLipEffectMaterial: () => THREE.ShaderMaterial;
|
|
24
72
|
/** Push the current inputs into a material made by `createLipEffectMaterial`. */
|
|
25
|
-
export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
|
|
73
|
+
export declare const updateLipEffectMaterial: (material: THREE.ShaderMaterial, { cameraTexture, designTexture, lowerDesignTexture, settings, lipUvBounds, subtractMouth, personLeftSign, }: LipEffectMaterialInputs) => THREE.ShaderMaterial;
|
|
26
74
|
/**
|
|
27
75
|
* Like `useLipEffectMaterial`, but allocates nothing while `enabled` is false.
|
|
28
76
|
* Lets a component keep a constant hook order without paying for materials it
|
|
@@ -32,14 +80,18 @@ export declare const useOptionalLipEffectMaterial: (inputs: LipEffectMaterialInp
|
|
|
32
80
|
/**
|
|
33
81
|
* Own one built-in lip material for the component's lifetime and keep it in
|
|
34
82
|
* sync with the inputs on every render. Pass the result to `LipEffect`'s
|
|
35
|
-
* `sharedMaterial
|
|
83
|
+
* `sharedMaterial` or return it from a `material` factory. It reads its face
|
|
84
|
+
* (presence fade, skin probe, side sign) only where `LipEffect` /
|
|
85
|
+
* `LipEffects` draw it; on another mesh it would draw unfaded, unshaded and
|
|
86
|
+
* unflipped.
|
|
36
87
|
*/
|
|
37
88
|
export declare const useLipEffectMaterial: (inputs: LipEffectMaterialInputs) => THREE.ShaderMaterial;
|
|
38
89
|
/**
|
|
39
|
-
* The built-in lip material as a React node: the design texture (
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
90
|
+
* The built-in lip material as a React node: the design texture (face
|
|
91
|
+
* atlas) or a procedural fill, tinted per lip, with gradient, inner-lip tint
|
|
92
|
+
* and feathered edge, shaded by the makeup core against the person's own
|
|
93
|
+
* skin and light (finish, coverage, `shading`), plus the extra lip
|
|
94
|
+
* highlight. Transparent design pixels leave the skin untouched.
|
|
43
95
|
*
|
|
44
96
|
* Each instance owns its own material; use `useLipEffectMaterial` to share one.
|
|
45
97
|
*/
|
|
@@ -4,6 +4,9 @@ export declare const resolveLipEffectFaceConfig: (faces: LipEffectsProps["faces"
|
|
|
4
4
|
/**
|
|
5
5
|
* Lip effects for several tracked faces at once. Pass one config for every
|
|
6
6
|
* face, or a function that picks settings, textures or a material per face.
|
|
7
|
-
* With a single config the faces share one built-in material by default
|
|
7
|
+
* With a single config the faces share one built-in material by default:
|
|
8
|
+
* each draw still reads its own face (presence, skin probe, side sign).
|
|
9
|
+
* Without a `FaceTracker` above, the lips start the face model with
|
|
10
|
+
* `maxFaces` faces.
|
|
8
11
|
*/
|
|
9
|
-
export declare const LipEffects: ({ maxFaces, faces, shareMaterial,
|
|
12
|
+
export declare const LipEffects: ({ maxFaces, faces, shareMaterial, holdMs, renderOrder, }: LipEffectsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Default draw order of `LipEffect`: `MAKEUP_RENDER_ORDER.lips` (-1.64), the
|
|
3
|
+
* last makeup layer of the opaque face layer, so hands (`HandCutout`), the
|
|
4
|
+
* head occluder, glasses and accessories draw over the lips. alpha.8 drew
|
|
5
|
+
* them transparent at 30.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_LIP_EFFECT_RENDER_ORDER: -1.64;
|
|
8
|
+
/**
|
|
9
|
+
* How far before the lips the mouth layer draws: in `outer-and-inner-lips`
|
|
10
|
+
* mode it writes the mouth stencil bit the lips then test.
|
|
11
|
+
*/
|
|
12
|
+
export declare const LIP_EFFECT_MOUTH_ORDER_OFFSET = 0.001;
|
|
2
13
|
/** Complete defaults: the serializable settings plus the render order. */
|
|
3
14
|
export declare const DEFAULT_LIP_EFFECT: {
|
|
4
|
-
renderOrder:
|
|
15
|
+
renderOrder: -1.64;
|
|
16
|
+
enabled: boolean;
|
|
5
17
|
preset: import('./settings').LipEffectPreset;
|
|
18
|
+
shade: import('../Makeup').MakeupShadeSetting<"lips">;
|
|
6
19
|
maskMode: import('./types').LipMaskMode;
|
|
7
20
|
colorMode: import('./settings').LipEffectColorMode;
|
|
8
21
|
color: string;
|
|
9
22
|
opacity: number;
|
|
23
|
+
coverage: number;
|
|
24
|
+
finish: import('../Makeup').MakeupFinish;
|
|
25
|
+
shine: number;
|
|
26
|
+
sparkleColor: string;
|
|
27
|
+
sparkleDensity: number;
|
|
28
|
+
sparkleSize: number;
|
|
10
29
|
intensity: number;
|
|
11
30
|
shading: number;
|
|
12
31
|
gloss: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { LipEffect } from './LipEffect';
|
|
2
2
|
export { LipEffects, resolveLipEffectFaceConfig } from './LipEffects';
|
|
3
|
-
export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
|
|
3
|
+
export { LIP_EFFECT_FRAGMENT_SHADER, LIP_EFFECT_VERTEX_SHADER, LipEffectMaterial, createLipEffectMaterial, lipEffectDesignDecode, updateLipEffectMaterial, useLipEffectMaterial, } from './LipEffectMaterial';
|
|
4
4
|
export type { LipEffectMaterialInputs, LipEffectMaterialProps } from './LipEffectMaterial';
|
|
5
5
|
export { useLipDesignTextures } from './useLipDesignTextures';
|
|
6
6
|
export type { LipDesignTextureSource } from './useLipDesignTextures';
|
|
@@ -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;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { MakeupFinish } from '../Makeup/constants';
|
|
2
|
+
import { MakeupShadeSetting } from '../Makeup/shades';
|
|
1
3
|
import { LipMaskMode } from './types';
|
|
2
4
|
import { LipUvBounds } from './uvGuide';
|
|
3
5
|
import * as THREE from "three";
|
|
4
|
-
export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient"];
|
|
6
|
+
export declare const LIP_EFFECT_PRESET_KEYS: readonly ["lipstick", "gloss", "matte", "tint", "metallic", "gradient", "shimmer", "glitter"];
|
|
5
7
|
export type LipEffectPresetKey = (typeof LIP_EFFECT_PRESET_KEYS)[number];
|
|
6
8
|
export type LipEffectPreset = LipEffectPresetKey | "custom";
|
|
7
9
|
export declare const LIP_EFFECT_COLOR_MODES: readonly ["texture", "solid"];
|
|
@@ -18,20 +20,51 @@ export type LipEffectGradientDirection = (typeof LIP_EFFECT_GRADIENT_DIRECTIONS)
|
|
|
18
20
|
* scale is a multiplier, offset is a fraction of the lip region's size
|
|
19
21
|
* (`1` = one lip width / height), rotation is degrees counter-clockwise as
|
|
20
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).
|
|
21
25
|
*/
|
|
22
26
|
export type LipEffectSettings = {
|
|
27
|
+
/** `false` draws nothing. Looks use it for lips they leave bare. */
|
|
28
|
+
enabled: boolean;
|
|
23
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">;
|
|
24
37
|
maskMode: LipMaskMode;
|
|
25
38
|
/** `solid` paints procedurally (colour and gradient only), even if a design texture is set. */
|
|
26
39
|
colorMode: LipEffectColorMode;
|
|
27
40
|
/** Tint multiplied into the design (or the fill colour without a design texture). */
|
|
28
41
|
color: string;
|
|
29
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;
|
|
30
55
|
/** 0 shows the design as painted, 1 multiplies it fully by `color`. */
|
|
31
56
|
intensity: number;
|
|
32
|
-
/**
|
|
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
|
+
*/
|
|
33
66
|
shading: number;
|
|
34
|
-
/**
|
|
67
|
+
/** Extra specular lip highlight on top of the finish. */
|
|
35
68
|
gloss: number;
|
|
36
69
|
/** Highlight spread: 0 = tight mirror-like, 1 = broad and soft. */
|
|
37
70
|
roughness: number;
|
|
@@ -61,24 +94,47 @@ export type LipEffectSettings = {
|
|
|
61
94
|
};
|
|
62
95
|
export declare const DEFAULT_LIP_EFFECT_SETTINGS: LipEffectSettings;
|
|
63
96
|
/**
|
|
64
|
-
* Built-in looks. A preset sets the material fields
|
|
65
|
-
* the mask mode or the texture transform, which belong to the design.
|
|
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.
|
|
66
100
|
*/
|
|
67
101
|
export declare const LIP_EFFECT_PRESETS: Record<LipEffectPresetKey, Partial<LipEffectSettings>>;
|
|
68
102
|
export declare const isLipEffectPresetKey: (value: unknown) => value is LipEffectPresetKey;
|
|
69
103
|
/**
|
|
70
104
|
* Resolve partial settings to a complete, clamped set. Defaults come first,
|
|
71
|
-
* then the named preset (if any), then
|
|
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.
|
|
72
112
|
*/
|
|
73
113
|
export declare const resolveLipEffectSettings: (input?: Partial<LipEffectSettings>) => LipEffectSettings;
|
|
74
114
|
/**
|
|
75
|
-
* Apply an edit
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
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.
|
|
79
131
|
*/
|
|
80
132
|
export declare const patchLipEffectSettings: (current: LipEffectSettings, patch: Partial<LipEffectSettings>) => LipEffectSettings;
|
|
81
133
|
export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
134
|
+
readonly key: "enabled";
|
|
135
|
+
readonly label: "On";
|
|
136
|
+
readonly type: "boolean";
|
|
137
|
+
}, {
|
|
82
138
|
readonly key: "preset";
|
|
83
139
|
readonly label: "Preset";
|
|
84
140
|
readonly type: "select";
|
|
@@ -87,8 +143,16 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
|
87
143
|
readonly value: "custom";
|
|
88
144
|
}, ...{
|
|
89
145
|
label: string;
|
|
90
|
-
value: "gradient" | "tint" | "
|
|
146
|
+
value: "gradient" | "tint" | "matte" | "gloss" | "shimmer" | "metallic" | "glitter" | "lipstick";
|
|
91
147
|
}[]];
|
|
148
|
+
}, {
|
|
149
|
+
readonly key: "shade";
|
|
150
|
+
readonly label: "Shade";
|
|
151
|
+
readonly type: "select";
|
|
152
|
+
readonly options: {
|
|
153
|
+
label: string;
|
|
154
|
+
value: string;
|
|
155
|
+
}[];
|
|
92
156
|
}, {
|
|
93
157
|
readonly key: "maskMode";
|
|
94
158
|
readonly label: "Mask mode";
|
|
@@ -122,6 +186,46 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
|
122
186
|
readonly key: "opacity";
|
|
123
187
|
readonly label: "Opacity";
|
|
124
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;
|
|
125
229
|
}, {
|
|
126
230
|
readonly min: 0;
|
|
127
231
|
readonly max: 1;
|
|
@@ -134,7 +238,7 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
|
134
238
|
readonly max: 1;
|
|
135
239
|
readonly step: 0.01;
|
|
136
240
|
readonly key: "shading";
|
|
137
|
-
readonly label: "
|
|
241
|
+
readonly label: "Follow light (0 = flat)";
|
|
138
242
|
readonly type: "number";
|
|
139
243
|
}, {
|
|
140
244
|
readonly min: 0;
|
|
@@ -176,7 +280,7 @@ export declare const LIP_EFFECT_SETTINGS_FIELDS: [{
|
|
|
176
280
|
readonly label: "Bottom → top";
|
|
177
281
|
readonly value: "vertical";
|
|
178
282
|
}, {
|
|
179
|
-
readonly label: "
|
|
283
|
+
readonly label: "Person's right → left corner";
|
|
180
284
|
readonly value: "horizontal";
|
|
181
285
|
}];
|
|
182
286
|
}, {
|
|
@@ -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,41 +1,87 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import { FaceAtlasUniforms } from '../../face-atlas/registry';
|
|
3
|
+
import { FaceSkinReference, FaceSkinUniforms } from '../FaceAtlas/useFaceSkin';
|
|
2
4
|
import { LipEffectSettings } from './settings';
|
|
3
5
|
import { LipUvBounds } from './uvGuide';
|
|
4
6
|
import type * as THREE from "three";
|
|
5
7
|
export type LipMaskMode = "outer-lips" | "outer-and-inner-lips";
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
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.
|
|
9
13
|
*/
|
|
10
14
|
export type LipEffectMaterialContext = {
|
|
11
15
|
/** Live camera frame; sample it with `faceUv` to read the skin under the lips. */
|
|
12
16
|
cameraTexture: THREE.Texture | null;
|
|
13
|
-
/** The creator's design texture in
|
|
17
|
+
/** The creator's design texture in the face atlas (`FACE_ATLAS_UVS`), or `null` when none was given. */
|
|
14
18
|
designTexture: THREE.Texture | null;
|
|
15
19
|
/**
|
|
16
20
|
* Live per-vertex camera-texture UVs. The same attribute is bound to the lip
|
|
17
|
-
* geometry as `attribute vec2 faceUv
|
|
18
|
-
*
|
|
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.
|
|
19
24
|
*/
|
|
20
25
|
faceUv: THREE.BufferAttribute;
|
|
21
26
|
/** Static per-vertex lip band position, bound as `attribute float lipEdge` (0 outer ring, 1 mouth line). */
|
|
22
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;
|
|
23
30
|
/** Design texture for the lower lip when `splitLips` is on, or `null`. */
|
|
24
31
|
lowerDesignTexture: THREE.Texture | null;
|
|
25
32
|
faceIndex: number;
|
|
26
33
|
/** The active mask mode, so a custom material can decide whether to honour the mouth stencil. */
|
|
27
34
|
maskMode: LipMaskMode;
|
|
28
|
-
/** Lip region of the
|
|
35
|
+
/** Lip region of the face atlas, for texture transforms and gradients. */
|
|
29
36
|
lipUvBounds: LipUvBounds;
|
|
30
37
|
/** The resolved settings driving the built-in material. */
|
|
31
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;
|
|
32
59
|
};
|
|
33
60
|
/** A material node, or a three.js material instance (which can be shared across meshes and faces). */
|
|
34
61
|
export type LipEffectMaterialResult = ReactNode | THREE.Material;
|
|
35
62
|
export type LipEffectMaterialSpec = LipEffectMaterialResult | ((context: LipEffectMaterialContext) => LipEffectMaterialResult);
|
|
36
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
|
+
*/
|
|
37
69
|
faceIndex?: number;
|
|
38
|
-
/**
|
|
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
|
+
*/
|
|
39
85
|
designTexture?: THREE.Texture | string;
|
|
40
86
|
/** Lower-lip design texture, used when `splitLips` is on. Falls back to `designTexture`. */
|
|
41
87
|
lowerDesignTexture?: THREE.Texture | string;
|
|
@@ -45,12 +91,35 @@ export type LipEffectProps = Partial<LipEffectSettings> & {
|
|
|
45
91
|
* for example one from `useLipEffectMaterial` shared by several faces.
|
|
46
92
|
*/
|
|
47
93
|
sharedMaterial?: THREE.Material;
|
|
48
|
-
/**
|
|
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
|
+
*/
|
|
49
107
|
maxUpdateFps?: number;
|
|
50
|
-
/**
|
|
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
|
+
*/
|
|
51
115
|
holdMs?: number;
|
|
52
|
-
/**
|
|
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
|
+
*/
|
|
53
121
|
predictMs?: number;
|
|
122
|
+
/** Draw order of the lips. Default `MAKEUP_RENDER_ORDER.lips` (-1.64). */
|
|
54
123
|
renderOrder?: number;
|
|
55
124
|
};
|
|
56
125
|
/** Per-face configuration for `LipEffects`: everything but the face index. */
|
|
@@ -62,8 +131,11 @@ export type LipEffectsProps = {
|
|
|
62
131
|
faces: LipEffectFaceConfig | ((faceIndex: number) => LipEffectFaceConfig | null);
|
|
63
132
|
/** Share one built-in material across faces. Default: on for a single config, off for a picker. */
|
|
64
133
|
shareMaterial?: boolean;
|
|
134
|
+
/** @deprecated Ignored (see `LipEffectProps.maxUpdateFps`). */
|
|
65
135
|
maxUpdateFps?: number;
|
|
136
|
+
/** The faces' hold through dropouts (see `LipEffectProps.holdMs`: the largest on a face wins). */
|
|
66
137
|
holdMs?: number;
|
|
138
|
+
/** @deprecated Ignored (see `LipEffectProps.predictMs`). */
|
|
67
139
|
predictMs?: number;
|
|
68
140
|
renderOrder?: number;
|
|
69
141
|
};
|
|
@@ -4,6 +4,12 @@ export type LipDesignTextureSource = THREE.Texture | string | undefined;
|
|
|
4
4
|
* Resolve the design texture props (URL or texture object) to textures.
|
|
5
5
|
* URLs load through R3F's loader cache, so faces sharing a URL share one
|
|
6
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`.
|
|
7
13
|
*/
|
|
8
14
|
export declare const useLipDesignTextures: (designTexture: LipDesignTextureSource, lowerDesignTexture: LipDesignTextureSource) => {
|
|
9
15
|
designTexture: THREE.Texture | null;
|