@loaders.gl/pcd 4.3.2 → 4.4.0-alpha.2

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/dist/index.cjs CHANGED
@@ -20,13 +20,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // dist/index.js
21
21
  var dist_exports = {};
22
22
  __export(dist_exports, {
23
- PCDLoader: () => PCDLoader2,
24
- PCDWorkerLoader: () => PCDLoader
23
+ PCDArrowLoader: () => PCDArrowLoader,
24
+ PCDLoader: () => PCDLoader,
25
+ PCDWorkerLoader: () => PCDWorkerLoader
25
26
  });
26
27
  module.exports = __toCommonJS(dist_exports);
27
28
 
28
29
  // dist/lib/parse-pcd.js
29
- var import_schema = require("@loaders.gl/schema");
30
+ var import_schema_utils = require("@loaders.gl/schema-utils");
30
31
 
31
32
  // dist/lib/decompress-lzf.js
32
33
  function decompressLZF(inData, outLength) {
@@ -82,25 +83,38 @@ function decompressLZF(inData, outLength) {
82
83
 
83
84
  // dist/lib/get-pcd-schema.js
84
85
  function getPCDSchema(PCDheader, metadata) {
85
- const offset = PCDheader.offset;
86
86
  const fields = [];
87
- if (offset.x !== void 0) {
88
- fields.push({
89
- name: "POSITION",
90
- type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] }
91
- });
92
- }
93
- if (offset.normal_x !== void 0) {
94
- fields.push({
95
- name: "NORMAL",
96
- type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] }
97
- });
98
- }
99
- if (offset.rgb !== void 0) {
100
- fields.push({
101
- name: "COLOR_0",
102
- type: { type: "fixed-size-list", listSize: 3, children: [{ name: "rgb", type: "uint8" }] }
103
- });
87
+ for (const key of Object.keys(PCDheader.offset)) {
88
+ switch (key) {
89
+ case "x":
90
+ fields.push({
91
+ name: "POSITION",
92
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] },
93
+ metadata: { attribute: "POSITION" }
94
+ });
95
+ break;
96
+ case "y":
97
+ case "z":
98
+ break;
99
+ case "normal_x":
100
+ fields.push({
101
+ name: "NORMAL",
102
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "xyz", type: "float32" }] },
103
+ metadata: { attribute: "NORMAL" }
104
+ });
105
+ break;
106
+ case "normal_y":
107
+ case "normal_z":
108
+ break;
109
+ case "rgb":
110
+ fields.push({
111
+ name: "COLOR_0",
112
+ type: { type: "fixed-size-list", listSize: 3, children: [{ name: "rgb", type: "uint8" }] },
113
+ metadata: { attribute: "COLOR" }
114
+ });
115
+ break;
116
+ default:
117
+ }
104
118
  }
105
119
  return { fields, metadata };
106
120
  }
@@ -126,19 +140,20 @@ function parsePCD(data) {
126
140
  }
127
141
  attributes = getMeshAttributes(attributes);
128
142
  const header = getMeshHeader(pcdHeader, attributes);
