@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,299 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = parsePCD;
7
+ var _schema = require("@loaders.gl/schema");
8
+ var _decompressLzf = require("./decompress-lzf");
9
+ var _getPcdSchema = require("./get-pcd-schema");
10
+ var LITTLE_ENDIAN = true;
11
+ function parsePCD(data) {
12
+ var textData = new TextDecoder().decode(data);
13
+ var pcdHeader = parsePCDHeader(textData);
14
+ var attributes = {};
15
+ switch (pcdHeader.data) {
16
+ case 'ascii':
17
+ attributes = parsePCDASCII(pcdHeader, textData);
18
+ break;
19
+ case 'binary':
20
+ attributes = parsePCDBinary(pcdHeader, data);
21
+ break;
22
+ case 'binary_compressed':
23
+ attributes = parsePCDBinaryCompressed(pcdHeader, data);
24
+ break;
25
+ default:
26
+ throw new Error("PCD: ".concat(pcdHeader.data, " files are not supported"));
27
+ }
28
+ attributes = getMeshAttributes(attributes);
29
+ var header = getMeshHeader(pcdHeader, attributes);
30
+ var metadata = Object.fromEntries([['mode', '0'], ['boundingBox', JSON.stringify(header.boundingBox)]]);
31
+ var schema = (0, _getPcdSchema.getPCDSchema)(pcdHeader, metadata);
32
+ return {
33
+ loader: 'pcd',
34
+ loaderData: pcdHeader,
35
+ header: header,
36
+ schema: schema,
37
+ mode: 0,
38
+ topology: 'point-list',
39
+ attributes: attributes
40
+ };
41
+ }
42
+ function getMeshHeader(pcdHeader, attributes) {
43
+ if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
44
+ var pointCount = pcdHeader.width * pcdHeader.height;
45
+ return {
46
+ vertexCount: pointCount,
47
+ boundingBox: (0, _schema.getMeshBoundingBox)(attributes)
48
+ };
49
+ }
50
+ return {
51
+ vertexCount: pcdHeader.vertexCount,
52
+ boundingBox: pcdHeader.boundingBox
53
+ };
54
+ }
55
+ function getMeshAttributes(attributes) {
56
+ var normalizedAttributes = {
57
+ POSITION: {
58
+ value: new Float32Array(attributes.position),
59
+ size: 3
60
+ }
61
+ };
62
+ if (attributes.normal && attributes.normal.length > 0) {
63
+ normalizedAttributes.NORMAL = {
64
+ value: new Float32Array(attributes.normal),
65
+ size: 3
66
+ };
67
+ }
68
+ if (attributes.color && attributes.color.length > 0) {
69
+ normalizedAttributes.COLOR_0 = {
70
+ value: new Uint8Array(attributes.color),
71
+ size: 3
72
+ };
73
+ }
74
+ if (attributes.intensity && attributes.intensity.length > 0) {
75
+ normalizedAttributes.COLOR_0 = {
76
+ value: new Uint8Array(attributes.color),
77
+ size: 3
78
+ };
79
+ }
80
+ if (attributes.label && attributes.label.length > 0) {
81
+ normalizedAttributes.COLOR_0 = {
82
+ value: new Uint8Array(attributes.label),
83
+ size: 3
84
+ };
85
+ }
86
+ return normalizedAttributes;
87
+ }
88
+ function parsePCDHeader(data) {
89
+ var result1 = data.search(/[\r\n]DATA\s(\S*)\s/i);
90
+ var result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
91
+ var pcdHeader = {};
92
+ pcdHeader.data = result2 && result2[1];
93
+ if (result2 !== null) {
94
+ pcdHeader.headerLen = (result2 && result2[0].length) + result1;
95
+ }
96
+ pcdHeader.str = data.substr(0, pcdHeader.headerLen);
97
+ pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, '');
98
+ pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
99
+ pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
100
+ pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
101
+ pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);
102
+ pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);
103
+ pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);
104
+ pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);
105
+ pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);
106
+ pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);
107
+ if (pcdHeader.version !== null) {
108
+ pcdHeader.version = parseFloat(pcdHeader.version[1]);
109
+ }
110
+ if (pcdHeader.fields !== null) {
111
+ pcdHeader.fields = pcdHeader.fields[1].split(' ');
112
+ }
113
+ if (pcdHeader.type !== null) {
114
+ pcdHeader.type = pcdHeader.type[1].split(' ');
115
+ }
116
+ if (pcdHeader.width !== null) {
117
+ pcdHeader.width = parseInt(pcdHeader.width[1], 10);
118
+ }
119
+ if (pcdHeader.height !== null) {
120
+ pcdHeader.height = parseInt(pcdHeader.height[1], 10);
121
+ }
122
+ if (pcdHeader.viewpoint !== null) {
123
+ pcdHeader.viewpoint = pcdHeader.viewpoint[1];
124
+ }
125
+ if (pcdHeader.points !== null) {
126
+ pcdHeader.points = parseInt(pcdHeader.points[1], 10);
127
+ }
128
+ if (pcdHeader.points === null && typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
129
+ pcdHeader.points = pcdHeader.width * pcdHeader.height;
130
+ }
131
+ if (pcdHeader.size !== null) {
132
+ pcdHeader.size = pcdHeader.size[1].split(' ').map(function (x) {
133
+ return parseInt(x, 10);
134
+ });
135
+ }
136
+ if (pcdHeader.count !== null) {
137
+ pcdHeader.count = pcdHeader.count[1].split(' ').map(function (x) {
138
+ return parseInt(x, 10);
139
+ });
140
+ } else {
141
+ pcdHeader.count = [];
142
+ if (pcdHeader.fields !== null) {
143
+ for (var i = 0; i < pcdHeader.fields.length; i++) {
144
+ pcdHeader.count.push(1);
145
+ }
146
+ }
147
+ }
148
+ pcdHeader.offset = {};
149
+ var sizeSum = 0;
150
+ if (pcdHeader.fields !== null && pcdHeader.size !== null) {
151
+ for (var _i = 0; _i < pcdHeader.fields.length; _i++) {
152
+ if (pcdHeader.data === 'ascii') {
153
+ pcdHeader.offset[pcdHeader.fields[_i]] = _i;
154
+ } else {
155
+ pcdHeader.offset[pcdHeader.fields[_i]] = sizeSum;
156
+ sizeSum += pcdHeader.size[_i];
157
+ }
158
+ }
159
+ }
160
+ pcdHeader.rowSize = sizeSum;
161
+ return pcdHeader;
162
+ }
163
+ function parsePCDASCII(pcdHeader, textData) {
164
+ var position = [];
165
+ var normal = [];
166
+ var color = [];
167
+ var intensity = [];
168
+ var label = [];
169
+ var offset = pcdHeader.offset;
170
+ var pcdData = textData.substr(pcdHeader.headerLen);
171
+ var lines = pcdData.split('\n');
172
+ for (var i = 0; i < lines.length; i++) {
173
+ if (lines[i] !== '') {
174
+ var line = lines[i].split(' ');
175
+ if (offset.x !== undefined) {
176
+ position.push(parseFloat(line[offset.x]));
177
+ position.push(parseFloat(line[offset.y]));
178
+ position.push(parseFloat(line[offset.z]));
179
+ }
180
+ if (offset.rgb !== undefined) {
181
+ var floatValue = parseFloat(line[offset.rgb]);
182
+ var binaryColor = new Float32Array([floatValue]);
183
+ var dataview = new DataView(binaryColor.buffer, 0);
184
+ color.push(dataview.getUint8(0));
185
+ color.push(dataview.getUint8(1));
186
+ color.push(dataview.getUint8(2));
187
+ }
188
+ if (offset.normal_x !== undefined) {
189
+ normal.push(parseFloat(line[offset.normal_x]));
190
+ normal.push(parseFloat(line[offset.normal_y]));
191
+ normal.push(parseFloat(line[offset.normal_z]));
192
+ }
193
+ if (offset.intensity !== undefined) {
194
+ intensity.push(parseFloat(line[offset.intensity]));
195
+ }
196
+ if (offset.label !== undefined) {
197
+ label.push(parseInt(line[offset.label]));
198
+ }
199
+ }
200
+ }
201
+ return {
202
+ position: position,
203
+ normal: normal,
204
+ color: color
205
+ };
206
+ }
207
+ function parsePCDBinary(pcdHeader, data) {
208
+ var position = [];
209
+ var normal = [];
210
+ var color = [];
211
+ var intensity = [];
212
+ var label = [];
213
+ var dataview = new DataView(data, pcdHeader.headerLen);
214
+ var offset = pcdHeader.offset;
215
+ for (var i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
216
+ if (offset.x !== undefined) {
217
+ position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
218
+ position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
219
+ position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));
220
+ }
221
+ if (offset.rgb !== undefined) {
222
+ color.push(dataview.getUint8(row + offset.rgb + 0));
223
+ color.push(dataview.getUint8(row + offset.rgb + 1));
224
+ color.push(dataview.getUint8(row + offset.rgb + 2));
225
+ }
226
+ if (offset.normal_x !== undefined) {
227
+ normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));
228
+ normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
229
+ normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
230
+ }
231
+ if (offset.intensity !== undefined) {
232
+ intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));
233
+ }
234
+ if (offset.label !== undefined) {
235
+ label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));
236
+ }
237
+ }
238
+ return {
239
+ position: position,
240
+ normal: normal,
241
+ color: color,
242
+ intensity: intensity,
243
+ label: label
244
+ };
245
+ }
246
+
247
+ /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
248
+ * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
249
+ * @license MIT (http://opensource.org/licenses/MIT)
250
+ * @param pcdHeader
251
+ * @param data
252
+ * @returns [attributes]
253
+ */
254
+ function parsePCDBinaryCompressed(pcdHeader, data) {
255
+ var position = [];
256
+ var normal = [];
257
+ var color = [];
258
+ var intensity = [];
259
+ var label = [];
260
+ var sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
261
+ var compressedSize = sizes[0];
262
+ var decompressedSize = sizes[1];
263
+ var decompressed = (0, _decompressLzf.decompressLZF)(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
264
+ var dataview = new DataView(decompressed.buffer);
265
+ var offset = pcdHeader.offset;
266
+ for (var i = 0; i < pcdHeader.points; i++) {
267
+ if (offset.x !== undefined) {
268
+ position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
269
+ position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
270
+ position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));
271
+ }
272
+ if (offset.rgb !== undefined) {
273
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0);
274
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0);
275
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0);
276
+ }
277
+ if (offset.normal_x !== undefined) {
278
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));
279
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));
280
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
281
+ }
282
+ if (offset.intensity !== undefined) {
283
+ var intensityIndex = pcdHeader.fields.indexOf('intensity');
284
+ intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
285
+ }
286
+ if (offset.label !== undefined) {
287
+ var labelIndex = pcdHeader.fields.indexOf('label');
288
+ label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
289
+ }
290
+ }
291
+ return {
292
+ position: position,
293
+ normal: normal,
294
+ color: color,
295
+ intensity: intensity,
296
+ label: label
297
+ };
298
+ }
299
+ //# sourceMappingURL=parse-pcd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-pcd.js","names":["_schema","require","_decompressLzf","_getPcdSchema","LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","concat","getMeshAttributes","header","getMeshHeader","metadata","Object","fromEntries","JSON","stringify","boundingBox","schema","getPCDSchema","loader","loaderData","mode","topology","width","height","pointCount","vertexCount","getMeshBoundingBox","normalizedAttributes","POSITION","value","Float32Array","position","size","normal","length","NORMAL","color","COLOR_0","Uint8Array","intensity","label","result1","search","result2","exec","substr","headerLen","str","replace","version","fields","type","count","viewpoint","points","parseFloat","split","parseInt","map","x","i","push","offset","sizeSum","rowSize","pcdData","lines","line","undefined","y","z","rgb","floatValue","binaryColor","dataview","DataView","buffer","getUint8","normal_x","normal_y","normal_z","row","getFloat32","getInt32","sizes","Uint32Array","slice","compressedSize","decompressedSize","decompressed","decompressLZF","intensityIndex","indexOf","labelIndex"],"sources":["../../../src/lib/parse-pcd.ts"],"sourcesContent":["// PCD Loader, adapted from THREE.js (MIT license)\n// Description: A loader for PCD ascii and binary files.\n// Limitations: Compressed binary files are not supported.\n//\n// Attributions per original THREE.js source file:\n// @author Filipe Caixeta / http://filipecaixeta.com.br\n// @author Mugen87 / https://github.com/Mugen87\n\nimport {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {decompressLZF} from './decompress-lzf';\nimport {getPCDSchema} from './get-pcd-schema';\nimport type {PCDHeader, PCDMesh} from './pcd-types';\n\ntype MeshHeader = {\n vertexCount: number;\n boundingBox: [[number, number, number], [number, number, number]];\n};\n\ntype NormalizedAttributes = {\n POSITION: {\n value: Float32Array;\n size: number;\n };\n NORMAL?: {\n value: Float32Array;\n size: number;\n };\n COLOR_0?: {\n value: Uint8Array;\n size: number;\n };\n};\n\ntype HeaderAttributes = {\n [attributeName: string]: number[];\n};\n\nconst LITTLE_ENDIAN: boolean = true;\n\n/**\n *\n * @param data\n * @returns\n */\nexport default function parsePCD(data: ArrayBufferLike): PCDMesh {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n let attributes: any = {};\n\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n\n attributes = getMeshAttributes(attributes);\n\n const header = getMeshHeader(pcdHeader, attributes);\n\n const metadata = Object.fromEntries([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loader: 'pcd',\n loaderData: pcdHeader,\n header,\n schema,\n mode: 0, // POINTS\n topology: 'point-list',\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): MeshHeader {\n if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {\n const pointCount = pcdHeader.width * pcdHeader.height; // Supports \"organized\" point sets\n return {\n vertexCount: pointCount,\n boundingBox: getMeshBoundingBox(attributes)\n };\n }\n return {\n vertexCount: pcdHeader.vertexCount,\n boundingBox: pcdHeader.boundingBox\n };\n}\n\n/**\n * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes: HeaderAttributes): {[attributeName: string]: MeshAttribute} {\n const normalizedAttributes: MeshAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\n }\n };\n\n if (attributes.normal && attributes.normal.length > 0) {\n normalizedAttributes.NORMAL = {\n value: new Float32Array(attributes.normal),\n size: 3\n };\n }\n\n if (attributes.color && attributes.color.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.intensity && attributes.intensity.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n if (attributes.label && attributes.label.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.label),\n size: 3\n };\n }\n\n return normalizedAttributes;\n}\n\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data: string): PCDHeader {\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n\n const pcdHeader: any = {};\n pcdHeader.data = result2 && result2[1];\n if (result2 !== null) {\n pcdHeader.headerLen = (result2 && result2[0].length) + result1;\n }\n pcdHeader.str = data.substr(0, pcdHeader.headerLen);\n\n // remove comments\n\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n\n // parse\n\n pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);\n pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);\n pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);\n pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);\n pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);\n pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);\n pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);\n pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);\n pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);\n\n // evaluate\n\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n\n if (\n pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number'\n ) {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n } else {\n pcdHeader.count = [];\n if (pcdHeader.fields !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n pcdHeader.count.push(1);\n }\n }\n }\n\n pcdHeader.offset = {};\n\n let sizeSum = 0;\n if (pcdHeader.fields !== null && pcdHeader.size !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n if (pcdHeader.data === 'ascii') {\n pcdHeader.offset[pcdHeader.fields[i]] = i;\n } else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n\n // for binary only\n pcdHeader.rowSize = sizeSum;\n\n return pcdHeader;\n}\n\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDASCII(pcdHeader: PCDHeader, textData: string): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n position.push(parseFloat(line[offset.x]));\n position.push(parseFloat(line[offset.y]));\n position.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const floatValue = parseFloat(line[offset.rgb]);\n const binaryColor = new Float32Array([floatValue]);\n const dataview = new DataView(binaryColor.buffer, 0);\n color.push(dataview.getUint8(0));\n color.push(dataview.getUint8(1));\n color.push(dataview.getUint8(2));\n // TODO - handle alpha channel / RGBA?\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(parseFloat(line[offset.normal_x]));\n normal.push(parseFloat(line[offset.normal_y]));\n normal.push(parseFloat(line[offset.normal_z]));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(parseFloat(line[offset.intensity]));\n }\n\n if (offset.label !== undefined) {\n label.push(parseInt(line[offset.label]));\n }\n }\n }\n\n return {position, normal, color};\n}\n\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\n\n for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));\n }\n\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(row + offset.rgb + 0));\n color.push(dataview.getUint8(row + offset.rgb + 1));\n color.push(dataview.getUint8(row + offset.rgb + 2));\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));\n }\n\n if (offset.intensity !== undefined) {\n intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));\n }\n\n if (offset.label !== undefined) {\n label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));\n }\n }\n\n return {position, normal, color, intensity, label};\n}\n\n/** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)\n * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js\n * @license MIT (http://opensource.org/licenses/MIT)\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDBinaryCompressed(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n const intensity: number[] = [];\n const label: number[] = [];\n\n const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(\n new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize),\n decompressedSize\n );\n const dataview = new DataView(decompressed.buffer);\n\n const offset = pcdHeader.offset;\n\n for (let i = 0; i < pcdHeader.points; i++) {\n if (offset.x !== undefined) {\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN)\n );\n position.push(\n dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN)\n );\n }\n\n if (offset.rgb !== undefined) {\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0\n );\n color.push(\n dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0\n );\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.intensity !== undefined) {\n const intensityIndex = pcdHeader.fields.indexOf('intensity');\n intensity.push(\n dataview.getFloat32(\n pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.label !== undefined) {\n const labelIndex = pcdHeader.fields.indexOf('label');\n label.push(\n dataview.getInt32(\n pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i,\n LITTLE_ENDIAN\n )\n );\n }\n }\n\n return {\n position,\n normal,\n color,\n intensity,\n label\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=pcd-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-types.js","names":[],"sources":["../../../src/lib/pcd-types.ts"],"sourcesContent":["import type {Mesh} from '@loaders.gl/schema';\n\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\nexport type PCDHeader = {\n data: any;\n headerLen: number;\n str: string;\n version: number;\n fields: string[];\n size: number[];\n type: null | string[];\n count: null | number[];\n width: number;\n height: number;\n viewpoint: null | string;\n points: number;\n offset: {[index: string]: number};\n rowSize: number;\n vertexCount: number;\n boundingBox: BoundingBox;\n};\n\n/** */\nexport type PCDMesh = Mesh & {\n loader: 'pcd';\n loaderData: PCDHeader;\n topology: 'point-list';\n mode: 0;\n};\n"],"mappings":""}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PCDLoader = void 0;
7
+ var VERSION = typeof "4.0.0-alpha.6" !== 'undefined' ? "4.0.0-alpha.6" : 'latest';
8
+ var PCDLoader = {
9
+ name: 'PCD (Point Cloud Data)',
10
+ id: 'pcd',
11
+ module: 'pcd',
12
+ version: VERSION,
13
+ worker: true,
14
+ extensions: ['pcd'],
15
+ mimeTypes: ['text/plain'],
16
+ options: {
17
+ pcd: {}
18
+ }
19
+ };
20
+ exports.PCDLoader = PCDLoader;
21
+ //# sourceMappingURL=pcd-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","exports"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {PCDMesh} from './lib/pcd-types';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDLoader: Loader<PCDMesh, never, LoaderOptions> = {\n name: 'PCD (Point Cloud Data)',\n id: 'pcd',\n module: 'pcd',\n version: VERSION,\n worker: true,\n extensions: ['pcd'],\n mimeTypes: ['text/plain'],\n options: {\n pcd: {}\n }\n};\n"],"mappings":";;;;;;AAOA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAKpE,IAAMC,SAAgD,GAAG;EAC9DC,IAAI,EAAE,wBAAwB;EAC9BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAACC,OAAA,CAAAV,SAAA,GAAAA,SAAA"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ var _loaderUtils = require("@loaders.gl/loader-utils");
4
+ var _index = require("../index");
5
+ (0, _loaderUtils.createLoaderWorker)(_index.PCDLoader);
6
+ //# sourceMappingURL=pcd-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-worker.js","names":["_loaderUtils","require","_index","createLoaderWorker","PCDLoader"],"sources":["../../../src/workers/pcd-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {PCDLoader} from '../index';\n\ncreateLoaderWorker(PCDLoader);\n"],"mappings":";;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,+BAAkB,EAACC,gBAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ const moduleExports = require('./index');
2
+ globalThis.loaders = globalThis.loaders || {};
3
+ module.exports = Object.assign(globalThis.loaders, moduleExports);
4
+ //# 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,MAAMA,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,10 @@
1
+ import parsePCDSync from './lib/parse-pcd';
2
+ import { PCDLoader as PCDWorkerLoader } from './pcd-loader';
3
+ export { PCDWorkerLoader };
4
+ export const PCDLoader = {
5
+ ...PCDWorkerLoader,
6
+ parse: async arrayBuffer => parsePCDSync(arrayBuffer),
7
+ parseSync: parsePCDSync
8
+ };
9
+ export const _typecheckPCDLoader = PCDLoader;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["parsePCDSync","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","_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,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAGzD,SAAQA,eAAe;AAKvB,OAAO,MAAMD,SAA0D,GAAG;EACxE,GAAGC,eAAe;EAClBC,KAAK,EAAE,MAAOC,WAAW,IAAKJ,YAAY,CAACI,WAAW,CAAC;EACvDC,SAAS,EAAEL;AACb,CAAC;AAED,OAAO,MAAMM,mBAAqC,GAAGL,SAAS"}
@@ -0,0 +1,51 @@
1
+ export function decompressLZF(inData, outLength) {
2
+ const inLength = inData.length;
3
+ const outData = new Uint8Array(outLength);
4
+ let inPtr = 0;
5
+ let outPtr = 0;
6
+ let ctrl;
7
+ let len;
8
+ let ref;
9
+ do {
10
+ ctrl = inData[inPtr++];
11
+ if (ctrl < 1 << 5) {
12
+ ctrl++;
13
+ if (outPtr + ctrl > outLength) {
14
+ throw new Error('Output buffer is not large enough');
15
+ }
16
+ if (inPtr + ctrl > inLength) {
17
+ throw new Error('Invalid compressed data');
18
+ }
19
+ do {
20
+ outData[outPtr++] = inData[inPtr++];
21
+ } while (--ctrl);
22
+ } else {
23
+ len = ctrl >> 5;
24
+ ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
25
+ if (inPtr >= inLength) {
26
+ throw new Error('Invalid compressed data');
27
+ }
28
+ if (len === 7) {
29
+ len += inData[inPtr++];
30
+ if (inPtr >= inLength) {
31
+ throw new Error('Invalid compressed data');
32
+ }
33
+ }
34
+ ref -= inData[inPtr++];
35
+ if (outPtr + len + 2 > outLength) {
36
+ throw new Error('Output buffer is not large enough');
37
+ }
38
+ if (ref < 0) {
39
+ throw new Error('Invalid compressed data');
40
+ }
41
+ if (ref >= outPtr) {
42
+ throw new Error('Invalid compressed data');
43
+ }
44
+ do {
45
+ outData[outPtr++] = outData[ref++];
46
+ } while (--len + 2);
47
+ }
48
+ } while (inPtr < inLength);
49
+ return outData;
50
+ }
51
+ //# 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":"AAOA,OAAO,SAASA,aAAaA,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM;EAC9B,MAAMC,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,48 @@
1
+ export function getPCDSchema(PCDheader, metadata) {
2
+ const offset = PCDheader.offset;
3
+ const fields = [];
4
+ if (offset.x !== undefined) {
5
+ fields.push({
6
+ name: 'POSITION',
7
+ type: {
8
+ type: 'fixed-size-list',
9
+ listSize: 3,
10
+ children: [{
11
+ name: 'xyz',
12
+ type: 'float32'
13
+ }]
14
+ }
15
+ });
16
+ }
17
+ if (offset.normal_x !== undefined) {
18
+ fields.push({
19
+ name: 'NORMAL',
20
+ type: {
21
+ type: 'fixed-size-list',
22
+ listSize: 3,
23
+ children: [{
24
+ name: 'xyz',
25
+ type: 'float32'
26
+ }]
27
+ }
28
+ });
29
+ }
30
+ if (offset.rgb !== undefined) {
31
+ fields.push({
32
+ name: 'COLOR_0',
33
+ type: {
34
+ type: 'fixed-size-list',
35
+ listSize: 3,
36
+ children: [{
37
+ name: 'rgb',
38
+ type: 'uint8'
39
+ }]
40
+ }
41
+ });
42
+ }
43
+ return {
44
+ fields,
45
+ metadata
46
+ };
47
+ }
48
+ //# 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":"AASA,OAAO,SAASA,YAAYA,CAACC,SAAoB,EAAEC,QAAgC,EAAU;EAC3F,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,MAAMC,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;IAAEF;EAAQ,CAAC;AAC3B"}