@zappar/zappar-cv 3.0.1-alpha.15 → 3.0.1-alpha.16

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.0.1-alpha.15/zappar-cv.js"></script>
21
+ <script src="https://libs.zappar.com/zappar-cv/3.0.1-alpha.16/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.0.1-alpha.15/zappar-cv.zip](https://libs.zappar.com/zappar-cv/3.0.1-alpha.15/zappar-cv.zip)
25
+ [https://libs.zappar.com/zappar-cv/3.0.1-alpha.16/zappar-cv.zip](https://libs.zappar.com/zappar-cv/3.0.1-alpha.16/zappar-cv.zip)
package/lib/drawgrid.js CHANGED
@@ -100,8 +100,8 @@ uniform sampler2D skinSampler;
100
100
 
101
101
  void main()
102
102
  {
103
- vec2 pixels = 100.0 * vTextureCoord + 0.5;
104
- if ((int(mod(pixels.x, 10.0)) == 0) || (int(mod(pixels.y, 10.0)) == 0)) {
103
+ vec2 pixels = 500.0 * vTextureCoord + 0.5;
104
+ if ((int(mod(pixels.x, 50.0)) == 0) || (int(mod(pixels.y, 50.0)) == 0)) {
105
105
  gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
106
106
  } else {
107
107
  discard;
@@ -0,0 +1,5 @@
1
+ export declare class PolygonDraw {
2
+ private _vbo;
3
+ private _generate;
4
+ drawPolygon(gl: WebGLRenderingContext, projectionMatrix: Float32Array, cameraMatrix: Float32Array, targetMatrix: Float32Array, points: Float32Array): void;
5
+ }
@@ -0,0 +1,94 @@
1
+ import { compileShader, linkProgram } from "./shader";
2
+ let shader;
3
+ export class PolygonDraw {
4
+ _generate(gl, points) {
5
+ if (!this._vbo) {
6
+ this._vbo = gl.createBuffer();
7
+ }
8
+ if (!this._vbo)
9
+ throw new Error("Unable to create buffer object");
10
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._vbo);
11
+ gl.bufferData(gl.ARRAY_BUFFER, points, gl.DYNAMIC_DRAW);
12
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
13
+ return this._vbo;
14
+ }
15
+ drawPolygon(gl, projectionMatrix, cameraMatrix, targetMatrix, points) {
16
+ let shader = getShader(gl);
17
+ let v = this._generate(gl, points);
18
+ gl.disable(gl.DEPTH_TEST);
19
+ gl.disable(gl.SCISSOR_TEST);
20
+ gl.disable(gl.CULL_FACE);
21
+ gl.disable(gl.STENCIL_TEST);
22
+ gl.disable(gl.BLEND);
23
+ gl.useProgram(shader.prog);
24
+ gl.uniformMatrix4fv(shader.unif_proj, false, projectionMatrix);
25
+ gl.uniformMatrix4fv(shader.unif_camera, false, cameraMatrix);
26
+ gl.uniformMatrix4fv(shader.unif_matrix, false, targetMatrix);
27
+ gl.bindBuffer(gl.ARRAY_BUFFER, v);
28
+ gl.vertexAttribPointer(shader.attr_position, 2, gl.FLOAT, false, 0, 0);
29
+ gl.enableVertexAttribArray(shader.attr_position);
30
+ gl.drawArrays(gl.LINE_LOOP, 0, points.length / 2);
31
+ gl.disableVertexAttribArray(shader.attr_position);
32
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
33
+ }
34
+ }
35
+ let vertexShaderSrc = `
36
+ #ifndef GL_ES
37
+ #define highp
38
+ #define mediump
39
+ #define lowp
40
+ #endif
41
+
42
+ uniform mat4 projMatrix;
43
+ uniform mat4 cameraMatrix;
44
+ uniform mat4 modelViewMatrix;
45
+ attribute vec2 position;
46
+
47
+ void main()
48
+ {
49
+ gl_Position = projMatrix * cameraMatrix * modelViewMatrix * vec4(position.x, 0.0, position.y, 1.0);
50
+ }`;
51
+ let fragmentShaderSrc = `
52
+ #define highp mediump
53
+ #ifdef GL_ES
54
+ // define default precision for float, vec, mat.
55
+ precision highp float;
56
+ #else
57
+ #define highp
58
+ #define mediump
59
+ #define lowp
60
+ #endif
61
+
62
+ void main()
63
+ {
64
+ gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
65
+ }`;
66
+ function getShader(gl) {
67
+ if (shader)
68
+ return shader;
69
+ let prog = gl.createProgram();
70
+ if (!prog)
71
+ throw new Error("Unable to create program");
72
+ let vertexShader = compileShader(gl, gl.VERTEX_SHADER, vertexShaderSrc);
73
+ let fragmentShader = compileShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSrc);
74
+ gl.attachShader(prog, vertexShader);
75
+ gl.attachShader(prog, fragmentShader);
76
+ linkProgram(gl, prog);
77
+ let unif_proj = gl.getUniformLocation(prog, "projMatrix");
78
+ if (!unif_proj)
79
+ throw new Error("Unable to get uniform location projMatrix");
80
+ let unif_matrix = gl.getUniformLocation(prog, "modelViewMatrix");
81
+ if (!unif_matrix)
82
+ throw new Error("Unable to get uniform location modelViewMatrix");
83
+ let unif_camera = gl.getUniformLocation(prog, "cameraMatrix");
84
+ if (!unif_camera)
85
+ throw new Error("Unable to get uniform location cameraMatrix");
86
+ shader = {
87
+ prog,
88
+ unif_matrix,
89
+ unif_proj,
90
+ unif_camera,
91
+ attr_position: gl.getAttribLocation(prog, "position"),
92
+ };
93
+ return shader;
94
+ }
@@ -127,6 +127,9 @@ export interface zappar {
127
127
  world_tracker_plane_detection_enabled_set(o: zappar_world_tracker_t, plane_detection_enabled: boolean): void;
128
128
  world_tracker_plane_count(o: zappar_world_tracker_t): number;
129
129
  world_tracker_plane_pose_raw(o: zappar_world_tracker_t, indx: number): Float32Array;
130
+ world_tracker_plane_visible(o: zappar_world_tracker_t, indx: number): boolean;
131
+ world_tracker_plane_polygon_data_size(o: zappar_world_tracker_t, indx: number): number;
132
+ world_tracker_plane_polygon_data(o: zappar_world_tracker_t, indx: number): Float32Array;
130
133
  world_tracker_world_anchor_valid(o: zappar_world_tracker_t): boolean;
131
134
  world_tracker_world_anchor_pose_raw(o: zappar_world_tracker_t): Float32Array;
132
135
  world_tracker_ground_anchor_valid(o: zappar_world_tracker_t): boolean;
@@ -683,6 +683,9 @@ export class zappar_client {
683
683
  plane_detection_enabled: true,
684
684
  plane_count: 0,
685
685
  plane_pose: [],
686
+ plane_visible: [],
687
+ plane_polygon_data: [],
688
+ plane_polygon_data_size: [],
686
689
  world_anchor_valid: false,
687
690
  world_anchor_pose: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),
688
691
  ground_anchor_valid: false,
@@ -761,6 +764,24 @@ export class zappar_client {
761
764
  throw new Error("This object has been destroyed");
762
765
  return s.plane_pose[indx];
763
766
  },
767
+ world_tracker_plane_visible: (o, indx) => {
768
+ let s = this._world_tracker_state_by_instance.get(o);
769
+ if (!s)
770
+ throw new Error("This object has been destroyed");
771
+ return s.plane_visible[indx];
772
+ },
773
+ world_tracker_plane_polygon_data_size: (o, indx) => {
774
+ let s = this._world_tracker_state_by_instance.get(o);
775
+ if (!s)
776
+ throw new Error("This object has been destroyed");
777
+ return s.plane_polygon_data_size[indx];
778
+ },
779
+ world_tracker_plane_polygon_data: (o, indx) => {
780
+ let s = this._world_tracker_state_by_instance.get(o);
781
+ if (!s)
782
+ throw new Error("This object has been destroyed");
783
+ return s.plane_polygon_data[indx];
784
+ },
764
785
  world_tracker_world_anchor_valid: (o) => {
765
786
  let s = this._world_tracker_state_by_instance.get(o);
766
787
  if (!s)
@@ -1059,7 +1080,7 @@ export class zappar_client {
1059
1080
  inst.anchor_pose[indx] = msg.matrix4x4();
1060
1081
  break;
1061
1082
  }
1062
- case 31: {
1083
+ case 34: {
1063
1084
  let handle = msg.type();
1064
1085
  let inst = this._world_tracker_state_by_instance.get(handle);
1065
1086
  if (!inst)
@@ -1089,7 +1110,8 @@ export class zappar_client {
1089
1110
  let inst = this._world_tracker_state_by_instance.get(handle);
1090
1111
  if (!inst)
1091
1112
  return;
1092
- inst.world_anchor_valid = msg.bool();
1113
+ let indx = msg.int();
1114
+ inst.plane_visible[indx] = msg.bool();
1093
1115
  break;
1094
1116
  }
1095
1117
  case 28: {
@@ -1097,10 +1119,20 @@ export class zappar_client {
1097
1119
  let inst = this._world_tracker_state_by_instance.get(handle);
1098
1120
  if (!inst)
1099
1121
  return;
1100
- inst.world_anchor_pose = msg.matrix4x4();
1122
+ let indx = msg.int();
1123
+ inst.plane_polygon_data_size[indx] = msg.int();
1101
1124
  break;
1102
1125
  }
1103
- case 27: {
1126
+ case 29: {
1127
+ let handle = msg.type();
1128
+ let inst = this._world_tracker_state_by_instance.get(handle);
1129
+ if (!inst)
1130
+ return;
1131
+ let indx = msg.int();
1132
+ inst.plane_polygon_data[indx] = msg.floatArray();
1133
+ break;
1134
+ }
1135
+ case 30: {
1104
1136
  let handle = msg.type();
1105
1137
  let inst = this._world_tracker_state_by_instance.get(handle);
1106
1138
  if (!inst)
@@ -1108,7 +1140,23 @@ export class zappar_client {
1108
1140
  inst.world_anchor_valid = msg.bool();
1109
1141
  break;
1110
1142
  }
1143
+ case 31: {
1144
+ let handle = msg.type();
1145
+ let inst = this._world_tracker_state_by_instance.get(handle);
1146
+ if (!inst)
1147
+ return;
1148
+ inst.world_anchor_pose = msg.matrix4x4();
1149
+ break;
1150
+ }
1111
1151
  case 30: {
1152
+ let handle = msg.type();
1153
+ let inst = this._world_tracker_state_by_instance.get(handle);
1154
+ if (!inst)
1155
+ return;
1156
+ inst.world_anchor_valid = msg.bool();
1157
+ break;
1158
+ }
1159
+ case 33: {
1112
1160
  let handle = msg.type();
1113
1161
  let inst = this._world_tracker_state_by_instance.get(handle);
1114
1162
  if (!inst)
@@ -1116,7 +1164,7 @@ export class zappar_client {
1116
1164
  inst.ground_anchor_pose = msg.matrix4x4();
1117
1165
  break;
1118
1166
  }
1119
- case 34: {
1167
+ case 37: {
1120
1168
  let handle = msg.type();
1121
1169
  let inst = this._world_tracker_state_by_instance.get(handle);
1122
1170
  if (!inst)
@@ -1124,7 +1172,7 @@ export class zappar_client {
1124
1172
  inst.tracks_data_size = msg.int();
1125
1173
  break;
1126
1174
  }
1127
- case 33: {
1175
+ case 36: {
1128
1176
  let handle = msg.type();
1129
1177
  let inst = this._world_tracker_state_by_instance.get(handle);
1130
1178
  if (!inst)
@@ -1132,7 +1180,7 @@ export class zappar_client {
1132
1180
  inst.tracks_data = msg.floatArray();
1133
1181
  break;
1134
1182
  }
1135
- case 36: {
1183
+ case 39: {
1136
1184
  let handle = msg.type();
1137
1185
  let inst = this._world_tracker_state_by_instance.get(handle);
1138
1186
  if (!inst)
@@ -1140,7 +1188,7 @@ export class zappar_client {
1140
1188
  inst.tracks_type_data_size = msg.int();
1141
1189
  break;
1142
1190
  }
1143
- case 35: {
1191
+ case 38: {
1144
1192
  let handle = msg.type();
1145
1193
  let inst = this._world_tracker_state_by_instance.get(handle);
1146
1194
  if (!inst)
@@ -1148,7 +1196,7 @@ export class zappar_client {
1148
1196
  inst.tracks_type_data = msg.ucharArray();
1149
1197
  break;
1150
1198
  }
1151
- case 39: {
1199
+ case 42: {
1152
1200
  let handle = msg.type();
1153
1201
  let inst = this._world_tracker_state_by_instance.get(handle);
1154
1202
  if (!inst)
@@ -1156,7 +1204,7 @@ export class zappar_client {
1156
1204
  inst.projections_data_size = msg.int();
1157
1205
  break;
1158
1206
  }
1159
- case 38: {
1207
+ case 41: {
1160
1208
  let handle = msg.type();
1161
1209
  let inst = this._world_tracker_state_by_instance.get(handle);
1162
1210
  if (!inst)
@@ -251,6 +251,18 @@ export function getRuntimeObject(mod) {
251
251
  "number",
252
252
  "number"
253
253
  ]);
254
+ let world_tracker_plane_visible_wrapped = mod.cwrap("zappar_world_tracker_plane_visible", "number", [
255
+ "number",
256
+ "number"
257
+ ]);
258
+ let world_tracker_plane_polygon_data_size_wrapped = mod.cwrap("zappar_world_tracker_plane_polygon_data_size", "number", [
259
+ "number",
260
+ "number"
261
+ ]);
262
+ let world_tracker_plane_polygon_data_wrapped = mod.cwrap("zappar_world_tracker_plane_polygon_data", "number", [
263
+ "number",
264
+ "number"
265
+ ]);
254
266
  let world_tracker_world_anchor_valid_wrapped = mod.cwrap("zappar_world_tracker_world_anchor_valid", "number", [
255
267
  "number"
256
268
  ]);
@@ -806,6 +818,26 @@ export function getRuntimeObject(mod) {
806
818
  ret = ab;
807
819
  return ret;
808
820
  },
821
+ world_tracker_plane_visible: (o, indx) => {
822
+ let arg_indx = indx;
823
+ let ret = world_tracker_plane_visible_wrapped(o, arg_indx);
824
+ ret = ret === 1;
825
+ return ret;
826
+ },
827
+ world_tracker_plane_polygon_data_size: (o, indx) => {
828
+ let arg_indx = indx;
829
+ let ret = world_tracker_plane_polygon_data_size_wrapped(o, arg_indx);
830
+ return ret;
831
+ },
832
+ world_tracker_plane_polygon_data: (o, indx) => {
833
+ let arg_indx = indx;
834
+ let ret = world_tracker_plane_polygon_data_wrapped(o, arg_indx);
835
+ let retsize = world_tracker_plane_polygon_data_size_wrapped(o, indx);
836
+ let ab = new Float32Array(retsize);
837
+ ab.set(mod.HEAPF32.subarray(ret / 4, retsize + ret / 4));
838
+ ret = ab;
839
+ return ret;
840
+ },
809
841
  world_tracker_world_anchor_valid: (o) => {
810
842
  let ret = world_tracker_world_anchor_valid_wrapped(o);
811
843
  ret = ret === 1;
@@ -192,6 +192,9 @@ export interface zappar_cwrap {
192
192
  world_tracker_plane_detection_enabled_set(o: zappar_world_tracker_t, plane_detection_enabled: boolean): void;
193
193
  world_tracker_plane_count(o: zappar_world_tracker_t): number;
194
194
  world_tracker_plane_pose_raw(o: zappar_world_tracker_t, indx: number): Float32Array;
195
+ world_tracker_plane_visible(o: zappar_world_tracker_t, indx: number): boolean;
196
+ world_tracker_plane_polygon_data_size(o: zappar_world_tracker_t, indx: number): number;
197
+ world_tracker_plane_polygon_data(o: zappar_world_tracker_t, indx: number): Float32Array;
195
198
  world_tracker_world_anchor_valid(o: zappar_world_tracker_t): boolean;
196
199
  world_tracker_world_anchor_pose_raw(o: zappar_world_tracker_t): Float32Array;
197
200
  world_tracker_ground_anchor_valid(o: zappar_world_tracker_t): boolean;
@@ -657,7 +657,7 @@ export class zappar_server {
657
657
  let serializer = this.serializersByPipelineId.get(pipeline);
658
658
  if (!serializer)
659
659
  continue;
660
- serializer.sendMessage(31, msg => {
660
+ serializer.sendMessage(34, msg => {
661
661
  msg.type(k);
662
662
  msg.int(this._impl.world_tracker_quality(v));
663
663
  });
@@ -672,43 +672,64 @@ export class zappar_server {
672
672
  msg.matrix4x4(this._impl.world_tracker_plane_pose_raw(v, i));
673
673
  });
674
674
  }
675
- serializer.sendMessage(27, msg => {
675
+ for (let i = 0; i < this._impl.world_tracker_plane_count(v); i++) {
676
+ serializer.sendMessage(27, msg => {
677
+ msg.type(k);
678
+ msg.int(i);
679
+ msg.bool(this._impl.world_tracker_plane_visible(v, i));
680
+ });
681
+ }
682
+ for (let i = 0; i < this._impl.world_tracker_plane_count(v); i++) {
683
+ serializer.sendMessage(28, msg => {
684
+ msg.type(k);
685
+ msg.int(i);
686
+ msg.int(this._impl.world_tracker_plane_polygon_data_size(v, i));
687
+ });
688
+ }
689
+ for (let i = 0; i < this._impl.world_tracker_plane_count(v); i++) {
690
+ serializer.sendMessage(29, msg => {
691
+ msg.type(k);
692
+ msg.int(i);
693
+ msg.floatArray(this._impl.world_tracker_plane_polygon_data(v, i));
694
+ });
695
+ }
696
+ serializer.sendMessage(30, msg => {
676
697
  msg.type(k);
677
698
  msg.bool(this._impl.world_tracker_world_anchor_valid(v));
678
699
  });
679
- serializer.sendMessage(28, msg => {
700
+ serializer.sendMessage(31, msg => {
680
701
  msg.type(k);
681
702
  msg.matrix4x4(this._impl.world_tracker_world_anchor_pose_raw(v));
682
703
  });
683
- serializer.sendMessage(27, msg => {
704
+ serializer.sendMessage(30, msg => {
684
705
  msg.type(k);
685
706
  msg.bool(this._impl.world_tracker_ground_anchor_valid(v));
686
707
  });
687
- serializer.sendMessage(30, msg => {
708
+ serializer.sendMessage(33, msg => {
688
709
  msg.type(k);
689
710
  msg.matrix4x4(this._impl.world_tracker_ground_anchor_pose_raw(v));
690
711
  });
691
- serializer.sendMessage(34, msg => {
712
+ serializer.sendMessage(37, msg => {
692
713
  msg.type(k);
693
714
  msg.int(this._impl.world_tracker_tracks_data_size(v));
694
715
  });
695
- serializer.sendMessage(33, msg => {
716
+ serializer.sendMessage(36, msg => {
696
717
  msg.type(k);
697
718
  msg.floatArray(this._impl.world_tracker_tracks_data(v));
698
719
  });
699
- serializer.sendMessage(36, msg => {
720
+ serializer.sendMessage(39, msg => {
700
721
  msg.type(k);
701
722
  msg.int(this._impl.world_tracker_tracks_type_data_size(v));
702
723
  });
703
- serializer.sendMessage(35, msg => {
724
+ serializer.sendMessage(38, msg => {
704
725
  msg.type(k);
705
726
  msg.ucharArray(this._impl.world_tracker_tracks_type_data(v));
706
727
  });
707
- serializer.sendMessage(39, msg => {
728
+ serializer.sendMessage(42, msg => {
708
729
  msg.type(k);
709
730
  msg.int(this._impl.world_tracker_projections_data_size(v));
710
731
  });
711
- serializer.sendMessage(38, msg => {
732
+ serializer.sendMessage(41, msg => {
712
733
  msg.type(k);
713
734
  msg.floatArray(this._impl.world_tracker_projections_data(v));
714
735
  });
@@ -209,8 +209,11 @@ export interface zappar {
209
209
  world_tracker_plane_detection_enabled_set(o: zappar_world_tracker_t, plane_detection_enabled: boolean): void;
210
210
  world_tracker_plane_count(o: zappar_world_tracker_t): number;
211
211
  world_tracker_plane_pose_raw(o: zappar_world_tracker_t, indx: number): Float32Array;
212
+ world_tracker_plane_visible(o: zappar_world_tracker_t, indx: number): boolean;
212
213
  world_tracker_plane_pose_camera_relative(o: zappar_world_tracker_t, indx: number, mirror: boolean): Float32Array;
213
214
  world_tracker_plane_pose(o: zappar_world_tracker_t, indx: number, camera_pose: Float32Array, mirror: boolean): Float32Array;
215
+ world_tracker_plane_polygon_data_size(o: zappar_world_tracker_t, indx: number): number;
216
+ world_tracker_plane_polygon_data(o: zappar_world_tracker_t, indx: number): Float32Array;
214
217
  world_tracker_world_anchor_valid(o: zappar_world_tracker_t): boolean;
215
218
  world_tracker_world_anchor_pose_raw(o: zappar_world_tracker_t): Float32Array;
216
219
  world_tracker_world_anchor_pose_camera_relative(o: zappar_world_tracker_t, mirror: boolean): Float32Array;
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "3.0.1-alpha.15";
1
+ export declare const VERSION = "3.0.1-alpha.16";
package/lib/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "3.0.1-alpha.15";
1
+ export const VERSION = "3.0.1-alpha.16";