three-mediapipe-rig 0.1.1 → 0.1.3

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 (40) hide show
  1. package/README.md +8 -4
  2. package/dist/face-tracker-utils-xt9__vBF.js +16 -0
  3. package/dist/meshcap/atlas-builder.d.ts +10 -0
  4. package/dist/meshcap/atlas-builder.d.ts.map +1 -0
  5. package/dist/meshcap/audio.d.ts +27 -0
  6. package/dist/meshcap/audio.d.ts.map +1 -0
  7. package/dist/meshcap/constants.d.ts +3 -0
  8. package/dist/meshcap/constants.d.ts.map +1 -0
  9. package/dist/meshcap/material.d.ts +75 -0
  10. package/dist/meshcap/material.d.ts.map +1 -0
  11. package/dist/meshcap/meshcap.d.ts +6 -0
  12. package/dist/meshcap/meshcap.d.ts.map +1 -0
  13. package/dist/meshcap/parse-mcap-file.d.ts +8 -0
  14. package/dist/meshcap/parse-mcap-file.d.ts.map +1 -0
  15. package/dist/meshcap/types.d.ts +88 -0
  16. package/dist/meshcap/types.d.ts.map +1 -0
  17. package/dist/meshcap/write-mcap-file.d.ts +3 -0
  18. package/dist/meshcap/write-mcap-file.d.ts.map +1 -0
  19. package/dist/meshcap.d.ts +2 -0
  20. package/dist/meshcap.js +468 -0
  21. package/dist/module.d.ts +1 -0
  22. package/dist/module.d.ts.map +1 -1
  23. package/dist/rigger.d.ts +2 -0
  24. package/dist/rigger.js +864 -0
  25. package/dist/tracking/BoneMapping.d.ts.map +1 -1
  26. package/dist/tracking/FaceTracker.d.ts +12 -2
  27. package/dist/tracking/FaceTracker.d.ts.map +1 -1
  28. package/dist/tracking/HandTracker.d.ts +3 -3
  29. package/dist/tracking/HandTracker.d.ts.map +1 -1
  30. package/dist/tracking/PoseTracker.d.ts +1 -1
  31. package/dist/tracking/PoseTracker.d.ts.map +1 -1
  32. package/dist/tracking/TrackerManager.d.ts +126 -0
  33. package/dist/tracking/TrackerManager.d.ts.map +1 -0
  34. package/dist/tracking/recoding/recorder.d.ts +10 -8
  35. package/dist/tracking/recoding/recorder.d.ts.map +1 -1
  36. package/dist/tracking/util/face-tracker-utils.d.ts +9 -0
  37. package/dist/tracking/util/face-tracker-utils.d.ts.map +1 -0
  38. package/package.json +16 -10
  39. package/dist/three-mediapipe-rig.js +0 -839
  40. package/dist/three-mediapipe-rig.js.map +0 -1
package/README.md CHANGED
@@ -9,14 +9,18 @@ The motion from the webcam will be applied to a skeleton. Angle based so it work
9
9
 
10
10
  This will run 3 models: face, body, hands. So expect a FPS drop.
11
11
 