129
- const metadata = Object.fromEntries([
143
+ const schemaMetadata = Object.fromEntries([
144
+ ["topology", "point-list"],
130
145
  ["mode", "0"],
131
146
  ["boundingBox", JSON.stringify(header.boundingBox)]
132
147
  ]);
133
- const schema = getPCDSchema(pcdHeader, metadata);
148
+ const schema = getPCDSchema(pcdHeader, schemaMetadata);
134
149
  return {
135
150
  loader: "pcd",
136
151
  loaderData: pcdHeader,
137
152
  header,
138
153
  schema,
139
- mode: 0,
140
- // POINTS
141
154
  topology: "point-list",
155
+ mode: 0,
156
+ // POINTS (deprecated)
142
157
  attributes
143
158
  };
144
159
  }
@@ -147,7 +162,7 @@ function getMeshHeader(pcdHeader, attributes) {
147
162
  const pointCount = pcdHeader.width * pcdHeader.height;
148
163
  return {
149
164
  vertexCount: pointCount,
150
- boundingBox: (0, import_schema.getMeshBoundingBox)(attributes)
165
+ boundingBox: (0, import_schema_utils.getMeshBoundingBox)(attributes)
151
166
  };
152
167
  }
153
168
  return {
@@ -379,29 +394,49 @@ function parsePCDBinaryCompressed(pcdHeader, data) {
379
394
  };
380
395
  }
381
396
 
382
- // dist/pcd-loader.js
383
- var VERSION = true ? "4.3.1" : "latest";
384
- var PCDLoader = {
385
- dataType: null,
386
- batchType: null,
397
+ // dist/pcd-format.js
398
+ var PCDFormat = {
387
399
  name: "PCD (Point Cloud Data)",
388
400
  id: "pcd",
389
401
  module: "pcd",
390
- version: VERSION,
391
- worker: true,
392
402
  extensions: ["pcd"],
393
403
  mimeTypes: ["text/plain"],
404
+ category: "pointcloud",
405
+ text: true,
406
+ binary: true
407
+ };
408
+
409
+ // dist/pcd-loader.js
410
+ var VERSION = true ? "4.4.0-alpha.1" : "latest";
411
+ var PCDWorkerLoader = {
412
+ ...PCDFormat,
413
+ dataType: null,
414
+ batchType: null,
415
+ version: VERSION,
416
+ worker: true,
394
417
  options: {
395
418
  pcd: {}
396
419
  }
397
420
  };
398
-
399
- // dist/index.js
400
- var PCDLoader2 = {
401
- ...PCDLoader,
421
+ var PCDLoader = {
422
+ ...PCDWorkerLoader,
402
423
  parse: async (arrayBuffer) => parsePCD(arrayBuffer),
403
424
  parseSync: parsePCD
404
425
  };
426
+
427
+ // dist/pcd-arrow-loader.js
428
+ var import_schema_utils2 = require("@loaders.gl/schema-utils");
429
+ var PCDArrowLoader = {
430
+ ...PCDWorkerLoader,
431
+ dataType: null,
432
+ batchType: null,
433
+ worker: false,
434
+ parse: async (arrayBuffer) => {
435
+ const mesh = parsePCD(arrayBuffer);
436
+ const arrowTable = (0, import_schema_utils2.convertMeshToTable)(mesh, "arrow-table");
437
+ return arrowTable;
438
+ }
439
+ };
405
440
  /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
406
441
  * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
407
442
  * @license MIT (http://opensource.org/licenses/MIT)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["index.js", "lib/parse-pcd.js", "lib/decompress-lzf.js", "lib/get-pcd-schema.js", "pcd-loader.js"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\nimport parsePCDSync from \"./lib/parse-pcd.js\";\nimport { PCDLoader as PCDWorkerLoader } from \"./pcd-loader.js\";\nexport { PCDWorkerLoader };\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),\n parseSync: parsePCDSync\n};\n", "// 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\nimport { getMeshBoundingBox } from '@loaders.gl/schema';\nimport { decompressLZF } from \"./decompress-lzf.js\";\nimport { getPCDSchema } from \"./get-pcd-schema.js\";\nconst LITTLE_ENDIAN = true;\n/**\n *\n * @param data\n * @returns\n */\nexport default function parsePCD(data) {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n let attributes = {};\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n attributes = getMeshAttributes(attributes);\n const header = getMeshHeader(pcdHeader, attributes);\n const metadata = Object.fromEntries([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n const schema = getPCDSchema(pcdHeader, metadata);\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// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader, attributes) {\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 * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes) {\n const normalizedAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\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 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 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 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 return normalizedAttributes;\n}\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data) {\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 const pcdHeader = {};\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 // remove comments\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n // parse\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 // evaluate\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n if (pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number') {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n }\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 pcdHeader.offset = {};\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 }\n else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n // for binary only\n pcdHeader.rowSize = sizeSum;\n return pcdHeader;\n}\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDASCII(pcdHeader, textData) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\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 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 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 if (offset.intensity !== undefined) {\n intensity.push(parseFloat(line[offset.intensity]));\n }\n if (offset.label !== undefined) {\n label.push(parseInt(line[offset.label]));\n }\n }\n }\n return { position, normal, color };\n}\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader, data) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\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 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 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 if (offset.intensity !== undefined) {\n intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));\n }\n if (offset.label !== undefined) {\n label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));\n }\n }\n return { position, normal, color, intensity, label };\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, data) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\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(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = pcdHeader.offset;\n for (let i = 0; i < pcdHeader.points; i++) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));\n }\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0);\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0);\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0);\n }\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));\n }\n if (offset.intensity !== undefined) {\n const intensityIndex = pcdHeader.fields.indexOf('intensity');\n intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));\n }\n if (offset.label !== undefined) {\n const labelIndex = pcdHeader.fields.indexOf('label');\n label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));\n }\n }\n return {\n position,\n normal,\n color,\n intensity,\n label\n };\n}\n", "/* 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, outLength) {\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 do {\n ctrl = inData[inPtr++];\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 do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n }\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 if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\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 do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n", "/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader, metadata) {\n const offset = PCDheader.offset;\n const fields = [];\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 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 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 return { fields, metadata };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.3.1\" !== 'undefined' ? \"4.3.1\" : 'latest';\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n dataType: null,\n batchType: null,\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"],
5
- "mappings": "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",
6
- "names": ["PCDLoader", "PCDLoader"]
3
+ "sources": ["index.js", "lib/parse-pcd.js", "lib/decompress-lzf.js", "lib/get-pcd-schema.js", "pcd-format.js", "pcd-loader.js", "pcd-arrow-loader.js"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\nexport { PCDWorkerLoader, PCDLoader } from \"./pcd-loader.js\";\nexport { PCDArrowLoader } from \"./pcd-arrow-loader.js\";\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getMeshBoundingBox } from '@loaders.gl/schema-utils';\nimport { decompressLZF } from \"./decompress-lzf.js\";\nimport { getPCDSchema } from \"./get-pcd-schema.js\";\nconst LITTLE_ENDIAN = true;\n/**\n *\n * @param data\n * @returns\n */\nexport function parsePCD(data) {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n let attributes = {};\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n attributes = getMeshAttributes(attributes);\n const header = getMeshHeader(pcdHeader, attributes);\n const schemaMetadata = Object.fromEntries([\n ['topology', 'point-list'],\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n const schema = getPCDSchema(pcdHeader, schemaMetadata);\n return {\n loader: 'pcd',\n loaderData: pcdHeader,\n header,\n schema,\n topology: 'point-list',\n mode: 0, // POINTS (deprecated)\n attributes\n };\n}\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader, attributes) {\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 * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes) {\n const normalizedAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\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 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 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 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 return normalizedAttributes;\n}\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data) {\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 const pcdHeader = {};\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 // remove comments\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n // parse\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 // evaluate\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n if (pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number') {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n }\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 pcdHeader.offset = {};\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 }\n else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n // for binary only\n pcdHeader.rowSize = sizeSum;\n return pcdHeader;\n}\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n// eslint-enable-next-line complexity, max-statements\nfunction parsePCDASCII(pcdHeader, textData) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\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 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 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 if (offset.intensity !== undefined) {\n intensity.push(parseFloat(line[offset.intensity]));\n }\n if (offset.label !== undefined) {\n label.push(parseInt(line[offset.label]));\n }\n }\n }\n return { position, normal, color };\n}\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader, data) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\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 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 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 if (offset.intensity !== undefined) {\n intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));\n }\n if (offset.label !== undefined) {\n label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));\n }\n }\n return { position, normal, color, intensity, label };\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, data) {\n const position = [];\n const normal = [];\n const color = [];\n const intensity = [];\n const label = [];\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(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);\n const dataview = new DataView(decompressed.buffer);\n const offset = pcdHeader.offset;\n for (let i = 0; i < pcdHeader.points; i++) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));\n }\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0);\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0);\n color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0);\n }\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));\n }\n if (offset.intensity !== undefined) {\n const intensityIndex = pcdHeader.fields.indexOf('intensity');\n intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));\n }\n if (offset.label !== undefined) {\n const labelIndex = pcdHeader.fields.indexOf('label');\n label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));\n }\n }\n return {\n position,\n normal,\n color,\n intensity,\n label\n };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Forked from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n/* eslint-disable */\n/**\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData, outLength) {\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 do {\n ctrl = inData[inPtr++];\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 do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n }\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 if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) {\n throw new Error('Invalid compressed data');\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 do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n return outData;\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader, metadata) {\n const fields = [];\n for (const key of Object.keys(PCDheader.offset)) {\n switch (key) {\n case 'x':\n fields.push({\n name: 'POSITION',\n type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] },\n metadata: { attribute: 'POSITION' }\n });\n break;\n case 'y':\n case 'z':\n // ignore\n break;\n case 'normal_x':\n fields.push({\n name: 'NORMAL',\n type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] },\n metadata: { attribute: 'NORMAL' }\n });\n break;\n case 'normal_y':\n case 'normal_z':\n // ignore\n break;\n case 'rgb':\n fields.push({\n name: 'COLOR_0',\n type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'rgb', type: 'uint8' }] },\n metadata: { attribute: 'COLOR' }\n });\n break;\n default:\n // TODO - push fields\n }\n }\n return { fields, metadata };\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * PCD (Point Cloud Data) file format\n */\nexport const PCDFormat = {\n name: 'PCD (Point Cloud Data)',\n id: 'pcd',\n module: 'pcd',\n extensions: ['pcd'],\n mimeTypes: ['text/plain'],\n category: 'pointcloud',\n text: true,\n binary: true\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { parsePCD } from \"./lib/parse-pcd.js\";\nimport { PCDFormat } from \"./pcd-format.js\";\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof \"4.4.0-alpha.1\" !== 'undefined' ? \"4.4.0-alpha.1\" : 'latest';\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDWorkerLoader = {\n ...PCDFormat,\n dataType: null,\n batchType: null,\n version: VERSION,\n worker: true,\n options: {\n pcd: {}\n }\n};\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCD(arrayBuffer),\n parseSync: parsePCD\n};\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { PCDWorkerLoader } from \"./pcd-loader.js\";\nimport { convertMeshToTable } from '@loaders.gl/schema-utils';\nimport { parsePCD } from \"./lib/parse-pcd.js\";\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDArrowLoader = {\n ...PCDWorkerLoader,\n dataType: null,\n batchType: null,\n worker: false,\n parse: async (arrayBuffer) => {\n const mesh = parsePCD(arrayBuffer);\n const arrowTable = convertMeshToTable(mesh, 'arrow-table');\n return arrowTable;\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_schema_utils"]
7
7
  }
package/dist/index.d.ts CHANGED
@@ -1,25 +1,4 @@
1
- import parsePCDSync from "./lib/parse-pcd.js";
2
- import { PCDLoader as PCDWorkerLoader } from "./pcd-loader.js";
3
- import { PCDMesh } from "./lib/pcd-types.js";
4
1
  export type { PCDLoaderOptions } from "./pcd-loader.js";
5
- export { PCDWorkerLoader };
6
- /**
7
- * Loader for PCD - Point Cloud Data
8
- */
9
- export declare const PCDLoader: {
10
- readonly parse: (arrayBuffer: ArrayBuffer) => Promise<PCDMesh>;
11
- readonly parseSync: typeof parsePCDSync;
12
- readonly dataType: PCDMesh;
13
- readonly batchType: never;
14
- readonly name: "PCD (Point Cloud Data)";
15
- readonly id: "pcd";
16
- readonly module: "pcd";
17
- readonly version: any;
18
- readonly worker: true;
19
- readonly extensions: ["pcd"];
20
- readonly mimeTypes: ["text/plain"];
21
- readonly options: {
22
- readonly pcd: {};
23
- };
24
- };
2
+ export { PCDWorkerLoader, PCDLoader } from "./pcd-loader.js";
3
+ export { PCDArrowLoader } from "./pcd-arrow-loader.js";
25
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,YAAY,2BAAwB;AAC3C,OAAO,EAAC,SAAS,IAAI,eAAe,EAAC,wBAAqB;AAC1D,OAAO,EAAC,OAAO,EAAC,2BAAwB;AAExC,YAAY,EAAC,gBAAgB,EAAC,wBAAqB;AAEnD,OAAO,EAAC,eAAe,EAAC,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;CAI8C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,gBAAgB,EAAC,wBAAqB;AACnD,OAAO,EAAC,eAAe,EAAE,SAAS,EAAC,wBAAqB;AACxD,OAAO,EAAC,cAAc,EAAC,8BAA2B"}
package/dist/index.js CHANGED
@@ -1,14 +1,5 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright vis.gl contributors
4
- import parsePCDSync from "./lib/parse-pcd.js";
5
- import { PCDLoader as PCDWorkerLoader } from "./pcd-loader.js";
6
- export { PCDWorkerLoader };
7
- /**
8
- * Loader for PCD - Point Cloud Data
9
- */
10
- export const PCDLoader = {
11
- ...PCDWorkerLoader,
12
- parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),
13
- parseSync: parsePCDSync
14
- };
4
+ export { PCDWorkerLoader, PCDLoader } from "./pcd-loader.js";
5
+ export { PCDArrowLoader } from "./pcd-arrow-loader.js";
@@ -1,5 +1,4 @@
1
1
  /**
2
- * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
3
2
  * @param inData
4
3
  * @param outLength
5
4
  * @returns
@@ -1 +1 @@
1
- {"version":3,"file":"decompress-lzf.d.ts","sourceRoot":"","sources":["../../src/lib/decompress-lzf.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAwD/E"}
1
+ {"version":3,"file":"decompress-lzf.d.ts","sourceRoot":"","sources":["../../src/lib/decompress-lzf.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAwD/E"}
@@ -1,6 +1,9 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Forked from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
1
5
  /* eslint-disable */
2
6
  /**
3
- * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
4
7
  * @param inData
5
8
  * @param outLength
6
9
  * @returns
@@ -1 +1 @@
1
- {"version":3,"file":"get-pcd-schema.d.ts","sourceRoot":"","sources":["../../src/lib/get-pcd-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAQ,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA2B3F"}
1
+ {"version":3,"file":"get-pcd-schema.d.ts","sourceRoot":"","sources":["../../src/lib/get-pcd-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAQ,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA2C3F"}
@@ -1,3 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  /**
2
5
  * Gets schema from PCD header
3
6
  * @param PCDheader
@@ -5,25 +8,41 @@
5
8
  * @returns Schema
6
9
  */
7
10
  export function getPCDSchema(PCDheader, metadata) {
8
- const offset = PCDheader.offset;
9
11
  const fields = [];
10
- if (offset.x !== undefined) {
11
- fields.push({
12
- name: 'POSITION',
13
- type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] }
14
- });
15
- }
16
- if (offset.normal_x !== undefined) {
17
- fields.push({
18
- name: 'NORMAL',
19
- type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] }
20
- });
21
- }
22
- if (offset.rgb !== undefined) {
23
- fields.push({
24
- name: 'COLOR_0',
25
- type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'rgb', type: 'uint8' }] }
26
- });
12
+ for (const key of Object.keys(PCDheader.offset)) {
13
+ switch (key) {
14
+ case 'x':
15
+ fields.push({
16
+ name: 'POSITION',
17
+ type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] },
18
+ metadata: { attribute: 'POSITION' }
19
+ });
20
+ break;
21
+ case 'y':
22
+ case 'z':
23
+ // ignore
24
+ break;
25
+ case 'normal_x':
26
+ fields.push({
27
+ name: 'NORMAL',
28
+ type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'xyz', type: 'float32' }] },
29
+ metadata: { attribute: 'NORMAL' }
30
+ });
31
+ break;
32
+ case 'normal_y':
33
+ case 'normal_z':
34
+ // ignore
35
+ break;
36
+ case 'rgb':
37
+ fields.push({
38
+ name: 'COLOR_0',
39
+ type: { type: 'fixed-size-list', listSize: 3, children: [{ name: 'rgb', type: 'uint8' }] },
40
+ metadata: { attribute: 'COLOR' }
41
+ });
42
+ break;
43
+ default:
44
+ // TODO - push fields
45
+ }
27
46
  }
