@loaders.gl/pcd 4.0.0-alpha.4 → 4.0.0-alpha.6

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 (72) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +476 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/index.js +45 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/lib/decompress-lzf.js +57 -0
  10. package/dist/es5/lib/decompress-lzf.js.map +1 -0
  11. package/dist/es5/lib/get-pcd-schema.js +54 -0
  12. package/dist/es5/lib/get-pcd-schema.js.map +1 -0
  13. package/dist/es5/lib/parse-pcd.js +299 -0
  14. package/dist/es5/lib/parse-pcd.js.map +1 -0
  15. package/dist/es5/lib/pcd-types.js +2 -0
  16. package/dist/es5/lib/pcd-types.js.map +1 -0
  17. package/dist/es5/pcd-loader.js +21 -0
  18. package/dist/es5/pcd-loader.js.map +1 -0
  19. package/dist/es5/workers/pcd-worker.js +6 -0
  20. package/dist/es5/workers/pcd-worker.js.map +1 -0
  21. package/dist/esm/bundle.js +4 -0
  22. package/dist/esm/bundle.js.map +1 -0
  23. package/dist/esm/index.js +10 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/lib/decompress-lzf.js +51 -0
  26. package/dist/esm/lib/decompress-lzf.js.map +1 -0
  27. package/dist/esm/lib/get-pcd-schema.js +48 -0
  28. package/dist/esm/lib/get-pcd-schema.js.map +1 -0
  29. package/dist/esm/lib/parse-pcd.js +289 -0
  30. package/dist/esm/lib/parse-pcd.js.map +1 -0
  31. package/dist/esm/lib/pcd-types.js +2 -0
  32. package/dist/esm/lib/pcd-types.js.map +1 -0
  33. package/dist/esm/pcd-loader.js +14 -0
  34. package/dist/esm/pcd-loader.js.map +1 -0
  35. package/dist/esm/workers/pcd-worker.js +4 -0
  36. package/dist/esm/workers/pcd-worker.js.map +1 -0
  37. package/dist/index.d.ts +10 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +17 -8
  40. package/dist/lib/decompress-lzf.d.ts +8 -0
  41. package/dist/lib/decompress-lzf.d.ts.map +1 -0
  42. package/dist/lib/decompress-lzf.js +62 -0
  43. package/dist/lib/get-pcd-schema.d.ts +10 -0
  44. package/dist/lib/get-pcd-schema.d.ts.map +1 -0
  45. package/dist/lib/get-pcd-schema.js +32 -19
  46. package/dist/lib/parse-pcd.d.ts +8 -0
  47. package/dist/lib/parse-pcd.d.ts.map +1 -0
  48. package/dist/lib/parse-pcd.js +317 -223
  49. package/dist/lib/pcd-types.d.ts +31 -0
  50. package/dist/lib/pcd-types.d.ts.map +1 -0
  51. package/dist/lib/pcd-types.js +2 -2
  52. package/dist/pcd-loader.d.ts +7 -0
  53. package/dist/pcd-loader.d.ts.map +1 -0
  54. package/dist/pcd-loader.js +21 -14
  55. package/dist/pcd-worker.js +200 -439
  56. package/dist/workers/pcd-worker.d.ts +2 -0
  57. package/dist/workers/pcd-worker.d.ts.map +1 -0
  58. package/dist/workers/pcd-worker.js +5 -4
  59. package/package.json +9 -9
  60. package/src/index.ts +3 -2
  61. package/src/lib/decompress-lzf.ts +64 -0
  62. package/src/lib/get-pcd-schema.ts +15 -10
  63. package/src/lib/parse-pcd.ts +161 -12
  64. package/src/lib/pcd-types.ts +9 -9
  65. package/src/pcd-loader.ts +5 -4
  66. package/dist/bundle.js.map +0 -1
  67. package/dist/index.js.map +0 -1
  68. package/dist/lib/get-pcd-schema.js.map +0 -1
  69. package/dist/lib/parse-pcd.js.map +0 -1
  70. package/dist/lib/pcd-types.js.map +0 -1
  71. package/dist/pcd-loader.js.map +0 -1
  72. package/dist/workers/pcd-worker.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ declare const moduleExports: any;
