@zappar/zappar-cv 3.9.2 → 3.10.0

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 CHANGED
@@ -18,8 +18,8 @@ npm i @zappar/zappar-cv
18
18
 
19
19
  You can use our CDN from within your HTML:
20
20
  ```
21
- <script src="https://libs.zappar.com/zappar-cv/3.9.2/zappar-cv.js"></script>
21
+ <script src="https://libs.zappar.com/zappar-cv/3.10.0/zappar-cv.js"></script>
22
22
  ```
23
23
 
24
24
  Or you can download and host our standalone JavaScript bundle:
25
- [https://libs.zappar.com/zappar-cv/3.9.2/zappar-cv.zip](https://libs.zappar.com/zappar-cv/3.9.2/zappar-cv.zip)
25
+ [https://libs.zappar.com/zappar-cv/3.10.0/zappar-cv.zip](https://libs.zappar.com/zappar-cv/3.10.0/zappar-cv.zip)
@@ -16,7 +16,6 @@ export class BridgedD3Tracker {
16
16
  let s = {
17
17
  pipeline: p,
18
18
  enabled: true,
19
- sizeById: Object.create(null),
20
19
  maxResolution: false,
21
20
  };
22
21
  this._d3StateById.set(newId, s);
@@ -58,11 +57,8 @@ export class BridgedD3Tracker {
58
57
  const data = this._getD3Data(o);
59
58
  return (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.detections) === null || _a === void 0 ? void 0 : _a[indx]) === null || _b === void 0 ? void 0 : _b.qr) !== null && _c !== void 0 ? _c : '';
60
59
  },
61
- d3_tracker_pose_raw: (o, indx) => {
62
- return this.impl.d3_tracker_pose0_raw(o, indx);
63
- },
64
60
  d3_tracker_pose0_raw: (o, indx) => {
65
- var _a, _b, _c, _d, _e, _f;
61
+ var _a, _b, _c;
66
62
  const data = this._getD3Data(o);
67
63
  let ret = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.detections) === null || _a === void 0 ? void 0 : _a[indx]) === null || _b === void 0 ? void 0 : _b.worldPoses) === null || _c === void 0 ? void 0 : _c[0];
68
64
  if (!ret)
@@ -79,18 +75,10 @@ export class BridgedD3Tracker {
79
75
  }
80
76
  const computed = mat4.create();
81
77
  mat4.multiply(computed, worldToCamera, ret);
82
- const state = this._getD3State(o);
83
- const id = (_e = (_d = data === null || data === void 0 ? void 0 : data.detections) === null || _d === void 0 ? void 0 : _d[indx]) === null || _e === void 0 ? void 0 : _e.id;
84
- if (id && id.length > 0) {
85
- const size = 0.5 * ((_f = state.sizeById[id]) !== null && _f !== void 0 ? _f : 2);
86
- computed[12] *= size;
87
- computed[13] *= size;
88
- computed[14] *= size;
89
- }
90
78
  return computed;
91
79
  },
92
80
  d3_tracker_pose1_raw: (o, indx) => {
93
- var _a, _b, _c, _d, _e, _f;
81
+ var _a, _b, _c;
94
82
  const data = this._getD3Data(o);
95
83
  let ret = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.detections) === null || _a === void 0 ? void 0 : _a[indx]) === null || _b === void 0 ? void 0 : _b.worldPoses) === null || _c === void 0 ? void 0 : _c[1];
96
84
  if (!ret)
@@ -107,14 +95,6 @@ export class BridgedD3Tracker {
107
95
  }
108
96
  const computed = mat4.create();
109
97
  mat4.multiply(computed, worldToCamera, ret);
110
- const state = this._getD3State(o);
111
- const id = (_e = (_d = data === null || data === void 0 ? void 0 : data.detections) === null || _d === void 0 ? void 0 : _d[indx]) === null || _e === void 0 ? void 0 : _e.id;
112
- if (id && id.length > 0) {
113
- const size = 0.5 * ((_f = state.sizeById[id]) !== null && _f !== void 0 ? _f : 2);
114
- computed[12] *= size;
115
- computed[13] *= size;
116
- computed[14] *= size;
117
- }
118
98
  return computed;
