@loaders.gl/pcd 3.4.0-alpha.1 → 3.4.0-alpha.3

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 (39) hide show
  1. package/dist/dist.min.js +82 -24
  2. package/dist/es5/index.js +6 -8
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/decompress-lzf.js +21 -7
  5. package/dist/es5/lib/decompress-lzf.js.map +1 -1
  6. package/dist/es5/lib/get-pcd-schema.js +6 -0
  7. package/dist/es5/lib/get-pcd-schema.js.map +1 -1
  8. package/dist/es5/lib/parse-pcd.js +58 -29
  9. package/dist/es5/lib/parse-pcd.js.map +1 -1
  10. package/dist/es5/lib/pcd-types.js.map +1 -1
  11. package/dist/es5/pcd-loader.js +1 -2
  12. package/dist/es5/pcd-loader.js.map +1 -1
  13. package/dist/es5/workers/pcd-worker.js.map +1 -1
  14. package/dist/esm/bundle.js +0 -1
  15. package/dist/esm/bundle.js.map +1 -1
  16. package/dist/esm/index.js +0 -1
  17. package/dist/esm/index.js.map +1 -1
  18. package/dist/esm/lib/decompress-lzf.js +21 -8
  19. package/dist/esm/lib/decompress-lzf.js.map +1 -1
  20. package/dist/esm/lib/get-pcd-schema.js +7 -1
  21. package/dist/esm/lib/get-pcd-schema.js.map +1 -1
  22. package/dist/esm/lib/parse-pcd.js +58 -30
  23. package/dist/esm/lib/parse-pcd.js.map +1 -1
  24. package/dist/esm/lib/pcd-types.js.map +1 -1
  25. package/dist/esm/pcd-loader.js +1 -3
  26. package/dist/esm/pcd-loader.js.map +1 -1
  27. package/dist/lib/decompress-lzf.d.ts.map +1 -1
  28. package/dist/lib/decompress-lzf.js +14 -7
  29. package/dist/lib/get-pcd-schema.d.ts.map +1 -1
  30. package/dist/lib/get-pcd-schema.js +6 -0
  31. package/dist/lib/parse-pcd.js +60 -17
  32. package/dist/lib/pcd-types.d.ts +9 -9
  33. package/dist/lib/pcd-types.d.ts.map +1 -1
  34. package/dist/pcd-worker.js +82 -24
  35. package/package.json +4 -4
  36. package/src/lib/decompress-lzf.ts +21 -7
  37. package/src/lib/get-pcd-schema.ts +9 -1
  38. package/src/lib/parse-pcd.ts +79 -33
  39. package/src/lib/pcd-types.ts +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pcd.js","names":["LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","getMeshAttributes","header","getMeshHeader","metadata","Map","JSON","stringify","boundingBox","schema","getPCDSchema","loaderData","mode","indices","width","height","pointCount","vertexCount","getMeshBoundingBox","normalizedAttributes","POSITION","value","Float32Array","position","size","normal","length","NORMAL","color","COLOR_0","Uint8Array","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","PCDheader","sizes","Uint32Array","slice","compressedSize","decompressedSize","decompressed","decompressLZF"],"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 type {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} from './pcd-types';\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) {\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 = new Map([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loaderData: {\n header: pcdHeader\n },\n header,\n schema,\n mode: 0, // POINTS\n indices: null,\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): Partial<PCDHeader> {\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 pcdHeader;\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 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 complexity, max-statements */\nfunction parsePCDASCII(pcdHeader: PCDHeader, textData: string): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: 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 }\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\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\n return {position, normal, color};\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 */\nfunction parsePCDBinaryCompressed(PCDheader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: 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(\n (PCDheader.points as number) * offset.x + (PCDheader.size as number[])[0] * i,\n LITTLE_ENDIAN\n )\n );\n position.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.y + (PCDheader.size as number[])[1] * i,\n LITTLE_ENDIAN\n )\n );\n position.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.z + (PCDheader.size as number[])[2] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.rgb !== undefined) {\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 0\n ) / 255.0\n );\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 1\n ) / 255.0\n );\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 2\n ) / 255.0\n );\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_x + (PCDheader.size as number[])[4] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_y + (PCDheader.size as number[])[5] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_z + (PCDheader.size as number[])[6] * i,\n LITTLE_ENDIAN\n )\n );\n }\n }\n\n return {\n position,\n normal,\n color\n };\n}\n"],"mappings":"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"}
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","Map","JSON","stringify","boundingBox","schema","getPCDSchema","loaderData","mode","indices","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} from './pcd-types';\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) {\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 = new Map([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loaderData: {\n header: pcdHeader\n },\n header,\n schema,\n mode: 0, // POINTS\n indices: null,\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): Partial<PCDHeader> {\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 pcdHeader;\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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"}
@@ -1 +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: RegExpExecArray | null | number;\n fields: RegExpExecArray | null | string[];\n size: RegExpExecArray | null | number[];\n type: RegExpExecArray | null | string[];\n count: RegExpExecArray | null | number[];\n width: RegExpExecArray | number;\n height: RegExpExecArray | number;\n viewpoint: RegExpExecArray | null | string;\n points: RegExpExecArray | 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":""}
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":""}
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports._typecheckPCDLoader = exports.PCDLoader = void 0;
7
- var VERSION = typeof "3.4.0-alpha.1" !== 'undefined' ? "3.4.0-alpha.1" : 'latest';
8
-
7
+ var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
9
8
  var PCDLoader = {
10
9
  name: 'PCD (Point Cloud Data)',
11
10
  id: 'pcd',
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","_typecheckPCDLoader"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\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 = {\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\nexport const _typecheckPCDLoader: Loader = PCDLoader;\n"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;;AAKpE,IAAMC,SAAS,GAAG;EACvBC,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;AAAC;AAEK,IAAMC,mBAA2B,GAAGV,SAAS;AAAC"}
1
+ {"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","exports","_typecheckPCDLoader"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\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 = {\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\nexport const _typecheckPCDLoader: Loader = PCDLoader;\n"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAKpE,IAAMC,SAAS,GAAG;EACvBC,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;AAEK,IAAMW,mBAA2B,GAAGX,SAAS;AAACU,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-worker.js","names":["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;AACA;AAEA,IAAAA,+BAAkB,EAACC,gBAAS,CAAC"}
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"}
@@ -1,4 +1,3 @@
1
-
2
1
  const moduleExports = require('./index');
3
2
  globalThis.loaders = globalThis.loaders || {};
4
3
  module.exports = Object.assign(globalThis.loaders, moduleExports);
@@ -1 +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"}
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"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import parsePCDSync from './lib/parse-pcd';
2
2
  import { PCDLoader as PCDWorkerLoader } from './pcd-loader';
3
3
  export { PCDWorkerLoader };
4
-
5
4
  export const PCDLoader = {
6
5
  ...PCDWorkerLoader,
7
6
  parse: async arrayBuffer => parsePCDSync(arrayBuffer),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["parsePCDSync","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\n\nexport {PCDWorkerLoader};\n\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\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":"AACA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAEzD,SAAQA,eAAe;;AAKvB,OAAO,MAAMD,SAAS,GAAG;EACvB,GAAGC,eAAe;EAClBC,KAAK,EAAE,MAAOC,WAAW,IAAKJ,YAAY,CAACI,WAAW,CAAC;EACvDC,SAAS,EAAEL;AACb,CAAC;AAED,OAAO,MAAMM,mBAAqC,GAAGL,SAAS"}
1
+ {"version":3,"file":"index.js","names":["parsePCDSync","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\n\nexport {PCDWorkerLoader};\n\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\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":"AACA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAEzD,SAAQA,eAAe;AAKvB,OAAO,MAAMD,SAAS,GAAG;EACvB,GAAGC,eAAe;EAClBC,KAAK,EAAE,MAAOC,WAAW,IAAKJ,YAAY,CAACI,WAAW,CAAC;EACvDC,SAAS,EAAEL;AACb,CAAC;AAED,OAAO,MAAMM,mBAAqC,GAAGL,SAAS"}
@@ -1,4 +1,3 @@
1
-
2
1
  export function decompressLZF(inData, outLength) {
3
2
  const inLength = inData.length;
4
3
  const outData = new Uint8Array(outLength);
@@ -11,23 +10,37 @@ export function decompressLZF(inData, outLength) {
11
10
  ctrl = inData[inPtr++];
12
11
  if (ctrl < 1 << 5) {
13
12
  ctrl++;
14
- if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');
15
- if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');
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
+ }
16
19
  do {
17
20
  outData[outPtr++] = inData[inPtr++];
18
21
  } while (--ctrl);
19
22
  } else {
20
23
  len = ctrl >> 5;
21
24
  ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
22
- if (inPtr >= inLength) throw new Error('Invalid compressed data');
25
+ if (inPtr >= inLength) {
26
+ throw new Error('Invalid compressed data');
27
+ }
23
28
  if (len === 7) {
24
29
  len += inData[inPtr++];
25
- if (inPtr >= inLength) throw new Error('Invalid compressed data');
30
+ if (inPtr >= inLength) {
31
+ throw new Error('Invalid compressed data');
32
+ }
26
33
  }
27
34
  ref -= inData[inPtr++];
28
- if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');
29
- if (ref < 0) throw new Error('Invalid compressed data');
30
- if (ref >= outPtr) throw new Error('Invalid compressed data');
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
+ }
31
44
  do {
32
45
  outData[outPtr++] = outData[ref++];
33
46
  } while (--len + 2);
@@ -1 +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) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\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) throw new Error('Invalid compressed data');\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\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,aAAa,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,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACnF,IAAIL,KAAK,GAAGE,IAAI,GAAGN,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEvE,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,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEjE,IAAIF,GAAG,KAAK,CAAC,EAAE;QACbA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAE,CAAC;QACtB,IAAIA,KAAK,IAAIJ,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MACnE;MAEAD,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAE,CAAC;MACtB,IAAIC,MAAM,GAAGE,GAAG,GAAG,CAAC,GAAGR,SAAS,EAAE,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtF,IAAID,GAAG,GAAG,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MACvD,IAAID,GAAG,IAAIH,MAAM,EAAE,MAAM,IAAII,KAAK,CAAC,yBAAyB,CAAC;MAE7D,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { Schema, Field, Float32, Uint8, FixedSizeList } from '@loaders.gl/schema';
1
+ import { Schema, Field, Float32, Int32, Uint8, FixedSizeList } from '@loaders.gl/schema';
2
2
  export function getPCDSchema(PCDheader, metadata) {
3
3
  const offset = PCDheader.offset;
4
4
  const fields = [];
@@ -11,6 +11,12 @@ export function getPCDSchema(PCDheader, metadata) {
11
11
  if (offset.rgb !== undefined) {
12
12
  fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));
13
13
  }
14
+ if (offset.intensity !== undefined) {
15
+ fields.push(new Field('intensity', new Field('intensity', new Float32()), false));
16
+ }
17
+ if (offset.label !== undefined) {
18
+ fields.push(new Field('label', new Field('label', new Int32()), false));
19
+ }
14
20
  return new Schema(fields, metadata);
15
21
  }
16
22
  //# sourceMappingURL=get-pcd-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-pcd-schema.js","names":["Schema","Field","Float32","Uint8","FixedSizeList","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","normal_x","rgb"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":"AAAA,SAAQA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAEC,aAAa,QAAO,oBAAoB;AAW/E,OAAO,SAASC,YAAY,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,MAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CACT,IAAIX,KAAK,CAAC,UAAU,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CACpF;EACH;EAEA,IAAIM,MAAM,CAACK,QAAQ,KAAKF,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC,IAAIX,KAAK,CAAC,QAAQ,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAChG;EAEA,IAAIM,MAAM,CAACM,GAAG,KAAKH,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC,IAAIX,KAAK,CAAC,SAAS,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F;EAEA,OAAO,IAAIH,MAAM,CAACS,MAAM,EAAEF,QAAQ,CAAC;AACrC"}
1
+ {"version":3,"file":"get-pcd-schema.js","names":["Schema","Field","Float32","Int32","Uint8","FixedSizeList","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","normal_x","rgb","intensity","label"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Int32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n if (offset.intensity !== undefined) {\n fields.push(new Field('intensity', new Field('intensity', new Float32()), false));\n }\n\n if (offset.label !== undefined) {\n fields.push(new Field('label', new Field('label', new Int32()), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":"AAAA,SAAQA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAEC,KAAK,EAAEC,aAAa,QAAO,oBAAoB;AAWtF,OAAO,SAASC,YAAYA,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,MAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CACT,IAAIZ,KAAK,CAAC,UAAU,EAAE,IAAII,aAAa,CAAC,CAAC,EAAE,IAAIJ,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CACpF;EACH;EAEA,IAAIO,MAAM,CAACK,QAAQ,KAAKF,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC,IAAIZ,KAAK,CAAC,QAAQ,EAAE,IAAII,aAAa,CAAC,CAAC,EAAE,IAAIJ,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAChG;EAEA,IAAIO,MAAM,CAACM,GAAG,KAAKH,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC,IAAIZ,KAAK,CAAC,SAAS,EAAE,IAAII,aAAa,CAAC,CAAC,EAAE,IAAIJ,KAAK,CAAC,KAAK,EAAE,IAAIG,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F;EAEA,IAAIK,MAAM,CAACO,SAAS,KAAKJ,SAAS,EAAE;IAClCF,MAAM,CAACG,IAAI,CAAC,IAAIZ,KAAK,CAAC,WAAW,EAAE,IAAIA,KAAK,CAAC,WAAW,EAAE,IAAIC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EACnF;EAEA,IAAIO,MAAM,CAACQ,KAAK,KAAKL,SAAS,EAAE;IAC9BF,MAAM,CAACG,IAAI,CAAC,IAAIZ,KAAK,CAAC,OAAO,EAAE,IAAIA,KAAK,CAAC,OAAO,EAAE,IAAIE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;EACzE;EAEA,OAAO,IAAIH,MAAM,CAACU,MAAM,EAAEF,QAAQ,CAAC;AACrC"}
@@ -1,15 +1,11 @@
1
-
2
-
3
1
  import { getMeshBoundingBox } from '@loaders.gl/schema';
4
2
  import { decompressLZF } from './decompress-lzf';
5
3
  import { getPCDSchema } from './get-pcd-schema';
6
4
  const LITTLE_ENDIAN = true;
7
-
8
5
  export default function parsePCD(data) {
9
6
  const textData = new TextDecoder().decode(data);
10
7
  const pcdHeader = parsePCDHeader(textData);
11
8
  let attributes = {};
12
-
13
9
  switch (pcdHeader.data) {
14
10
  case 'ascii':
15
11
  attributes = parsePCDASCII(pcdHeader, textData);
@@ -38,7 +34,6 @@ export default function parsePCD(data) {
38
34
  attributes
39
35
  };
40
36
  }
41
-
42
37
  function getMeshHeader(pcdHeader, attributes) {
43
38
  if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
44
39
  const pointCount = pcdHeader.width * pcdHeader.height;
@@ -49,7 +44,6 @@ function getMeshHeader(pcdHeader, attributes) {
49
44
  }
50
45
  return pcdHeader;
51
46
  }
52
-
53
47
  function getMeshAttributes(attributes) {
54
48
  const normalizedAttributes = {
55
49
  POSITION: {
@@ -69,9 +63,20 @@ function getMeshAttributes(attributes) {
69
63
  size: 3
70
64
  };
71
65
  }
66
+ if (attributes.intensity && attributes.intensity.length > 0) {
67
+ normalizedAttributes.COLOR_0 = {
68
+ value: new Uint8Array(attributes.color),
69
+ size: 3
70
+ };
71
+ }
72
+ if (attributes.label && attributes.label.length > 0) {
73
+ normalizedAttributes.COLOR_0 = {
74
+ value: new Uint8Array(attributes.label),
75
+ size: 3
76
+ };
77
+ }
72
78
  return normalizedAttributes;
73
79
  }
74
-
75
80
  function parsePCDHeader(data) {
76
81
  const result1 = data.search(/[\r\n]DATA\s(\S*)\s/i);
77
82
  const result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
@@ -81,9 +86,7 @@ function parsePCDHeader(data) {
81
86
  pcdHeader.headerLen = (result2 && result2[0].length) + result1;
82
87
  }
83
88
  pcdHeader.str = data.substr(0, pcdHeader.headerLen);
84
-
85
89
  pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, '');
86
-
87
90
  pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
88
91
  pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
89
92
  pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
@@ -93,7 +96,6 @@ function parsePCDHeader(data) {
93
96
  pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);
94
97
  pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);
95
98
  pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);
96
-
97
99
  if (pcdHeader.version !== null) {
98
100
  pcdHeader.version = parseFloat(pcdHeader.version[1]);
99
101
  }
@@ -143,15 +145,15 @@ function parsePCDHeader(data) {
143
145
  }
144
146
  }
145
147
  }
146
-
147
148
  pcdHeader.rowSize = sizeSum;
148
149
  return pcdHeader;
149
150
  }
150
-
151
151
  function parsePCDASCII(pcdHeader, textData) {
152
152
  const position = [];
153
153
  const normal = [];
154
154
  const color = [];
155
+ const intensity = [];
156
+ const label = [];
155
157
  const offset = pcdHeader.offset;
156
158
  const pcdData = textData.substr(pcdHeader.headerLen);
157
159
  const lines = pcdData.split('\n');
@@ -171,12 +173,17 @@ function parsePCDASCII(pcdHeader, textData) {
171
173
  color.push(dataview.getUint8(1));
172
174
  color.push(dataview.getUint8(2));
173
175
  }
174
-
175
176
  if (offset.normal_x !== undefined) {
176
177
  normal.push(parseFloat(line[offset.normal_x]));
177
178
  normal.push(parseFloat(line[offset.normal_y]));
178
179
  normal.push(parseFloat(line[offset.normal_z]));
179
180
  }
181
+ if (offset.intensity !== undefined) {
182
+ intensity.push(parseFloat(line[offset.intensity]));
183
+ }
184
+ if (offset.label !== undefined) {
185
+ label.push(parseInt(line[offset.label]));
186
+ }
180
187
  }
181
188
  }
182
189
  return {
@@ -185,11 +192,12 @@ function parsePCDASCII(pcdHeader, textData) {
185
192
  color
186
193
  };
187
194
  }
188
-
189
195
  function parsePCDBinary(pcdHeader, data) {
190
196
  const position = [];
191
197
  const normal = [];
192
198
  const color = [];
199
+ const intensity = [];
200
+ const label = [];
193
201
  const dataview = new DataView(data, pcdHeader.headerLen);
194
202
  const offset = pcdHeader.offset;
195
203
  for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
@@ -208,11 +216,19 @@ function parsePCDBinary(pcdHeader, data) {
208
216
  normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
209
217
  normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
210
218
  }
219
+ if (offset.intensity !== undefined) {
220
+ intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));
221
+ }
222
+ if (offset.label !== undefined) {
223
+ label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));
224
+ }
211
225
  }
212
226
  return {
213
227
  position,
214
228
  normal,
215
- color
229
+ color,
230
+ intensity,
231
+ label
216
232
  };
217
233
  }
218
234
 
@@ -223,37 +239,49 @@ function parsePCDBinary(pcdHeader, data) {
223
239
  * @param data
224
240
  * @returns [attributes]
225
241
  */
226
- function parsePCDBinaryCompressed(PCDheader, data) {
242
+ function parsePCDBinaryCompressed(pcdHeader, data) {
227
243
  const position = [];
228
244
  const normal = [];
229
245
  const color = [];
230
- const sizes = new Uint32Array(data.slice(PCDheader.headerLen, PCDheader.headerLen + 8));
246
+ const intensity = [];
247
+ const label = [];
248
+ const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
231
249
  const compressedSize = sizes[0];
232
250
  const decompressedSize = sizes[1];
233
- const decompressed = decompressLZF(new Uint8Array(data, PCDheader.headerLen + 8, compressedSize), decompressedSize);
251
+ const decompressed = decompressLZF(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
234
252
  const dataview = new DataView(decompressed.buffer);
235
- const offset = PCDheader.offset;
236
- for (let i = 0; i < PCDheader.points; i++) {
253
+ const offset = pcdHeader.offset;
254
+ for (let i = 0; i < pcdHeader.points; i++) {
237
255
  if (offset.x !== undefined) {
238
- position.push(dataview.getFloat32(PCDheader.points * offset.x + PCDheader.size[0] * i, LITTLE_ENDIAN));
239
- position.push(dataview.getFloat32(PCDheader.points * offset.y + PCDheader.size[1] * i, LITTLE_ENDIAN));
240
- position.push(dataview.getFloat32(PCDheader.points * offset.z + PCDheader.size[2] * i, LITTLE_ENDIAN));
256
+ position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
257
+ position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
258
+ position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));
241
259
  }
242
260
  if (offset.rgb !== undefined) {
243
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 0) / 255.0);
244
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 1) / 255.0);
245
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 2) / 255.0);
261
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0);
262
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0);
263
+ color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0);
246
264
  }
247
265
  if (offset.normal_x !== undefined) {
248
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_x + PCDheader.size[4] * i, LITTLE_ENDIAN));
249
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_y + PCDheader.size[5] * i, LITTLE_ENDIAN));
250
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_z + PCDheader.size[6] * i, LITTLE_ENDIAN));
266
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));
267
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));
268
+ normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
269
+ }
270
+ if (offset.intensity !== undefined) {
271
+ const intensityIndex = pcdHeader.fields.indexOf('intensity');
272
+ intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
273
+ }
274
+ if (offset.label !== undefined) {
275
+ const labelIndex = pcdHeader.fields.indexOf('label');
276
+ label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
251
277
  }
252
278
  }
253
279
  return {
254
280
  position,
255
281
  normal,
256
- color
282
+ color,
283
+ intensity,
284
+ label
257
285
  };
258
286
  }
259
287
  //# sourceMappingURL=parse-pcd.js.map