2
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
package/dist/bundle.js CHANGED
@@ -1,5 +1,5 @@
1
+ "use strict";
2
+ // @ts-nocheck
1
3
  const moduleExports = require('./index');
2
-
3
4
  globalThis.loaders = globalThis.loaders || {};
4
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
- //# sourceMappingURL=bundle.js.map
@@ -0,0 +1,476 @@
1
+ (() => {
2
+ var __defProp = Object.defineProperty;
3
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
4
+ var __esm = (fn, res) => function __init() {
5
+ return fn && (res = (0, fn[Object.keys(fn)[0]])(fn = 0)), res;
6
+ };
7
+ var __commonJS = (cb, mod) => function __require() {
8
+ return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
+ };
10
+ var __export = (target, all) => {
11
+ __markAsModule(target);
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+
16
+ // ../schema/src/lib/mesh/mesh-utils.ts
17
+ function getMeshBoundingBox(attributes) {
18
+ let minX = Infinity;
19
+ let minY = Infinity;
20
+ let minZ = Infinity;
21
+ let maxX = -Infinity;
22
+ let maxY = -Infinity;
23
+ let maxZ = -Infinity;
24
+ const positions = attributes.POSITION ? attributes.POSITION.value : [];
25
+ const len = positions && positions.length;
26
+ for (let i = 0; i < len; i += 3) {
27
+ const x = positions[i];
28
+ const y = positions[i + 1];
29
+ const z = positions[i + 2];
30
+ minX = x < minX ? x : minX;
31
+ minY = y < minY ? y : minY;
32
+ minZ = z < minZ ? z : minZ;
33
+ maxX = x > maxX ? x : maxX;
34
+ maxY = y > maxY ? y : maxY;
35
+ maxZ = z > maxZ ? z : maxZ;
36
+ }
37
+ return [
38
+ [minX, minY, minZ],
39
+ [maxX, maxY, maxZ]
40
+ ];
41
+ }
42
+ var init_mesh_utils = __esm({
43
+ "../schema/src/lib/mesh/mesh-utils.ts"() {
44
+ }
45
+ });
46
+
47
+ // ../schema/src/index.ts
48
+ var init_src = __esm({
49
+ "../schema/src/index.ts"() {
50
+ init_mesh_utils();
51
+ }
52
+ });
53
+
54
+ // src/lib/decompress-lzf.ts
55
+ function decompressLZF(inData, outLength) {
56
+ const inLength = inData.length;
57
+ const outData = new Uint8Array(outLength);
58
+ let inPtr = 0;
59
+ let outPtr = 0;
60
+ let ctrl;
61
+ let len;
62
+ let ref;
63
+ do {
64
+ ctrl = inData[inPtr++];
65
+ if (ctrl < 1 << 5) {
66
+ ctrl++;
67
+ if (outPtr + ctrl > outLength) {
68
+ throw new Error("Output buffer is not large enough");
69
+ }
70
+ if (inPtr + ctrl > inLength) {
71
+ throw new Error("Invalid compressed data");
72
+ }
73
+ do {
74
+ outData[outPtr++] = inData[inPtr++];
75
+ } while (--ctrl);
76
+ } else {
77
+ len = ctrl >> 5;
78
+ ref = outPtr - ((ctrl & 31) << 8) - 1;
79
+ if (inPtr >= inLength) {
80
+ throw new Error("Invalid compressed data");
81
+ }
82
+ if (len === 7) {
83
+ len += inData[inPtr++];
84
+ if (inPtr >= inLength) {
85
+ throw new Error("Invalid compressed data");
86
+ }
87
+ }
88
+ ref -= inData[inPtr++];
89
+ if (outPtr + len + 2 > outLength) {
90
+ throw new Error("Output buffer is not large enough");
91
+ }
92
+ if (ref < 0) {
93
+ throw new Error("Invalid compressed data");
94
+ }
95
+ if (ref >= outPtr) {
96
+ throw new Error("Invalid compressed data");
97
+ }
98
+ do {
99
+ outData[outPtr++] = outData[ref++];
100
+ } while (--len + 2);
101
+ }
102
+ } while (inPtr < inLength);
103
+ return outData;
104
+ }
105
+ var init_decompress_lzf = __esm({
106
+ "src/lib/decompress-lzf.ts"() {
107
+ }
108
+ });
109
+
110
+ // src/lib/get-pcd-schema.ts
111
+ function getPCDSchema(PCDheader, metadata) {
112
+ const offset = PCDheader.offset;
113
+ const fields = [];
114
+ if (offset.x !== void 0) {
115
+ fields.push({
116
+ name: "POSITION",
117
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] }
118
+ });
119
+ }
120
+ if (offset.normal_x !== void 0) {
121
+ fields.push({
122
+ name: "NORMAL",
123
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] }
124
+ });
125
+ }
126
+ if (offset.rgb !== void 0) {
127
+ fields.push({
128
+ name: "COLOR_0",
129
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "rgb", type: "uint8" }] }
130
+ });
131
+ }
132
+ return { fields, metadata };
133
+ }
134
+ var init_get_pcd_schema = __esm({
135
+ "src/lib/get-pcd-schema.ts"() {
136
+ }
137
+ });
138
+
139
+ // src/lib/parse-pcd.ts
140
+ function parsePCD(data) {
141
+ const textData = new TextDecoder().decode(data);
142
+ const pcdHeader = parsePCDHeader(textData);
143
+ let attributes = {};
144
+ switch (pcdHeader.data) {
145
+ case "ascii":
146
+ attributes = parsePCDASCII(pcdHeader, textData);
147
+ break;
148
+ case "binary":
149
+ attributes = parsePCDBinary(pcdHeader, data);
150
+ break;
151
+ case "binary_compressed":
152
+ attributes = parsePCDBinaryCompressed(pcdHeader, data);
153
+ break;
154
+ default:
155
+ throw new Error(`PCD: ${pcdHeader.data} files are not supported`);
156
+ }
157
+ attributes = getMeshAttributes(attributes);
158
+ const header = getMeshHeader(pcdHeader, attributes);
159
+ const metadata = Object.fromEntries([
160
+ ["mode", "0"],
161
+ ["boundingBox", JSON.stringify(header.boundingBox)]
162
+ ]);
163
+ const schema = getPCDSchema(pcdHeader, metadata);
164
+ return {
165
+ loader: "pcd",
166
+ loaderData: pcdHeader,
167
+ header,
168
+ schema,
169
+ mode: 0,
170
+ topology: "point-list",
171
+ attributes
172
+ };
173
+ }
174
+ function getMeshHeader(pcdHeader, attributes) {
175
+ if (typeof pcdHeader.width === "number" && typeof pcdHeader.height === "number") {
176
+ const pointCount = pcdHeader.width * pcdHeader.height;
177
+ return {
178
+ vertexCount: pointCount,
179
+ boundingBox: getMeshBoundingBox(attributes)
180
+ };
181
+ }
182
+ return {
183
+ vertexCount: pcdHeader.vertexCount,
184
+ boundingBox: pcdHeader.boundingBox
185
+ };
186
+ }
187
+ function getMeshAttributes(attributes) {
188
+ const normalizedAttributes = {
189
+ POSITION: {
190
+ value: new Float32Array(attributes.position),
191
+ size: 3
192
+ }
193
+ };
194
+ if (attributes.normal && attributes.normal.length > 0) {
195
+ normalizedAttributes.NORMAL = {
196
+ value: new Float32Array(attributes.normal),
197
+ size: 3
198
+ };
199
+ }
200
+ if (attributes.color && attributes.color.length > 0) {
201
+ normalizedAttributes.COLOR_0 = {
202
+ value: new Uint8Array(attributes.color),
203
+ size: 3
204
+ };
205
+ }
206
+ if (attributes.intensity && attributes.intensity.length > 0) {
207
+ normalizedAttributes.COLOR_0 = {
208
+ value: new Uint8Array(attributes.color),
209
+ size: 3
210
+ };
211
+ }
212
+ if (attributes.label && attributes.label.length > 0) {
213
+ normalizedAttributes.COLOR_0 = {
214
+ value: new Uint8Array(attributes.label),
215
+ size: 3
216
+ };
217
+ }
218
+ return normalizedAttributes;
219
+ }
220
+ function parsePCDHeader(data) {
221
+ const result1 = data.search(/[\r\n]DATA\s(\S*)\s/i);
222
+ const result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
223
+ const pcdHeader = {};
224
+ pcdHeader.data = result2 && result2[1];
225
+ if (result2 !== null) {
226
+ pcdHeader.headerLen = (result2 && result2[0].length) + result1;
227
+ }
228
+ pcdHeader.str = data.substr(0, pcdHeader.headerLen);
229
+ pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, "");
230
+ pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
231
+ pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
232
+ pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
233
+ pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);
234
+ pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);
235
+ pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);
236
+ pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);
237
+ pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);
238
+ pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);
239
+ if (pcdHeader.version !== null) {
240
+ pcdHeader.version = parseFloat(pcdHeader.version[1]);
241
+ }
242
+ if (pcdHeader.fields !== null) {
243
+ pcdHeader.fields = pcdHeader.fields[1].split(" ");
244
+ }
245
+ if (pcdHeader.type !== null) {
246
+ pcdHeader.type = pcdHeader.type[1].split(" ");
247
+ }
248
+ if (pcdHeader.width !== null) {
249
+ pcdHeader.width = parseInt(pcdHeader.width[1], 10);
250
+ }
251
+ if (pcdHeader.height !== null) {
252
+ pcdHeader.height = parseInt(pcdHeader.height[1], 10);
253
+ }
254
+ if (pcdHeader.viewpoint !== null) {
255
+ pcdHeader.viewpoint = pcdHeader.viewpoint[1];
256
+ }
257
+ if (pcdHeader.points !== null) {
258
+ pcdHeader.points = parseInt(pcdHeader.points[1], 10);
259
+ }
260
+ if (pcdHeader.points === null && typeof pcdHeader.width === "number" && typeof pcdHeader.height === "number") {
261
+ pcdHeader.points = pcdHeader.width * pcdHeader.height;
262
+ }
263
+ if (pcdHeader.size !== null) {
264
+ pcdHeader.size = pcdHeader.size[1].split(" ").map((x) => parseInt(x, 10));
265
+ }
266
+ if (pcdHeader.count !== null) {
267
+ pcdHeader.count = pcdHeader.count[1].split(" ").map((x) => parseInt(x, 10));
268
+ } else {
269
+ pcdHeader.count = [];
270
+ if (pcdHeader.fields !== null) {
271
+ for (let i = 0; i < pcdHeader.fields.length; i++) {
272
+ pcdHeader.count.push(1);
273
+ }
274
+ }
275
+ }
276
+ pcdHeader.offset = {};
277
+ let sizeSum = 0;
278
+ if (pcdHeader.fields !== null && pcdHeader.size !== null) {
279
+ for (let i = 0; i < pcdHeader.fields.length; i++) {
280
+ if (pcdHeader.data === "ascii") {
281
+ pcdHeader.offset[pcdHeader.fields[i]] = i;
282
+ } else {
283
+ pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;
284
+ sizeSum += pcdHeader.size[i];
285
+ }
286
+ }
287
+ }
288
+ pcdHeader.rowSize = sizeSum;
289
+ return pcdHeader;
290
+ }
291
+ function parsePCDASCII(pcdHeader, textData) {
292
+ const position = [];
293
+ const normal = [];
294
+ const color = [];
295
+ const intensity = [];
296
+ const label = [];
297
+ const offset = pcdHeader.offset;
298
+ const pcdData = textData.substr(pcdHeader.headerLen);
299
+ const lines = pcdData.split("\n");
300
+ for (let i = 0; i < lines.length; i++) {
301
+ if (lines[i] !== "") {
302
+ const line = lines[i].split(" ");
303
+ if (offset.x !== void 0) {
304
+ position.push(parseFloat(line[offset.x]));
305
+ position.push(parseFloat(line[offset.y]));
306
+ position.push(parseFloat(line[offset.z]));
307
+ }
308
+ if (offset.rgb !== void 0) {
309
+ const floatValue = parseFloat(line[offset.rgb]);
310
+ const binaryColor = new Float32Array([floatValue]);
311
+ const dataview = new DataView(binaryColor.buffer, 0);
312
+ color.push(dataview.getUint8(0));
313
+ color.push(dataview.getUint8(1));
314
+ color.push(dataview.getUint8(2));
315
+ }
316
+ if (offset.normal_x !== void 0) {
317
+ normal.push(parseFloat(line[offset.normal_x]));
318
+ normal.push(parseFloat(line[offset.normal_y]));
319
+ normal.push(parseFloat(line[offset.normal_z]));
320
+ }
321
+ if (offset.intensity !== void 0) {
322
+ intensity.push(parseFloat(line[offset.intensity]));
323
+ }
324
+ if (offset.label !== void 0) {
325
+ label.push(parseInt(line[offset.label]));
326
+ }
327
+ }
328
+ }
329
+ return { position, normal, color };
330
+ }
331
+ function parsePCDBinary(pcdHeader, data) {
332
+ const position = [];
333
+ const normal = [];
334
+ const color = [];
335
+ const intensity = [];
336
+ const label = [];
337
+ const dataview = new DataView(data, pcdHeader.headerLen);
338
+ const offset = pcdHeader.offset;
339
+ for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
340
+ if (offset.x !== void 0) {
341
+ position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
342
+ position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
343
+ position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));
344
+ }
345
+ if (offset.rgb !== void 0) {
346
+ color.push(dataview.getUint8(row + offset.rgb + 0));
347
+ color.push(dataview.getUint8(row + offset.rgb + 1));
348
+ color.push(dataview.getUint8(row + offset.rgb + 2));
349
+ }
350
+ if (offset.normal_x !== void 0) {
351
+ normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));
352
+ normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
353
+ normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
354
+ }
355
+ if (offset.intensity !== void 0) {
356
+ intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));
357
+ }
358
+ if (offset.label !== void 0) {
359
+ label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));
360
+ }
361
+ }
362
+ return { position, normal, color, intensity, label };
363
+ }
364
+ function parsePCDBinaryCompressed(pcdHeader, data) {
365
+ const position = [];
366
+ const normal = [];
367
+ const color = [];
368
+ const intensity = [];
369
+ const label = [];
370
+ const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
371
+ const compressedSize = sizes[0];
372
+ const decompressedSize = sizes[1];
373
+ const decompressed = decompressLZF(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
374
+ const dataview = new DataView(decompressed.buffer);
375
+ const offset = pcdHeader.offset;
376
+ for (let i = 0; i < pcdHeader.points; i++) {
377
+ if (offset.x !== void 0) {
378
+ position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
379
+ position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
380
+ position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));
381
+ }
382
+ if (offset.rgb !== void 0) {
383
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255);
384
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255);
385
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255);
386
+ }
387
+ if (offset.normal_x !== void 0) {
388
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));
389
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));
390
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
391
+ }
392
+ if (offset.intensity !== void 0) {
393
+ const intensityIndex = pcdHeader.fields.indexOf("intensity");
394
+ intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
395
+ }
396
+ if (offset.label !== void 0) {
397
+ const labelIndex = pcdHeader.fields.indexOf("label");
398
+ label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
399
+ }
400
+ }
401
+ return {
402
+ position,
403
+ normal,
404
+ color,
405
+ intensity,
406
+ label
407
+ };
408
+ }
409
+ var LITTLE_ENDIAN;
410
+ var init_parse_pcd = __esm({
411
+ "src/lib/parse-pcd.ts"() {
412
+ init_src();
413
+ init_decompress_lzf();
414
+ init_get_pcd_schema();
415
+ LITTLE_ENDIAN = true;
416
+ }
417
+ });
418
+
419
+ // src/pcd-loader.ts
420
+ var VERSION, PCDLoader;
421
+ var init_pcd_loader = __esm({
422
+ "src/pcd-loader.ts"() {
423
+ VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
424
+ PCDLoader = {
425
+ name: "PCD (Point Cloud Data)",
426
+ id: "pcd",
427
+ module: "pcd",
428
+ version: VERSION,
429
+ worker: true,
430
+ extensions: ["pcd"],
431
+ mimeTypes: ["text/plain"],
432
+ options: {
433
+ pcd: {}
434
+ }
435
+ };
436
+ }
437
+ });
438
+
439
+ // src/index.ts
440
+ var src_exports = {};
441
+ __export(src_exports, {
442
+ PCDLoader: () => PCDLoader2,
443
+ PCDWorkerLoader: () => PCDLoader,
444
+ _typecheckPCDLoader: () => _typecheckPCDLoader
445
+ });
446
+ var PCDLoader2, _typecheckPCDLoader;
447
+ var init_src2 = __esm({
448
+ "src/index.ts"() {
449
+ init_parse_pcd();
450
+ init_pcd_loader();
451
+ PCDLoader2 = {
452
+ ...PCDLoader,
453
+ parse: async (arrayBuffer) => parsePCD(arrayBuffer),
454
+ parseSync: parsePCD
455
+ };
456
+ _typecheckPCDLoader = PCDLoader2;
457
+ }
458
+ });
459
+
460
+ // src/bundle.ts
461
+ var require_bundle = __commonJS({
462
+ "src/bundle.ts"(exports, module) {
463
+ var moduleExports = (init_src2(), src_exports);
464
+ globalThis.loaders = globalThis.loaders || {};
465
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
466
+ }
467
+ });
468
+ require_bundle();
469
+ })();
470
+ /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
471
+ * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
472
+ * @license MIT (http://opensource.org/licenses/MIT)
473
+ * @param pcdHeader
474
+ * @param data
475
+ * @returns [attributes]
476
+ */
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ var moduleExports = require('./index');
4
+ globalThis.loaders = globalThis.loaders || {};
5
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
6
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PCDLoader = void 0;
8
+ Object.defineProperty(exports, "PCDWorkerLoader", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _pcdLoader.PCDLoader;
12
+ }
13
+ });
14
+ exports._typecheckPCDLoader = void 0;
15
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
16
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+ var _parsePcd = _interopRequireDefault(require("./lib/parse-pcd"));
19
+ var _pcdLoader = require("./pcd-loader");
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+ var PCDLoader = _objectSpread(_objectSpread({}, _pcdLoader.PCDLoader), {}, {
23
+ parse: function () {
24
+ var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
25
+ return _regenerator.default.wrap(function _callee$(_context) {
26
+ while (1) switch (_context.prev = _context.next) {
27
+ case 0:
28
+ return _context.abrupt("return", (0, _parsePcd.default)(arrayBuffer));
29
+ case 1:
30
+ case "end":
31
+ return _context.stop();
32
+ }
33
+ }, _callee);
34
+ }));
35
+ function parse(_x) {
36
+ return _parse.apply(this, arguments);
37
+ }
38
+ return parse;
39
+ }(),
40
+ parseSync: _parsePcd.default
41
+ });
42
+ exports.PCDLoader = PCDLoader;
43
+ var _typecheckPCDLoader = PCDLoader;
44
+ exports._typecheckPCDLoader = _typecheckPCDLoader;
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_parsePcd","_interopRequireDefault","require","_pcdLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","PCDLoader","PCDWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parsePCDSync","stop","_x","parseSync","exports","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\nimport {PCDMesh} from './lib/pcd-types';\n\nexport {PCDWorkerLoader};\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader: LoaderWithParser<PCDMesh, never, LoaderOptions> = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),\n parseSync: parsePCDSync\n};\n\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAA0D,SAAAE,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAQnD,IAAMY,SAA0D,GAAAb,aAAA,CAAAA,aAAA,KAClEc,oBAAe;EAClBC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAR,OAAA,EAAAS,YAAA,CAAAT,OAAA,CAAAU,IAAA,CAAE,SAAAC,QAAOC,WAAW;MAAA,OAAAH,YAAA,CAAAT,OAAA,CAAAa,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,iBAAY,EAACP,WAAW,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAT,OAAA;IAAA;IAAA,SAAAL,MAAAe,EAAA;MAAA,OAAAd,MAAA,CAAAjB,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAY,KAAA;EAAA;EACvDgB,SAAS,EAAEH;AAAY,EACxB;AAACI,OAAA,CAAAnB,SAAA,GAAAA,SAAA;AAEK,IAAMoB,mBAAqC,GAAGpB,SAAS;AAACmB,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.decompressLZF = decompressLZF;
7
+ function decompressLZF(inData, outLength) {
8
+ var inLength = inData.length;
9
+ var outData = new Uint8Array(outLength);
10
+ var inPtr = 0;
11
+ var outPtr = 0;
12
+ var ctrl;
13
+ var len;
14
+ var ref;
15
+ do {
16
+ ctrl = inData[inPtr++];
17
+ if (ctrl < 1 << 5) {
18
+ ctrl++;
19
+ if (outPtr + ctrl > outLength) {
20
+ throw new Error('Output buffer is not large enough');
21
+ }
22
+ if (inPtr + ctrl > inLength) {
23
+ throw new Error('Invalid compressed data');
24
+ }
25
+ do {
26
+ outData[outPtr++] = inData[inPtr++];
27
+ } while (--ctrl);
28
+ } else {
29
+ len = ctrl >> 5;
30
+ ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
31
+ if (inPtr >= inLength) {
32
+ throw new Error('Invalid compressed data');
33
+ }
34
+ if (len === 7) {
35
+ len += inData[inPtr++];
36
+ if (inPtr >= inLength) {
37
+ throw new Error('Invalid compressed data');
38
+ }
39
+ }
40
+ ref -= inData[inPtr++];
41
+ if (outPtr + len + 2 > outLength) {
42
+ throw new Error('Output buffer is not large enough');
43
+ }
44
+ if (ref < 0) {
45
+ throw new Error('Invalid compressed data');
46
+ }
47
+ if (ref >= outPtr) {
48
+ throw new Error('Invalid compressed data');
49
+ }
50
+ do {
51
+ outData[outPtr++] = outData[ref++];
52
+ } while (--len + 2);
53
+ }
54
+ } while (inPtr < inLength);
55
+ return outData;
56
+ }
57
+ //# sourceMappingURL=decompress-lzf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decompress-lzf.js","names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"sources":["../../../src/lib/decompress-lzf.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData: Uint8Array, outLength: number): Uint8Array {\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n\n do {\n ctrl = inData[inPtr++];\n\n if (ctrl < 1 << 5) {\n ctrl++;\n if (outPtr + ctrl > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (inPtr + ctrl > inLength) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\n }\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) {\n throw new Error('Output buffer is not large enough');\n }\n if (ref < 0) {\n throw new Error('Invalid compressed data');\n }\n if (ref >= outPtr) {\n throw new Error('Invalid compressed data');\n }\n\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n\n return outData;\n}\n"],"mappings":";;;;;;AAOO,SAASA,aAAaA,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,IAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM;EAC9B,IAAMC,OAAO,GAAG,IAAIC,UAAU,CAACJ,SAAS,CAAC;EACzC,IAAIK,KAAK,GAAG,CAAC;EACb,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,IAAI;EACR,IAAIC,GAAG;EACP,IAAIC,GAAG;EAEP,GAAG;IACDF,IAAI,GAAGR,MAAM,CAACM,KAAK,EAAE,CAAC;IAEtB,IAAIE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;MACjBA,IAAI,EAAE;MACN,IAAID,MAAM,GAAGC,IAAI,GAAGP,SAAS,EAAE;QAC7B,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAIL,KAAK,GAAGE,IAAI,GAAGN,QAAQ,EAAE;QAC3B,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGP,MAAM,CAACM,KAAK,EAAE,CAAC;MACrC,CAAC,QAAQ,EAAEE,IAAI;IACjB,CAAC,MAAM;MACLC,GAAG,GAAGD,IAAI,IAAI,CAAC;MACfE,GAAG,GAAGH,MAAM,IAAI,CAACC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;MACvC,IAAIF,KAAK,IAAIJ,QAAQ,EAAE;QACrB,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,IAAIF,GAAG,KAAK,CAAC,EAAE;QACbA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAE,CAAC;QACtB,IAAIA,KAAK,IAAIJ,QAAQ,EAAE;UACrB,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;QAC5C;MACF;MAEAD,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAE,CAAC;MACtB,IAAIC,MAAM,GAAGE,GAAG,GAAG,CAAC,GAAGR,SAAS,EAAE;QAChC,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtD;MACA,IAAID,GAAG,GAAG,CAAC,EAAE;QACX,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MACA,IAAID,GAAG,IAAIH,MAAM,EAAE;QACjB,MAAM,IAAII,KAAK,CAAC,yBAAyB,CAAC;MAC5C;MAEA,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGH,OAAO,CAACM,GAAG,EAAE,CAAC;MACpC,CAAC,QAAQ,EAAED,GAAG,GAAG,CAAC;IACpB;EACF,CAAC,QAAQH,KAAK,GAAGJ,QAAQ;EAEzB,OAAOE,OAAO;AAChB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getPCDSchema = getPCDSchema;
7
+ function getPCDSchema(PCDheader, metadata) {
8
+ var offset = PCDheader.offset;
9
+ var fields = [];
10
+ if (offset.x !== undefined) {
11
+ fields.push({
12
+ name: 'POSITION',
13
+ type: {
14
+ type: 'fixed-size-list',
15
+ listSize: 3,
16
+ children: [{
17
+ name: 'xyz',
18
+ type: 'float32'
19
+ }]
20
+ }
21
+ });
22
+ }
23
+ if (offset.normal_x !== undefined) {
24
+ fields.push({
25
+ name: 'NORMAL',
26
+ type: {
27
+ type: 'fixed-size-list',
28
+ listSize: 3,
29
+ children: [{
30
+ name: 'xyz',
31
+ type: 'float32'
32
+ }]
33
+ }
34
+ });
35
+ }
36
+ if (offset.rgb !== undefined) {
37
+ fields.push({
38
+ name: 'COLOR_0',
39
+ type: {
40
+ type: 'fixed-size-list',
41
+ listSize: 3,
42
+ children: [{
43
+ name: 'rgb',
44
+ type: 'uint8'
45
+ }]
46
+ }
47
+ });
48
+ }
49
+ return {
50
+ fields: fields,
51
+ metadata: metadata
52
+ };
53
+ }
54
+ //# sourceMappingURL=get-pcd-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-pcd-schema.js","names":["getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","name","type","listSize","children","normal_x","rgb"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: Record<string, string>): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push({\n name: 'POSITION',\n type: {type: 'fixed-size-list', listSize: 3, children: [{name: 'xyz', type: 'float32'}]}\n });\n }\n\n if (offset.normal_x !== undefined) {\n fields.push({\n name: 'NORMAL',\n type: {type: 'fixed-size-list', listSize: 3, children: [{name: 'xyz', type: 'float32'}]}\n });\n }\n\n if (offset.rgb !== undefined) {\n fields.push({\n name: 'COLOR_0',\n type: {type: 'fixed-size-list', listSize: 3, children: [{name: 'rgb', type: 'uint8'}]}\n });\n }\n\n return {fields, metadata};\n}\n"],"mappings":";;;;;;AASO,SAASA,YAAYA,CAACC,SAAoB,EAAEC,QAAgC,EAAU;EAC3F,IAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,IAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CAAC;MACVC,IAAI,EAAE,UAAU;MAChBC,IAAI,EAAE;QAACA,IAAI,EAAE,iBAAiB;QAAEC,QAAQ,EAAE,CAAC;QAAEC,QAAQ,EAAE,CAAC;UAACH,IAAI,EAAE,KAAK;UAAEC,IAAI,EAAE;QAAS,CAAC;MAAC;IACzF,CAAC,CAAC;EACJ;EAEA,IAAIN,MAAM,CAACS,QAAQ,KAAKN,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC;MACVC,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE;QAACA,IAAI,EAAE,iBAAiB;QAAEC,QAAQ,EAAE,CAAC;QAAEC,QAAQ,EAAE,CAAC;UAACH,IAAI,EAAE,KAAK;UAAEC,IAAI,EAAE;QAAS,CAAC;MAAC;IACzF,CAAC,CAAC;EACJ;EAEA,IAAIN,MAAM,CAACU,GAAG,KAAKP,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC;MACVC,IAAI,EAAE,SAAS;MACfC,IAAI,EAAE;QAACA,IAAI,EAAE,iBAAiB;QAAEC,QAAQ,EAAE,CAAC;QAAEC,QAAQ,EAAE,CAAC;UAACH,IAAI,EAAE,KAAK;UAAEC,IAAI,EAAE;QAAO,CAAC;MAAC;IACvF,CAAC,CAAC;EACJ;EAEA,OAAO;IAACL,MAAM,EAANA,MAAM;IAAEF,QAAQ,EAARA;EAAQ,CAAC;AAC3B"}