@srsergio/taptapp-ar 1.0.43 โ 1.0.50
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/README.md +42 -45
- package/dist/compiler/aframe.js +8 -8
- package/dist/compiler/controller.d.ts +50 -76
- package/dist/compiler/controller.js +72 -116
- package/dist/compiler/detector/detector-lite.js +82 -99
- package/dist/compiler/index.js +3 -3
- package/dist/compiler/matching/hamming-distance.d.ts +8 -0
- package/dist/compiler/matching/hamming-distance.js +35 -16
- package/dist/compiler/matching/hierarchical-clustering.d.ts +9 -0
- package/dist/compiler/matching/hierarchical-clustering.js +76 -56
- package/dist/compiler/matching/matching.js +3 -3
- package/dist/compiler/node-worker.js +144 -18
- package/dist/compiler/offline-compiler.d.ts +34 -83
- package/dist/compiler/offline-compiler.js +92 -96
- package/dist/compiler/simple-ar.d.ts +31 -57
- package/dist/compiler/simple-ar.js +32 -73
- package/dist/compiler/three.d.ts +13 -8
- package/dist/compiler/three.js +6 -6
- package/dist/compiler/tracker/extract.js +17 -14
- package/dist/compiler/utils/images.js +11 -16
- package/dist/compiler/utils/lsh-direct.d.ts +12 -0
- package/dist/compiler/utils/lsh-direct.js +76 -0
- package/dist/compiler/utils/worker-pool.js +10 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/react/types.d.ts +1 -1
- package/dist/react/types.js +1 -1
- package/package.json +2 -1
- package/src/compiler/aframe.js +8 -8
- package/src/compiler/controller.ts +512 -0
- package/src/compiler/detector/detector-lite.js +87 -107
- package/src/compiler/index.js +3 -3
- package/src/compiler/matching/hamming-distance.js +39 -16
- package/src/compiler/matching/hierarchical-clustering.js +85 -57
- package/src/compiler/matching/matching.js +3 -3
- package/src/compiler/node-worker.js +163 -18
- package/src/compiler/offline-compiler.ts +513 -0
- package/src/compiler/{simple-ar.js โ simple-ar.ts} +64 -91
- package/src/compiler/three.js +6 -6
- package/src/compiler/tracker/extract.js +18 -15
- package/src/compiler/utils/images.js +11 -21
- package/src/compiler/utils/lsh-direct.js +86 -0
- package/src/compiler/utils/worker-pool.js +9 -1
- package/src/index.ts +2 -2
- package/src/react/types.ts +2 -2
- package/src/compiler/controller.js +0 -554
- package/src/compiler/offline-compiler.js +0 -515
package/README.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @srsergio/taptapp-ar
|
|
2
2
|
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="./docs/technical-paper.pdf">๐ <b>Technical Paper (PDF)</b></a> |
|
|
5
|
+
<a href="./docs/index.html">๐ <b>Official Website</b></a> |
|
|
6
|
+
<a href="./analysis/INDEX.md">๐ <b>Analysis Report</b></a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
3
9
|
๐ **TapTapp AR** is a high-performance Augmented Reality (AR) toolkit for **Node.js** and **Browser** environments. It provides an ultra-fast offline compiler and a lightweight runtime for image tracking.
|
|
4
10
|
|
|
5
11
|
**100% Pure JavaScript**: This package is now completely independent of **TensorFlow.js** for both compilation and real-time tracking, resulting in massive performance gains and zero-latency initialization.
|
|
@@ -8,11 +14,14 @@
|
|
|
8
14
|
|
|
9
15
|
## ๐ Key Features
|
|
10
16
|
|
|
11
|
-
- ๐ผ๏ธ **Hyper-Fast Compiler**: Pure JavaScript compiler that generates `.
|
|
17
|
+
- ๐ผ๏ธ **Hyper-Fast Compiler**: Pure JavaScript compiler that generates `.taar` files in **< 3s**.
|
|
12
18
|
- โก **No TensorFlow Dependency**: No TFJS at all. Works natively in any JS environment (Node, Browser, Workers).
|
|
13
|
-
- ๐ **Protocol
|
|
14
|
-
-
|
|
19
|
+
- ๐ **Protocol V7 (Moonshot)**:
|
|
20
|
+
- **4-bit Packed Tracking Data**: Grayscale images are compressed to 4-bit depth, slashing file size.
|
|
21
|
+
- **64-bit LSH Descriptors**: Optimized Locality Sensitive Hashing for descriptors.
|
|
22
|
+
- ๐งต **High-Precision Tracking**: Now using **Float32** coordinate precision for rock-solid tracking stability.
|
|
15
23
|
- ๐ฆ **Framework Agnostic**: Includes wrappers for **A-Frame**, **Three.js**, and a raw **Controller** for custom engines.
|
|
24
|
+
- ๐ **Ultra-Compact Files**: Output `.taar` files are **~50KB** (vs ~380KB+ previously).
|
|
16
25
|
|
|
17
26
|
---
|
|
18
27
|
|
|
@@ -24,14 +33,14 @@ npm install @srsergio/taptapp-ar
|
|
|
24
33
|
|
|
25
34
|
---
|
|
26
35
|
|
|
27
|
-
## ๐ Industry-Leading Benchmarks (
|
|
36
|
+
## ๐ Industry-Leading Benchmarks (v7 Moonshot)
|
|
28
37
|
|
|
29
|
-
| Metric | Official MindAR | TapTapp AR
|
|
38
|
+
| Metric | Official MindAR | TapTapp AR V7 | Improvement |
|
|
30
39
|
| :--- | :--- | :--- | :--- |
|
|
31
|
-
| **Compilation Time** | ~23.50s | **~
|
|
32
|
-
| **Output Size (.
|
|
33
|
-
| **Descriptor Format** | 84-byte Float | **
|
|
34
|
-
| **
|
|
40
|
+
| **Compilation Time** | ~23.50s | **~2.61s** | ๐ **~9x Faster** |
|
|
41
|
+
| **Output Size (.taar)** | ~770 KB | **~50 KB** | ๐ **93% Smaller** |
|
|
42
|
+
| **Descriptor Format** | 84-byte Float | **64-bit LSH** | ๐ง **Massive Data Saving** |
|
|
43
|
+
| **Tracking Data** | 8-bit Gray | **4-bit Packed** | ๐ฆ **50% Data Saving** |
|
|
35
44
|
| **Dependency Size** | ~20MB (TFJS) | **< 100KB** | ๐ฆ **99% Smaller Bundle** |
|
|
36
45
|
|
|
37
46
|
---
|
|
@@ -42,17 +51,17 @@ The latest version has been rigorously tested with an adaptive stress test (`rob
|
|
|
42
51
|
|
|
43
52
|
| Metric | Result | Description |
|
|
44
53
|
| :--- | :--- | :--- |
|
|
45
|
-
| **Pass Rate** | **96.3%** |
|
|
54
|
+
| **Pass Rate** | **96.3%** | High success rate across resolutions. |
|
|
46
55
|
| **Drift Tolerance** | **< 15%** | Validated geometrically against ground truth metadata. |
|
|
47
|
-
| **Tracking Precision** | **Float32** | Full 32-bit precision for optical flow tracking
|
|
56
|
+
| **Tracking Precision** | **Float32** | Full 32-bit precision for optical flow tracking. |
|
|
48
57
|
| **Detection Time** | **~21ms** | Ultra-fast initial detection on standard CPU. |
|
|
49
|
-
| **Total Pipeline** | **~64ms** | Complete loop (Detect + Match + Track + Validate)
|
|
58
|
+
| **Total Pipeline** | **~64ms** | Complete loop (Detect + Match + Track + Validate). |
|
|
50
59
|
|
|
51
60
|
---
|
|
52
61
|
|
|
53
62
|
## ๐ผ๏ธ Compiler Usage (Node.js & Web)
|
|
54
63
|
|
|
55
|
-
The compiler is
|
|
64
|
+
The compiler is optimized to run in workers for maximum performance.
|
|
56
65
|
|
|
57
66
|
```javascript
|
|
58
67
|
import { OfflineCompiler } from '@srsergio/taptapp-ar';
|
|
@@ -60,12 +69,13 @@ import { OfflineCompiler } from '@srsergio/taptapp-ar';
|
|
|
60
69
|
const compiler = new OfflineCompiler();
|
|
61
70
|
|
|
62
71
|
// Compile target image (provide grayscale pixel data)
|
|
72
|
+
// Input: { width, height, data: Uint8Array }
|
|
63
73
|
await compiler.compileImageTargets(
|
|
64
74
|
[{ width, height, data: grayscaleUint8Array }],
|
|
65
75
|
(progress) => console.log(`Compiling: ${progress}%`)
|
|
66
76
|
);
|
|
67
77
|
|
|
68
|
-
// Export to high-efficiency binary format
|
|
78
|
+
// Export to high-efficiency binary format (Protocol V7)
|
|
69
79
|
const binaryBuffer = compiler.exportData();
|
|
70
80
|
```
|
|
71
81
|
|
|
@@ -80,9 +90,9 @@ The easiest way to use TapTapp AR in a web app:
|
|
|
80
90
|
<script src="https://aframe.io/releases/1.5.0/aframe.min.js"></script>
|
|
81
91
|
<script src="path/to/@srsergio/taptapp-ar/dist/index.js"></script>
|
|
82
92
|
|
|
83
|
-
<a-scene
|
|
93
|
+
<a-scene taar-image="imageTargetSrc: ./targets.taar;">
|
|
84
94
|
<a-camera position="0 0 0" look-controls="enabled: false"></a-camera>
|
|
85
|
-
<a-entity
|
|
95
|
+
<a-entity taar-image-target="targetIndex: 0">
|
|
86
96
|
<a-plane position="0 0 0" height="0.552" width="1"></a-plane>
|
|
87
97
|
</a-entity>
|
|
88
98
|
</a-scene>
|
|
@@ -92,19 +102,19 @@ The easiest way to use TapTapp AR in a web app:
|
|
|
92
102
|
For custom Three.js applications:
|
|
93
103
|
|
|
94
104
|
```javascript
|
|
95
|
-
import {
|
|
105
|
+
import { TaarThree } from '@srsergio/taptapp-ar';
|
|
96
106
|
|
|
97
|
-
const
|
|
107
|
+
const taarThree = new TaarThree({
|
|
98
108
|
container: document.querySelector("#container"),
|
|
99
|
-
imageTargetSrc: './targets.
|
|
109
|
+
imageTargetSrc: './targets.taar',
|
|
100
110
|
});
|
|
101
111
|
|
|
102
|
-
const {renderer, scene, camera} =
|
|
112
|
+
const {renderer, scene, camera} = taarThree;
|
|
103
113
|
|
|
104
|
-
const anchor =
|
|
114
|
+
const anchor = taarThree.addAnchor(0);
|
|
105
115
|
// Add your 3D models to anchor.group
|
|
106
116
|
|
|
107
|
-
await
|
|
117
|
+
await taarThree.start();
|
|
108
118
|
renderer.setAnimationLoop(() => {
|
|
109
119
|
renderer.render(scene, camera);
|
|
110
120
|
});
|
|
@@ -150,10 +160,10 @@ const controller = new Controller({
|
|
|
150
160
|
});
|
|
151
161
|
|
|
152
162
|
// Single target
|
|
153
|
-
await controller.addImageTargets('./targets.
|
|
163
|
+
await controller.addImageTargets('./targets.taar');
|
|
154
164
|
|
|
155
|
-
// OR multiple targets from different .
|
|
156
|
-
await controller.addImageTargets(['./target1.
|
|
165
|
+
// OR multiple targets from different .taar files
|
|
166
|
+
await controller.addImageTargets(['./target1.taar', './target2.taar', './target3.taar']);
|
|
157
167
|
controller.processVideo(videoElement); // Starts the internal RAF loop
|
|
158
168
|
```
|
|
159
169
|
|
|
@@ -162,7 +172,7 @@ Use this for "Snap and Detect" features without a continuous video loop:
|
|
|
162
172
|
|
|
163
173
|
```javascript
|
|
164
174
|
const controller = new Controller({ inputWidth: 1024, inputHeight: 1024 });
|
|
165
|
-
await controller.addImageTargets('./targets.
|
|
175
|
+
await controller.addImageTargets('./targets.taar');
|
|
166
176
|
|
|
167
177
|
// 1. Detect features in a static image
|
|
168
178
|
const { featurePoints } = await controller.detect(canvasElement);
|
|
@@ -183,7 +193,7 @@ import { SimpleAR } from '@srsergio/taptapp-ar';
|
|
|
183
193
|
|
|
184
194
|
const ar = new SimpleAR({
|
|
185
195
|
container: document.getElementById('ar-container'),
|
|
186
|
-
targetSrc: './my-target.
|
|
196
|
+
targetSrc: './my-target.taar', // Single URL or array: ['./a.taar', './b.taar']
|
|
187
197
|
overlay: document.getElementById('my-overlay'),
|
|
188
198
|
onFound: ({ targetIndex }) => console.log(`Target ${targetIndex} detected! ๐ฏ`),
|
|
189
199
|
onLost: ({ targetIndex }) => console.log(`Target ${targetIndex} lost ๐`)
|
|
@@ -207,7 +217,7 @@ ar.stop();
|
|
|
207
217
|
|
|
208
218
|
const ar = new SimpleAR({
|
|
209
219
|
container: document.getElementById('ar-container'),
|
|
210
|
-
targetSrc: './targets.
|
|
220
|
+
targetSrc: './targets.taar',
|
|
211
221
|
overlay: document.getElementById('my-overlay'),
|
|
212
222
|
});
|
|
213
223
|
|
|
@@ -219,7 +229,7 @@ ar.stop();
|
|
|
219
229
|
| Option | Required | Description |
|
|
220
230
|
| :--- | :--- | :--- |
|
|
221
231
|
| `container` | โ
| DOM element where video + overlay render |
|
|
222
|
-
| `targetSrc` | โ
| URL to your `.
|
|
232
|
+
| `targetSrc` | โ
| URL to your `.taar` file |
|
|
223
233
|
| `overlay` | โ
| DOM element to position on the target |
|
|
224
234
|
| `onFound` | โ | Callback when target is detected |
|
|
225
235
|
| `onLost` | โ | Callback when target is lost |
|
|
@@ -228,26 +238,13 @@ ar.stop();
|
|
|
228
238
|
|
|
229
239
|
---
|
|
230
240
|
|
|
231
|
-
|
|
232
|
-
Properly management is crucial to avoid memory leaks:
|
|
233
|
-
|
|
234
|
-
```javascript
|
|
235
|
-
// Stop the video loop
|
|
236
|
-
controller.stopProcessVideo();
|
|
237
|
-
|
|
238
|
-
// Clean up workers and internal buffers
|
|
239
|
-
controller.dispose();
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## ๐๏ธ Protocol V5.1 (Moonshot LSH Format)
|
|
241
|
+
## ๐๏ธ Protocol V7 (Moonshot Packed Format)
|
|
245
242
|
TapTapp AR uses a proprietary **Moonshot Vision Codec** that is significantly more efficient than standard AR formats.
|
|
246
243
|
|
|
247
|
-
- **
|
|
244
|
+
- **4-bit Packed Tracking Data**: Image data used for optical flow is compressed to 4-bit depth.
|
|
245
|
+
- **64-bit LSH Fingerprinting**: Feature descriptors are compressed to just 8 bytes using LSH.
|
|
248
246
|
- **Binary Matching Engine**: Uses hardware-accelerated population count (`popcount`) and `XOR` for near-instant point matching.
|
|
249
247
|
- **Zero-Copy Restoration**: Binary buffers are mapped directly to TypedArrays (Uint32 for descriptors, Float32 for tracking coordinates).
|
|
250
|
-
- **Cache Locality**: Performance is optimized for modern CPUs by keeping coordinates and descriptors adjacent in memory.
|
|
251
248
|
|
|
252
249
|
---
|
|
253
250
|
|
package/dist/compiler/aframe.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Controller, UI } from "./index.js";
|
|
2
|
-
AFRAME.registerSystem("
|
|
2
|
+
AFRAME.registerSystem("taar-image-system", {
|
|
3
3
|
container: null,
|
|
4
4
|
video: null,
|
|
5
5
|
processingImage: false,
|
|
@@ -174,8 +174,8 @@ AFRAME.registerSystem("mindar-image-system", {
|
|
|
174
174
|
this.video.style.height = vh + "px";
|
|
175
175
|
},
|
|
176
176
|
});
|
|
177
|
-
AFRAME.registerComponent("
|
|
178
|
-
dependencies: ["
|
|
177
|
+
AFRAME.registerComponent("taar-image", {
|
|
178
|
+
dependencies: ["taar-image-system"],
|
|
179
179
|
schema: {
|
|
180
180
|
imageTargetSrc: { type: "string" },
|
|
181
181
|
maxTrack: { type: "int", default: 1 },
|
|
@@ -190,7 +190,7 @@ AFRAME.registerComponent("mindar-image", {
|
|
|
190
190
|
uiError: { type: "string", default: "yes" },
|
|
191
191
|
},
|
|
192
192
|
init: function () {
|
|
193
|
-
const arSystem = this.el.sceneEl.systems["
|
|
193
|
+
const arSystem = this.el.sceneEl.systems["taar-image-system"];
|
|
194
194
|
arSystem.setup({
|
|
195
195
|
imageTargetSrc: this.data.imageTargetSrc,
|
|
196
196
|
maxTrack: this.data.maxTrack,
|
|
@@ -214,14 +214,14 @@ AFRAME.registerComponent("mindar-image", {
|
|
|
214
214
|
arSystem.stop();
|
|
215
215
|
},
|
|
216
216
|
});
|
|
217
|
-
AFRAME.registerComponent("
|
|
218
|
-
dependencies: ["
|
|
217
|
+
AFRAME.registerComponent("taar-image-target", {
|
|
218
|
+
dependencies: ["taar-image-system"],
|
|
219
219
|
schema: {
|
|
220
220
|
targetIndex: { type: "number" },
|
|
221
221
|
},
|
|
222
222
|
postMatrix: null, // rescale the anchor to make width of 1 unit = physical width of card
|
|
223
223
|
init: function () {
|
|
224
|
-
const arSystem = this.el.sceneEl.systems["
|
|
224
|
+
const arSystem = this.el.sceneEl.systems["taar-image-system"];
|
|
225
225
|
arSystem.registerAnchor(this, this.data.targetIndex);
|
|
226
226
|
this.invisibleMatrix = new AFRAME.THREE.Matrix4().set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
227
227
|
const root = this.el.object3D;
|
|
@@ -267,6 +267,6 @@ then A-Frame will process the webpage *before* the system and components get reg
|
|
|
267
267
|
Resulting in a blank page. This happens because module loading is deferred.
|
|
268
268
|
*/
|
|
269
269
|
/* if(needsDOMRefresh){
|
|
270
|
-
console.log("
|
|
270
|
+
console.log("taar-face-aframe::Refreshing DOM...")
|
|
271
271
|
document.body.innerHTML=document.body.innerHTML;
|
|
272
272
|
} */
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { Tracker } from "./tracker/tracker.js";
|
|
2
|
+
import { CropDetector } from "./detector/crop-detector.js";
|
|
3
|
+
import { InputLoader } from "./input-loader.js";
|
|
4
|
+
export interface ControllerOptions {
|
|
5
|
+
inputWidth: number;
|
|
6
|
+
inputHeight: number;
|
|
7
|
+
onUpdate?: ((data: any) => void) | null;
|
|
8
|
+
debugMode?: boolean;
|
|
9
|
+
maxTrack?: number;
|
|
10
|
+
warmupTolerance?: number | null;
|
|
11
|
+
missTolerance?: number | null;
|
|
12
|
+
filterMinCF?: number | null;
|
|
13
|
+
filterBeta?: number | null;
|
|
14
|
+
worker?: any;
|
|
15
|
+
}
|
|
16
|
+
declare class Controller {
|
|
17
|
+
inputWidth: number;
|
|
18
|
+
inputHeight: number;
|
|
16
19
|
maxTrack: number;
|
|
17
20
|
filterMinCF: number;
|
|
18
21
|
filterBeta: number;
|
|
@@ -20,8 +23,8 @@ export class Controller {
|
|
|
20
23
|
missTolerance: number;
|
|
21
24
|
cropDetector: CropDetector;
|
|
22
25
|
inputLoader: InputLoader;
|
|
23
|
-
markerDimensions: any[]
|
|
24
|
-
onUpdate: any;
|
|
26
|
+
markerDimensions: any[] | null;
|
|
27
|
+
onUpdate: ((data: any) => void) | null;
|
|
25
28
|
debugMode: boolean;
|
|
26
29
|
processingVideo: boolean;
|
|
27
30
|
interestedTargetIndex: number;
|
|
@@ -29,48 +32,40 @@ export class Controller {
|
|
|
29
32
|
worker: any;
|
|
30
33
|
projectionTransform: number[][];
|
|
31
34
|
projectionMatrix: number[];
|
|
35
|
+
tracker: Tracker | null;
|
|
36
|
+
matchingDataList: any;
|
|
37
|
+
workerMatchDone: ((data: any) => void) | null;
|
|
38
|
+
workerTrackDone: ((data: any) => void) | null;
|
|
39
|
+
mainThreadMatcher: any;
|
|
40
|
+
mainThreadEstimator: any;
|
|
41
|
+
constructor({ inputWidth, inputHeight, onUpdate, debugMode, maxTrack, warmupTolerance, missTolerance, filterMinCF, filterBeta, worker, }: ControllerOptions);
|
|
32
42
|
_setupWorkerListener(): void;
|
|
33
43
|
_ensureWorker(): void;
|
|
34
|
-
/**
|
|
35
|
-
* Load image targets from one or multiple .mind files
|
|
36
|
-
* @param {string|string[]} fileURLs - Single URL or array of URLs to .mind files
|
|
37
|
-
* @returns {Promise<{dimensions, matchingDataList, trackingDataList}>}
|
|
38
|
-
*/
|
|
39
44
|
addImageTargets(fileURLs: string | string[]): Promise<{
|
|
40
|
-
dimensions: any;
|
|
41
|
-
matchingDataList: any;
|
|
42
|
-
trackingDataList: any;
|
|
45
|
+
dimensions: any[];
|
|
46
|
+
matchingDataList: any[];
|
|
47
|
+
trackingDataList: any[];
|
|
43
48
|
}>;
|
|
44
|
-
/**
|
|
45
|
-
* Load image targets from multiple ArrayBuffers
|
|
46
|
-
* @param {ArrayBuffer[]} buffers - Array of .mind file buffers
|
|
47
|
-
*/
|
|
48
49
|
addImageTargetsFromBuffers(buffers: ArrayBuffer[]): {
|
|
49
|
-
dimensions: any[]
|
|
50
|
+
dimensions: any[];
|
|
50
51
|
matchingDataList: any[];
|
|
51
52
|
trackingDataList: any[];
|
|
52
53
|
};
|
|
53
|
-
tracker: Tracker | undefined;
|
|
54
|
-
matchingDataList: any[] | undefined;
|
|
55
|
-
/**
|
|
56
|
-
* Load image targets from a single ArrayBuffer (backward compatible)
|
|
57
|
-
* @param {ArrayBuffer} buffer - Single .mind file buffer
|
|
58
|
-
*/
|
|
59
54
|
addImageTargetsFromBuffer(buffer: ArrayBuffer): {
|
|
60
|
-
dimensions: any[]
|
|
55
|
+
dimensions: any[];
|
|
61
56
|
matchingDataList: any[];
|
|
62
57
|
trackingDataList: any[];
|
|
63
58
|
};
|
|
64
59
|
dispose(): void;
|
|
65
60
|
dummyRun(input: any): void;
|
|
66
61
|
getProjectionMatrix(): number[];
|
|
67
|
-
getRotatedZ90Matrix(m:
|
|
68
|
-
getWorldMatrix(modelViewTransform:
|
|
69
|
-
_detectAndMatch(inputData: any, targetIndexes:
|
|
62
|
+
getRotatedZ90Matrix(m: number[]): number[];
|
|
63
|
+
getWorldMatrix(modelViewTransform: number[][], targetIndex: number): number[];
|
|
64
|
+
_detectAndMatch(inputData: any, targetIndexes: number[]): Promise<{
|
|
70
65
|
targetIndex: any;
|
|
71
66
|
modelViewTransform: any;
|
|
72
67
|
}>;
|
|
73
|
-
_trackAndUpdate(inputData: any, lastModelViewTransform:
|
|
68
|
+
_trackAndUpdate(inputData: any, lastModelViewTransform: number[][], targetIndex: number): Promise<any>;
|
|
74
69
|
processVideo(input: any): void;
|
|
75
70
|
stopProcessVideo(): void;
|
|
76
71
|
detect(input: any): Promise<{
|
|
@@ -81,14 +76,14 @@ export class Controller {
|
|
|
81
76
|
projectedImage?: undefined;
|
|
82
77
|
};
|
|
83
78
|
}>;
|
|
84
|
-
match(featurePoints: any, targetIndex:
|
|
79
|
+
match(featurePoints: any, targetIndex: number): Promise<{
|
|
85
80
|
targetIndex: any;
|
|
86
81
|
modelViewTransform: any;
|
|
87
82
|
screenCoords: any;
|
|
88
83
|
worldCoords: any;
|
|
89
84
|
debugExtra: any;
|
|
90
85
|
}>;
|
|
91
|
-
track(input: any, modelViewTransform:
|
|
86
|
+
track(input: any, modelViewTransform: number[][], targetIndex: number): Promise<{
|
|
92
87
|
worldCoords: {
|
|
93
88
|
x: number;
|
|
94
89
|
y: number;
|
|
@@ -100,39 +95,18 @@ export class Controller {
|
|
|
100
95
|
}[];
|
|
101
96
|
debugExtra: {};
|
|
102
97
|
}>;
|
|
103
|
-
trackUpdate(modelViewTransform:
|
|
104
|
-
_workerMatch(featurePoints: any, targetIndexes:
|
|
105
|
-
|
|
106
|
-
_matchOnMainThread(featurePoints: any, targetIndexes: any): Promise<{
|
|
98
|
+
trackUpdate(modelViewTransform: number[][], trackFeatures: any): Promise<any>;
|
|
99
|
+
_workerMatch(featurePoints: any, targetIndexes: number[]): Promise<any>;
|
|
100
|
+
_matchOnMainThread(featurePoints: any, targetIndexes: number[]): Promise<{
|
|
107
101
|
targetIndex: number;
|
|
108
|
-
modelViewTransform:
|
|
109
|
-
screenCoords:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}[] | null | undefined;
|
|
113
|
-
worldCoords: {
|
|
114
|
-
x: number;
|
|
115
|
-
y: number;
|
|
116
|
-
z: number;
|
|
117
|
-
}[] | null | undefined;
|
|
118
|
-
debugExtra: {
|
|
119
|
-
frames: never[];
|
|
120
|
-
} | null;
|
|
102
|
+
modelViewTransform: any;
|
|
103
|
+
screenCoords: any;
|
|
104
|
+
worldCoords: any;
|
|
105
|
+
debugExtra: any;
|
|
121
106
|
}>;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
_trackUpdateOnMainThread(modelViewTransform: any, trackingFeatures: any): Promise<never[][] | null>;
|
|
127
|
-
_glModelViewMatrix(modelViewTransform: any, targetIndex: any): any[];
|
|
128
|
-
_glProjectionMatrix({ projectionTransform, width, height, near, far }: {
|
|
129
|
-
projectionTransform: any;
|
|
130
|
-
width: any;
|
|
131
|
-
height: any;
|
|
132
|
-
near: any;
|
|
133
|
-
far: any;
|
|
134
|
-
}): number[];
|
|
107
|
+
_workerTrackUpdate(modelViewTransform: number[][], trackingFeatures: any): Promise<any>;
|
|
108
|
+
_trackUpdateOnMainThread(modelViewTransform: number[][], trackingFeatures: any): Promise<any>;
|
|
109
|
+
_glModelViewMatrix(modelViewTransform: number[][], targetIndex: number): number[];
|
|
110
|
+
_glProjectionMatrix({ projectionTransform, width, height, near, far }: any): number[];
|
|
135
111
|
}
|
|
136
|
-
|
|
137
|
-
import { InputLoader } from "./input-loader.js";
|
|
138
|
-
import { Tracker } from "./tracker/tracker.js";
|
|
112
|
+
export { Controller };
|