119
99
  },
120
100
  d3_tracker_landmarks_data: (o, indx) => {
@@ -149,10 +129,6 @@ export class BridgedD3Tracker {
149
129
  const data = this._getD3Data(o);
150
130
  return (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.detections) === null || _a === void 0 ? void 0 : _a[indx]) === null || _b === void 0 ? void 0 : _b.category) !== null && _c !== void 0 ? _c : 0;
151
131
  },
152
- d3_tracker_size_for_id_set: (o, id, size) => {
153
- const state = this._getD3State(o);
154
- state.sizeById[id] = size;
155
- },
156
132
  };
157
133
  }
158
134
  static IsSupported() {
package/lib/drawpoints.js CHANGED
@@ -1,6 +1,6 @@
1
- import { profile } from "./profile";
2
1
  import { compileShader, linkProgram } from "./shader";
3
2
  import { mat4 } from "gl-matrix";
3
+ import { cameraRotationForScreenOrientation } from "./cameramodel";
4
4
  let identity = mat4.create();
5
5
  export class PointsDraw {
6
6
  constructor(_gl) {
@@ -134,47 +134,39 @@ void main()
134
134
  {
135
135
  gl_FragColor = vec4(color, 1.0);
136
136
  }`;
137
- function cameraRotationForScreenOrientation() {
138
- if (window.screen.orientation && !profile.forceWindowOrientation) {
139
- switch (window.screen.orientation.type) {
140
- case "portrait-primary":
141
- return 270;
142
- case "landscape-secondary":
143
- return 180;
144
- case "portrait-secondary":
145
- return 90;
146
- default:
147
- return 0;
148
- }
137
+ export function getPointsDataMatrix(frameWidth, frameHeight, screenWidth, screenHeight, mirror) {
138
+ // Considering camera-relative coords, so think in landscape
139
+ const rotationDegs = cameraRotationForScreenOrientation(false);
140
+ const isLandscape = (rotationDegs == 0) || (rotationDegs == 180);
141
+ const screenWidthLandscape = isLandscape ? screenWidth : screenHeight;
142
+ const screenHeightLandscape = isLandscape ? screenHeight : screenWidth;
143
+ const screenAspectLandscape = screenWidthLandscape / screenHeightLandscape;
144
+ const frameAspect = frameWidth / frameHeight;
145
+ let xScale, yScale;
146
+ if (screenAspectLandscape > frameAspect) {
147
+ // crop-to-fill, wider screen than frame
148
+ // width will map to -1 to +1
149
+ xScale = 2 / frameWidth;
150
+ yScale = -2 / (frameWidth / screenAspectLandscape);
149
151
  }
150
- else if (window.orientation !== undefined) {
151
- switch (window.orientation) {
152
- case 0: return 270;
153
- case 90: return 0;
154
- case 180: return 90;
155
- case -90: return 180;
156
- }
152
+ else {
153
+ // crop-to-fill, taller screen than frame
154
+ // height will map to -1 to +1
155
+ yScale = -2 / frameHeight;
156
+ xScale = 2 / (frameHeight * screenAspectLandscape);
157
157
  }
158
- return 0;
159
- }
160
- export function getPointsDataMatrix(frameWidth, frameHeight, screenWidth, screenHeight, mirror) {
158
+ // Offset so origin is the centre of the frame
159
+ let xOffset = xScale * (-(frameWidth - 1) * 0.5);
160
+ let yOffset = yScale * (-(frameHeight - 1) * 0.5);
161
+ // Fill in the 2D scale / offset values
161
162
  let ret = mat4.create();
163
+ ret[0] = xScale;
164
+ ret[5] = yScale;
165
+ ret[12] = xOffset;
166
+ ret[13] = yOffset;
167
+ // Apply rotation to the final screen orientation
162
168
  let trans = mat4.create();
163
- // Translate to centre UV coords
164
- mat4.fromTranslation(trans, [-0.5 * frameWidth, -0.5 * frameHeight, 0]);
165
- mat4.multiply(ret, trans, ret);
166
- mat4.fromScaling(trans, [2 / frameWidth, 2 / -frameHeight, 1]);
167
- mat4.multiply(ret, trans, ret);
168
- if (mirror) {
169
- mat4.fromScaling(trans, [-1, 1, 1]);
170
- mat4.multiply(ret, trans, ret);
171
- }
172
- let screenAspect = screenWidth > screenHeight ? (screenWidth / screenHeight) : (screenHeight / screenWidth);
173
- let frameAspect = frameWidth / frameHeight;
174
- mat4.fromScaling(trans, [1, screenAspect / frameAspect, 1]);
175
- mat4.multiply(ret, trans, ret);
176
- // Apply rotation back into ZCV's landscape space
177
- mat4.fromRotation(trans, cameraRotationForScreenOrientation() * Math.PI / 180.0, [0, 0, 1]);
169
+ mat4.fromRotation(trans, cameraRotationForScreenOrientation(false) * Math.PI / 180.0, [0, 0, 1]);
178
170
  mat4.multiply(ret, trans, ret);
179
171
  return ret;
180
172
  }
@@ -186,4 +186,16 @@ export interface zappar {
186
186
  custom_anchor_pose_set_with_parent(o: zappar_custom_anchor_t, pose: Float32Array, anchor_id: string): void;
187
187
  d3_tracker_create(pipeline: zappar_pipeline_t): zappar_d3_tracker_t;
188
188
  d3_tracker_destroy(o: zappar_d3_tracker_t): void;
189
+ d3_tracker_enabled(o: zappar_d3_tracker_t): boolean;
190
+ d3_tracker_enabled_set(o: zappar_d3_tracker_t, enabled: boolean): void;
191
+ d3_tracker_count(o: zappar_d3_tracker_t): number;
192
+ d3_tracker_id(o: zappar_d3_tracker_t, indx: number): string;
193
+ d3_tracker_pose0_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
194
+ d3_tracker_pose1_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
195
+ d3_tracker_type(o: zappar_d3_tracker_t, indx: number): number;
196
+ d3_tracker_category(o: zappar_d3_tracker_t, indx: number): number;
197
+ d3_tracker_qr(o: zappar_d3_tracker_t, indx: number): string;
198
+ d3_tracker_dense(o: zappar_d3_tracker_t, indx: number): number;
199
+ d3_tracker_landmarks_data(o: zappar_d3_tracker_t, indx: number): Float32Array;
200
+ d3_tracker_landmarks_data_size(o: zappar_d3_tracker_t, indx: number): number;
189
201
  }
@@ -1114,15 +1114,18 @@ export class zappar_client {
1114
1114
  d3_tracker_create: (pipeline) => {
1115
1115
  let newId = (this._latestId++);
1116
1116
  let s = {
1117
- id: [],
1118
1117
  enabled: true,
1118
+ process_max_resolution: false,
1119
1119
  count: 0,
1120
- qr: [],
1121
- pose: [],
1120
+ id: [],
1121
+ pose0: [],
1122
+ pose1: [],
1122
1123
  type: [],
1123
- dense: [],
1124
1124
  category: [],
1125
- process_max_resolution: false,
1125
+ qr: [],
1126
+ dense: [],
1127
+ landmarks_data: [],
1128
+ landmarks_data_size: [],
1126
1129
  };
1127
1130
  this._d3_tracker_state_by_instance.set(newId, s);
1128
1131
  this.serializer.sendMessage(60, m => {
@@ -1140,6 +1143,82 @@ export class zappar_client {
1140
1143
  m.type(o);
1141
1144
  });
1142
1145
  },
1146
+ d3_tracker_enabled: (o) => {
1147
+ let s = this._d3_tracker_state_by_instance.get(o);
1148
+ if (!s)
1149
+ throw new Error("This object has been destroyed");
1150
+ return s.enabled;
1151
+ },
1152
+ d3_tracker_enabled_set: (o, enabled) => {
1153
+ let s = this._d3_tracker_state_by_instance.get(o);
1154
+ if (!s)
1155
+ throw new Error("This object has been destroyed");
1156
+ this.serializer.sendMessage(64, m => {
1157
+ m.type(o);
1158
+ m.bool(enabled);
1159
+ });
1160
+ s.enabled = enabled;
1161
+ },
1162
+ d3_tracker_count: (o) => {
1163
+ let s = this._d3_tracker_state_by_instance.get(o);
1164
+ if (!s)
1165
+ throw new Error("This object has been destroyed");
1166
+ return s.count;
1167
+ },
1168
+ d3_tracker_id: (o, indx) => {
1169
+ let s = this._d3_tracker_state_by_instance.get(o);
1170
+ if (!s)
1171
+ throw new Error("This object has been destroyed");
1172
+ return s.id[indx];
1173
+ },
1174
+ d3_tracker_pose0_raw: (o, indx) => {
1175
+ let s = this._d3_tracker_state_by_instance.get(o);
1176
+ if (!s)
1177
+ throw new Error("This object has been destroyed");
1178
+ return s.pose0[indx];
1179
+ },
1180
+ d3_tracker_pose1_raw: (o, indx) => {
1181
+ let s = this._d3_tracker_state_by_instance.get(o);
1182
+ if (!s)
1183
+ throw new Error("This object has been destroyed");
1184
+ return s.pose1[indx];
1185
+ },
1186
+ d3_tracker_type: (o, indx) => {
1187
+ let s = this._d3_tracker_state_by_instance.get(o);
1188
+ if (!s)
1189
+ throw new Error("This object has been destroyed");
1190
+ return s.type[indx];
1191
+ },
1192
+ d3_tracker_category: (o, indx) => {
1193
+ let s = this._d3_tracker_state_by_instance.get(o);
1194
+ if (!s)
1195
+ throw new Error("This object has been destroyed");
1196
+ return s.category[indx];
1197
+ },
1198
+ d3_tracker_qr: (o, indx) => {
1199
+ let s = this._d3_tracker_state_by_instance.get(o);
1200
+ if (!s)
1201
+ throw new Error("This object has been destroyed");
1202
+ return s.qr[indx];
1203
+ },
1204
+ d3_tracker_dense: (o, indx) => {
1205
+ let s = this._d3_tracker_state_by_instance.get(o);
1206
+ if (!s)
1207
+ throw new Error("This object has been destroyed");
1208
+ return s.dense[indx];
1209
+ },
1210
+ d3_tracker_landmarks_data: (o, indx) => {
1211
+ let s = this._d3_tracker_state_by_instance.get(o);
1212
+ if (!s)
1213
+ throw new Error("This object has been destroyed");
1214
+ return s.landmarks_data[indx];
1215
+ },
1216
+ d3_tracker_landmarks_data_size: (o, indx) => {
1217
+ let s = this._d3_tracker_state_by_instance.get(o);
1218
+ if (!s)
1219
+ throw new Error("This object has been destroyed");
1220
+ return s.landmarks_data_size[indx];
1221
+ },
1143
1222
  };
1144
1223
  }
1145
1224
  processMessages(a) {
@@ -1571,6 +1650,95 @@ export class zappar_client {
1571
1650
  inst.pose = msg.matrix4x4();
1572
1651
  break;
1573
1652
  }
1653
+ case 56: {
1654
+ let handle = msg.type();
1655
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1656
+ if (!inst)
1657
+ return;
1658
+ inst.count = msg.int();
1659
+ break;
1660
+ }
1661
+ case 57: {
1662
+ let handle = msg.type();
1663
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1664
+ if (!inst)
1665
+ return;
1666
+ let indx = msg.int();
1667
+ inst.id[indx] = msg.string();
1668
+ break;
1669
+ }
1670
+ case 58: {
1671
+ let handle = msg.type();
1672
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1673
+ if (!inst)
1674
+ return;
1675
+ let indx = msg.int();
1676
+ inst.pose0[indx] = msg.matrix4x4();
1677
+ break;
1678
+ }
1679
+ case 59: {
1680
+ let handle = msg.type();
1681
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1682
+ if (!inst)
1683
+ return;
1684
+ let indx = msg.int();
1685
+ inst.pose1[indx] = msg.matrix4x4();
1686
+ break;
1687
+ }
1688
+ case 60: {
1689
+ let handle = msg.type();
1690
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1691
+ if (!inst)
1692
+ return;
1693
+ let indx = msg.int();
1694
+ inst.type[indx] = msg.int();
1695
+ break;
1696
+ }
1697
+ case 61: {
1698
+ let handle = msg.type();
1699
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1700
+ if (!inst)
1701
+ return;
1702
+ let indx = msg.int();
1703
+ inst.category[indx] = msg.int();
1704
+ break;
1705
+ }
1706
+ case 62: {
1707
+ let handle = msg.type();
1708
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1709
+ if (!inst)
1710
+ return;
1711
+ let indx = msg.int();
1712
+ inst.qr[indx] = msg.string();
1713
+ break;
1714
+ }
1715
+ case 63: {
1716
+ let handle = msg.type();
1717
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1718
+ if (!inst)
1719
+ return;
1720
+ let indx = msg.int();
1721
+ inst.dense[indx] = msg.int();
1722
+ break;
1723
+ }
1724
+ case 64: {
1725
+ let handle = msg.type();
1726
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1727
+ if (!inst)
1728
+ return;
1729
+ let indx = msg.int();
1730
+ inst.landmarks_data[indx] = msg.floatArray();
1731
+ break;
1732
+ }
1733
+ case 65: {
1734
+ let handle = msg.type();
1735
+ let inst = this._d3_tracker_state_by_instance.get(handle);
1736
+ if (!inst)
1737
+ return;
1738
+ let indx = msg.int();
1739
+ inst.landmarks_data_size[indx] = msg.int();
1740
+ break;
1741
+ }
1574
1742
  }
1575
1743
  });
1576
1744
  }
@@ -388,6 +388,52 @@ export function getRuntimeObject(mod) {
388
388
  ]);
389
389
  let d3_tracker_create_wrapped = mod.cwrap("zappar_d3_tracker_create", "number", ["number"]);
390
390
  let d3_tracker_destroy_wrapped = mod.cwrap("zappar_d3_tracker_destroy", null, ["number"]);
391
+ let d3_tracker_enabled_wrapped = mod.cwrap("zappar_d3_tracker_enabled", "number", [
392
+ "number"
393
+ ]);
394
+ let d3_tracker_enabled_set_wrapped = mod.cwrap("zappar_d3_tracker_enabled_set", null, [
395
+ "number",
396
+ "number"
397
+ ]);
398
+ let d3_tracker_count_wrapped = mod.cwrap("zappar_d3_tracker_count", "number", [
399
+ "number"
400
+ ]);
401
+ let d3_tracker_id_wrapped = mod.cwrap("zappar_d3_tracker_id", "string", [
402
+ "number",
403
+ "number"
404
+ ]);
405
+ let d3_tracker_pose0_raw_wrapped = mod.cwrap("zappar_d3_tracker_pose0_raw", "number", [
406
+ "number",
407
+ "number"
408
+ ]);
409
+ let d3_tracker_pose1_raw_wrapped = mod.cwrap("zappar_d3_tracker_pose1_raw", "number", [
410
+ "number",
411
+ "number"
412
+ ]);
413
+ let d3_tracker_type_wrapped = mod.cwrap("zappar_d3_tracker_type", "number", [
414
+ "number",
415
+ "number"
416
+ ]);
417
+ let d3_tracker_category_wrapped = mod.cwrap("zappar_d3_tracker_category", "number", [
418
+ "number",
419
+ "number"
420
+ ]);
421
+ let d3_tracker_qr_wrapped = mod.cwrap("zappar_d3_tracker_qr", "string", [
422
+ "number",
423
+ "number"
424
+ ]);
425
+ let d3_tracker_dense_wrapped = mod.cwrap("zappar_d3_tracker_dense", "number", [
426
+ "number",
427
+ "number"
428
+ ]);
429
+ let d3_tracker_landmarks_data_wrapped = mod.cwrap("zappar_d3_tracker_landmarks_data", "number", [
430
+ "number",
431
+ "number"
432
+ ]);
433
+ let d3_tracker_landmarks_data_size_wrapped = mod.cwrap("zappar_d3_tracker_landmarks_data_size", "number", [
434
+ "number",
435
+ "number"
436
+ ]);
391
437
  let dataArrayArgLength = 32;
392
438
  let dataArrayArg = mod._malloc(dataArrayArgLength);
393
439
  let floatDataArrayArgLength = 16 * 4;
@@ -1129,5 +1175,74 @@ export function getRuntimeObject(mod) {
1129
1175
  d3_tracker_destroy: () => {
1130
1176
  d3_tracker_destroy_wrapped();
1131
1177
  },
1178
+ d3_tracker_enabled: (o) => {
1179
+ let ret = d3_tracker_enabled_wrapped(o);
1180
+ ret = ret === 1;
1181
+ return ret;
1182
+ },
1183
+ d3_tracker_enabled_set: (o, enabled) => {
1184
+ let arg_enabled = enabled ? 1 : 0;
1185
+ let ret = d3_tracker_enabled_set_wrapped(o, arg_enabled);
1186
+ return ret;
1187
+ },
1188
+ d3_tracker_count: (o) => {
1189
+ let ret = d3_tracker_count_wrapped(o);
1190
+ return ret;
1191
+ },
1192
+ d3_tracker_id: (o, indx) => {
1193
+ let arg_indx = indx;
1194
+ let ret = d3_tracker_id_wrapped(o, arg_indx);
1195
+ return ret;
1196
+ },
1197
+ d3_tracker_pose0_raw: (o, indx) => {
1198
+ let arg_indx = indx;
1199
+ let ret = d3_tracker_pose0_raw_wrapped(o, arg_indx);
1200
+ let ab = new Float32Array(16);
1201
+ ab.set(mod.HEAPF32.subarray(ret / 4, 16 + ret / 4));
1202
+ ret = ab;
1203
+ return ret;
1204
+ },
1205
+ d3_tracker_pose1_raw: (o, indx) => {
1206
+ let arg_indx = indx;
1207
+ let ret = d3_tracker_pose1_raw_wrapped(o, arg_indx);
1208
+ let ab = new Float32Array(16);
1209
+ ab.set(mod.HEAPF32.subarray(ret / 4, 16 + ret / 4));
1210
+ ret = ab;
1211
+ return ret;
1212
+ },
1213
+ d3_tracker_type: (o, indx) => {
1214
+ let arg_indx = indx;
1215
+ let ret = d3_tracker_type_wrapped(o, arg_indx);
1216
+ return ret;
1217
+ },
1218
+ d3_tracker_category: (o, indx) => {
1219
+ let arg_indx = indx;
1220
+ let ret = d3_tracker_category_wrapped(o, arg_indx);
1221
+ return ret;
1222
+ },
1223
+ d3_tracker_qr: (o, indx) => {
1224
+ let arg_indx = indx;
1225
+ let ret = d3_tracker_qr_wrapped(o, arg_indx);
1226
+ return ret;
1227
+ },
1228
+ d3_tracker_dense: (o, indx) => {
1229
+ let arg_indx = indx;
1230
+ let ret = d3_tracker_dense_wrapped(o, arg_indx);
1231
+ return ret;
1232
+ },
1233
+ d3_tracker_landmarks_data: (o, indx) => {
1234
+ let arg_indx = indx;
1235
+ let ret = d3_tracker_landmarks_data_wrapped(o, arg_indx);
1236
+ let retsize = d3_tracker_landmarks_data_size_wrapped(o, indx);
1237
+ let ab = new Float32Array(retsize);
1238
+ ab.set(mod.HEAPF32.subarray(ret / 4, retsize + ret / 4));
1239
+ ret = ab;
1240
+ return ret;
1241
+ },
1242
+ d3_tracker_landmarks_data_size: (o, indx) => {
1243
+ let arg_indx = indx;
1244
+ let ret = d3_tracker_landmarks_data_size_wrapped(o, arg_indx);
1245
+ return ret;
1246
+ },
1132
1247
  };
1133
1248
  }
@@ -263,4 +263,16 @@ export interface zappar_cwrap {
263
263
  custom_anchor_pose_set_with_parent(o: zappar_custom_anchor_t, pose: Float32Array, anchor_id: string): void;
264
264
  d3_tracker_create(pipeline: zappar_pipeline_t): zappar_d3_tracker_t;
265
265
  d3_tracker_destroy(o: zappar_d3_tracker_t): void;
266
+ d3_tracker_enabled(o: zappar_d3_tracker_t): boolean;
267
+ d3_tracker_enabled_set(o: zappar_d3_tracker_t, enabled: boolean): void;
268
+ d3_tracker_count(o: zappar_d3_tracker_t): number;
269
+ d3_tracker_id(o: zappar_d3_tracker_t, indx: number): string;
270
+ d3_tracker_pose0_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
271
+ d3_tracker_pose1_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
272
+ d3_tracker_type(o: zappar_d3_tracker_t, indx: number): number;
273
+ d3_tracker_category(o: zappar_d3_tracker_t, indx: number): number;
274
+ d3_tracker_qr(o: zappar_d3_tracker_t, indx: number): string;
275
+ d3_tracker_dense(o: zappar_d3_tracker_t, indx: number): number;
276
+ d3_tracker_landmarks_data(o: zappar_d3_tracker_t, indx: number): Float32Array;
277
+ d3_tracker_landmarks_data_size(o: zappar_d3_tracker_t, indx: number): number;
266
278
  }
@@ -551,6 +551,14 @@ export class zappar_server {
551
551
  this._d3_tracker_by_instance.delete(clientId);
552
552
  break;
553
553
  }
554
+ case 64: {
555
+ let clientId = msg.type();
556
+ let obj = this._d3_tracker_by_instance.get(clientId);
557
+ if (obj === undefined)
558
+ return;
559
+ this._impl.d3_tracker_enabled_set(obj, msg.bool());
560
+ break;
561
+ }
554
562
  }
555
563
  });
556
564
  }
@@ -913,6 +921,73 @@ export class zappar_server {
913
921
  let serializer = this.serializersByPipelineId.get(pipeline);
914
922
  if (!serializer)
915
923
  continue;
924
+ serializer.sendMessage(56, msg => {
925
+ msg.type(k);
926
+ msg.int(this._impl.d3_tracker_count(v));
927
+ });
928
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
929
+ serializer.sendMessage(57, msg => {
930
+ msg.type(k);
931
+ msg.int(i);
932
+ msg.string(this._impl.d3_tracker_id(v, i));
933
+ });
934
+ }
935
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
936
+ serializer.sendMessage(58, msg => {
937
+ msg.type(k);
938
+ msg.int(i);
939
+ msg.matrix4x4(this._impl.d3_tracker_pose0_raw(v, i));
940
+ });
941
+ }
942
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
943
+ serializer.sendMessage(59, msg => {
944
+ msg.type(k);
945
+ msg.int(i);
946
+ msg.matrix4x4(this._impl.d3_tracker_pose1_raw(v, i));
947
+ });
948
+ }
949
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
950
+ serializer.sendMessage(60, msg => {
951
+ msg.type(k);
952
+ msg.int(i);
953
+ msg.int(this._impl.d3_tracker_type(v, i));
954
+ });
955
+ }
956
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
957
+ serializer.sendMessage(61, msg => {
958
+ msg.type(k);
959
+ msg.int(i);
960
+ msg.int(this._impl.d3_tracker_category(v, i));
961
+ });
962
+ }
963
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
964
+ serializer.sendMessage(62, msg => {
965
+ msg.type(k);
966
+ msg.int(i);
967
+ msg.string(this._impl.d3_tracker_qr(v, i));
968
+ });
969
+ }
970
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
971
+ serializer.sendMessage(63, msg => {
972
+ msg.type(k);
973
+ msg.int(i);
974
+ msg.int(this._impl.d3_tracker_dense(v, i));
975
+ });
976
+ }
977
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
978
+ serializer.sendMessage(64, msg => {
979
+ msg.type(k);
980
+ msg.int(i);
981
+ msg.floatArray(this._impl.d3_tracker_landmarks_data(v, i));
982
+ });
983
+ }
984
+ for (let i = 0; i < this._impl.d3_tracker_count(v); i++) {
985
+ serializer.sendMessage(65, msg => {
986
+ msg.type(k);
987
+ msg.int(i);
988
+ msg.int(this._impl.d3_tracker_landmarks_data_size(v, i));
989
+ });
990
+ }
916
991
  }
917
992
  }
918
993
  }
@@ -295,25 +295,25 @@ export interface zappar {
295
295
  custom_anchor_pose_set_with_parent(o: zappar_custom_anchor_t, pose: Float32Array, anchor_id: string): void;
296
296
  d3_tracker_create(pipeline: zappar_pipeline_t): zappar_d3_tracker_t;
297
297
  d3_tracker_destroy(o: zappar_d3_tracker_t): void;
298
- d3_tracker_id(o: zappar_d3_tracker_t, indx: number): string;
299
298
  d3_tracker_enabled(o: zappar_d3_tracker_t): boolean;
300
299
  d3_tracker_enabled_set(o: zappar_d3_tracker_t, enabled: boolean): void;
301
300
  d3_tracker_process_max_resolution_set(o: zappar_d3_tracker_t, v: boolean): void;
302
301
  d3_tracker_count(o: zappar_d3_tracker_t): number;
303
- d3_tracker_qr(o: zappar_d3_tracker_t, indx: number): string;
304
- d3_tracker_pose_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
305
- d3_tracker_pose_camera_relative(o: zappar_d3_tracker_t, indx: number, mirror: boolean): Float32Array;
306
- d3_tracker_pose(o: zappar_d3_tracker_t, indx: number, camera_pose: Float32Array, mirror: boolean): Float32Array;
302
+ d3_tracker_id(o: zappar_d3_tracker_t, indx: number): string;
307
303
  d3_tracker_pose0_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
308
304
  d3_tracker_pose0_camera_relative(o: zappar_d3_tracker_t, indx: number, mirror: boolean): Float32Array;
309
305
  d3_tracker_pose0(o: zappar_d3_tracker_t, indx: number, camera_pose: Float32Array, mirror: boolean): Float32Array;
310
306
  d3_tracker_pose1_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
311
307
  d3_tracker_pose1_camera_relative(o: zappar_d3_tracker_t, indx: number, mirror: boolean): Float32Array;
312
308
  d3_tracker_pose1(o: zappar_d3_tracker_t, indx: number, camera_pose: Float32Array, mirror: boolean): Float32Array;
313
- d3_tracker_landmarks_data(o: zappar_d3_tracker_t, indx: number): Float32Array;
314
- d3_tracker_landmarks_data_size(o: zappar_d3_tracker_t, indx: number): number;
315
309
  d3_tracker_type(o: zappar_d3_tracker_t, indx: number): number;
316
- d3_tracker_dense(o: zappar_d3_tracker_t, indx: number): number;
317
310
  d3_tracker_category(o: zappar_d3_tracker_t, indx: number): number;
311
+ d3_tracker_qr(o: zappar_d3_tracker_t, indx: number): string;
312
+ d3_tracker_dense(o: zappar_d3_tracker_t, indx: number): number;
313
+ d3_tracker_landmarks_data(o: zappar_d3_tracker_t, indx: number): Float32Array;
314
+ d3_tracker_landmarks_data_size(o: zappar_d3_tracker_t, indx: number): number;
315
+ d3_tracker_pose_raw(o: zappar_d3_tracker_t, indx: number): Float32Array;
316
+ d3_tracker_pose_camera_relative(o: zappar_d3_tracker_t, indx: number, mirror: boolean): Float32Array;
317
+ d3_tracker_pose(o: zappar_d3_tracker_t, indx: number, camera_pose: Float32Array, mirror: boolean): Float32Array;
318
318
  d3_tracker_size_for_id_set(o: zappar_d3_tracker_t, id: string, size: number): void;
319
319
  }