12
- Expolore the demos:
13
- - [Characters](https://bandinopla.github.io/three-mediapipe-rig)
14
- - [Hands Demo](https://bandinopla.github.io/three-mediapipe-rig/?demo=hands)
12
+ ## Explore the demos:
13
+ - Open the [MeshCap Editor](https://github.com/bandinopla/three-mediapipe-rig/blob/main/MESHCAP.md), examples using it:
14
+ - [Loading .mcap files](https://bandinopla.github.io/three-mediapipe-rig/?demo=load-meshcap-files)
15
+ - [Clips with Audio: Memory game](https://bandinopla.github.io/three-mediapipe-rig/?demo=game-youtubers)
16
+ - [Characters](https://bandinopla.github.io/three-mediapipe-rig) ( pose + hands + face )
17
+ - [Hands Demo](https://bandinopla.github.io/three-mediapipe-rig/?demo=hands) ( pose + hands )
15
18
  - [**Video to Face Geometry** !!](https://bandinopla.github.io/three-mediapipe-rig/?demo=face-uv)
19
+
16
20
  ---
17
21
 
18
22
  ## Table of Contents
19
-
23
+ - New! [**MeshCap Editor**](https://github.com/bandinopla/three-mediapipe-rig/blob/main/MESHCAP.md)
20
24
  - [Features](#features)
21
25
  - [Installation](#installation)
22
26
  - [Quick Start](#quick-start)
@@ -0,0 +1,16 @@
1
+ import { BufferAttribute as c } from "three";
2
+ const d = 478, g = (r) => {
3
+ if (r.geometry.hasAttribute("landmarkIndex")) return;
4
+ const s = r.geometry, e = s.attributes.position, a = [], n = /* @__PURE__ */ new Map(), i = [];
5
+ for (let t = 0; t < e.count; t++) {
6
+ const o = Math.round(e.getX(t) * 1e6) + "," + Math.round(e.getY(t) * 1e6) + "," + Math.round(e.getZ(t) * 1e6);
7
+ n.has(o) || (n.set(o, a.length), a.push(t));
8
+ const u = n.get(o);
9
+ i.push(u < d ? u : 65535);
10
+ }
11
+ s.setAttribute("landmarkIndex", new c(new Uint16Array(i), 1));
12
+ };
13
+ export {
14
+ d as F,
15
+ g as c
16
+ };
@@ -0,0 +1,10 @@
1
+ import { MeshCapAtlas, RecordedClip } from './types';
2
+ /**
3
+ * Builds a texture atlas from a list of recorded clips.
4
+ * @param clips The clips to build the atlas from
5
+ * @param atlasSize Max size of the atlas (width or height)
6
+ * @param padding The padding to add between frames
7
+ * @returns The atlas
8
+ */
9
+ export declare function buildMeshCapAtlas(clips: RecordedClip[], atlasSize: number, padding?: number): MeshCapAtlas;
10
+ //# sourceMappingURL=atlas-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atlas-builder.d.ts","sourceRoot":"","sources":["../../src/meshcap/atlas-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAY,YAAY,EAAW,MAAM,SAAS,CAAC;AAsNxE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAE,KAAK,EAAC,YAAY,EAAE,EAAE,SAAS,EAAC,MAAM,EAAE,OAAO,GAAC,MAAQ,GAAG,YAAY,CAwGzG"}
@@ -0,0 +1,27 @@
1
+ import { MCapClip, RecordedClip } from './types';
2
+ export type AudioSpriteAtlas = {
3
+ blob: Blob;
4
+ sprites: ([start: number, duration: number] | undefined)[];
5
+ };
6
+ /**
7
+ * Will complete the missing audio element on the clips by extracting the audio clip from the atlas.
8
+ *
9
+ * @param audioFile The audio file to extract sprites from.
10
+ * @param clips The clips to extract sprites for.
11
+ * @returns An array of audio elements, one for each clip ( undefined if no audio sprite is defined for that clip)
12
+ */
13
+ export declare function extractAudioSprites(audioFile: File | Blob | string | ArrayBuffer, clips: RecordedClip[]): Promise<AudioSpriteAtlas>;
14
+ export declare function audioBufferToWav(buffer: AudioBuffer): ArrayBuffer;
15
+ export type AudioAtlasPlayer = {
16
+ stopCurrent: () => void;
17
+ playSprite: (clipIndex: number) => AudioBufferSourceNode | undefined;
18
+ setVolume: (value: number) => void;
19
+ };
20
+ /**
21
+ * Creates a player that can play the audio sprites of the clips.
22
+ * @param audioBuffer The audio buffer that contains the audio for the clips.
23
+ * @param clips The meshcap clips
24
+ * @returns A player that can play the audio sprites of the clips.
25
+ */
26
+ export declare function createAudioAtlasPlayer(audioBuffer: AudioBuffer, clips: MCapClip[]): AudioAtlasPlayer;
27
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/meshcap/audio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAC,IAAI,CAAA;IACT,OAAO,EAAE,CAAC,CAAC,KAAK,EAAC,MAAM,EAAE,QAAQ,EAAC,MAAM,CAAC,GAAC,SAAS,CAAC,EAAE,CAAA;CACtD,CAAA;AAmBD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAC,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,WAAW,EAAE,KAAK,EAAC,YAAY,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAC,CA+CtI;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CA+BjE;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAC,MAAI,IAAI,CAAA;IACpB,UAAU,EAAC,CAAC,SAAS,EAAC,MAAM,KAAG,qBAAqB,GAAC,SAAS,CAAA;IAC9D,SAAS,EAAC,CAAC,KAAK,EAAE,MAAM,KAAG,IAAI,CAAA;CAC/B,CAAA;AAKD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAE,WAAW,EAAC,WAAW,EAAE,KAAK,EAAC,QAAQ,EAAE,GAAK,gBAAgB,CA+CrG"}
@@ -0,0 +1,3 @@
1
+ export declare const MCAP_MAGIC = 1296253264;
2
+ export declare const MCAP_FILE_VERSION = 2;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/meshcap/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,aAAa,CAAC;AACrC,eAAO,MAAM,iBAAiB,IAAI,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { Mesh, Texture } from 'three';
2
+ import { MCapClip } from './types';
3
+ import { NodeMaterial } from 'three/webgpu';
4
+ export type MeshCapMaterialHandler = {
5
+ /**
6
+ * If it should play a sound or not (if it has one. Default: false )
7
+ */
8
+ muted: boolean;
9
+ /**
10
+ * This hook will be called everytime a clip starts playing.
11
+ * @param clipIndex Index of the clip that is starting to play
12
+ * @param clipStartTime Start time of sound clip withing the sound atlas (in seconds)
13
+ * @param clipDuration Duration of the clip (in seconds)
14
+ * @returns
15
+ */
16
+ playClipAudioHook?: (clipIndex: number, clipStartTime: number, clipDuration: number) => void;
17
+ /**
18
+ * Moves to a particular clip
19
+ * @param clipIndex The index of the clip to move to
20
+ * @param _loop Optional: Whether the clip should loop
21
+ * @param _onEndReached Optional: Callback to be called when the clip reaches the end
22
+ */
23
+ goto: (clipIndex: number | string, _loop?: boolean, _onEndOrLoopReached?: (timeOffset: number) => void, playSound?: boolean) => void;
24
+ /**
25
+ * Play a clip and when it reaches the end, it will loop back
26
+ * @param clipName Name of the clip
27
+ * @returns
28
+ */
29
+ gotoAndLoop: (clipIndex: number | string, _onLoop?: (timeOffset: number) => void) => void;
30
+ /**
31
+ * Play a clip and when it reaches the end, it will not loop back
32
+ * @param clipName Name of the clip
33
+ * @returns
34
+ */
35
+ gotoAndPlay: (clipIndex: number | string, _onEndReached?: () => void) => void;
36
+ /**
37
+ * Moves to a particular clip and stops at the first frame
38
+ * @param clipIndex The index of the clip to move to
39
+ * @returns
40
+ */
41
+ gotoAndStop: (clipIndex: number | string, frame?: number) => void;
42
+ /**
43
+ * Updates the material with the given delta time
44
+ * @param delta The time to add to the current time
45
+ */
46
+ update: (delta: number) => void;
47
+ /**
48
+ * The clips available to play
49
+ */
50
+ clips: MCapClip[];
51
+ /**
52
+ * The texture atlas that contains the frames used by the clips
53
+ */
54
+ atlasTexture: Texture;
55
+ /**
56
+ * Disposes the material and the texture atlas
57
+ */
58
+ dispose: VoidFunction;
59
+ /**
60
+ * The material used
61
+ */
62
+ material: NodeMaterial;
63
+ };
64
+ /**
65
+ * Creates or setups a MeshCap material handler (not the material itself) for a given mesh.
66
+ *
67
+ * @param atlasTexture The texture atlas that contains the frames used by the clips. You may need to `flipY=false` on the texture atlas.
68
+ * @param clips The clips previously obtained by loading an .mcap file
69
+ * @param targetMesh The mesh to apply the material to. (It will be updated with a landmarkIndex attribute if it doesn't have one)
70
+ * @param host Optional: The material to use as a base. Defaults to a MeshPhysicalNodeMaterial.
71
+ * @param audioAtlas Optional: The audio atlas that contains the audio for the clips if you want to let the handler play the audio clips automatically on it's own. Else you will have to hook on the `playClipAudioHook` callback from the returned handler and play them yourself.
72
+ * @returns A handler that allows you to control the material.
73
+ */
74
+ export declare function createMeshCapMaterial(atlasTexture: Texture, clips: MCapClip[], targetMesh: Mesh, host?: NodeMaterial, audioAtlas?: AudioBuffer): MeshCapMaterialHandler;
75
+ //# sourceMappingURL=material.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../src/meshcap/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAA4B,YAAY,EAAW,MAAM,cAAc,CAAC;AAO/E,MAAM,MAAM,sBAAsB,GAAG;IAEpC;;OAEG;IACH,KAAK,EAAC,OAAO,CAAC;IAEd;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAC,CAAC,SAAS,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,KAAG,IAAI,CAAC;IAGvF;;;;;OAKG;IACH,IAAI,EAAC,CAAE,SAAS,EAAC,MAAM,GAAC,MAAM,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,mBAAmB,CAAC,EAAC,CAAE,UAAU,EAAC,MAAM,KAAI,IAAI,EAAE,SAAS,CAAC,EAAC,OAAO,KAAI,IAAI,CAAA;IAE5H;;;;OAIG;IACH,WAAW,EAAC,CAAE,SAAS,EAAC,MAAM,GAAC,MAAM,EAAE,OAAO,CAAC,EAAC,CAAE,UAAU,EAAC,MAAM,KAAI,IAAI,KAAI,IAAI,CAAA;IAEnF;;;;OAIG;IACH,WAAW,EAAC,CAAE,SAAS,EAAC,MAAM,GAAC,MAAM,EAAE,aAAa,CAAC,EAAC,MAAI,IAAI,KAAI,IAAI,CAAA;IAEtE;;;;OAIG;IACH,WAAW,EAAC,CAAE,SAAS,EAAC,MAAM,GAAC,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM,KAAI,IAAI,CAAA;IAE5D;;;OAGG;IACH,MAAM,EAAC,CAAE,KAAK,EAAC,MAAM,KAAI,IAAI,CAAA;IAE7B;;OAEG;IACH,KAAK,EAAC,QAAQ,EAAE,CAAA;IAEhB;;OAEG;IACH,YAAY,EAAC,OAAO,CAAA;IAEpB;;OAEG;IACH,OAAO,EAAC,YAAY,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAC,YAAY,CAAA;CACrB,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAE,YAAY,EAAC,OAAO,EAAE,KAAK,EAAC,QAAQ,EAAE,EAAE,UAAU,EAAC,IAAI,EAAE,IAAI,CAAC,EAAC,YAAY,EAAE,UAAU,CAAC,EAAC,WAAW,GAAG,sBAAsB,CA4SnK"}
@@ -0,0 +1,6 @@
1
+ export type * from './types';
2
+ export * from './parse-mcap-file';
3
+ export * from './atlas-builder';
4
+ export * from './material';
5
+ export * from './audio';
6
+ //# sourceMappingURL=meshcap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meshcap.d.ts","sourceRoot":"","sources":["../../src/meshcap/meshcap.ts"],"names":[],"mappings":"AAAA,mBAAmB,SAAS,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { MCapFile } from './types';
2
+ /**
3
+ * Loads a MeshCap (.mcap) file from a URL or File object. This is the file that contains the metadata for the clips.
4
+ * @param mcapFileSource URL or File object
5
+ * @returns
6
+ */
7
+ export declare function loadMeshCapFile(mcapFileSource: string | File): Promise<MCapFile>;
8
+ //# sourceMappingURL=parse-mcap-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-mcap-file.d.ts","sourceRoot":"","sources":["../../src/meshcap/parse-mcap-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,QAAQ,EAAyB,MAAM,SAAS,CAAC;AASpE;;;;GAIG;AACH,wBAAsB,eAAe,CAAE,cAAc,EAAC,MAAM,GAAC,IAAI,GAAK,OAAO,CAAC,QAAQ,CAAC,CAmBtF"}
@@ -0,0 +1,88 @@
1
+ import { Mesh, Texture, Vector3Like } from 'three';
2
+ import { AudioSpriteAtlas } from './audio';
3
+ import { MeshCapMaterialHandler } from './material';
4
+ import { NodeMaterial } from 'three/webgpu';
5
+ export interface UVCoord {
6
+ u: number;
7
+ v: number;
8
+ w: number;
9
+ h: number;
10
+ }
11
+ export interface Clip {
12
+ fps: number;
13
+ name: string;
14
+ landmarks: Vector3Like[][];
15
+ scale: number;
16
+ aspectRatio: number;
17
+ audioSprite?: {
18
+ start: number;
19
+ };
20
+ /**
21
+ * Duration of this clip (in seconds)
22
+ */
23
+ duration: number;
24
+ }
25
+ export interface RecordedClip extends Clip {
26
+ frames: {
27
+ canvas: HTMLCanvasElement;
28
+ cropUV: UVCoord;
29
+ startTime: number;
30
+ }[];
31
+ audioSprite?: {
32
+ domElement?: HTMLAudioElement;
33
+ /**
34
+ * Start time in the audio sprite atlas (seconds)
35
+ */
36
+ start: number;
37
+ };
38
+ }
39
+ export interface MCapClip extends Clip {
40
+ frames: {
41
+ cropUV: UVCoord;
42
+ frameUV: UVCoord;
43
+ startTime: number;
44
+ }[];
45
+ }
46
+ export interface MCapFile {
47
+ clips: MCapClip[];
48
+ version: number;
49
+ atlasSize: number;
50
+ atlasPadding: number;
51
+ /**
52
+ * Extract the clips from the atlas image using the metadata as a guide to know where the clips are.
53
+ * If the clips use a sound atlas, and one is provided, their audio clips will be reconstructed.
54
+ * @param atlas
55
+ */
56
+ unpackClips: (atlas: File | string | HTMLImageElement | HTMLCanvasElement, audioFile?: File | Blob | string | ArrayBuffer) => Promise<{
57
+ clips: RecordedClip[];
58
+ audioAtlas?: AudioSpriteAtlas;
59
+ }>;
60
+ /**
61
+ * Creates a material on the mesh that updates its texture to match the clip frames.
62
+ * If you pass `audioAtlas`, the handler will play the audio for the clip when it is played.
63
+ * @param mesh
64
+ * @param atlasTexture
65
+ * @returns
66
+ */
67
+ createMaterialHandlerOnMesh: (mesh: Mesh, atlasTexture: Texture, host?: NodeMaterial, audioAtlas?: AudioBuffer) => MeshCapMaterialHandler;
68
+ }
69
+ export interface MeshCapAtlas {
70
+ canvas: HTMLCanvasElement;
71
+ /**
72
+ * the index of each will correspond to the provided recorded clip's frames array at the time of creation
73
+ */
74
+ clips: MCapClip[];
75
+ /**
76
+ * padding used in the creation of the atlas
77
+ */
78
+ padding: number;
79
+ /**
80
+ * prefered max atlas dimension
81
+ */
82
+ atlasSize: number;
83
+ /**
84
+ *
85
+ */
86
+ save(downloadFile: boolean): Promise<Blob>;
87
+ }
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/meshcap/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAI3C,MAAM,WAAW,OAAO;IAAE,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAC;IAAA,CAAC,EAAC,MAAM,CAAA;CAAC;AAE9D,MAAM,WAAW,IAAI;IACpB,GAAG,EAAC,MAAM,CAAC;IACX,IAAI,EAAC,MAAM,CAAC;IACZ,SAAS,EAAC,WAAW,EAAE,EAAE,CAAC;IAC1B,KAAK,EAAC,MAAM,CAAA;IACZ,WAAW,EAAC,MAAM,CAAC;IACnB,WAAW,CAAC,EAAC;QACZ,KAAK,EAAC,MAAM,CAAC;KACb,CAAA;IAED;;OAEG;IACH,QAAQ,EAAC,MAAM,CAAA;CACf;AAGD,MAAM,WAAW,YAAa,SAAQ,IAAI;IACzC,MAAM,EAAC;QAAE,MAAM,EAAC,iBAAiB,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAC,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,WAAW,CAAC,EAAC;QACZ,UAAU,CAAC,EAAC,gBAAgB,CAAC;QAE7B;;WAEG;QACH,KAAK,EAAC,MAAM,CAAC;KACb,CAAA;CACD;AAED,MAAM,WAAW,QAAS,SAAQ,IAAI;IACrC,MAAM,EAAE;QAAE,MAAM,EAAC,OAAO,CAAC;QAAC,OAAO,EAAC,OAAO,CAAC;QAAC,SAAS,EAAC,MAAM,CAAA;KAAE,EAAE,CAAA;CAC/D;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAC,MAAM,CAAC;IACjB,YAAY,EAAC,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAC,IAAI,GAAC,MAAM,GAAC,gBAAgB,GAAC,iBAAiB,EAAE,SAAS,CAAC,EAAC,IAAI,GAAC,IAAI,GAAC,MAAM,GAAC,WAAW,KAAG,OAAO,CAAC;QAAC,KAAK,EAAC,YAAY,EAAE,CAAC;QAAC,UAAU,CAAC,EAAC,gBAAgB,CAAA;KAAC,CAAC,CAAC;IAE5K;;;;;;OAMG;IACH,2BAA2B,EAAE,CAAC,IAAI,EAAC,IAAI,EAAE,YAAY,EAAC,OAAO,EAAE,IAAI,CAAC,EAAC,YAAY,EAAE,UAAU,CAAC,EAAC,WAAW,KAAG,sBAAsB,CAAC;CACpI;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAE7B;;OAEG;IACA,KAAK,EAAE,QAAQ,EAAE,CAAC;IAErB;;OAEG;IACH,OAAO,EAAC,MAAM,CAAA;IAEd;;OAEG;IACH,SAAS,EAAC,MAAM,CAAA;IAEhB;;OAEG;IACH,IAAI,CAAE,YAAY,EAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C"}
@@ -0,0 +1,3 @@
1
+ import { MeshCapAtlas } from './types';
2
+ export declare function atlasToMCap(atlas: MeshCapAtlas, useRelativeLandmarks?: boolean): Promise<Blob>;
3
+ //# sourceMappingURL=write-mcap-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-mcap-file.d.ts","sourceRoot":"","sources":["../../src/meshcap/write-mcap-file.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAIvC,wBAAsB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,GAAC,OAAc,iBAwMzF"}
@@ -0,0 +1,2 @@
1
+ export * from './meshcap/meshcap'
2
+ export {}