28
47
  return { fields, metadata };
29
48
  }
@@ -4,5 +4,5 @@ import type { PCDMesh } from "./pcd-types.js";
4
4
  * @param data
5
5
  * @returns
6
6
  */
7
- export default function parsePCD(data: ArrayBufferLike): PCDMesh;
7
+ export declare function parsePCD(data: ArrayBufferLike): PCDMesh;
8
8
  //# sourceMappingURL=parse-pcd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pcd.d.ts","sourceRoot":"","sources":["../../src/lib/parse-pcd.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAY,OAAO,EAAC,uBAAoB;AA4BpD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CA6C/D"}
1
+ {"version":3,"file":"parse-pcd.d.ts","sourceRoot":"","sources":["../../src/lib/parse-pcd.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAY,OAAO,EAAC,uBAAoB;AA4BpD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CA8CvD"}
@@ -1,11 +1,7 @@
1
- // PCD Loader, adapted from THREE.js (MIT license)
2
- // Description: A loader for PCD ascii and binary files.
3
- // Limitations: Compressed binary files are not supported.
4
- //
5
- // Attributions per original THREE.js source file:
6
- // @author Filipe Caixeta / http://filipecaixeta.com.br
7
- // @author Mugen87 / https://github.com/Mugen87
8
- import { getMeshBoundingBox } from '@loaders.gl/schema';
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { getMeshBoundingBox } from '@loaders.gl/schema-utils';
9
5
  import { decompressLZF } from "./decompress-lzf.js";
10
6
  import { getPCDSchema } from "./get-pcd-schema.js";
11
7
  const LITTLE_ENDIAN = true;
@@ -14,7 +10,7 @@ const LITTLE_ENDIAN = true;
14
10
  * @param data
15
11
  * @returns
16
12
  */
17
- export default function parsePCD(data) {
13
+ export function parsePCD(data) {
18
14
  // parse header (always ascii format)
19
15
  const textData = new TextDecoder().decode(data);
20
16
  const pcdHeader = parsePCDHeader(textData);
@@ -35,18 +31,19 @@ export default function parsePCD(data) {
35
31
  }
36
32
  attributes = getMeshAttributes(attributes);
37
33
  const header = getMeshHeader(pcdHeader, attributes);
38
- const metadata = Object.fromEntries([
34
+ const schemaMetadata = Object.fromEntries([
35
+ ['topology', 'point-list'],
39
36
  ['mode', '0'],
40
37
  ['boundingBox', JSON.stringify(header.boundingBox)]
41
38
  ]);
42
- const schema = getPCDSchema(pcdHeader, metadata);
39
+ const schema = getPCDSchema(pcdHeader, schemaMetadata);
43
40
  return {
44
41
  loader: 'pcd',
45
42
  loaderData: pcdHeader,
46
43
  header,
47
44
  schema,
48
- mode: 0, // POINTS
49
45
  topology: 'point-list',
46
+ mode: 0, // POINTS (deprecated)
50
47
  attributes
51
48
  };
52
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-types.d.ts","sourceRoot":"","sources":["../../src/lib/pcd-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AAE7C,KAAK,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC;CACT,CAAC"}
1
+ {"version":3,"file":"pcd-types.d.ts","sourceRoot":"","sources":["../../src/lib/pcd-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAC;AAE7C,KAAK,WAAW,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,OAAO;AACP,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,MAAM,EAAE,KAAK,CAAC;IACd,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC;CACT,CAAC"}
@@ -1 +1,4 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  export {};
@@ -0,0 +1,23 @@
1
+ import type { ArrowTable } from '@loaders.gl/schema';
2
+ /**
3
+ * Worker loader for PCD - Point Cloud Data
4
+ */
5
+ export declare const PCDArrowLoader: {
6
+ readonly dataType: ArrowTable;
7
+ readonly batchType: never;
8
+ readonly worker: false;
9
+ readonly parse: (arrayBuffer: ArrayBuffer) => Promise<ArrowTable>;
10
+ readonly version: any;
11
+ readonly options: {
12
+ readonly pcd: {};
13
+ };
14
+ readonly name: "PCD (Point Cloud Data)";
15
+ readonly id: "pcd";
16
+ readonly module: "pcd";
17
+ readonly extensions: ["pcd"];
18
+ readonly mimeTypes: ["text/plain"];
19
+ readonly category: "pointcloud";
20
+ readonly text: true;
21
+ readonly binary: true;
22
+ };
23
+ //# sourceMappingURL=pcd-arrow-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-arrow-loader.d.ts","sourceRoot":"","sources":["../src/pcd-arrow-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAMnD;;GAEG;AACH,eAAO,MAAM,cAAc;uBAEI,UAAU;wBACpB,KAAK;;kCAEG,WAAW;;;;;;;;;;;;;CAKkC,CAAC"}
@@ -0,0 +1,20 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { PCDWorkerLoader } from "./pcd-loader.js";
5
+ import { convertMeshToTable } from '@loaders.gl/schema-utils';
6
+ import { parsePCD } from "./lib/parse-pcd.js";
7
+ /**
8
+ * Worker loader for PCD - Point Cloud Data
9
+ */
10
+ export const PCDArrowLoader = {
11
+ ...PCDWorkerLoader,
12
+ dataType: null,
13
+ batchType: null,
14
+ worker: false,
15
+ parse: async (arrayBuffer) => {
16
+ const mesh = parsePCD(arrayBuffer);
17
+ const arrowTable = convertMeshToTable(mesh, 'arrow-table');
18
+ return arrowTable;
19
+ }
20
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * PCD (Point Cloud Data) file format
3
+ */
4
+ export declare const PCDFormat: {
5
+ readonly name: "PCD (Point Cloud Data)";
6
+ readonly id: "pcd";
7
+ readonly module: "pcd";
8
+ readonly extensions: ["pcd"];
9
+ readonly mimeTypes: ["text/plain"];
10
+ readonly category: "pointcloud";
11
+ readonly text: true;
12
+ readonly binary: true;
13
+ };
14
+ //# sourceMappingURL=pcd-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-format.d.ts","sourceRoot":"","sources":["../src/pcd-format.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;CASK,CAAC"}
@@ -0,0 +1,16 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /**
5
+ * PCD (Point Cloud Data) file format
6
+ */
7
+ export const PCDFormat = {
8
+ name: 'PCD (Point Cloud Data)',
9
+ id: 'pcd',
10
+ module: 'pcd',
11
+ extensions: ['pcd'],
12
+ mimeTypes: ['text/plain'],
13
+ category: 'pointcloud',
14
+ text: true,
15
+ binary: true
16
+ };