@vincentt-xr/sdk 2.0.0-alpha.8 → 2.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GROUNDING.md +4643 -170
- package/README.md +1 -0
- package/dist/CanonicalHeadFrame-BHcWyaiK.js +1506 -0
- package/dist/CanonicalHeadFrame-D-_T1OMU.cjs +1 -0
- package/dist/DebuggerUI-7ngnJsBe.js +275 -0
- package/dist/DebuggerUI-CoglgKdO.cjs +1 -0
- package/dist/FaceRetouch-CLoTfrcs.js +1071 -0
- package/dist/FaceRetouch-J1lC1WbS.cjs +134 -0
- package/dist/FaceSurface-CHAMEeG1.cjs +1 -0
- package/dist/FaceSurface-DmP9AEeC.js +27 -0
- package/dist/SegmentationOverlay-D_FWkcyP.cjs +35 -0
- package/dist/SegmentationOverlay-vn5x_knv.js +6237 -0
- package/dist/SkeletonUtils-C2r90MtN.js +21 -0
- package/dist/SkeletonUtils-CddIup1F.cjs +1 -0
- package/dist/TextLabel-XE0rQSDn.cjs +2 -0
- package/dist/TextLabel-c9BCucOI.js +961 -0
- package/dist/assets/gltfLoader.d.ts +16 -0
- package/dist/assets/loaders.d.ts +16 -1
- package/dist/body-pose/index.d.ts +521 -0
- package/dist/body-trigger/__fixtures__/syntheticBody.d.ts +83 -0
- package/dist/body-trigger/frame.d.ts +88 -0
- package/dist/body-trigger/index.d.ts +6 -0
- package/dist/body-trigger/moves.d.ts +235 -0
- package/dist/body-trigger/trigger.d.ts +75 -0
- package/dist/calibration/calibration.d.ts +11 -6
- package/dist/canonicalFace-BHwyCx1c.js +9 -0
- package/dist/canonicalFace-C83I225R.cjs +1 -0
- package/dist/components/BodyInstruction/BodyPoseHint.d.ts +63 -0
- package/dist/components/BodyInstruction/index.d.ts +69 -0
- package/dist/components/BodyInstruction/useBodyPose.d.ts +23 -0
- package/dist/components/BodyTracker/index.d.ts +10 -2
- package/dist/components/BodyTrigger/index.d.ts +49 -0
- package/dist/components/Debugger/DebuggerProvider.d.ts +14 -1
- package/dist/components/Debugger/DebuggerUI.d.ts +3 -1
- package/dist/components/FaceAtlas/FaceAtlasLayer.d.ts +114 -0
- package/dist/components/FaceAtlas/MadeUpCamera.d.ts +80 -0
- package/dist/components/FaceAtlas/constants.d.ts +8 -0
- package/dist/components/FaceAtlas/index.d.ts +7 -0
- package/dist/components/FaceAtlas/useFaceAtlasSurface.d.ts +84 -0
- package/dist/components/FaceAtlas/useFaceSkin.d.ts +84 -0
- package/dist/components/FaceCharacter/ExternalFaceMesh.d.ts +109 -0
- package/dist/components/FaceCharacter/FaceExpressionController.d.ts +53 -0
- package/dist/components/FaceCharacter/FaceMorph.d.ts +71 -0
- package/dist/components/FaceCharacter/FacePiercing.d.ts +65 -0
- package/dist/components/FaceCharacter/FaceReprojection.d.ts +85 -0
- package/dist/components/FaceCharacter/FaceRig.d.ts +38 -0
- package/dist/components/FaceCharacter/FaceSurface.d.ts +49 -0
- package/dist/components/FaceCharacter/FaceSurfaceOccluder.d.ts +39 -0
- package/dist/components/FaceCharacter/PinToFaceMesh.d.ts +68 -0
- package/dist/components/FaceCharacter/index.d.ts +18 -0
- package/dist/components/FaceCharacter/useFaceReprojector.d.ts +10 -0
- package/dist/components/FaceInset/FaceInset.d.ts +68 -0
- package/dist/components/FaceInset/frame.d.ts +94 -0
- package/dist/components/FaceInset/index.d.ts +6 -0
- package/dist/components/FaceInset/material.d.ts +40 -0
- package/dist/components/FaceInset/useFaceInsetTexture.d.ts +37 -0
- package/dist/components/FaceInstruction/FaceExpressionHint.d.ts +43 -0
- package/dist/components/FaceInstruction/index.d.ts +56 -0
- package/dist/components/FaceInstruction/useFaceExpression.d.ts +20 -0
- package/dist/components/FaceLiquify/FaceLiquify.d.ts +49 -0
- package/dist/components/FaceLiquify/debug.d.ts +37 -0
- package/dist/components/FaceLiquify/frame.d.ts +55 -0
- package/dist/components/FaceLiquify/index.d.ts +10 -0
- package/dist/components/FaceLiquify/material.d.ts +39 -0
- package/dist/components/FaceLiquify/pass.d.ts +49 -0
- package/dist/components/FaceLiquify/presence.d.ts +25 -0
- package/dist/components/FaceLiquify/presets.d.ts +82 -0
- package/dist/components/FaceLiquify/selfTest.d.ts +66 -0
- package/dist/components/FaceLiquify/target.d.ts +85 -0
- package/dist/components/FaceLiquify/warp.d.ts +72 -0
- package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +5 -3
- package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +21 -0
- package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +9 -0
- package/dist/components/FaceMesh/index.d.ts +1 -1
- package/dist/components/FaceRetouch/Background.d.ts +3 -1
- package/dist/components/FaceRetouch/FaceRetouch.d.ts +5 -0
- package/dist/components/FaceRetouch/renderState.d.ts +19 -0
- package/dist/components/FaceSwap/FaceMirror.d.ts +46 -0
- package/dist/components/FaceSwap/FaceSwap.d.ts +58 -0
- package/dist/components/FaceSwap/FaceTextureLayer.d.ts +72 -0
- package/dist/components/FaceSwap/faceSwapPlan.d.ts +91 -0
- package/dist/components/FaceSwap/index.d.ts +13 -0
- package/dist/components/FaceSwap/settings.d.ts +300 -0
- package/dist/components/FaceSwap/useFaceTexture.d.ts +35 -0
- package/dist/components/FaceSwap/useLiveFace.d.ts +38 -0
- package/dist/components/FaceSwap/useLiveFaceTexture.d.ts +31 -0
- package/dist/components/FaceWarp3D/FaceWarp3D.d.ts +50 -0
- package/dist/components/FaceWarp3D/index.d.ts +2 -3
- package/dist/components/Faceless/Faceless.d.ts +51 -0
- package/dist/components/Faceless/index.d.ts +2 -0
- package/dist/components/HairLock/HairLock.d.ts +39 -0
- package/dist/components/HairLock/index.d.ts +2 -0
- package/dist/components/HairLock/lockGeometry.d.ts +15 -0
- package/dist/components/HandCutout/index.d.ts +35 -0
- package/dist/components/HandInstruction/HandGestureHint.d.ts +70 -0
- package/dist/components/HandInstruction/index.d.ts +74 -0
- package/dist/components/HandInstruction/useHandGesture.d.ts +22 -0
- package/dist/components/HandRig/ForearmOccluder.d.ts +29 -0
- package/dist/components/HandRig/HandAttachment.d.ts +34 -0
- package/dist/components/HandRig/HandOccluder.d.ts +55 -0
- package/dist/components/HandRig/HandTattoo.d.ts +61 -0
- package/dist/components/HandRig/WristAttachment.d.ts +34 -0
- package/dist/components/HandRig/index.d.ts +101 -0
- package/dist/components/HandRig/useArmMask.d.ts +29 -0
- package/dist/components/HandRig/wristSolve.d.ts +69 -0
- package/dist/components/HandTouch/HandTouch.d.ts +62 -0
- package/dist/components/HandTouch/Touchable.d.ts +36 -0
- package/dist/components/HandTouch/index.d.ts +2 -0
- package/dist/components/HeadBinding/index.d.ts +14 -0
- package/dist/components/HeadOccluder/CanonicalHeadFrame.d.ts +22 -0
- package/dist/components/HeadOccluder/Earrings.d.ts +55 -0
- package/dist/components/HeadOccluder/HeadAttachment.d.ts +38 -0
- package/dist/components/HeadOccluder/NeckOccluder.d.ts +64 -0
- package/dist/components/HeadOccluder/earringPlacement.d.ts +31 -0
- package/dist/components/HeadOccluder/headAttachmentPoints.d.ts +69 -0
- package/dist/components/HeadOccluder/index.d.ts +57 -3
- package/dist/components/HeadOccluder/useCanonicalHeadFit.d.ts +36 -0
- package/dist/components/HeadOccluder/useLandmarkPoseFit.d.ts +80 -0
- package/dist/components/Instruction/HintStage.d.ts +29 -0
- package/dist/components/Instruction/InstructionCue.d.ts +126 -0
- package/dist/components/Instruction/gestureHold.d.ts +20 -0
- package/dist/components/Instruction/ghost.d.ts +129 -0
- package/dist/components/Instruction/hintBlend.d.ts +19 -0
- package/dist/components/Instruction/hintLook.d.ts +81 -0
- package/dist/components/Instruction/hintLoop.d.ts +36 -0
- package/dist/components/Instruction/index.d.ts +41 -0
- package/dist/components/Instruction/useGhostModel.d.ts +33 -0
- package/dist/components/Instruction/useInstructionHold.d.ts +72 -0
- package/dist/components/LipEffect/LipEffect.d.ts +22 -2
- package/dist/components/LipEffect/LipEffectMaterial.d.ts +62 -10
- package/dist/components/LipEffect/LipEffects.d.ts +5 -2
- package/dist/components/LipEffect/defaults.d.ts +21 -2
- package/dist/components/LipEffect/index.d.ts +1 -1
- package/dist/components/LipEffect/lipShading.d.ts +73 -0
- package/dist/components/LipEffect/settings.d.ts +117 -13
- package/dist/components/LipEffect/shader.d.ts +39 -0
- package/dist/components/LipEffect/types.d.ts +82 -10
- package/dist/components/LipEffect/useLipDesignTextures.d.ts +6 -0
- package/dist/components/LipEffect/uvGuide.d.ts +31 -16
- package/dist/components/Makeup/Blush.d.ts +18 -0
- package/dist/components/Makeup/Brows.d.ts +20 -0
- package/dist/components/Makeup/Contour.d.ts +17 -0
- package/dist/components/Makeup/Eyeliner.d.ts +20 -0
- package/dist/components/Makeup/Eyeshadow.d.ts +20 -0
- package/dist/components/Makeup/Highlighter.d.ts +18 -0
- package/dist/components/Makeup/MakeupDesign.d.ts +37 -0
- package/dist/components/Makeup/MakeupRegion.d.ts +132 -0
- package/dist/components/Makeup/constants.d.ts +44 -0
- package/dist/components/Makeup/design.d.ts +106 -0
- package/dist/components/Makeup/designSamples.d.ts +42 -0
- package/dist/components/Makeup/eyes.d.ts +114 -0
- package/dist/components/Makeup/fields.d.ts +10 -0
- package/dist/components/Makeup/geometry.d.ts +106 -0
- package/dist/components/Makeup/index.d.ts +26 -0
- package/dist/components/Makeup/looks.d.ts +28 -0
- package/dist/components/Makeup/material.d.ts +239 -0
- package/dist/components/Makeup/settings.d.ts +54 -0
- package/dist/components/Makeup/shades.d.ts +143 -0
- package/dist/components/Makeup/shapes.d.ts +27 -0
- package/dist/components/Makeup/skinTone.d.ts +135 -0
- package/dist/components/Makeup/types.d.ts +110 -0
- package/dist/components/Makeup/useMakeupSkinTone.d.ts +40 -0
- package/dist/components/Necklace/Necklace.d.ts +44 -0
- package/dist/components/Necklace/index.d.ts +1 -0
- package/dist/components/ParticleEmitter/ParticleEmitter.d.ts +69 -0
- package/dist/components/ParticleEmitter/index.d.ts +1 -0
- package/dist/components/ShoulderOccluder/index.d.ts +43 -0
- package/dist/components/ShoulderOccluder/useCanonicalTorsoFit.d.ts +24 -0
- package/dist/components/SpringSwing/SpringSwing.d.ts +22 -0
- package/dist/components/SpringSwing/index.d.ts +1 -0
- package/dist/components/XRScene/renderOutputTarget.d.ts +12 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/config/index.d.ts +0 -1
- package/dist/context-DTxSQvp4.js +13 -0
- package/dist/context-hA0Rb2Xa.cjs +1 -0
- package/dist/contexts-BH7PdKFS.cjs +1 -0
- package/dist/contexts-jak8-tND.js +667 -0
- package/dist/coordinates/index.d.ts +2 -0
- package/dist/coordinates/side.d.ts +40 -0
- package/dist/debug-ui/default-setting.cjs +2 -2
- package/dist/debug-ui/face-swap-settings/index.d.ts +22 -0
- package/dist/debug-ui/hierarchy-panel/index.d.ts +3 -2
- package/dist/debug-ui/index.d.ts +4 -3
- package/dist/debug-ui/media-source/index.d.ts +1 -1
- package/dist/debug-ui/media-source/session.d.ts +30 -2
- package/dist/debug-ui/media-source.cjs +1 -1
- package/dist/debug-ui/media-source.js +1 -1
- package/dist/debug-ui/object-inspector-panel/index.d.ts +3 -2
- package/dist/debug-ui/product-hotspots/index.d.ts +3 -2
- package/dist/debug-ui/scene-editor/hierarchy-panel.d.ts +3 -1
- package/dist/debug-ui/scene-editor/inspector-panel.d.ts +3 -1
- package/dist/debug-ui/screen-image-settings/index.d.ts +3 -1
- package/dist/debug-ui/screen-text-settings/ScreenTextSettingsPanel.d.ts +1 -1
- package/dist/debug-ui/screen-text-settings/types.d.ts +2 -0
- package/dist/debug-ui/settings-panel/index.d.ts +6 -1
- package/dist/debug-ui/shared/debugWindow.d.ts +51 -0
- package/dist/debug-ui/xr-diagnostics/index.d.ts +3 -2
- package/dist/debug-ui.cjs +3 -3
- package/dist/debug-ui.js +2250 -2472
- package/dist/entries/all.d.ts +3 -1
- package/dist/entries/core.d.ts +3 -2
- package/dist/entries/face-effects.d.ts +114 -8
- package/dist/entries/instructions.d.ts +48 -0
- package/dist/entries/internal.d.ts +2 -1
- package/dist/entries/low-level.d.ts +28 -1
- package/dist/entries/particles.d.ts +11 -0
- package/dist/entries/tracking.d.ts +37 -2
- package/dist/face-atlas/attributes.d.ts +30 -0
- package/dist/face-atlas/eyes.d.ts +272 -0
- package/dist/face-atlas/faceAtlas.generated.d.ts +46 -0
- package/dist/face-atlas/glsl/atlasVertex.d.ts +46 -0
- package/dist/face-atlas/glsl/common.d.ts +55 -0
- package/dist/face-atlas/glsl/design.d.ts +49 -0
- package/dist/face-atlas/glsl/eyes.d.ts +73 -0
- package/dist/face-atlas/glsl/finish.d.ts +24 -0
- package/dist/face-atlas/glsl/format.d.ts +4 -0
- package/dist/face-atlas/glsl/index.d.ts +59 -0
- package/dist/face-atlas/glsl/shading.d.ts +15 -0
- package/dist/face-atlas/glsl/shapes.d.ts +66 -0
- package/dist/face-atlas/glsl/sparkle.d.ts +19 -0
- package/dist/face-atlas/glsl/uniforms.d.ts +106 -0
- package/dist/face-atlas/guide.d.ts +51 -0
- package/dist/face-atlas/index.d.ts +25 -0
- package/dist/face-atlas/lead.d.ts +117 -0
- package/dist/face-atlas/madeUpCamera.d.ts +125 -0
- package/dist/face-atlas/masks.d.ts +53 -0
- package/dist/face-atlas/obj.d.ts +69 -0
- package/dist/face-atlas/polylines.d.ts +63 -0
- package/dist/face-atlas/probe/FaceSkinProbe.d.ts +208 -0
- package/dist/face-atlas/probe/__fixtures__/emulate.d.ts +9 -0
- package/dist/face-atlas/probe/__fixtures__/face.d.ts +24 -0
- package/dist/face-atlas/probe/constants.d.ts +137 -0
- package/dist/face-atlas/probe/glsl.d.ts +43 -0
- package/dist/face-atlas/probe/lightFit.d.ts +108 -0
- package/dist/face-atlas/probe/schedule.d.ts +44 -0
- package/dist/face-atlas/probe/selfTest.d.ts +87 -0
- package/dist/face-atlas/probe/stats.d.ts +143 -0
- package/dist/face-atlas/probe/targets.d.ts +70 -0
- package/dist/face-atlas/probe/unwrap.d.ts +76 -0
- package/dist/face-atlas/quality.d.ts +28 -0
- package/dist/face-atlas/regions.d.ts +31 -0
- package/dist/face-atlas/registry.d.ts +252 -0
- package/dist/face-atlas/renderState.d.ts +86 -0
- package/dist/face-atlas/selfOcclusion.d.ts +62 -0
- package/dist/face-atlas/shading.d.ts +406 -0
- package/dist/face-atlas/shapes.d.ts +86 -0
- package/dist/face-atlas/sides.d.ts +41 -0
- package/dist/face-atlas/skinMask.d.ts +35 -0
- package/dist/face-atlas/surface.d.ts +155 -0
- package/dist/face-atlas/topology.d.ts +44 -0
- package/dist/face-character/__fixtures__/faceImageDetections.d.ts +25 -0
- package/dist/face-character/__fixtures__/faceNode.d.ts +22 -0
- package/dist/face-character/bindFaceModel.d.ts +106 -0
- package/dist/face-character/canonicalFace.d.ts +17 -0
- package/dist/face-character/canonicalFaceGeometry.d.ts +11 -0
- package/dist/face-character/canonicalFacePositions.d.ts +7 -0
- package/dist/face-character/driveFaceModel.d.ts +57 -0
- package/dist/face-character/expressionOutputs.d.ts +45 -0
- package/dist/face-character/faceExpressions.d.ts +104 -0
- package/dist/face-character/faceImageLandmarker.d.ts +93 -0
- package/dist/face-character/faceMeshBinding.d.ts +62 -0
- package/dist/face-character/faceMorph.d.ts +77 -0
- package/dist/face-character/faceMorphs.d.ts +46 -0
- package/dist/face-character/facePhoto.d.ts +138 -0
- package/dist/face-character/facePiercings.d.ts +116 -0
- package/dist/face-character/facePin.d.ts +131 -0
- package/dist/face-character/faceReprojection.d.ts +273 -0
- package/dist/face-character/faceReprojector.d.ts +171 -0
- package/dist/face-character/faceRig.d.ts +176 -0
- package/dist/face-character/faceSwapPresence.d.ts +85 -0
- package/dist/face-character/faceTexture.d.ts +169 -0
- package/dist/face-character/faceTextureBaker.d.ts +86 -0
- package/dist/face-character/faceTextureGuide.d.ts +106 -0
- package/dist/face-character/faceTextureStats.d.ts +298 -0
- package/dist/face-character/faceTransfer.d.ts +396 -0
- package/dist/face-character/faceTransferGeometry.d.ts +109 -0
- package/dist/face-character/faceTransferSelfTest.d.ts +94 -0
- package/dist/face-character/faceWarp3D.d.ts +101 -0
- package/dist/face-character/faceless.d.ts +79 -0
- package/dist/face-character/featureWarp.d.ts +28 -0
- package/dist/face-character/liveFaceRegistry.d.ts +370 -0
- package/dist/face-character/liveValue.d.ts +12 -0
- package/dist/face-character/memo.d.ts +15 -0
- package/dist/face-effects.cjs +2252 -83
- package/dist/face-effects.js +14234 -1231
- package/dist/face-expression/index.d.ts +182 -0
- package/dist/face-info/landmarks.d.ts +17 -3
- package/dist/face-info/types.d.ts +20 -3
- package/dist/gestures/definitions.d.ts +15 -2
- package/dist/gestures/index.d.ts +1 -1
- package/dist/gestures/measures.d.ts +21 -8
- package/dist/getFaceInfo-B1otSDMX.cjs +1 -0
- package/dist/getFaceInfo-Cu4xDWiL.js +62 -0
- package/dist/hand/armFit.d.ts +46 -0
- package/dist/hand/armMask.d.ts +178 -0
- package/dist/hand/handCutout.d.ts +23 -0
- package/dist/hand/handCutoutRegistry.d.ts +7 -0
- package/dist/hand/handGestures.d.ts +524 -0
- package/dist/hand/handPose.d.ts +98 -0
- package/dist/hand/handRigSolver.d.ts +159 -0
- package/dist/hand/handTattoo.d.ts +81 -0
- package/dist/hand/handTouch.d.ts +240 -0
- package/dist/hand/wrist.d.ts +44 -0
- package/dist/hand/wristFilter.d.ts +44 -0
- package/dist/hooks/selectors.d.ts +8 -0
- package/dist/hooks/useFaceModelAcquisition.d.ts +38 -0
- package/dist/hooks/useTrackerContext.d.ts +6 -0
- package/dist/index-B1_TzJaI.js +1104 -0
- package/dist/index-BavF06C6.js +190 -0
- package/dist/index-BfFmpddl.cjs +21 -0
- package/dist/index-BuBzneeW.cjs +46 -0
- package/dist/index-CGsQWodV.cjs +1 -0
- package/dist/index-CIe7eCMH.js +3200 -0
- package/dist/index-CfSF8LXa.cjs +1 -0
- package/dist/index-D5GTzOzD.cjs +1 -0
- package/dist/index-DBhQzvVa.js +314 -0
- package/dist/index-DE17y0ZI.cjs +1 -0
- package/dist/index-JII7huPk.js +442 -0
- package/dist/index-tpCr9CLj.cjs +1 -0
- package/dist/{renderPasses-NnKZVfBy.js → index-w1S7fI2B.js} +219 -247
- package/dist/index-zGaqrz_K.js +188 -0
- package/dist/instructions.cjs +30 -0
- package/dist/instructions.js +1507 -0
- package/dist/{internal-vsfNQycj.js → internal-B90P-clC.js} +138 -118
- package/dist/internal-Cjinca64.cjs +1 -0
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +15 -10
- package/dist/iris/compute.d.ts +7 -5
- package/dist/iris/types.d.ts +6 -4
- package/dist/{landmarkMask-CbTFzBYG.js → landmarkMask-BFDyBnKM.js} +6 -6
- package/dist/landmarks-BlUqf5MZ.cjs +1 -0
- package/dist/landmarks-bftdwq6Z.js +76 -0
- package/dist/loaders-BGAUACsd.js +363 -0
- package/dist/loaders-BJ1_QCHt.cjs +1 -0
- package/dist/low-level.cjs +1 -1
- package/dist/low-level.js +666 -602
- package/dist/main.cjs +1 -1
- package/dist/main.js +866 -1182
- package/dist/models/Body/index.d.ts +2 -0
- package/dist/models/Face/constants.d.ts +8 -0
- package/dist/models/Face/index.d.ts +3 -11
- package/dist/models/Face/rotation.d.ts +18 -3
- package/dist/models/Hand/HandTracking.d.ts +17 -1
- package/dist/models/Segmentation/index.d.ts +2 -0
- package/dist/models/nodeSource.d.ts +9 -0
- package/dist/particles/emission.d.ts +24 -0
- package/dist/particles/eyes.d.ts +24 -0
- package/dist/particles/glsl.d.ts +14 -0
- package/dist/particles/index.d.ts +10 -0
- package/dist/particles/motion.d.ts +42 -0
- package/dist/particles/presets.d.ts +12 -0
- package/dist/particles/ring.d.ts +58 -0
- package/dist/particles/selfTest.d.ts +53 -0
- package/dist/particles/settings.d.ts +127 -0
- package/dist/particles/shapes.d.ts +29 -0
- package/dist/particles/spawner.d.ts +60 -0
- package/dist/particles/system.d.ts +64 -0
- package/dist/particles.cjs +122 -0
- package/dist/particles.js +774 -0
- package/dist/product.cjs +1 -1
- package/dist/product.js +29 -29
- package/dist/{providers-C0Dlhh9Z.js → providers-C8rE26Uf.js} +127 -126
- package/dist/providers-DHsrhDI2.cjs +62 -0
- package/dist/render/renderPasses.d.ts +8 -0
- package/dist/render/sceneBeforeRender.d.ts +12 -0
- package/dist/{renderGroups-CN1cGFUo.js → renderGroups-B38pUaX2.js} +1 -1
- package/dist/{renderGroups-O4KmaMl9.cjs → renderGroups-Cb_4Ar1Q.cjs} +1 -1
- package/dist/renderPasses-B6l8IpJv.js +1290 -0
- package/dist/renderPasses-dqmkft4P.cjs +158 -0
- package/dist/renderState-CJNmj5jz.js +39 -0
- package/dist/renderState-apSfg4eR.cjs +1 -0
- package/dist/scene-object.cjs +1 -1
- package/dist/scene-object.js +2 -2
- package/dist/segmentation-Cb3ouK6Z.js +1758 -0
- package/dist/segmentation-D9pYO6aR.cjs +1 -0
- package/dist/segmentation2d/types.d.ts +6 -0
- package/dist/select-Ck5LGz-J.cjs +1 -0
- package/dist/select-pYRo_win.js +233 -0
- package/dist/selectors-C4X71aoD.cjs +1 -0
- package/dist/selectors-DmNaKIwE.js +196 -0
- package/dist/session-BrH8G7iJ.cjs +31 -0
- package/dist/session-DgA_z6O1.js +418 -0
- package/dist/{settings-aQk845NJ.js → settings-BJ7FMBsO.js} +53 -15
- package/dist/settings-C63FMBlF.cjs +1 -0
- package/dist/similarityFit-BFqHND2e.cjs +1 -0
- package/dist/similarityFit-Bbz-R8AY.js +91 -0
- package/dist/spring/index.d.ts +2 -0
- package/dist/spring/spring.d.ts +69 -0
- package/dist/spring/swing.d.ts +54 -0
- package/dist/tracking.cjs +10 -1
- package/dist/tracking.js +1002 -855
- package/dist/trigger-D0Pm9noT.cjs +49 -0
- package/dist/trigger-IQeys0oS.js +2128 -0
- package/dist/types/face.d.ts +20 -1
- package/dist/types/hand-tracking.d.ts +9 -0
- package/dist/types/nodes.d.ts +20 -1
- package/dist/types/segmentation.d.ts +5 -0
- package/dist/updateThrottle-BseecYag.js +4 -0
- package/dist/updateThrottle-Of5Y4SVa.cjs +1 -0
- package/dist/useFaceInfo-BHDNCvsJ.cjs +1 -0
- package/dist/useFaceInfo-J4x7LsqL.js +76 -0
- package/dist/useFaceResultReader-BvEo5REG.js +61 -0
- package/dist/useFaceResultReader-DuaL1KJG.cjs +1 -0
- package/dist/useInstructionHold-DOu-RpCM.js +53 -0
- package/dist/useInstructionHold-DwJY1Alr.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bg-h9BPb.cjs +1 -0
- package/dist/useLandmarkPoseFit-Bmb3h6Mw.js +87 -0
- package/dist/{useXRCapabilities-B1R2ghy-.cjs → useXRCapabilities-Cr3RzuAW.cjs} +1 -1
- package/dist/{useXRCapabilities-C68v__wB.js → useXRCapabilities-Cxmlmpbd.js} +1 -1
- package/dist/utils/canonicalRigidLandmarks.d.ts +8 -0
- package/dist/utils/headOccluderFit.d.ts +42 -0
- package/dist/utils/integrity.d.ts +17 -0
- package/dist/utils/resolveNumFaces.d.ts +13 -0
- package/dist/utils/shoulderOccluderFit.d.ts +38 -0
- package/dist/utils/similarityFit.d.ts +23 -0
- package/dist/uv-BMFt19bg.cjs +1 -0
- package/dist/{index-CsUdQ-pn.js → uv-DJU_XfmN.js} +15 -249
- package/docs/SDK_DOCUMENTATION.md +1 -2
- package/docs/api/adaptive-quality.mdx +1 -1
- package/docs/api/body-instructions.mdx +285 -0
- package/docs/api/body-triggers.mdx +234 -0
- package/docs/api/camera-permission.mdx +1 -1
- package/docs/api/coordinate-spaces.mdx +7 -4
- package/docs/api/cross-camera.mdx +3 -2
- package/docs/api/debug-ui-scene-editor.mdx +23 -2
- package/docs/api/external-face-mesh.mdx +231 -0
- package/docs/api/face-actions.mdx +20 -16
- package/docs/api/face-attribute-expression.mdx +1 -1
- package/docs/api/face-binding-anchors.mdx +4 -2
- package/docs/api/face-character.mdx +157 -0
- package/docs/api/face-effects.mdx +3 -0
- package/docs/api/face-expression-controller.mdx +153 -0
- package/docs/api/face-info.mdx +17 -11
- package/docs/api/face-inset.mdx +204 -0
- package/docs/api/face-instructions.mdx +183 -0
- package/docs/api/face-liquify.mdx +196 -0
- package/docs/api/face-mesh.mdx +4 -7
- package/docs/api/face-morph.mdx +117 -0
- package/docs/api/face-painting.mdx +7 -0
- package/docs/api/face-reprojection.mdx +154 -0
- package/docs/api/face-retouching.mdx +18 -10
- package/docs/api/face-swap.mdx +350 -0
- package/docs/api/face-warp-3d.mdx +166 -0
- package/docs/api/faceless.mdx +143 -0
- package/docs/api/gestures.mdx +68 -32
- package/docs/api/hair.mdx +97 -0
- package/docs/api/hand-instructions.mdx +222 -0
- package/docs/api/hand-rig.mdx +535 -0
- package/docs/api/hand-touch.mdx +162 -0
- package/docs/api/head-occluder.mdx +563 -0
- package/docs/api/holistic-tracker.mdx +6 -1
- package/docs/api/instructions.mdx +323 -0
- package/docs/api/iris-tracking.mdx +24 -19
- package/docs/api/made-up-camera.mdx +131 -0
- package/docs/api/makeup-skin-tone.mdx +135 -0
- package/docs/api/makeup.mdx +353 -0
- package/docs/api/multi-subject.mdx +4 -1
- package/docs/api/particles.mdx +155 -0
- package/docs/api/person-cutout.mdx +1 -1
- package/docs/api/pin-to-face-mesh.mdx +274 -0
- package/docs/api/product-ar.mdx +5 -2
- package/docs/api/segmentation-overlay.mdx +1 -1
- package/docs/docs.json +29 -1
- package/docs/examples/lip-shaders.mdx +82 -33
- package/docs/guides/face-atlas-template.svg +1 -0
- package/docs/guides/face-atlas-textures.mdx +186 -0
- package/docs/guides/face-texture-template.svg +1 -0
- package/docs/guides/harness-debug-ui.mdx +4 -4
- package/docs/guides/lip-effect-textures.mdx +178 -102
- package/docs/guides/lip-uv-template.png +0 -0
- package/docs/guides/lip-uv-template.svg +1 -1
- package/docs/guides/makeup-design-textures.mdx +109 -0
- package/docs/introduction.mdx +1 -2
- package/package.json +11 -1
- package/dist/DebuggerUI-C-ldiozL.js +0 -269
- package/dist/DebuggerUI-CWX5EtQv.cjs +0 -1
- package/dist/FaceMeshRenderer-BEEXZwS6.cjs +0 -158
- package/dist/FaceMeshRenderer-UuH5sTXG.js +0 -1322
- package/dist/FaceRetouch-C7h7x9kd.js +0 -683
- package/dist/FaceRetouch-DqftT26Y.cjs +0 -134
- package/dist/GLTFLoader-C5q63sKO.js +0 -1633
- package/dist/GLTFLoader-Cb_CRwmG.cjs +0 -1
- package/dist/SegmentationOverlay-DQuW3dsc.js +0 -133
- package/dist/SegmentationOverlay-aWVod8Kl.cjs +0 -1
- package/dist/components/FaceWarp3D/FaceWarp3DHead.d.ts +0 -15
- package/dist/components/FaceWarp3D/defaults.d.ts +0 -37
- package/dist/components/FaceWarp3D/warp.d.ts +0 -13
- package/dist/contexts-CO0sd4JQ.cjs +0 -1
- package/dist/contexts-FzlnnMYD.js +0 -669
- package/dist/debug-ui/face-warp-3d/index.d.ts +0 -6
- package/dist/getFaceInfo-BkZfaQs-.js +0 -118
- package/dist/getFaceInfo-ahPxQFGu.cjs +0 -1
- package/dist/index--RgGzZ6X.cjs +0 -47
- package/dist/index-CHVbH0hz.js +0 -214
- package/dist/index-CeVkgsag.cjs +0 -1
- package/dist/index-CnGox6Xr.js +0 -3054
- package/dist/index-DKBAh6hV.cjs +0 -1
- package/dist/index-DsZwTfG0.cjs +0 -1
- package/dist/index-Dw6tj2Mi.js +0 -144
- package/dist/index-OCPjOaeP.cjs +0 -1
- package/dist/index-s9pF4zkG.js +0 -2053
- package/dist/internal-BYza1h8_.cjs +0 -1
- package/dist/measures-9dQPdw96.js +0 -154
- package/dist/measures-KfJzpvod.cjs +0 -1
- package/dist/providers-YNwkmNeK.cjs +0 -62
- package/dist/renderPasses-Cg-zqmEz.cjs +0 -21
- package/dist/screenTransform-BenfCtZt.js +0 -44
- package/dist/screenTransform-BiXdpVf0.cjs +0 -1
- package/dist/segmentation-9PhSvc-R.cjs +0 -1
- package/dist/segmentation-CeOTKemr.js +0 -5
- package/dist/selectors-C5G1PMYL.js +0 -195
- package/dist/selectors-Du_PsVnW.cjs +0 -1
- package/dist/session-BBr0yN8h.cjs +0 -31
- package/dist/session-Cy0m7l7-.js +0 -363
- package/dist/settings-DRR7-snV.cjs +0 -1
- package/dist/useFaceInfo-Blf7FCu3.js +0 -303
- package/dist/useFaceInfo-C5mO8NQY.cjs +0 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TextLabelProps } from '../TextLabel/types';
|
|
3
|
+
import { InstructionDetector } from './useInstructionHold';
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
/** The instructions draw in this renderOrder band, over the AR scene. */
|
|
6
|
+
export declare const INSTRUCTION_RENDER_ORDER = 2000;
|
|
7
|
+
/**
|
|
8
|
+
* Where a prompt stands: nothing usable in view (no hand / face), in view but
|
|
9
|
+
* not doing it, doing it (holding), or completed.
|
|
10
|
+
*/
|
|
11
|
+
export type InstructionStatus = "waiting" | "detected" | "holding" | "done";
|
|
12
|
+
export type InstructionSize = "sm" | "md" | "lg";
|
|
13
|
+
export type InstructionPlacement = "top" | "center" | "bottom";
|
|
14
|
+
/** `TextLabel` styling for the instruction's lines (everything but its text and placement). */
|
|
15
|
+
export type InstructionTextStyle = Partial<Omit<TextLabelProps, "text" | "lines" | "aspect" | "scale" | "position" | "rotation" | "renderOrder" | "visible" | "name">>;
|
|
16
|
+
/** What `renderText` gets for each line it draws. */
|
|
17
|
+
export type InstructionTextSlot = {
|
|
18
|
+
/** The copy (the main text, the done text, or the nudge). */
|
|
19
|
+
text: string;
|
|
20
|
+
role: "text" | "nudge";
|
|
21
|
+
/** The line's box, in screen-space world units, centred on the origin. */
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
/** Draw it at this render order (above the symbol). */
|
|
25
|
+
renderOrder: number;
|
|
26
|
+
/** The resolved default style (what the built-in `TextLabel` would use). */
|
|
27
|
+
style: InstructionTextStyle;
|
|
28
|
+
};
|
|
29
|
+
/** Timings and feedback of the layout. Every field is optional; `0` / `false` turns a part off. */
|
|
30
|
+
export type InstructionMotion = {
|
|
31
|
+
/** Fade-in time, seconds. Default 0.35. */
|
|
32
|
+
fadeIn?: number;
|
|
33
|
+
/** Fade-out time after completing (with `hideOnComplete`), seconds. Default 0.5. */
|
|
34
|
+
fadeOut?: number;
|
|
35
|
+
/** How far it rises while fading in, × the symbol height. Default 0.15. */
|
|
36
|
+
rise?: number;
|
|
37
|
+
/** Idle bob of the symbol, × its height. Default 0.02. */
|
|
38
|
+
bob?: number;
|
|
39
|
+
/** The completion pop: extra scale at its peak. Default 0.1. */
|
|
40
|
+
pop?: number;
|
|
41
|
+
/** The pop's duration, seconds. Default 0.3. */
|
|
42
|
+
popSeconds?: number;
|
|
43
|
+
/** The symbol's breathing pulse while nudging (extra scale). Default 0.06. */
|
|
44
|
+
nudgePulse?: number;
|
|
45
|
+
/** The success ring that expands from the symbol on completion. `false` = none. */
|
|
46
|
+
ring?: false | {
|
|
47
|
+
/** Default white. */
|
|
48
|
+
color?: THREE.ColorRepresentation;
|
|
49
|
+
/** Seconds. Default 0.6. */
|
|
50
|
+
seconds?: number;
|
|
51
|
+
/** Peak opacity. Default 0.7. */
|
|
52
|
+
opacity?: number;
|
|
53
|
+
/** Start and end size, × the symbol height. Default 0.45 → 0.95. */
|
|
54
|
+
from?: number;
|
|
55
|
+
to?: number;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
/** Proportions of the layout, relative to the size preset's height. */
|
|
59
|
+
export type InstructionLayout = {
|
|
60
|
+
/** Text line height. Default 0.3. */
|
|
61
|
+
textHeight?: number;
|
|
62
|
+
/** Gap between the symbol and the text. Default 0.1. */
|
|
63
|
+
gap?: number;
|
|
64
|
+
/** Nudge line height. Default 0.2. */
|
|
65
|
+
nudgeHeight?: number;
|
|
66
|
+
/** Maximum text width. Default 6 (and at most 90 % of the screen). */
|
|
67
|
+
textWidth?: number;
|
|
68
|
+
/** Distance from the screen edge for top / bottom placement, × the screen height. Default 0.06. */
|
|
69
|
+
edgeMargin?: number;
|
|
70
|
+
};
|
|
71
|
+
/** The layout and copy options every instruction shares (all optional). */
|
|
72
|
+
export type InstructionOptions = {
|
|
73
|
+
/** Copy shown once completed, while it fades out. Default: keep `text`. */
|
|
74
|
+
doneText?: string;
|
|
75
|
+
/** Second line after `nudgeAfterMs` with nothing in view; `null` = no nudge. */
|
|
76
|
+
nudgeText?: string | null;
|
|
77
|
+
/** How long with nothing in view before the nudge (ms). Default 3000. */
|
|
78
|
+
nudgeAfterMs?: number;
|
|
79
|
+
/**
|
|
80
|
+
* `"sm"`, `"md"` (default) or `"lg"`: the symbol is 10 / 14 / 19 % of the
|
|
81
|
+
* screen height; or your own fraction of the screen height (e.g. `0.22`).
|
|
82
|
+
*/
|
|
83
|
+
size?: InstructionSize | number;
|
|
84
|
+
/** Where it stands: `"top"`, `"center"` (default) or `"bottom"`. */
|
|
85
|
+
placement?: InstructionPlacement;
|
|
86
|
+
/** Shift from the placement, in half-screens (`[0.5, 0]` = a quarter screen right). */
|
|
87
|
+
offset?: [number, number];
|
|
88
|
+
/** Text colour. Default white, with a soft dark shadow so it reads on any camera feed. */
|
|
89
|
+
color?: string;
|
|
90
|
+
/** `TextLabel` styling for the text, merged over the default (font, weight, shadow, stroke …). */
|
|
91
|
+
textStyle?: InstructionTextStyle;
|
|
92
|
+
/** Styling for the nudge line, merged over `textStyle` (default: normal weight). */
|
|
93
|
+
nudgeTextStyle?: InstructionTextStyle;
|
|
94
|
+
/**
|
|
95
|
+
* Draw the text yourself: return any R3F node for a line (use transparent
|
|
96
|
+
* materials — the layout fades every mesh under it). Default: a `TextLabel`.
|
|
97
|
+
*/
|
|
98
|
+
renderText?: (slot: InstructionTextSlot) => ReactNode;
|
|
99
|
+
/** Timings and feedback (fade, rise, bob, pop, nudge pulse, success ring). */
|
|
100
|
+
motion?: InstructionMotion;
|
|
101
|
+
/** Proportions (text height, gap, widths, edge margin). */
|
|
102
|
+
layout?: InstructionLayout;
|
|
103
|
+
/** Fade out once completed. Default `true`. */
|
|
104
|
+
hideOnComplete?: boolean;
|
|
105
|
+
/** Called once with the first status, then on every change (app logic, announcements). */
|
|
106
|
+
onStatusChange?: (status: InstructionStatus) => void;
|
|
107
|
+
};
|
|
108
|
+
export type InstructionCueProps = InstructionOptions & {
|
|
109
|
+
/** Instruction copy. */
|
|
110
|
+
text: string;
|
|
111
|
+
/** The detector driving it: its hold status and whether something usable is in view. */
|
|
112
|
+
detector: Pick<InstructionDetector, "status" | "isInView">;
|
|
113
|
+
/** The symbol (hand, face, an image …), drawn `height` tall in the given renderOrder band. */
|
|
114
|
+
symbol: (height: number, renderOrder: number) => ReactNode;
|
|
115
|
+
/** The symbol's slot height relative to the size preset (a standing figure is taller). Default 1. */
|
|
116
|
+
symbolAspect?: number;
|
|
117
|
+
};
|
|
118
|
+
/** The default text style: bold, centred, shrink-to-fit, with a soft dark shadow. */
|
|
119
|
+
export declare const INSTRUCTION_TEXT_STYLE: InstructionTextStyle;
|
|
120
|
+
/**
|
|
121
|
+
* The minimal instruction layout: the symbol stacked over the copy, a nudge
|
|
122
|
+
* line when nothing is in view, a status report, and on completion a small
|
|
123
|
+
* pop, a ring and (optionally) a fade-out. Mount inside a `ScreenSpaceUI`
|
|
124
|
+
* (`<Instruction>` does).
|
|
125
|
+
*/
|
|
126
|
+
export declare const InstructionCue: ({ text, doneText, nudgeText, nudgeAfterMs, size, placement, offset, color, textStyle, nudgeTextStyle, renderText, motion, layout, hideOnComplete, onStatusChange, detector, symbol, symbolAspect, }: InstructionCueProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hold-to-complete timing for a gesture prompt: the gesture must be held for
|
|
3
|
+
* `holdMs` to count, a dropout shorter than `graceMs` (a missed frame, a
|
|
4
|
+
* blink of the tracker) does not restart it, and once done it stays done
|
|
5
|
+
* until reset. Pure — feed it one `matched` sample per frame.
|
|
6
|
+
*/
|
|
7
|
+
export type GestureHoldStatus = "waiting" | "holding" | "done";
|
|
8
|
+
export type GestureHoldState = {
|
|
9
|
+
status: GestureHoldStatus;
|
|
10
|
+
/** When the current hold began (ms), or `null`. */
|
|
11
|
+
since: number | null;
|
|
12
|
+
/** Last time the gesture matched (ms), or `null`. */
|
|
13
|
+
lastMatch: number | null;
|
|
14
|
+
/** 0..1 of `holdMs`; 1 once done. */
|
|
15
|
+
progress: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const GESTURE_HOLD_DEFAULT_MS = 400;
|
|
18
|
+
export declare const GESTURE_HOLD_GRACE_MS = 150;
|
|
19
|
+
export declare const createGestureHoldState: () => GestureHoldState;
|
|
20
|
+
export declare const stepGestureHold: (state: GestureHoldState, matched: boolean, nowMs: number, holdMs?: number, graceMs?: number) => GestureHoldState;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* The "ghost" look shared by the instruction hints (hand and face): a soft
|
|
4
|
+
* white matcap, translucent where the surface faces the viewer and bright at
|
|
5
|
+
* the silhouette, a depth pre-pass so only the front surface shows, and a soft
|
|
6
|
+
* dark halo so the hint reads on light backgrounds.
|
|
7
|
+
*/
|
|
8
|
+
/** A soft white studio matcap, generated (no texture download): just enough shading to read form. */
|
|
9
|
+
export declare const createHintMatcap: () => THREE.Texture;
|
|
10
|
+
/** Room for a skeleton's bones in the highlight table (a Mixamo rig has 68). */
|
|
11
|
+
export declare const GHOST_MAX_BONES = 96;
|
|
12
|
+
export type GhostOptions = {
|
|
13
|
+
/** Tint (multiplies the matcap). Default white. */
|
|
14
|
+
color?: THREE.ColorRepresentation;
|
|
15
|
+
/** Opacity where the surface faces the viewer. Default 0.5. */
|
|
16
|
+
core?: number;
|
|
17
|
+
/** Opacity at the silhouette. Default 0.95. */
|
|
18
|
+
rim?: number;
|
|
19
|
+
/** How far the rim is pushed toward white (0..1). Default 0.6. */
|
|
20
|
+
whiten?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Multiply by the model's `COLOR_0` (a wrist fade, a cheek blush). Default
|
|
23
|
+
* `true`; pass `false` for a model without vertex colours, which WebGL would
|
|
24
|
+
* otherwise read as black. (`useGhostModel` picks this for you.)
|
|
25
|
+
*/
|
|
26
|
+
vertexColors?: boolean;
|
|
27
|
+
/** Opacity highlighted parts reach. Default 0.9. */
|
|
28
|
+
highlightOpacity?: number;
|
|
29
|
+
/** How far highlighted parts are pushed toward white (0..1). Default 0.55. */
|
|
30
|
+
highlightWhiten?: number;
|
|
31
|
+
};
|
|
32
|
+
export type GhostUniforms = {
|
|
33
|
+
uHighlight: {
|
|
34
|
+
value: Float32Array;
|
|
35
|
+
};
|
|
36
|
+
uHighlightGain: {
|
|
37
|
+
value: number;
|
|
38
|
+
};
|
|
39
|
+
uCore: {
|
|
40
|
+
value: number;
|
|
41
|
+
};
|
|
42
|
+
uRim: {
|
|
43
|
+
value: number;
|
|
44
|
+
};
|
|
45
|
+
uWhiten: {
|
|
46
|
+
value: number;
|
|
47
|
+
};
|
|
48
|
+
uHighlightOpacity: {
|
|
49
|
+
value: number;
|
|
50
|
+
};
|
|
51
|
+
uHighlightWhiten: {
|
|
52
|
+
value: number;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The ghost material: faint where the surface faces the viewer, bright at the
|
|
57
|
+
* silhouette (a fresnel rim), times the model's `COLOR_0` (a wrist fade, a
|
|
58
|
+
* cheek blush). Skinned parts can be lit brighter per bone (`uHighlight`: a
|
|
59
|
+
* weight per skeleton bone, blended by the skin weights). Opacities and the
|
|
60
|
+
* rim whitening are uniforms, so every tint shares one shader program. Pair
|
|
61
|
+
* with a depth pre-pass so only the front surface shows.
|
|
62
|
+
*/
|
|
63
|
+
export declare const createGhostMaterial: (matcap: THREE.Texture, options?: GhostOptions) => THREE.MeshMatcapMaterial;
|
|
64
|
+
export type HaloOptions = {
|
|
65
|
+
/** How far the halo reaches out from the surface, in the mesh's own units. */
|
|
66
|
+
width: number;
|
|
67
|
+
/** Halo colour. Default a deep slate, `#0f172a`. */
|
|
68
|
+
color?: THREE.ColorRepresentation;
|
|
69
|
+
/** Peak opacity at the silhouette. Default 0.3. */
|
|
70
|
+
opacity?: number;
|
|
71
|
+
/** Multiply by the model's `COLOR_0`. Default `true`. */
|
|
72
|
+
vertexColors?: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* A soft dark halo: the surface pushed out along its (skinned / morphed)
|
|
76
|
+
* normals by `width` model units and drawn from the back faces, fading to
|
|
77
|
+
* nothing at the outer edge. Drawn after the depth pre-pass, so only the band
|
|
78
|
+
* outside the silhouette shows. Width, colour and opacity are uniforms
|
|
79
|
+
* (`userData.halo`), so changing them does not recompile.
|
|
80
|
+
*/
|
|
81
|
+
export declare const createHaloMaterial: ({ width, color, opacity, vertexColors, }: HaloOptions) => THREE.MeshMatcapMaterial;
|
|
82
|
+
/** Writes depth only, drawn just before the hint so its hidden (back) layers are culled. */
|
|
83
|
+
export declare const createDepthPrepassMaterial: () => THREE.MeshBasicMaterial;
|
|
84
|
+
/** `userData` key marking a twin mesh: the depth pre-pass or the halo (the original is the hint). */
|
|
85
|
+
export declare const HINT_TWIN = "instructionHintTwin";
|
|
86
|
+
export type HintTwinKind = "prepass" | "halo";
|
|
87
|
+
/** A hint mesh and its two twins (same geometry, skeleton and morph targets). */
|
|
88
|
+
export type HintMeshSet = {
|
|
89
|
+
mesh: THREE.Mesh;
|
|
90
|
+
twins: THREE.Mesh[];
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Adds a depth-only twin (so a see-through hint shows its front surface, not
|
|
94
|
+
* every layer behind it) and a halo twin next to every mesh under `root`.
|
|
95
|
+
* Returns the sets, so callers can copy morph weights onto the twins.
|
|
96
|
+
*/
|
|
97
|
+
export declare const addHintTwins: (root: THREE.Object3D) => HintMeshSet[];
|
|
98
|
+
/**
|
|
99
|
+
* Gives every mesh under `root` its material and draw order, in the same
|
|
100
|
+
* renderOrder band: depth pre-pass → halo (outside the silhouette) → the hint.
|
|
101
|
+
*/
|
|
102
|
+
export declare const assignHintMaterials: (root: THREE.Object3D, { main, prepass, halo, showHalo, renderOrder, }: {
|
|
103
|
+
main: (mesh: THREE.Mesh) => THREE.Material;
|
|
104
|
+
prepass: THREE.Material;
|
|
105
|
+
halo: THREE.Material;
|
|
106
|
+
showHalo: boolean;
|
|
107
|
+
renderOrder?: number;
|
|
108
|
+
}) => void;
|
|
109
|
+
/**
|
|
110
|
+
* The square span (display units) that holds `points` while they swing about
|
|
111
|
+
* the vertical through `middle` by ±`amplitude` radians: the widest reach
|
|
112
|
+
* either side of the middle over the swing.
|
|
113
|
+
*/
|
|
114
|
+
export declare const orbitSpan: (points: THREE.Vector3[], middle: THREE.Vector3, amplitude: number) => number;
|
|
115
|
+
/** Smoothstep easing used by the hint loops. */
|
|
116
|
+
export declare const ease: (x: number) => number;
|
|
117
|
+
/**
|
|
118
|
+
* A soft back-glow: a radial gradient on a camera-facing disc, drawn BEHIND
|
|
119
|
+
* the hint (before its depth pre-pass) so it shows only around the silhouette
|
|
120
|
+
* and faintly through the translucent ghost — never as inner layers. White by
|
|
121
|
+
* default; opacity is the material's, so a fade multiplies it as usual.
|
|
122
|
+
*/
|
|
123
|
+
export declare const createGlowMaterial: (color?: THREE.ColorRepresentation, opacity?: number) => THREE.MeshBasicMaterial;
|
|
124
|
+
/** Disposes a material made by {@link createGlowMaterial} (and its gradient texture). */
|
|
125
|
+
export declare const disposeGlowMaterial: (material: THREE.MeshBasicMaterial) => void;
|
|
126
|
+
/** Whether every mesh under `root` carries a vertex colour attribute (`COLOR_0`). */
|
|
127
|
+
export declare const hasVertexColors: (root: THREE.Object3D) => boolean;
|
|
128
|
+
export declare const readClipQuaternions: (clip: THREE.AnimationClip) => Map<string, THREE.Quaternion>;
|
|
129
|
+
export declare const readClipPositions: (clip: THREE.AnimationClip) => Map<string, THREE.Vector3>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/** Poses a model somewhere between two states: `apply(0)` = from, `apply(1)` = to. */
|
|
3
|
+
export type HintBlend = {
|
|
4
|
+
apply: (amount: number) => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Blends every node a pair of single-key clips animates (their first
|
|
8
|
+
* `.quaternion` key, and `.position` for the nodes a clip moves, like the hips
|
|
9
|
+
* of a squat; nodes found by name under `root`) from `from` to `to`.
|
|
10
|
+
* A missing clip stands for the model's current (rest) pose. For a hint on any
|
|
11
|
+
* rigged model: `apply(sampleHintLoop(t).amount)` each frame.
|
|
12
|
+
*/
|
|
13
|
+
export declare const createClipBlend: (root: THREE.Object3D, from?: THREE.AnimationClip, to?: THREE.AnimationClip) => HintBlend;
|
|
14
|
+
/**
|
|
15
|
+
* Blends morph targets by name on `meshes` (every other target held at 0):
|
|
16
|
+
* `apply(amount)` sets each named target to its weight × `amount`. Meshes
|
|
17
|
+
* without a target skip it.
|
|
18
|
+
*/
|
|
19
|
+
export declare const createMorphBlend: (meshes: readonly THREE.Mesh[], targets: Record<string, number>) => HintBlend;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { GhostOptions } from './ghost';
|
|
2
|
+
import type * as THREE from "three";
|
|
3
|
+
/** The soft dark band around a hint's silhouette (reads on light camera feeds). */
|
|
4
|
+
export type HintHalo = {
|
|
5
|
+
/** Reach out from the surface, in the model's units (cm for the example models). */
|
|
6
|
+
width?: number;
|
|
7
|
+
/** Default `#0f172a` (deep slate). */
|
|
8
|
+
color?: THREE.ColorRepresentation;
|
|
9
|
+
/** Peak opacity. Default 0.3. */
|
|
10
|
+
opacity?: number;
|
|
11
|
+
};
|
|
12
|
+
/** The soft light disc behind a hint; it brightens as the pose forms. */
|
|
13
|
+
export type HintGlow = {
|
|
14
|
+
/** Default white. */
|
|
15
|
+
color?: THREE.ColorRepresentation;
|
|
16
|
+
/** Disc diameter × the hint's fitted span. */
|
|
17
|
+
size?: number;
|
|
18
|
+
/** Opacity while relaxed. Default 0.5. */
|
|
19
|
+
idle?: number;
|
|
20
|
+
/** Opacity at the full pose. Default 0.85. */
|
|
21
|
+
full?: number;
|
|
22
|
+
};
|
|
23
|
+
/** How the parts that make the pose (key fingers, the posing arms) stand out. */
|
|
24
|
+
export type HintHighlight = {
|
|
25
|
+
/** Opacity they reach. Default 0.9. */
|
|
26
|
+
opacity?: number;
|
|
27
|
+
/** How far they are pushed toward white (0..1). Default 0.55. */
|
|
28
|
+
whiten?: number;
|
|
29
|
+
/** Share of the highlight already shown while relaxed (0..1). Default 0.25. */
|
|
30
|
+
idle?: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Everything about how a hint model is drawn. Every hint takes a `look`; it is
|
|
34
|
+
* merged over that hint's default (`HAND_HINT_LOOK`, `FACE_HINT_LOOK`,
|
|
35
|
+
* `BODY_HINT_LOOK`), so you only write what you change. `false` turns a layer off.
|
|
36
|
+
*
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <HandGestureHint look={{ ghost: { color: "#9be7ff", core: 0.35 }, halo: false }} … />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export type HintLook = {
|
|
42
|
+
/** The base ghost every part gets: tint, opacities, rim whitening. */
|
|
43
|
+
ghost?: GhostOptions;
|
|
44
|
+
/**
|
|
45
|
+
* Per-part overrides by the model's material name, merged over `ghost`
|
|
46
|
+
* (e.g. `{ iris: { color: "#2a2732", core: 0.9 } }`). `null` removes a default tint.
|
|
47
|
+
*/
|
|
48
|
+
parts?: Record<string, GhostOptions | null>;
|
|
49
|
+
halo?: HintHalo | false;
|
|
50
|
+
glow?: HintGlow | false;
|
|
51
|
+
highlight?: HintHighlight | false;
|
|
52
|
+
/** Your own matcap (shading) texture. Default: a generated soft white studio matcap. */
|
|
53
|
+
matcap?: THREE.Texture;
|
|
54
|
+
/**
|
|
55
|
+
* Replaces the ghost on every part (any three.js material; the halo and glow
|
|
56
|
+
* still apply unless turned off). Highlights need the ghost material.
|
|
57
|
+
*/
|
|
58
|
+
material?: THREE.Material;
|
|
59
|
+
};
|
|
60
|
+
/** A look with every layer resolved (what `useGhostModel` draws). */
|
|
61
|
+
export type ResolvedHintLook = {
|
|
62
|
+
ghost: GhostOptions;
|
|
63
|
+
parts: Record<string, GhostOptions>;
|
|
64
|
+
halo: Required<HintHalo> | false;
|
|
65
|
+
glow: Required<HintGlow> | false;
|
|
66
|
+
highlight: Required<HintHighlight> | false;
|
|
67
|
+
matcap?: THREE.Texture;
|
|
68
|
+
material?: THREE.Material;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Merges `over` onto `base` layer by layer (`ghost`, each part, `halo`,
|
|
72
|
+
* `glow`, `highlight` field by field; `false` turns a layer off, `null`
|
|
73
|
+
* drops a part's tint) and fills the remaining defaults.
|
|
74
|
+
*/
|
|
75
|
+
export declare const mergeHintLook: (base: HintLook, over?: HintLook) => ResolvedHintLook;
|
|
76
|
+
/**
|
|
77
|
+
* A key for a look's plain values (textures and materials are compared by
|
|
78
|
+
* identity separately), so an inline `look` object does not rebuild materials
|
|
79
|
+
* every render.
|
|
80
|
+
*/
|
|
81
|
+
export declare const hintLookKey: (look: HintLook | undefined) => string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a hint loops from rest into the pose and back. Every hint takes a
|
|
3
|
+
* `loop`, merged over its defaults.
|
|
4
|
+
*/
|
|
5
|
+
export type HintLoop = {
|
|
6
|
+
/** Seconds per cycle (rest → pose → rest). `0` holds the full pose. */
|
|
7
|
+
seconds?: number;
|
|
8
|
+
/** Share of the cycle held at the full pose (0..0.95). Default ≈0.54. */
|
|
9
|
+
hold?: number;
|
|
10
|
+
/** Where each cycle starts, 0 = the model's rest .. 1 = the pose (the hand starts relaxed, 0.35). */
|
|
11
|
+
from?: number;
|
|
12
|
+
/** Easing of the move (0..1 → 0..1). Default smoothstep (the hand closes with a small settle). */
|
|
13
|
+
easing?: (t: number) => number;
|
|
14
|
+
};
|
|
15
|
+
/** The default hold share: the full pose for ≈54 % of each cycle. */
|
|
16
|
+
export declare const HINT_LOOP_HOLD: number;
|
|
17
|
+
export type HintLoopSample = {
|
|
18
|
+
/** 0..1 through the cycle. */
|
|
19
|
+
phase: number;
|
|
20
|
+
/** The raw drive, 0 (rest) → 1 (pose, held) → 0, before easing and `from`. */
|
|
21
|
+
drive: number;
|
|
22
|
+
/** In the first half of the cycle (moving into the pose). */
|
|
23
|
+
closing: boolean;
|
|
24
|
+
/** How far into the pose: `from` + eased drive, 0..1. */
|
|
25
|
+
amount: number;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Samples a hint loop at `time` seconds: rest → pose (held) → rest. Pure; call
|
|
29
|
+
* it from `useFrame` with `clock.elapsedTime` to drive your own hint.
|
|
30
|
+
*/
|
|
31
|
+
export declare const sampleHintLoop: (time: number, { seconds, hold, from, easing }?: HintLoop) => HintLoopSample;
|
|
32
|
+
/**
|
|
33
|
+
* The auto orbit's yaw (radians) at `time`: a ping-pong swing of ±`degrees`
|
|
34
|
+
* about the vertical, `seconds` per swing (`0` = still).
|
|
35
|
+
*/
|
|
36
|
+
export declare const sampleHintOrbit: (time: number, degrees: number, seconds: number) => number;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { InstructionOptions } from './InstructionCue';
|
|
3
|
+
import { InstructionDetector } from './useInstructionHold';
|
|
4
|
+
export type InstructionProps = InstructionOptions & {
|
|
5
|
+
/** Instruction copy. */
|
|
6
|
+
text: string;
|
|
7
|
+
/**
|
|
8
|
+
* What drives it: any detector hook's result (`useHandGesture`,
|
|
9
|
+
* `useFaceExpression`, `useBodyPose`, `useInstructionHold`) or your own
|
|
10
|
+
* `{ status, isInView }`.
|
|
11
|
+
*/
|
|
12
|
+
detector: Pick<InstructionDetector, "status" | "isInView">;
|
|
13
|
+
/**
|
|
14
|
+
* The symbol over the text, drawn `height` tall (screen-space world units)
|
|
15
|
+
* in the given render order: a hint (`HandGestureHint`, …), your own model
|
|
16
|
+
* in a `HintStage`, a `ScreenImage`, an emoji `TextLabel` …
|
|
17
|
+
*/
|
|
18
|
+
symbol: (height: number, renderOrder: number) => ReactNode;
|
|
19
|
+
/** The symbol's slot height × the size preset (a standing figure uses 2.1). Default 1. */
|
|
20
|
+
symbolAspect?: number;
|
|
21
|
+
/** `false` hides it. Default `true`. (Pause the detector with its own `active`.) */
|
|
22
|
+
active?: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* The instruction layout on its own: a symbol over your copy, a nudge line
|
|
26
|
+
* when nothing is in view, status reports, and on completion a pop, a ring
|
|
27
|
+
* and a fade-out. Bring any detector and any symbol; `HandInstruction`,
|
|
28
|
+
* `FaceInstruction` and `BodyInstruction` are this with their hint and hook.
|
|
29
|
+
* Mount inside `XRScene`; it draws in its own `ScreenSpaceUI`, over the AR
|
|
30
|
+
* content (`INSTRUCTION_RENDER_ORDER` 2000+).
|
|
31
|
+
*
|
|
32
|
+
* ```tsx
|
|
33
|
+
* const wave = useHandGesture(myWave, { onComplete: start });
|
|
34
|
+
* <Instruction
|
|
35
|
+
* detector={wave}
|
|
36
|
+
* text="Wave hello"
|
|
37
|
+
* symbol={(h, order) => <HandGestureHint gesture={myWave} model={hand} height={h} renderOrder={order} />}
|
|
38
|
+
* />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const Instruction: ({ active, ...props }: InstructionProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { HintMeshSet } from './ghost';
|
|
2
|
+
import { HintLook, ResolvedHintLook } from './hintLook';
|
|
3
|
+
import * as THREE from "three";
|
|
4
|
+
export type GhostModel = {
|
|
5
|
+
/** The ghost copy of the model to render (`<primitive object={ghost.object} />`). */
|
|
6
|
+
object: THREE.Object3D;
|
|
7
|
+
/** Its meshes, each with its depth pre-pass and halo twins (copy morph weights to all three). */
|
|
8
|
+
meshes: HintMeshSet[];
|
|
9
|
+
/** The ghost material per part (material name); empty with `look.material`. */
|
|
10
|
+
materials: Map<string, THREE.Material>;
|
|
11
|
+
/** The back-glow disc's material (`null` with `glow: false`); `HintStage` draws it. */
|
|
12
|
+
glowMaterial: THREE.MeshBasicMaterial | null;
|
|
13
|
+
/** The resolved look. */
|
|
14
|
+
look: ResolvedHintLook;
|
|
15
|
+
/** Lights bones up: `weight(bone)` 0..1 per skinned bone (0 everywhere clears it). */
|
|
16
|
+
setHighlight: (weight: (bone: THREE.Bone) => number) => void;
|
|
17
|
+
/** How formed the pose is, 0..1: fades the highlight and the glow in. Call it every frame. */
|
|
18
|
+
setStrength: (amount: number) => void;
|
|
19
|
+
};
|
|
20
|
+
export type UseGhostModelOptions = {
|
|
21
|
+
/** The hint's default look, `look` is merged over it. Default: the plain ghost. */
|
|
22
|
+
base?: HintLook;
|
|
23
|
+
/** Render order of the hint (its pre-pass and halo draw just before it). */
|
|
24
|
+
renderOrder?: number;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Turns any model into an instruction-hint ghost: a skeleton-safe copy with a
|
|
28
|
+
* translucent matcap ghost per part, a depth pre-pass (only the front surface
|
|
29
|
+
* shows), a halo and a back-glow, all from one `look`. The building block the
|
|
30
|
+
* hand / face / body hints use; use it for a hint on your own model, then pose
|
|
31
|
+
* `ghost.object` yourself (e.g. `createClipBlend`) inside a `HintStage`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const useGhostModel: (model: THREE.Object3D, look?: HintLook, { base, renderOrder }?: UseGhostModelOptions) => GhostModel;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { MutableRefObject } from 'react';
|
|
2
|
+
import { GestureHoldState, GestureHoldStatus } from './gestureHold';
|
|
3
|
+
/**
|
|
4
|
+
* What an `<Instruction>` reads from its detector. `useHandGesture`,
|
|
5
|
+
* `useFaceExpression`, `useBodyPose` and `useInstructionHold` all return one,
|
|
6
|
+
* so any of them (or your own) can drive the layout.
|
|
7
|
+
*/
|
|
8
|
+
export type InstructionDetector = {
|
|
9
|
+
/** `"waiting"` → `"holding"` → `"done"`; re-renders only when this changes. */
|
|
10
|
+
status: GestureHoldStatus;
|
|
11
|
+
/** Live hold state (progress 0..1) — read it in `useFrame`, not in render. */
|
|
12
|
+
holdRef: MutableRefObject<GestureHoldState>;
|
|
13
|
+
/** Whether it matched on the latest frame (before hold timing) — read it in `useFrame`. */
|
|
14
|
+
matchedRef: MutableRefObject<boolean>;
|
|
15
|
+
/** Whether something usable (a hand, a face, a body) is in view right now. */
|
|
16
|
+
isInView: () => boolean;
|
|
17
|
+
/** Start over (e.g. to ask again). */
|
|
18
|
+
reset: () => void;
|
|
19
|
+
};
|
|
20
|
+
export type InstructionHoldOptions = {
|
|
21
|
+
/** How long it must be held to complete. Default 400 ms. */
|
|
22
|
+
holdMs?: number;
|
|
23
|
+
/** Dropouts shorter than this do not restart the hold. Default 150 ms. */
|
|
24
|
+
graceMs?: number;
|
|
25
|
+
/** Called once when it completes (until `reset`). */
|
|
26
|
+
onComplete?: () => void;
|
|
27
|
+
/** `false` pauses it. Default `true`. */
|
|
28
|
+
active?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* The hold state machine behind every detector hook: `step(matched)` once per
|
|
32
|
+
* frame; a new `resetKey` starts a new prompt.
|
|
33
|
+
*/
|
|
34
|
+
export declare const useHoldTracker: (resetKey: unknown, { holdMs, graceMs, onComplete, }: Omit<InstructionHoldOptions, "active">) => {
|
|
35
|
+
status: GestureHoldStatus;
|
|
36
|
+
holdRef: MutableRefObject<GestureHoldState>;
|
|
37
|
+
matchedRef: MutableRefObject<boolean>;
|
|
38
|
+
reset: () => void;
|
|
39
|
+
step: (matched: boolean) => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* A stable key for a gesture / expression / pose spec, so an inline rule or
|
|
43
|
+
* definition object does not restart the hold every render (functions are
|
|
44
|
+
* read live and do not re-key; change a React `key` or call `reset` for a new
|
|
45
|
+
* prompt with the same function).
|
|
46
|
+
*/
|
|
47
|
+
export declare const specKey: (spec: unknown) => string;
|
|
48
|
+
export type UseInstructionHoldOptions = InstructionHoldOptions & {
|
|
49
|
+
/**
|
|
50
|
+
* Whether something usable is in view (drives the `"waiting"` status and the
|
|
51
|
+
* nudge). Default: always in view.
|
|
52
|
+
*/
|
|
53
|
+
isInView?: () => boolean;
|
|
54
|
+
/** A new value starts a new prompt (the hold restarts). */
|
|
55
|
+
resetKey?: unknown;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Hold-to-complete for ANY condition: `match` is called every frame and must
|
|
59
|
+
* hold for `holdMs`. Combine detectors by reading their `matchedRef`s (call
|
|
60
|
+
* those hooks first, in the same component):
|
|
61
|
+
*
|
|
62
|
+
* ```tsx
|
|
63
|
+
* const hand = useHandGesture("palm");
|
|
64
|
+
* const face = useFaceExpression("smile");
|
|
65
|
+
* const both = useInstructionHold(() => hand.matchedRef.current && face.matchedRef.current, {
|
|
66
|
+
* isInView: () => hand.isInView() && face.isInView(),
|
|
67
|
+
* onComplete: start,
|
|
68
|
+
* });
|
|
69
|
+
* <Instruction detector={both} text="Wave and smile" symbol={…} />
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare const useInstructionHold: (match: () => boolean, { isInView, resetKey, active, ...options }?: UseInstructionHoldOptions) => InstructionDetector;
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { LipEffectProps } from './types';
|
|
2
|
+
import * as THREE from "three";
|
|
2
3
|
/**
|
|
3
4
|
* `outer-and-inner-lips` paints only the lip surface: the mouth interior
|
|
4
|
-
* writes the stencil
|
|
5
|
+
* writes the mouth stencil bit and the lip material skips those pixels.
|
|
5
6
|
* `outer-lips` paints everything inside the outer lip ring, interior included.
|
|
6
7
|
*/
|
|
7
8
|
export declare const shouldWriteMouthStencil: (maskMode: LipEffectProps["maskMode"]) => boolean;
|
|
8
|
-
export declare const
|
|
9
|
+
export declare const getLipEffectMouthStencilMaterial: () => THREE.MeshBasicMaterial;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the lip layers keep the `faceUv` attribute current: the `faceUv`
|
|
12
|
+
* prop when given, else only for a custom (not built-in) `material` or
|
|
13
|
+
* `sharedMaterial`. The built-in material never reads it.
|
|
14
|
+
*/
|
|
15
|
+
export declare const lipEffectWantsFaceUv: ({ faceUv, material, sharedMaterial, }: Pick<LipEffectProps, "faceUv" | "material" | "sharedMaterial">) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Lipstick, gloss, tint, shimmer, glitter or a painted design on the lips of
|
|
18
|
+
* a tracked face, shaded against the person's own skin and light by the
|
|
19
|
+
* makeup core. It draws two `FaceAtlasLayer`s on the face's shared surface:
|
|
20
|
+
* the mouth interior (the stencil cut-out, or painted in `outer-lips` mode)
|
|
21
|
+
* and the lips, at `MAKEUP_RENDER_ORDER.lips`.
|
|
22
|
+
*
|
|
23
|
+
* It works alone (it starts the face model itself; no `FaceTracker`
|
|
24
|
+
* needed), inside a `FaceTracker` (that face), or nested in a `FaceRig` /
|
|
25
|
+
* `FaceWarp3D` / `FaceMorph` (it rides that face). Its design textures load
|
|
26
|
+
* through R3F's `useLoader`, so keep it under a `<Suspense>`, as in alpha.8.
|
|
27
|
+
*/
|
|
28
|
+
export declare const LipEffect: ({ faceIndex, numFaces, mirrored, designTexture, lowerDesignTexture, material, sharedMaterial, faceUv, holdMs, renderOrder, ...settingsInput }: LipEffectProps) => import("react/jsx-runtime").JSX.Element | null;
|