@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,87 @@
|
|
|
1
|
+
import { FaceImageLandmark } from '../../face-character/faceReprojection';
|
|
2
|
+
import { FaceSkinStats } from './stats';
|
|
3
|
+
import { FaceSkinProbeFormat, FaceSkinStatsFormat } from './targets';
|
|
4
|
+
import * as THREE from "three";
|
|
5
|
+
/**
|
|
6
|
+
* A GPU self-test of `FaceSkinProbe` on a synthetic face whose answers are
|
|
7
|
+
* known: a canonical face drawn on the CPU (Lambert shading from a known
|
|
8
|
+
* light, a known skin, lip and brow colour), unwrapped and measured on this
|
|
9
|
+
* device's GPU, then read back. It exercises the paths phones disagree on:
|
|
10
|
+
* RGBA16F MRT rendering, ConstantAlpha blending, mipmap generation, the
|
|
11
|
+
* stats ping-pong and its precision, and the RGBA8 fallback. The headless
|
|
12
|
+
* smoke run drives it (`example/smoke/face-skin-probe.spec.ts`); open
|
|
13
|
+
* `/smoke/face-skin-probe.html` on the dev server to run it on a device.
|
|
14
|
+
*/
|
|
15
|
+
type Vec3 = [number, number, number];
|
|
16
|
+
/** The synthetic face's truths. */
|
|
17
|
+
export declare const FACE_SKIN_SELF_TEST_SCENE: Readonly<{
|
|
18
|
+
size: 256;
|
|
19
|
+
/** px per canonical cm. */
|
|
20
|
+
scale: 9;
|
|
21
|
+
yawDeg: 8;
|
|
22
|
+
skin: Vec3;
|
|
23
|
+
lip: Vec3;
|
|
24
|
+
brow: Vec3;
|
|
25
|
+
background: 0.2;
|
|
26
|
+
ambient: 0.3;
|
|
27
|
+
diffuse: 0.7;
|
|
28
|
+
/** View space (x right, y up, z toward the camera). */
|
|
29
|
+
light: Vec3;
|
|
30
|
+
/** The second image's gain (the EMA step). */
|
|
31
|
+
gain: 1.25;
|
|
32
|
+
/** Seconds of the second update. */
|
|
33
|
+
dt: 0.25;
|
|
34
|
+
/**
|
|
35
|
+
* The hold: from a still at gain 1, `holdUpdates` live updates `holdDt`
|
|
36
|
+
* apart on an image at `holdGain`. A 2 % step is under what half-float
|
|
37
|
+
* stats can store per update at 15 Hz (the slow skin stalls short of it).
|
|
38
|
+
*/
|
|
39
|
+
holdGain: 1.02;
|
|
40
|
+
holdUpdates: 300;
|
|
41
|
+
holdDt: number;
|
|
42
|
+
/** After the hold, `Rs` within this of `Rf` (20 s is 5 τ: 0.7 % of the step is left). */
|
|
43
|
+
holdTolerance: 0.005;
|
|
44
|
+
}>;
|
|
45
|
+
export type FaceSkinSelfTestImage = {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
/** RGBA8, sRGB-encoded, row 0 = image top (a `DataTexture` with `flipY` false). */
|
|
49
|
+
pixels: Uint8Array;
|
|
50
|
+
landmarks: FaceImageLandmark[];
|
|
51
|
+
/** The light, unit, view space. */
|
|
52
|
+
light: Vec3;
|
|
53
|
+
};
|
|
54
|
+
/** Draws the synthetic face (pure, no GPU). `gain` scales its linear colour. */
|
|
55
|
+
export declare const createFaceSkinSelfTestImage: (gain?: number) => FaceSkinSelfTestImage;
|
|
56
|
+
/** The stats read back at each step of one run. */
|
|
57
|
+
export type FaceSkinSelfTestReadings = {
|
|
58
|
+
/** After the still image. */
|
|
59
|
+
still: FaceSkinStats;
|
|
60
|
+
/** After one update on the `gain` image. */
|
|
61
|
+
next: FaceSkinStats;
|
|
62
|
+
/** After a second still at gain 1 (the hold's start). */
|
|
63
|
+
holdStart: FaceSkinStats;
|
|
64
|
+
/** After `holdUpdates` updates on the `holdGain` image. */
|
|
65
|
+
held: FaceSkinStats;
|
|
66
|
+
};
|
|
67
|
+
/** One format's outcome. */
|
|
68
|
+
export type FaceSkinSelfTestRun = {
|
|
69
|
+
format: FaceSkinProbeFormat;
|
|
70
|
+
statsFormat: FaceSkinStatsFormat;
|
|
71
|
+
ok: boolean;
|
|
72
|
+
/** What failed, or a summary. */
|
|
73
|
+
detail: string;
|
|
74
|
+
readings: FaceSkinSelfTestReadings | null;
|
|
75
|
+
};
|
|
76
|
+
/** The checks on one probe's readbacks (pure; tested without a GPU). */
|
|
77
|
+
export declare const judgeFaceSkinSelfTest: ({ still, next, holdStart, held }: FaceSkinSelfTestReadings, light: Vec3) => string[];
|
|
78
|
+
/**
|
|
79
|
+
* Runs the self-test on `renderer` (or a new 1 × 1 one, disposed after) for
|
|
80
|
+
* each format: the device's choice and the RGBA8 fallback. Never throws.
|
|
81
|
+
*/
|
|
82
|
+
export declare const runFaceSkinProbeSelfTest: (renderer?: THREE.WebGLRenderer) => {
|
|
83
|
+
ok: boolean;
|
|
84
|
+
runs: FaceSkinSelfTestRun[];
|
|
85
|
+
error: string | null;
|
|
86
|
+
};
|
|
87
|
+
export {};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { MakeupSkinTexel } from '../shading';
|
|
2
|
+
import { FaceSkinStepParams } from './constants';
|
|
3
|
+
/**
|
|
4
|
+
* The probe's stats: one small texture (`lightingMap`) of 8 texels the
|
|
5
|
+
* stats pass rewrites on every update (ping-pong), read by shaders with
|
|
6
|
+
* `texelFetch` (the `FACE_SKIN_STATS_GLSL` reader). This file holds its
|
|
7
|
+
* layout, the probe's sample points, and `stepFaceSkinStats`, the
|
|
8
|
+
* line-for-line TypeScript mirror of the stats pass (tests and docs).
|
|
9
|
+
*/
|
|
10
|
+
/** The stats texels (`lightingMap`, read with `faceSkinStat(texel)`). Colours are linear. */
|
|
11
|
+
export declare const FACE_SKIN_STATS: Readonly<{
|
|
12
|
+
/** Texels in the layout (texels 5–7 are reserved, 0). */
|
|
13
|
+
readonly texels: 8;
|
|
14
|
+
/** rgb `Rs`: the person's skin under the settled light (τ 4 s). a: `ready`, 0 → 1 over 0.3 s of data. */
|
|
15
|
+
readonly skinSlow: 0;
|
|
16
|
+
/** rgb `Rf`: the skin under the current light (τ 0.25 s). a: skin coverage now (the skin map's top-mip weight). */
|
|
17
|
+
readonly skinFast: 1;
|
|
18
|
+
/**
|
|
19
|
+
* The light, `lum = a + b · n` over the skin: rgb the gradient `b` in VIEW
|
|
20
|
+
* space (x right, y up, z toward the camera), a the ambient `a`. Direction
|
|
21
|
+
* `normalize(b)`, confidence `|b| / a` (under 0.15 shading uses the key light).
|
|
22
|
+
*/
|
|
23
|
+
readonly light: 2;
|
|
24
|
+
/** rgb: the person's own lip colour. a: how much lip the taps saw (0..1). */
|
|
25
|
+
readonly lip: 3;
|
|
26
|
+
/**
|
|
27
|
+
* rgb: the person's own brow-hair colour, `skin + (brow − skin) / 0.6` over
|
|
28
|
+
* the whole brow band, the extrapolation stopped at half the band's colour.
|
|
29
|
+
* a: how much brow the taps saw.
|
|
30
|
+
*/
|
|
31
|
+
readonly brow: 4;
|
|
32
|
+
}>;
|
|
33
|
+
/** Where the stats pass samples the maps (atlas UV, v up). */
|
|
34
|
+
export type FaceSkinTaps = {
|
|
35
|
+
/** `LIGHT_FIT_TAPS`: UV (2 per tap), rest normal (3 per tap), `LIGHT_FIT_GROUP` flags. */
|
|
36
|
+
light: {
|
|
37
|
+
uv: Float32Array;
|
|
38
|
+
normal: Float32Array;
|
|
39
|
+
group: Int32Array;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* The middle of the lip vermilion: halfway between each outer-ring landmark
|
|
43
|
+
* and its inner-ring partner, away from the corners (2 per tap).
|
|
44
|
+
*/
|
|
45
|
+
lip: Float32Array;
|
|
46
|
+
/**
|
|
47
|
+
* Across each brow, upper edge to lower edge, at `FACE_SKIN_BROW_TAP_ROWS`
|
|
48
|
+
* (a sixth, half and five sixths down), both sides (2 per tap).
|
|
49
|
+
*/
|
|
50
|
+
brow: Float32Array;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Where the brow taps sit between each upper-edge landmark (0) and its
|
|
54
|
+
* lower-edge partner (1): the centres of three equal strips, so they average
|
|
55
|
+
* the whole band, whose mean holds the hair share
|
|
56
|
+
* `FACE_SKIN_PROBE.browHairShare` assumes (the middle alone is nearly all hair).
|
|
57
|
+
*/
|
|
58
|
+
export declare const FACE_SKIN_BROW_TAP_ROWS: readonly number[];
|
|
59
|
+
/** The stats pass's sample points (built once, shared: do not mutate). */
|
|
60
|
+
export declare const getFaceSkinTaps: () => FaceSkinTaps;
|
|
61
|
+
type Vec3 = [number, number, number];
|
|
62
|
+
/** What the stats pass samples, as raw texels of the maps (`(c·w, w)`, or `(w·√c, w)` on RGBA8). */
|
|
63
|
+
export type FaceSkinStatsInput = {
|
|
64
|
+
/** The skin map's top mip (1 × 1): the weighted mean of all the skin seen. */
|
|
65
|
+
skinTop: MakeupSkinTexel;
|
|
66
|
+
/** The skin map at the low-pass mip (`makeupSkinLod(size)`) at each light tap. */
|
|
67
|
+
lightSkin: readonly MakeupSkinTexel[];
|
|
68
|
+
/** The feature map (mip 0) at each lip tap. */
|
|
69
|
+
lipFeature: readonly MakeupSkinTexel[];
|
|
70
|
+
/** The feature map (mip 0) at each brow tap. */
|
|
71
|
+
browFeature: readonly MakeupSkinTexel[];
|
|
72
|
+
/** The skin map at the low-pass mip at each brow tap: the local skin around the brow. */
|
|
73
|
+
browSkin: readonly MakeupSkinTexel[];
|
|
74
|
+
/** The skin map `lowpassCoarseLods` mips coarser at each brow tap (where the low-pass has no skin). */
|
|
75
|
+
browSkinCoarse: readonly MakeupSkinTexel[];
|
|
76
|
+
/** Canonical head frame → view at this update, 3 × 3 column-major (`THREE.Matrix3.elements`). */
|
|
77
|
+
rotation: ArrayLike<number>;
|
|
78
|
+
};
|
|
79
|
+
/** The stats pass's blend factors and flags, plus the maps' encoding. */
|
|
80
|
+
export type FaceSkinStatsParams = FaceSkinStepParams & {
|
|
81
|
+
/** The maps hold `(w·√c, w)` (RGBA8). */
|
|
82
|
+
sqrt: boolean;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* The light fit over the light taps, against the rest normals rotated into
|
|
86
|
+
* view space: `[a, bx, by, bz]`, or null when less than `minLightTaps` of
|
|
87
|
+
* skin was seen. Exactly `fitLight` (the CPU reference the GLSL ports) with
|
|
88
|
+
* the tap groups.
|
|
89
|
+
*/
|
|
90
|
+
export declare const fitFaceSkinLight: (lightSkin: readonly MakeupSkinTexel[], rotation: ArrayLike<number>, sqrt: boolean) => [number, number, number, number] | null;
|
|
91
|
+
/**
|
|
92
|
+
* The person's brow-hair colour from the brow band's mean colour and the
|
|
93
|
+
* skin around it: the band is `browHairShare` hair, so hair =
|
|
94
|
+
* `skin + (brow − skin) / share`, along the skin → brow line. Dense brows
|
|
95
|
+
* hold more hair than that, and the line would run past black, so the
|
|
96
|
+
* factor stops where any channel reaches `browHairFloor` of the band's
|
|
97
|
+
* colour (or 1 for brows lighter than the skin): a dark brown stays brown.
|
|
98
|
+
*/
|
|
99
|
+
export declare const faceSkinBrowHair: (brow: Readonly<Vec3>, skin: Readonly<Vec3>) => Vec3;
|
|
100
|
+
/**
|
|
101
|
+
* One stats update (the stats pass, texel by texel): `previous` and `out`
|
|
102
|
+
* are `FACE_SKIN_STATS.texels × 4` floats in the `FACE_SKIN_STATS` layout.
|
|
103
|
+
*
|
|
104
|
+
* - `Rf` follows the skin map's top mip (already averaged over time on half
|
|
105
|
+
* float; `fastBlend` averages it here on RGBA8), `Rs` follows `Rf` slowly.
|
|
106
|
+
* - Every slow average restarts (factor 1) on a snap, and also when `Rf`'s
|
|
107
|
+
* luminance differs from `Rs`'s by more than `snapJump` (40 %).
|
|
108
|
+
* - With too little skin seen (`minCoverage`), the values hold; on a snap
|
|
109
|
+
* they clear (not ready). Too few light, lip or brow taps hold that value.
|
|
110
|
+
* - Brow hair is `faceSkinBrowHair` of the brow band's mean and the skin
|
|
111
|
+
* around it.
|
|
112
|
+
*/
|
|
113
|
+
export declare const stepFaceSkinStats: (previous: ArrayLike<number>, input: FaceSkinStatsInput, params: FaceSkinStatsParams, out?: Float32Array) => Float32Array;
|
|
114
|
+
/** The stats, decoded. Colours are linear RGB. */
|
|
115
|
+
export type FaceSkinStats = {
|
|
116
|
+
/** `Rs`. */
|
|
117
|
+
skinSlow: Vec3;
|
|
118
|
+
/** 0 until the probe has data, then 1. */
|
|
119
|
+
ready: number;
|
|
120
|
+
/** `Rf`. */
|
|
121
|
+
skinFast: Vec3;
|
|
122
|
+
/** The skin coverage at the last update (share of the atlas seen as skin). */
|
|
123
|
+
coverage: number;
|
|
124
|
+
light: {
|
|
125
|
+
/** `b` of `lum = a + b · n`, view space. */
|
|
126
|
+
gradient: Vec3;
|
|
127
|
+
/** `a`. */
|
|
128
|
+
ambient: number;
|
|
129
|
+
/** `normalize(b)` (`[0, 0, 1]` when b is 0). */
|
|
130
|
+
direction: Vec3;
|
|
131
|
+
/** `|b| / a`, capped at 100. Under 0.15 shading uses the key light. */
|
|
132
|
+
confidence: number;
|
|
133
|
+
};
|
|
134
|
+
lip: Vec3;
|
|
135
|
+
lipSeen: number;
|
|
136
|
+
brow: Vec3;
|
|
137
|
+
browSeen: number;
|
|
138
|
+
};
|
|
139
|
+
/** The fit's confidence `|b| / a` (`fitLight`'s rule: capped, and safe for a ≤ 0). */
|
|
140
|
+
export declare const faceSkinLightConfidence: (gradient: ArrayLike<number>, ambient: number) => number;
|
|
141
|
+
/** Decodes `FACE_SKIN_STATS.texels × 4` floats (see `FaceSkinProbe.readStats`). */
|
|
142
|
+
export declare const readFaceSkinStats: (data: ArrayLike<number>) => FaceSkinStats;
|
|
143
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as THREE from "three";
|
|
2
|
+
/**
|
|
3
|
+
* The probe's render targets and their formats.
|
|
4
|
+
*
|
|
5
|
+
* Maps (`FaceSkinProbeFormat`):
|
|
6
|
+
* - `"half-float"`: RGBA16F, when the GPU can render to it
|
|
7
|
+
* (`EXT_color_buffer_half_float` or `EXT_color_buffer_float`). The skin and
|
|
8
|
+
* feature maps average over time with ConstantAlpha blending.
|
|
9
|
+
* - `"rgba8"`: the fallback. The maps hold `(w·√c, w)` (the square root
|
|
10
|
+
* before premultiplying keeps dark skin precise; `uSkinSqrt` = 1) and are
|
|
11
|
+
* replaced on every update (8-bit EMAs stall).
|
|
12
|
+
*
|
|
13
|
+
* Stats (`FaceSkinStatsFormat`): the slow averages move by about 1.7 % of
|
|
14
|
+
* the difference per update, which half floats round away (a 2 % step never
|
|
15
|
+
* lands), so the stats are never RGBA16F:
|
|
16
|
+
* - `"float"`: RGBA32F, when the GPU can render to it (`EXT_color_buffer_float`;
|
|
17
|
+
* the stats pass neither blends nor filters, so nothing else is needed);
|
|
18
|
+
* - `"packed"`: RGBA8, each value in three texels (24 bits).
|
|
19
|
+
*/
|
|
20
|
+
export type FaceSkinProbeFormat = "half-float" | "rgba8";
|
|
21
|
+
/** How the stats ping-pong stores its values (see `FaceSkinProbeFormat`). */
|
|
22
|
+
export type FaceSkinStatsFormat = "float" | "packed";
|
|
23
|
+
type ExtensionReader = {
|
|
24
|
+
extensions: {
|
|
25
|
+
has: (name: string) => boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/** Whether `renderer` can render to (and blend into) RGBA16F targets. */
|
|
29
|
+
export declare const canRenderHalfFloat: (renderer: ExtensionReader) => boolean;
|
|
30
|
+
/** Whether `renderer` can render to RGBA32F targets (no blending or filtering needed). */
|
|
31
|
+
export declare const canRenderFloat: (renderer: ExtensionReader) => boolean;
|
|
32
|
+
/** The probe format for a `halfFloat` option: `"auto"` asks the renderer. */
|
|
33
|
+
export declare const resolveFaceSkinProbeFormat: (halfFloat: boolean | "auto", renderer: ExtensionReader | null) => FaceSkinProbeFormat;
|
|
34
|
+
/**
|
|
35
|
+
* The stats format: RGBA32F where the renderer can render to it, else packed.
|
|
36
|
+
* The RGBA8 fallback (`"rgba8"` maps) always packs. Without a renderer it is
|
|
37
|
+
* provisional (`"float"`), settled on the first render.
|
|
38
|
+
*/
|
|
39
|
+
export declare const resolveFaceSkinStatsFormat: (format: FaceSkinProbeFormat, renderer: ExtensionReader | null) => FaceSkinStatsFormat;
|
|
40
|
+
/** Logical texels in the stats texture. */
|
|
41
|
+
export declare const FACE_SKIN_STATS_TEXELS = 8;
|
|
42
|
+
/** Texels per value in the packed stats layout (8 bits each: high, middle, low). */
|
|
43
|
+
export declare const FACE_SKIN_STATS_PACKED_TEXELS = 3;
|
|
44
|
+
/** The stats texture's width: 8 texels, or 24 when each value is packed into three. */
|
|
45
|
+
export declare const faceSkinStatsWidth: (format: FaceSkinStatsFormat) => number;
|
|
46
|
+
/**
|
|
47
|
+
* The skin map (texture 0) and the feature map (texture 1), one MRT target:
|
|
48
|
+
* `size`², mipmapped (trilinear), linear data (no colour space), no depth.
|
|
49
|
+
*/
|
|
50
|
+
export declare const createFaceSkinMapTarget: (size: number, format: FaceSkinProbeFormat) => THREE.WebGLRenderTarget<THREE.Texture>;
|
|
51
|
+
/** One side of the stats ping-pong: `faceSkinStatsWidth(format)` × 1, nearest, no mips. */
|
|
52
|
+
export declare const createFaceSkinStatsTarget: (format: FaceSkinStatsFormat) => THREE.WebGLRenderTarget<THREE.Texture>;
|
|
53
|
+
/** The stats texel whose rgb is signed (the light gradient), stored as `(x + 1) / 2` when packed. */
|
|
54
|
+
export declare const FACE_SKIN_STATS_SIGNED_TEXEL = 2;
|
|
55
|
+
/**
|
|
56
|
+
* Packs one value in 0..1 into three bytes (high, middle, low), as the
|
|
57
|
+
* shader writes it to an RGBA8 target (which rounds each byte).
|
|
58
|
+
*/
|
|
59
|
+
export declare const packFaceSkinValue: (value: number) => [number, number, number];
|
|
60
|
+
/**
|
|
61
|
+
* Decodes stats read back from the GPU into `FACE_SKIN_STATS_TEXELS × 4`
|
|
62
|
+
* floats: float data as is, packed data (bytes, 24 texels) unpacked.
|
|
63
|
+
*/
|
|
64
|
+
export declare const decodeFaceSkinStats: (data: ArrayLike<number>, format: FaceSkinStatsFormat, out?: Float32Array) => Float32Array;
|
|
65
|
+
/**
|
|
66
|
+
* Encodes `FACE_SKIN_STATS_TEXELS × 4` floats as the packed stats texture
|
|
67
|
+
* holds them (24 texels of bytes): the inverse of `decodeFaceSkinStats`.
|
|
68
|
+
*/
|
|
69
|
+
export declare const encodeFaceSkinStatsPacked: (stats: ArrayLike<number>, out?: Uint8Array) => Uint8Array;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FaceImageLandmark } from '../../face-character/faceReprojection';
|
|
2
|
+
import * as THREE from "three";
|
|
3
|
+
export type FaceSkinUnwrapImage = {
|
|
4
|
+
/** The image's width / height. */
|
|
5
|
+
aspect: number;
|
|
6
|
+
/**
|
|
7
|
+
* The texture keeps the image's top row at `v = 1` (`faceSkinTextureTopAtV1`),
|
|
8
|
+
* so a landmark samples at `(x, 1 − y)`; else at `(x, y)`.
|
|
9
|
+
*/
|
|
10
|
+
flipY: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Where a texture keeps its image's top row: `true` at `v = 1` (three's
|
|
14
|
+
* default `flipY` upload of an image, canvas or video, and anything three
|
|
15
|
+
* rendered into a render target), `false` at `v = 0` (`flipY` false, as a
|
|
16
|
+
* `DataTexture` built top row first, and any `ImageBitmap`: WebGL ignores
|
|
17
|
+
* `flipY` for those uploads).
|
|
18
|
+
*/
|
|
19
|
+
export declare const faceSkinTextureTopAtV1: (texture: THREE.Texture) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* One update of the unwrap: `cameraUv` (2 per landmark) is where each atlas
|
|
22
|
+
* vertex samples the image (texture space), `weight` (1 per landmark) how
|
|
23
|
+
* much it counts: how squarely it faces the camera (each triangle's area on
|
|
24
|
+
* the image over its 3D area, averaged per vertex, the landmarks' own z)
|
|
25
|
+
* times a fade near the image edge. Landmarks are normalized image
|
|
26
|
+
* coordinates (y down), z in x units, as the tracker and the still-image
|
|
27
|
+
* detector give them. Allocation-free.
|
|
28
|
+
*/
|
|
29
|
+
export declare const writeFaceSkinUnwrapFrame: (landmarks: ArrayLike<FaceImageLandmark>, image: FaceSkinUnwrapImage, cameraUv: Float32Array, weight: Float32Array) => void;
|
|
30
|
+
/** The head's pose as the probe measures it from landmarks. */
|
|
31
|
+
export type FaceSkinPose = {
|
|
32
|
+
/**
|
|
33
|
+
* Canonical head frame → the face's line-of-sight frame (x right, y up, z
|
|
34
|
+
* from the face toward the camera), as a three.js `Matrix3` (column-major
|
|
35
|
+
* `elements`, ready for a `mat3` uniform). Weak perspective: the landmarks
|
|
36
|
+
* show the head's turn against the ray to the camera, so a face off the
|
|
37
|
+
* optical axis that looks into the lens reads as frontal. The camera's view
|
|
38
|
+
* frame is `lineOfSightToView(ray) · rotation`.
|
|
39
|
+
*/
|
|
40
|
+
rotation: THREE.Matrix3;
|
|
41
|
+
/** Head turn left/right against the line of sight, degrees (0 looking into the lens). */
|
|
42
|
+
yawDeg: number;
|
|
43
|
+
/** Head tilt up/down against the line of sight, degrees (0 looking into the lens). */
|
|
44
|
+
pitchDeg: number;
|
|
45
|
+
/** Landmark 10 (forehead) to 152 (chin) on the image, px. */
|
|
46
|
+
faceHeightPx: number;
|
|
47
|
+
};
|
|
48
|
+
export declare const createFaceSkinPose: () => FaceSkinPose;
|
|
49
|
+
/**
|
|
50
|
+
* The rotation from a face's line-of-sight frame to the camera's view frame:
|
|
51
|
+
* the smallest turn of +Z onto the direction from the face back to the
|
|
52
|
+
* camera. `ray` is the direction from the camera to the face in view space
|
|
53
|
+
* (the camera looks down −Z), any length. Identity for a missing, zero or
|
|
54
|
+
* backward ray. Writes `out`; allocation-free.
|
|
55
|
+
*/
|
|
56
|
+
export declare const lineOfSightToView: (ray: THREE.Vector3Like | null | undefined, out?: THREE.Matrix3) => THREE.Matrix3;
|
|
57
|
+
/**
|
|
58
|
+
* The view-space direction from a perspective `camera` to a feed point
|
|
59
|
+
* (0..1, y down; the feed fills the camera's frustum, as `feedToWorld`
|
|
60
|
+
* assumes): the `lineOfSight` of `FaceSkinProbe.render`. Null for a camera
|
|
61
|
+
* without perspective (every line of sight is the optical axis there).
|
|
62
|
+
* Writes `out`; allocation-free.
|
|
63
|
+
*/
|
|
64
|
+
export declare const feedLineOfSight: (point: {
|
|
65
|
+
x: number;
|
|
66
|
+
y: number;
|
|
67
|
+
}, camera: THREE.Camera, out: THREE.Vector3) => THREE.Vector3 | null;
|
|
68
|
+
/**
|
|
69
|
+
* Fits the head's rotation to the landmarks: the similarity from the
|
|
70
|
+
* canonical rigid landmarks (no mouth or jaw) onto the landmarks in image
|
|
71
|
+
* units, `(x · aspect, −y, −z · aspect)` (MediaPipe's z is smaller toward
|
|
72
|
+
* the camera). Any image works, mirrored or not: the tracker reports a
|
|
73
|
+
* proper rotation of its canonical face either way. `width` and `height`
|
|
74
|
+
* are the image's pixel size.
|
|
75
|
+
*/
|
|
76
|
+
export declare const fitFaceSkinPose: (landmarks: ArrayLike<FaceImageLandmark>, width: number, height: number, out?: FaceSkinPose) => FaceSkinPose;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality tiers of the face-atlas surface, by the session's adaptive quality
|
|
3
|
+
* tier (`useXRQuality()`: first tier = high, last = low, any between =
|
|
4
|
+
* medium; no controller = high).
|
|
5
|
+
*
|
|
6
|
+
* - `leadCapMs`: the landmark lead of a rig the surface owns, about one
|
|
7
|
+
* inference interval at the tier's rate (30 / 24 / 15 Hz). A borrowed rig
|
|
8
|
+
* (`FaceRig`, `FaceWarp3D`, `FaceMorph`) keeps its own `leadMs`.
|
|
9
|
+
* - `selfOcclusion`: the depth pre-pass and restore (the far cheek stops at
|
|
10
|
+
* the nose); off on the low tier, where only the facing fade applies.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FACE_ATLAS_QUALITY: Readonly<{
|
|
13
|
+
readonly high: {
|
|
14
|
+
readonly leadCapMs: 33;
|
|
15
|
+
readonly selfOcclusion: true;
|
|
16
|
+
};
|
|
17
|
+
readonly medium: {
|
|
18
|
+
readonly leadCapMs: 42;
|
|
19
|
+
readonly selfOcclusion: true;
|
|
20
|
+
};
|
|
21
|
+
readonly low: {
|
|
22
|
+
readonly leadCapMs: 66;
|
|
23
|
+
readonly selfOcclusion: false;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
26
|
+
export type FaceAtlasQualityKey = keyof typeof FACE_ATLAS_QUALITY;
|
|
27
|
+
/** The face-atlas tier for the session's tier index (`useXRQuality().index`) of `tierCount`. */
|
|
28
|
+
export declare const resolveFaceAtlasQualityKey: (tierIndex: number, tierCount: number) => FaceAtlasQualityKey;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Named parts of the face atlas. `eyes` and `mouth` are the fill triangles
|
|
3
|
+
* over the eye and mouth openings; every other region leaves them and the
|
|
4
|
+
* nostrils out. `lids` is the whole eye surround: from the under-eye row
|
|
5
|
+
* (landmarks 111, 117–121, three rings below the lower lash line) up to the
|
|
6
|
+
* brow's lower edge.
|
|
7
|
+
*/
|
|
8
|
+
export declare const FACE_ATLAS_REGIONS: readonly ["face", "skin", "lips", "mouth", "eyes", "lids", "brows", "cheeks", "nose", "forehead", "jaw"];
|
|
9
|
+
export type FaceAtlasRegion = (typeof FACE_ATLAS_REGIONS)[number];
|
|
10
|
+
/** One region or several (their union). */
|
|
11
|
+
export type FaceAtlasRegionSelection = FaceAtlasRegion | readonly FaceAtlasRegion[];
|
|
12
|
+
/** A region's extent in atlas UV (v up). */
|
|
13
|
+
export type FaceAtlasUvBounds = {
|
|
14
|
+
minU: number;
|
|
15
|
+
maxU: number;
|
|
16
|
+
minV: number;
|
|
17
|
+
maxV: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Triangle indices (into `FACE_ATLAS_TRIANGLES`) of a region or a union of
|
|
21
|
+
* regions, sorted and without duplicates. Shared and cached: do not mutate.
|
|
22
|
+
*/
|
|
23
|
+
export declare const getFaceAtlasRegionTriangles: (selection: FaceAtlasRegionSelection) => Uint16Array;
|
|
24
|
+
/**
|
|
25
|
+
* An index buffer (landmark indices, three per triangle) for a region or a
|
|
26
|
+
* union of regions, ready for `geometry.setIndex(new THREE.BufferAttribute(…, 1))`
|
|
27
|
+
* on a 468-vertex atlas mesh. A new array on every call.
|
|
28
|
+
*/
|
|
29
|
+
export declare const getFaceAtlasRegionIndices: (selection: FaceAtlasRegionSelection) => Uint16Array;
|
|
30
|
+
/** UV extent (v up) of a region or a union of regions. */
|
|
31
|
+
export declare const getFaceAtlasRegionBounds: (selection: FaceAtlasRegionSelection) => FaceAtlasUvBounds;
|