@vincentt-xr/sdk 2.0.0-alpha.5 → 2.0.0-alpha.7

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.
Files changed (88) hide show
  1. package/GROUNDING.md +92 -7
  2. package/dist/{DebuggerUI-bnGHSSOb.cjs → DebuggerUI-B6bP6P9r.cjs} +1 -1
  3. package/dist/{DebuggerUI-DhKTXTY2.js → DebuggerUI-BjOMr8q_.js} +1 -1
  4. package/dist/FaceMeshRenderer-C5l6VLdO.cjs +155 -0
  5. package/dist/FaceMeshRenderer-wjAHrJzP.js +1270 -0
  6. package/dist/{FaceRetouch-TZeBGIqW.cjs → FaceRetouch-BkJzoA79.cjs} +1 -1
  7. package/dist/{FaceRetouch-Bg-OBU4n.js → FaceRetouch-DwbKQJAN.js} +30 -30
  8. package/dist/components/FaceMesh/FaceMeshRenderer.d.ts +11 -3
  9. package/dist/components/FaceMesh/canonical/CanonicalFaceMeshRenderer.d.ts +17 -1
  10. package/dist/components/FaceMesh/canonical/geometryGroups.d.ts +1 -1
  11. package/dist/components/FaceMesh/canonical/parseCanonicalFaceModel.d.ts +1 -0
  12. package/dist/components/FaceMesh/index.d.ts +2 -2
  13. package/dist/components/LipEffect/LipEffect.d.ts +2 -0
  14. package/dist/components/LipEffect/LipEffectMaterial.d.ts +10 -0
  15. package/dist/components/LipEffect/defaults.d.ts +9 -0
  16. package/dist/components/LipEffect/index.d.ts +4 -0
  17. package/dist/components/LipEffect/types.d.ts +22 -0
  18. package/dist/components/SceneObjectRenderer/index.d.ts +9 -2
  19. package/dist/components/XRMediaSurface/index.d.ts +2 -1
  20. package/dist/{contexts-B2_NsTnk.js → contexts-ByhzppYl.js} +6 -3
  21. package/dist/contexts-Dr62It_K.cjs +1 -0
  22. package/dist/debug-ui/media-source.cjs +1 -1
  23. package/dist/debug-ui/media-source.js +1 -1
  24. package/dist/debug-ui.cjs +1 -1
  25. package/dist/debug-ui.js +10 -10
  26. package/dist/entries/core.d.ts +3 -2
  27. package/dist/entries/face-effects.d.ts +4 -2
  28. package/dist/entries/tracking.d.ts +2 -0
  29. package/dist/face-effects.cjs +1 -1
  30. package/dist/face-effects.js +622 -508
  31. package/dist/{getFaceInfo-4DhcPZDJ.js → getFaceInfo-C4QpCQIY.js} +1 -1
  32. package/dist/{getFaceInfo-QOQ_dc-W.cjs → getFaceInfo-fA1bFBub.cjs} +1 -1
  33. package/dist/hooks/useXRSession/facade.d.ts +2 -0
  34. package/dist/{index-BMeBJ0dV.js → index-9dlAQAhy.js} +457 -416
  35. package/dist/{index-C9yQVzAh.cjs → index-BjmTe9eM.cjs} +1 -1
  36. package/dist/{index-WPPnlFO1.cjs → index-BpEf2BBb.cjs} +1 -1
  37. package/dist/{index-D1kj6uc-.js → index-ByoNj0QP.js} +1 -1
  38. package/dist/{index-ZaDEzDtR.cjs → index-CyUUurQT.cjs} +1 -1
  39. package/dist/index-DCiMbxC3.cjs +1 -0
  40. package/dist/{index-Cj3fGDtZ.js → index-DXT3WccE.js} +808 -787
  41. package/dist/index-DpI-qo5X.cjs +17 -0
  42. package/dist/{index-g250Tqme.js → index-DyVF4vEW.js} +1 -1
  43. package/dist/{index-72Wb15Ca.js → index-VJ0SJwmG.js} +1 -1
  44. package/dist/{internal-Dtvo4WYo.cjs → internal-Cq-TEQ5Y.cjs} +1 -1
  45. package/dist/{internal-34pb7djs.js → internal-Dmk1cTXq.js} +3 -3
  46. package/dist/internal.cjs +1 -1
  47. package/dist/internal.js +1 -1
  48. package/dist/low-level.cjs +1 -1
  49. package/dist/low-level.js +344 -330
  50. package/dist/main.cjs +1 -1
  51. package/dist/main.js +94 -91
  52. package/dist/{renderGroups-jSUOY1Oq.cjs → renderGroups-80H3DpTl.cjs} +1 -1
  53. package/dist/{renderGroups-CPWUX6z9.js → renderGroups-KZk6eRiY.js} +1 -1
  54. package/dist/{renderPasses-KUJUSevp.cjs → renderPasses-BOoBSr8z.cjs} +1 -1
  55. package/dist/{renderPasses-CLlYRdMk.js → renderPasses-BcquyVtu.js} +4 -4
  56. package/dist/scene-object.cjs +1 -1
  57. package/dist/scene-object.js +2 -2
  58. package/dist/screen2d/coordinates.d.ts +20 -0
  59. package/dist/{selectors-DLxL8Q66.js → selectors-B8H97CKA.js} +1 -1
  60. package/dist/{selectors-S8g25ke9.cjs → selectors-CZLKT2Iv.cjs} +1 -1
  61. package/dist/{session-DP8AF7Rg.cjs → session-CpkiK5YA.cjs} +1 -1
  62. package/dist/{session-CbtvwiaD.js → session-DLFN_VII.js} +1 -1
  63. package/dist/tracking/coordinates.d.ts +5 -0
  64. package/dist/tracking.cjs +1 -1
  65. package/dist/tracking.js +69 -66
  66. package/dist/types/common.d.ts +11 -1
  67. package/dist/types/gesture-tracking.d.ts +2 -2
  68. package/dist/types/hand-tracking.d.ts +3 -3
  69. package/dist/types/nodes.d.ts +2 -2
  70. package/dist/types/session.d.ts +7 -1
  71. package/dist/{useFaceInfo-BvZeUBsL.cjs → useFaceInfo-BJ8-_MOs.cjs} +1 -1
  72. package/dist/{useFaceInfo-C06EyScd.js → useFaceInfo-Dk426LTu.js} +3 -3
  73. package/dist/{useFaceResults-C1Ppc8rS.js → useFaceResults-CtetsO9M.js} +1 -1
  74. package/dist/{useFaceResults-CCNiH7VZ.cjs → useFaceResults-wBJF3zyp.cjs} +1 -1
  75. package/dist/utils/visionWasm.d.ts +18 -0
  76. package/docs/SDK_DOCUMENTATION.md +3 -0
  77. package/docs/api/capture-recording.mdx +9 -1
  78. package/docs/api/face-mesh.mdx +33 -0
  79. package/docs/api/runtime-3d.mdx +5 -0
  80. package/docs/api/screen-image.mdx +3 -1
  81. package/docs/api/screen-space-coordinates.mdx +31 -0
  82. package/docs/api/trackers.mdx +13 -0
  83. package/package.json +4 -1
  84. package/dist/FaceMeshRenderer-B2i2NW71.js +0 -1195
  85. package/dist/FaceMeshRenderer-BSOq1OnG.cjs +0 -155
  86. package/dist/contexts-BgWfyxre.cjs +0 -1
  87. package/dist/index-CNGzE49z.cjs +0 -17
  88. package/dist/index-Da7uycur.cjs +0 -1
@@ -1,5 +1,5 @@
1
1
  import { useState as X, useEffect as Y } from "react";
2
- import { F as A } from "./index-D1kj6uc-.js";
2
+ import { F as A } from "./index-ByoNj0QP.js";
3
3
  const E = (e, t = {
4
4
  minX: 0,
5
5
  minY: 0,
@@ -1 +1 @@
1
- "use strict";const x=require("react"),b=require("./index-ZaDEzDtR.cjs"),E=(e,t={minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0})=>{if(e.length===0)return t.minX=0,t.minY=0,t.maxX=0,t.maxY=0,t.width=0,t.height=0,t.centerX=0,t.centerY=0,t;let n=1,s=1,i=0,o=0;for(let l=0;l<e.length;l++){const{x:a,y:r}=e[l];a<n&&(n=a),r<s&&(s=r),a>i&&(i=a),r>o&&(o=r)}const c=Math.max(0,i-n),u=Math.max(0,o-s);return t.minX=n,t.minY=s,t.maxX=i,t.maxY=o,t.width=c,t.height=u,t.centerX=n+c*.5,t.centerY=s+u*.5,t},_=(e,t)=>e.map(n=>({landmarks:n,bounds:E(n)})),C={publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:-1},I=(e,t,n,s,i)=>{if(t>0){const o={...e,lastNonEmptyAt:n};return n-e.lastPublishAt>=s?{action:"publish",state:{publishedCount:t,lastPublishAt:n,lastNonEmptyAt:n}}:{action:"none",state:o}}return e.publishedCount===0?{action:"none",state:e}:e.lastNonEmptyAt>=0&&n-e.lastNonEmptyAt<i?{action:"none",state:e}:{action:"clear",state:{publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:e.lastNonEmptyAt}}},L=({enabled:e,holdMs:t,node:n,onFrame:s,prepare:i,throttleMs:o})=>{const[c,u]=x.useState([]);return x.useEffect(()=>{if(!e||!n){u(h=>h.length===0?h:[]);return}let l=0,a,r=C;const d=(h,m,f)=>{const{action:A,state:S}=I(r,h,m,o,t);r=S,A==="publish"?u(f):A==="clear"&&u(y=>y.length===0?y:[])},F=()=>{l=requestAnimationFrame(F),s==null||s();const h=performance.now(),m=n.getDetectionResults();if(!m){d(0,h,[]),a=m;return}if(m===a)return;a=m;const f=i(m);d(f.length,h,f)};return l=requestAnimationFrame(F),()=>cancelAnimationFrame(l)},[e,t,n,s,i,o]),c},R=.5,P=(e,t)=>{for(const n in t)delete t[n];if(e)for(const n of e)t[n.categoryName]=n.score;return t},X=(e,t)=>e.blendshapes[t]??0,T=(e,t,n=R)=>X(e,t)>=n,Y=e=>{const t=e[b.FACE_EYE_DISTANCE_LANDMARKS.left],n=e[b.FACE_EYE_DISTANCE_LANDMARKS.right];return!t||!n?0:Math.hypot(t.x-n.x,t.y-n.y)},D=()=>({index:0,landmarks:[],bounds:{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0},pose:{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:0,y:0,z:0}},eyeDistance:0,blendshapes:{}}),p=(e,t)=>{t.x=e.x,t.y=e.y,t.z=e.z},N=(e,t,n=0,s)=>{var u,l,a;const i=(u=t.faceLandmarks)==null?void 0:u[n],o=e.getFace(n);if(!i||!o)return null;const c=s??D();return c.index=n,c.landmarks=i,E(i,c.bounds),p(o.transform.position,c.pose.position),p(o.transform.rotation,c.pose.rotation),p(o.transform.scale,c.pose.scale),c.eyeDistance=Y(i),P((a=(l=t.faceBlendshapes)==null?void 0:l[n])==null?void 0:a.categories,c.blendshapes),c},B=(e,t=0,n)=>{const s=e.getDetectionResults();return s?N(e,s,t,n):null};exports.DEFAULT_FACE_EXPRESSION_THRESHOLD=R;exports.computeLandmarkBounds=E;exports.createFaceInfoTarget=D;exports.getFaceBlendshape=X;exports.getFaceEyeDistance=Y;exports.getFaceInfo=B;exports.getFaceInfoFromResults=N;exports.hasFaceExpression=T;exports.prepareCalibrationFaceResults=_;exports.useFaceResultReader=L;
1
+ "use strict";const x=require("react"),b=require("./index-CyUUurQT.cjs"),E=(e,t={minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0})=>{if(e.length===0)return t.minX=0,t.minY=0,t.maxX=0,t.maxY=0,t.width=0,t.height=0,t.centerX=0,t.centerY=0,t;let n=1,s=1,i=0,o=0;for(let l=0;l<e.length;l++){const{x:a,y:r}=e[l];a<n&&(n=a),r<s&&(s=r),a>i&&(i=a),r>o&&(o=r)}const c=Math.max(0,i-n),u=Math.max(0,o-s);return t.minX=n,t.minY=s,t.maxX=i,t.maxY=o,t.width=c,t.height=u,t.centerX=n+c*.5,t.centerY=s+u*.5,t},_=(e,t)=>e.map(n=>({landmarks:n,bounds:E(n)})),C={publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:-1},I=(e,t,n,s,i)=>{if(t>0){const o={...e,lastNonEmptyAt:n};return n-e.lastPublishAt>=s?{action:"publish",state:{publishedCount:t,lastPublishAt:n,lastNonEmptyAt:n}}:{action:"none",state:o}}return e.publishedCount===0?{action:"none",state:e}:e.lastNonEmptyAt>=0&&n-e.lastNonEmptyAt<i?{action:"none",state:e}:{action:"clear",state:{publishedCount:0,lastPublishAt:-1/0,lastNonEmptyAt:e.lastNonEmptyAt}}},L=({enabled:e,holdMs:t,node:n,onFrame:s,prepare:i,throttleMs:o})=>{const[c,u]=x.useState([]);return x.useEffect(()=>{if(!e||!n){u(h=>h.length===0?h:[]);return}let l=0,a,r=C;const d=(h,m,f)=>{const{action:A,state:S}=I(r,h,m,o,t);r=S,A==="publish"?u(f):A==="clear"&&u(y=>y.length===0?y:[])},F=()=>{l=requestAnimationFrame(F),s==null||s();const h=performance.now(),m=n.getDetectionResults();if(!m){d(0,h,[]),a=m;return}if(m===a)return;a=m;const f=i(m);d(f.length,h,f)};return l=requestAnimationFrame(F),()=>cancelAnimationFrame(l)},[e,t,n,s,i,o]),c},R=.5,P=(e,t)=>{for(const n in t)delete t[n];if(e)for(const n of e)t[n.categoryName]=n.score;return t},X=(e,t)=>e.blendshapes[t]??0,T=(e,t,n=R)=>X(e,t)>=n,Y=e=>{const t=e[b.FACE_EYE_DISTANCE_LANDMARKS.left],n=e[b.FACE_EYE_DISTANCE_LANDMARKS.right];return!t||!n?0:Math.hypot(t.x-n.x,t.y-n.y)},D=()=>({index:0,landmarks:[],bounds:{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0,centerX:0,centerY:0},pose:{position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:0,y:0,z:0}},eyeDistance:0,blendshapes:{}}),p=(e,t)=>{t.x=e.x,t.y=e.y,t.z=e.z},N=(e,t,n=0,s)=>{var u,l,a;const i=(u=t.faceLandmarks)==null?void 0:u[n],o=e.getFace(n);if(!i||!o)return null;const c=s??D();return c.index=n,c.landmarks=i,E(i,c.bounds),p(o.transform.position,c.pose.position),p(o.transform.rotation,c.pose.rotation),p(o.transform.scale,c.pose.scale),c.eyeDistance=Y(i),P((a=(l=t.faceBlendshapes)==null?void 0:l[n])==null?void 0:a.categories,c.blendshapes),c},B=(e,t=0,n)=>{const s=e.getDetectionResults();return s?N(e,s,t,n):null};exports.DEFAULT_FACE_EXPRESSION_THRESHOLD=R;exports.computeLandmarkBounds=E;exports.createFaceInfoTarget=D;exports.getFaceBlendshape=X;exports.getFaceEyeDistance=Y;exports.getFaceInfo=B;exports.getFaceInfoFromResults=N;exports.hasFaceExpression=T;exports.prepareCalibrationFaceResults=_;exports.useFaceResultReader=L;
@@ -15,8 +15,10 @@ export type SessionFacade = {
15
15
  registerXRPipeline: (params: RegisterXRPipelineParams) => Promise<void>;
16
16
  getModelNode: <T extends Record<string, unknown>>(modelCode: XRModel) => T;
17
17
  captureFrame: () => string;
18
+ captureStream: (fps?: number) => MediaStream;
18
19
  getInputFrame: () => OffscreenCanvas | HTMLCanvasElement | null;
19
20
  _setRenderTarget: (canvas: HTMLCanvasElement) => Promise<void>;
21
+ _setCaptureTarget: (canvas: HTMLCanvasElement | undefined) => void;
20
22
  _setRenderSize: (width: number, height: number) => Promise<void>;
21
23
  _setR3FState: (state: {
22
24
  renderer: WebGLRenderer;