@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.
- package/dist/dist.min.js +82 -24
- package/dist/es5/index.js +6 -8
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/decompress-lzf.js +21 -7
- package/dist/es5/lib/decompress-lzf.js.map +1 -1
- package/dist/es5/lib/get-pcd-schema.js +6 -0
- package/dist/es5/lib/get-pcd-schema.js.map +1 -1
- package/dist/es5/lib/parse-pcd.js +58 -29
- package/dist/es5/lib/parse-pcd.js.map +1 -1
- package/dist/es5/lib/pcd-types.js.map +1 -1
- package/dist/es5/pcd-loader.js +1 -2
- package/dist/es5/pcd-loader.js.map +1 -1
- package/dist/es5/workers/pcd-worker.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/decompress-lzf.js +21 -8
- package/dist/esm/lib/decompress-lzf.js.map +1 -1
- package/dist/esm/lib/get-pcd-schema.js +7 -1
- package/dist/esm/lib/get-pcd-schema.js.map +1 -1
- package/dist/esm/lib/parse-pcd.js +58 -30
- package/dist/esm/lib/parse-pcd.js.map +1 -1
- package/dist/esm/lib/pcd-types.js.map +1 -1
- package/dist/esm/pcd-loader.js +1 -3
- package/dist/esm/pcd-loader.js.map +1 -1
- package/dist/lib/decompress-lzf.d.ts.map +1 -1
- package/dist/lib/decompress-lzf.js +14 -7
- package/dist/lib/get-pcd-schema.d.ts.map +1 -1
- package/dist/lib/get-pcd-schema.js +6 -0
- package/dist/lib/parse-pcd.js +60 -17
- package/dist/lib/pcd-types.d.ts +9 -9
- package/dist/lib/pcd-types.d.ts.map +1 -1
- package/dist/pcd-worker.js +82 -24
- package/package.json +4 -4
- package/src/lib/decompress-lzf.ts +21 -7
- package/src/lib/get-pcd-schema.ts +9 -1
- package/src/lib/parse-pcd.ts +79 -33
- package/src/lib/pcd-types.ts +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-pcd.js","names":["getMeshBoundingBox","decompressLZF","getPCDSchema","LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","getMeshAttributes","header","getMeshHeader","metadata","Map","JSON","stringify","boundingBox","schema","loaderData","mode","indices","width","height","pointCount","vertexCount","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"],"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":["getMeshBoundingBox","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","loaderData","mode","indices","width","height","pointCount","vertexCount","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","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:
|
|
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":""}
|
package/dist/esm/pcd-loader.js
CHANGED
|
@@ -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":"
|
|
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,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAK3E,OAAO,MAAMC,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;AAED,OAAO,MAAMC,mBAA2B,GAAGV,SAAS"}
|
|
@@ -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,
|
|
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"}
|
|
@@ -20,10 +20,12 @@ function decompressLZF(inData, outLength) {
|
|
|
20
20
|
ctrl = inData[inPtr++];
|
|
21
21
|
if (ctrl < 1 << 5) {
|
|
22
22
|
ctrl++;
|
|
23
|
-
if (outPtr + ctrl > outLength)
|
|
23
|
+
if (outPtr + ctrl > outLength) {
|
|
24
24
|
throw new Error('Output buffer is not large enough');
|
|
25
|
-
|
|
25
|
+
}
|
|
26
|
+
if (inPtr + ctrl > inLength) {
|
|
26
27
|
throw new Error('Invalid compressed data');
|
|
28
|
+
}
|
|
27
29
|
do {
|
|
28
30
|
outData[outPtr++] = inData[inPtr++];
|
|
29
31
|
} while (--ctrl);
|
|
@@ -31,20 +33,25 @@ function decompressLZF(inData, outLength) {
|
|
|
31
33
|
else {
|
|
32
34
|
len = ctrl >> 5;
|
|
33
35
|
ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
|
|
34
|
-
if (inPtr >= inLength)
|
|
36
|
+
if (inPtr >= inLength) {
|
|
35
37
|
throw new Error('Invalid compressed data');
|
|
38
|
+
}
|
|
36
39
|
if (len === 7) {
|
|
37
40
|
len += inData[inPtr++];
|
|
38
|
-
if (inPtr >= inLength)
|
|
41
|
+
if (inPtr >= inLength) {
|
|
39
42
|
throw new Error('Invalid compressed data');
|
|
43
|
+
}
|
|
40
44
|
}
|
|
41
45
|
ref -= inData[inPtr++];
|
|
42
|
-
if (outPtr + len + 2 > outLength)
|
|
46
|
+
if (outPtr + len + 2 > outLength) {
|
|
43
47
|
throw new Error('Output buffer is not large enough');
|
|
44
|
-
|
|
48
|
+
}
|
|
49
|
+
if (ref < 0) {
|
|
45
50
|
throw new Error('Invalid compressed data');
|
|
46
|
-
|
|
51
|
+
}
|
|
52
|
+
if (ref >= outPtr) {
|
|
47
53
|
throw new Error('Invalid compressed data');
|
|
54
|
+
}
|
|
48
55
|
do {
|
|
49
56
|
outData[outPtr++] = outData[ref++];
|
|
50
57
|
} while (--len + 2);
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"get-pcd-schema.d.ts","sourceRoot":"","sources":["../../src/lib/get-pcd-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAA8C,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAE3C,KAAK,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,CA4BnF"}
|
|
@@ -20,6 +20,12 @@ function getPCDSchema(PCDheader, metadata) {
|
|
|
20
20
|
if (offset.rgb !== undefined) {
|
|
21
21
|
fields.push(new schema_1.Field('COLOR_0', new schema_1.FixedSizeList(3, new schema_1.Field('rgb', new schema_1.Uint8())), false));
|
|
22
22
|
}
|
|
23
|
+
if (offset.intensity !== undefined) {
|
|
24
|
+
fields.push(new schema_1.Field('intensity', new schema_1.Field('intensity', new schema_1.Float32()), false));
|
|
25
|
+
}
|
|
26
|
+
if (offset.label !== undefined) {
|
|
27
|
+
fields.push(new schema_1.Field('label', new schema_1.Field('label', new schema_1.Int32()), false));
|
|
28
|
+
}
|
|
23
29
|
return new schema_1.Schema(fields, metadata);
|
|
24
30
|
}
|
|
25
31
|
exports.getPCDSchema = getPCDSchema;
|
package/dist/lib/parse-pcd.js
CHANGED
|
@@ -90,6 +90,20 @@ function getMeshAttributes(attributes) {
|
|
|
90
90
|
size: 3
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
+
if (attributes.intensity && attributes.intensity.length > 0) {
|
|
94
|
+
// TODO - RGBA
|
|
95
|
+
normalizedAttributes.COLOR_0 = {
|
|
96
|
+
value: new Uint8Array(attributes.color),
|
|
97
|
+
size: 3
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (attributes.label && attributes.label.length > 0) {
|
|
101
|
+
// TODO - RGBA
|
|
102
|
+
normalizedAttributes.COLOR_0 = {
|
|
103
|
+
value: new Uint8Array(attributes.label),
|
|
104
|
+
size: 3
|
|
105
|
+
};
|
|
106
|
+
}
|
|
93
107
|
return normalizedAttributes;
|
|
94
108
|
}
|
|
95
109
|
/**
|
|
@@ -182,11 +196,13 @@ function parsePCDHeader(data) {
|
|
|
182
196
|
* @param textData
|
|
183
197
|
* @returns [attributes]
|
|
184
198
|
*/
|
|
185
|
-
|
|
199
|
+
// eslint-enable-next-line complexity, max-statements
|
|
186
200
|
function parsePCDASCII(pcdHeader, textData) {
|
|
187
201
|
const position = [];
|
|
188
202
|
const normal = [];
|
|
189
203
|
const color = [];
|
|
204
|
+
const intensity = [];
|
|
205
|
+
const label = [];
|
|
190
206
|
const offset = pcdHeader.offset;
|
|
191
207
|
const pcdData = textData.substr(pcdHeader.headerLen);
|
|
192
208
|
const lines = pcdData.split('\n');
|
|
@@ -212,6 +228,12 @@ function parsePCDASCII(pcdHeader, textData) {
|
|
|
212
228
|
normal.push(parseFloat(line[offset.normal_y]));
|
|
213
229
|
normal.push(parseFloat(line[offset.normal_z]));
|
|
214
230
|
}
|
|
231
|
+
if (offset.intensity !== undefined) {
|
|
232
|
+
intensity.push(parseFloat(line[offset.intensity]));
|
|
233
|
+
}
|
|
234
|
+
if (offset.label !== undefined) {
|
|
235
|
+
label.push(parseInt(line[offset.label]));
|
|
236
|
+
}
|
|
215
237
|
}
|
|
216
238
|
}
|
|
217
239
|
return { position, normal, color };
|
|
@@ -225,6 +247,8 @@ function parsePCDBinary(pcdHeader, data) {
|
|
|
225
247
|
const position = [];
|
|
226
248
|
const normal = [];
|
|
227
249
|
const color = [];
|
|
250
|
+
const intensity = [];
|
|
251
|
+
const label = [];
|
|
228
252
|
const dataview = new DataView(data, pcdHeader.headerLen);
|
|
229
253
|
const offset = pcdHeader.offset;
|
|
230
254
|
for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
|
|
@@ -243,8 +267,14 @@ function parsePCDBinary(pcdHeader, data) {
|
|
|
243
267
|
normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
|
|
244
268
|
normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
|
|
245
269
|
}
|
|
270
|
+
if (offset.intensity !== undefined) {
|
|
271
|
+
intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));
|
|
272
|
+
}
|
|
273
|
+
if (offset.label !== undefined) {
|
|
274
|
+
label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));
|
|
275
|
+
}
|
|
246
276
|
}
|
|
247
|
-
return { position, normal, color };
|
|
277
|
+
return { position, normal, color, intensity, label };
|
|
248
278
|
}
|
|
249
279
|
/** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
|
|
250
280
|
* from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
|
|
@@ -253,36 +283,49 @@ function parsePCDBinary(pcdHeader, data) {
|
|
|
253
283
|
* @param data
|
|
254
284
|
* @returns [attributes]
|
|
255
285
|
*/
|
|
256
|
-
|
|
286
|
+
// eslint-enable-next-line complexity, max-statements
|
|
287
|
+
function parsePCDBinaryCompressed(pcdHeader, data) {
|
|
257
288
|
const position = [];
|
|
258
289
|
const normal = [];
|
|
259
290
|
const color = [];
|
|
260
|
-
const
|
|
291
|
+
const intensity = [];
|
|
292
|
+
const label = [];
|
|
293
|
+
const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
|
|
261
294
|
const compressedSize = sizes[0];
|
|
262
295
|
const decompressedSize = sizes[1];
|
|
263
|
-
const decompressed = (0, decompress_lzf_1.decompressLZF)(new Uint8Array(data,
|
|
296
|
+
const decompressed = (0, decompress_lzf_1.decompressLZF)(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
|
|
264
297
|
const dataview = new DataView(decompressed.buffer);
|
|
265
|
-
const offset =
|
|
266
|
-
for (let i = 0; i <
|
|
298
|
+
const offset = pcdHeader.offset;
|
|
299
|
+
for (let i = 0; i < pcdHeader.points; i++) {
|
|
267
300
|
if (offset.x !== undefined) {
|
|
268
|
-
position.push(dataview.getFloat32(
|
|
269
|
-
position.push(dataview.getFloat32(
|
|
270
|
-
position.push(dataview.getFloat32(
|
|
301
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
|
|
302
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
|
|
303
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));
|
|
271
304
|
}
|
|
272
305
|
if (offset.rgb !== undefined) {
|
|
273
|
-
color.push(dataview.getUint8(
|
|
274
|
-
color.push(dataview.getUint8(
|
|
275
|
-
color.push(dataview.getUint8(
|
|
306
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255.0);
|
|
307
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255.0);
|
|
308
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255.0);
|
|
276
309
|
}
|
|
277
310
|
if (offset.normal_x !== undefined) {
|
|
278
|
-
normal.push(dataview.getFloat32(
|
|
279
|
-
normal.push(dataview.getFloat32(
|
|
280
|
-
normal.push(dataview.getFloat32(
|
|
311
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));
|
|
312
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));
|
|
313
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
|
|
314
|
+
}
|
|
315
|
+
if (offset.intensity !== undefined) {
|
|
316
|
+
const intensityIndex = pcdHeader.fields.indexOf('intensity');
|
|
317
|
+
intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
|
|
318
|
+
}
|
|
319
|
+
if (offset.label !== undefined) {
|
|
320
|
+
const labelIndex = pcdHeader.fields.indexOf('label');
|
|
321
|
+
label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
|
|
281
322
|
}
|
|
282
323
|
}
|
|
283
324
|
return {
|
|
284
325
|
position,
|
|
285
326
|
normal,
|
|
286
|
-
color
|
|
327
|
+
color,
|
|
328
|
+
intensity,
|
|
329
|
+
label
|
|
287
330
|
};
|
|
288
331
|
}
|
package/dist/lib/pcd-types.d.ts
CHANGED
|
@@ -4,15 +4,15 @@ export type PCDHeader = {
|
|
|
4
4
|
data: any;
|
|
5
5
|
headerLen: number;
|
|
6
6
|
str: string;
|
|
7
|
-
version:
|
|
8
|
-
fields:
|
|
9
|
-
size:
|
|
10
|
-
type:
|
|
11
|
-
count:
|
|
12
|
-
width:
|
|
13
|
-
height:
|
|
14
|
-
viewpoint:
|
|
15
|
-
points:
|
|
7
|
+
version: number;
|
|
8
|
+
fields: string[];
|
|
9
|
+
size: number[];
|
|
10
|
+
type: null | string[];
|
|
11
|
+
count: null | number[];
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
viewpoint: null | string;
|
|
15
|
+
points: number;
|
|
16
16
|
offset: {
|
|
17
17
|
[index: string]: number;
|
|
18
18
|
};
|
|
@@ -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,
|
|
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"}
|
package/dist/pcd-worker.js
CHANGED
|
@@ -457,6 +457,11 @@
|
|
|
457
457
|
return `${this.isSigned ? "I" : "Ui"}nt${this.bitWidth}`;
|
|
458
458
|
}
|
|
459
459
|
};
|
|
460
|
+
var Int32 = class extends Int {
|
|
461
|
+
constructor() {
|
|
462
|
+
super(true, 32);
|
|
463
|
+
}
|
|
464
|
+
};
|
|
460
465
|
var Uint8 = class extends Int {
|
|
461
466
|
constructor() {
|
|
462
467
|
super(false, 8);
|
|
@@ -639,30 +644,37 @@
|
|
|
639
644
|
ctrl = inData[inPtr++];
|
|
640
645
|
if (ctrl < 1 << 5) {
|
|
641
646
|
ctrl++;
|
|
642
|
-
if (outPtr + ctrl > outLength)
|
|
647
|
+
if (outPtr + ctrl > outLength) {
|
|
643
648
|
throw new Error("Output buffer is not large enough");
|
|
644
|
-
|
|
649
|
+
}
|
|
650
|
+
if (inPtr + ctrl > inLength) {
|
|
645
651
|
throw new Error("Invalid compressed data");
|
|
652
|
+
}
|
|
646
653
|
do {
|
|
647
654
|
outData[outPtr++] = inData[inPtr++];
|
|
648
655
|
} while (--ctrl);
|
|
649
656
|
} else {
|
|
650
657
|
len = ctrl >> 5;
|
|
651
658
|
ref = outPtr - ((ctrl & 31) << 8) - 1;
|
|
652
|
-
if (inPtr >= inLength)
|
|
659
|
+
if (inPtr >= inLength) {
|
|
653
660
|
throw new Error("Invalid compressed data");
|
|
661
|
+
}
|
|
654
662
|
if (len === 7) {
|
|
655
663
|
len += inData[inPtr++];
|
|
656
|
-
if (inPtr >= inLength)
|
|
664
|
+
if (inPtr >= inLength) {
|
|
657
665
|
throw new Error("Invalid compressed data");
|
|
666
|
+
}
|
|
658
667
|
}
|
|
659
668
|
ref -= inData[inPtr++];
|
|
660
|
-
if (outPtr + len + 2 > outLength)
|
|
669
|
+
if (outPtr + len + 2 > outLength) {
|
|
661
670
|
throw new Error("Output buffer is not large enough");
|
|
662
|
-
|
|
671
|
+
}
|
|
672
|
+
if (ref < 0) {
|
|
663
673
|
throw new Error("Invalid compressed data");
|
|
664
|
-
|
|
674
|
+
}
|
|
675
|
+
if (ref >= outPtr) {
|
|
665
676
|
throw new Error("Invalid compressed data");
|
|
677
|
+
}
|
|
666
678
|
do {
|
|
667
679
|
outData[outPtr++] = outData[ref++];
|
|
668
680
|
} while (--len + 2);
|
|
@@ -684,6 +696,12 @@
|
|
|
684
696
|
if (offset.rgb !== void 0) {
|
|
685
697
|
fields.push(new Field("COLOR_0", new FixedSizeList(3, new Field("rgb", new Uint8())), false));
|
|
686
698
|
}
|
|
699
|
+
if (offset.intensity !== void 0) {
|
|
700
|
+
fields.push(new Field("intensity", new Field("intensity", new Float32()), false));
|
|
701
|
+
}
|
|
702
|
+
if (offset.label !== void 0) {
|
|
703
|
+
fields.push(new Field("label", new Field("label", new Int32()), false));
|
|
704
|
+
}
|
|
687
705
|
return new Schema(fields, metadata);
|
|
688
706
|
}
|
|
689
707
|
|
|
@@ -753,6 +771,18 @@
|
|
|
753
771
|
size: 3
|
|
754
772
|
};
|
|
755
773
|
}
|
|
774
|
+
if (attributes.intensity && attributes.intensity.length > 0) {
|
|
775
|
+
normalizedAttributes.COLOR_0 = {
|
|
776
|
+
value: new Uint8Array(attributes.color),
|
|
777
|
+
size: 3
|
|
778
|
+
};
|
|
779
|
+
}
|
|
780
|
+
if (attributes.label && attributes.label.length > 0) {
|
|
781
|
+
normalizedAttributes.COLOR_0 = {
|
|
782
|
+
value: new Uint8Array(attributes.label),
|
|
783
|
+
size: 3
|
|
784
|
+
};
|
|
785
|
+
}
|
|
756
786
|
return normalizedAttributes;
|
|
757
787
|
}
|
|
758
788
|
function parsePCDHeader(data) {
|
|
@@ -830,6 +860,8 @@
|
|
|
830
860
|
const position = [];
|
|
831
861
|
const normal = [];
|
|
832
862
|
const color = [];
|
|
863
|
+
const intensity = [];
|
|
864
|
+
const label = [];
|
|
833
865
|
const offset = pcdHeader.offset;
|
|
834
866
|
const pcdData = textData.substr(pcdHeader.headerLen);
|
|
835
867
|
const lines = pcdData.split("\n");
|
|
@@ -854,6 +886,12 @@
|
|
|
854
886
|
normal.push(parseFloat(line[offset.normal_y]));
|
|
855
887
|
normal.push(parseFloat(line[offset.normal_z]));
|
|
856
888
|
}
|
|
889
|
+
if (offset.intensity !== void 0) {
|
|
890
|
+
intensity.push(parseFloat(line[offset.intensity]));
|
|
891
|
+
}
|
|
892
|
+
if (offset.label !== void 0) {
|
|
893
|
+
label.push(parseInt(line[offset.label]));
|
|
894
|
+
}
|
|
857
895
|
}
|
|
858
896
|
}
|
|
859
897
|
return { position, normal, color };
|
|
@@ -862,6 +900,8 @@
|
|
|
862
900
|
const position = [];
|
|
863
901
|
const normal = [];
|
|
864
902
|
const color = [];
|
|
903
|
+
const intensity = [];
|
|
904
|
+
const label = [];
|
|
865
905
|
const dataview = new DataView(data, pcdHeader.headerLen);
|
|
866
906
|
const offset = pcdHeader.offset;
|
|
867
907
|
for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
|
|
@@ -880,45 +920,63 @@
|
|
|
880
920
|
normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
|
|
881
921
|
normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
|
|
882
922
|
}
|
|
923
|
+
if (offset.intensity !== void 0) {
|
|
924
|
+
intensity.push(dataview.getFloat32(row + offset.intensity, LITTLE_ENDIAN));
|
|
925
|
+
}
|
|
926
|
+
if (offset.label !== void 0) {
|
|
927
|
+
label.push(dataview.getInt32(row + offset.label, LITTLE_ENDIAN));
|
|
928
|
+
}
|
|
883
929
|
}
|
|
884
|
-
return { position, normal, color };
|
|
930
|
+
return { position, normal, color, intensity, label };
|
|
885
931
|
}
|
|
886
|
-
function parsePCDBinaryCompressed(
|
|
932
|
+
function parsePCDBinaryCompressed(pcdHeader, data) {
|
|
887
933
|
const position = [];
|
|
888
934
|
const normal = [];
|
|
889
935
|
const color = [];
|
|
890
|
-
const
|
|
936
|
+
const intensity = [];
|
|
937
|
+
const label = [];
|
|
938
|
+
const sizes = new Uint32Array(data.slice(pcdHeader.headerLen, pcdHeader.headerLen + 8));
|
|
891
939
|
const compressedSize = sizes[0];
|
|
892
940
|
const decompressedSize = sizes[1];
|
|
893
|
-
const decompressed = decompressLZF(new Uint8Array(data,
|
|
941
|
+
const decompressed = decompressLZF(new Uint8Array(data, pcdHeader.headerLen + 8, compressedSize), decompressedSize);
|
|
894
942
|
const dataview = new DataView(decompressed.buffer);
|
|
895
|
-
const offset =
|
|
896
|
-
for (let i = 0; i <
|
|
943
|
+
const offset = pcdHeader.offset;
|
|
944
|
+
for (let i = 0; i < pcdHeader.points; i++) {
|
|
897
945
|
if (offset.x !== void 0) {
|
|
898
|
-
position.push(dataview.getFloat32(
|
|
899
|
-
position.push(dataview.getFloat32(
|
|
900
|
-
position.push(dataview.getFloat32(
|
|
946
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.x + pcdHeader.size[0] * i, LITTLE_ENDIAN));
|
|
947
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.y + pcdHeader.size[1] * i, LITTLE_ENDIAN));
|
|
948
|
+
position.push(dataview.getFloat32(pcdHeader.points * offset.z + pcdHeader.size[2] * i, LITTLE_ENDIAN));
|
|
901
949
|
}
|
|
902
950
|
if (offset.rgb !== void 0) {
|
|
903
|
-
color.push(dataview.getUint8(
|
|
904
|
-
color.push(dataview.getUint8(
|
|
905
|
-
color.push(dataview.getUint8(
|
|
951
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 0) / 255);
|
|
952
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 1) / 255);
|
|
953
|
+
color.push(dataview.getUint8(pcdHeader.points * offset.rgb + pcdHeader.size[3] * i + 2) / 255);
|
|
906
954
|
}
|
|
907
955
|
if (offset.normal_x !== void 0) {
|
|
908
|
-
normal.push(dataview.getFloat32(
|
|
909
|
-
normal.push(dataview.getFloat32(
|
|
910
|
-
normal.push(dataview.getFloat32(
|
|
956
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_x + pcdHeader.size[4] * i, LITTLE_ENDIAN));
|
|
957
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_y + pcdHeader.size[5] * i, LITTLE_ENDIAN));
|
|
958
|
+
normal.push(dataview.getFloat32(pcdHeader.points * offset.normal_z + pcdHeader.size[6] * i, LITTLE_ENDIAN));
|
|
959
|
+
}
|
|
960
|
+
if (offset.intensity !== void 0) {
|
|
961
|
+
const intensityIndex = pcdHeader.fields.indexOf("intensity");
|
|
962
|
+
intensity.push(dataview.getFloat32(pcdHeader.points * offset.intensity + pcdHeader.size[intensityIndex] * i, LITTLE_ENDIAN));
|
|
963
|
+
}
|
|
964
|
+
if (offset.label !== void 0) {
|
|
965
|
+
const labelIndex = pcdHeader.fields.indexOf("label");
|
|
966
|
+
label.push(dataview.getInt32(pcdHeader.points * offset.label + pcdHeader.size[labelIndex] * i, LITTLE_ENDIAN));
|
|
911
967
|
}
|
|
912
968
|
}
|
|
913
969
|
return {
|
|
914
970
|
position,
|
|
915
971
|
normal,
|
|
916
|
-
color
|
|
972
|
+
color,
|
|
973
|
+
intensity,
|
|
974
|
+
label
|
|
917
975
|
};
|
|
918
976
|
}
|
|
919
977
|
|
|
920
978
|
// src/pcd-loader.ts
|
|
921
|
-
var VERSION = true ? "3.4.0-alpha.
|
|
979
|
+
var VERSION = true ? "3.4.0-alpha.3" : "latest";
|
|
922
980
|
var PCDLoader = {
|
|
923
981
|
name: "PCD (Point Cloud Data)",
|
|
924
982
|
id: "pcd",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/pcd",
|
|
3
|
-
"version": "3.4.0-alpha.
|
|
3
|
+
"version": "3.4.0-alpha.3",
|
|
4
4
|
"description": "Framework-independent loader for the PCD format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"build-worker": "esbuild src/workers/pcd-worker.ts --bundle --outfile=dist/pcd-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@loaders.gl/loader-utils": "3.4.0-alpha.
|
|
37
|
-
"@loaders.gl/schema": "3.4.0-alpha.
|
|
36
|
+
"@loaders.gl/loader-utils": "3.4.0-alpha.3",
|
|
37
|
+
"@loaders.gl/schema": "3.4.0-alpha.3"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "a954528dd1d78a1f128d8f6b07e4baeb7a296924"
|
|
40
40
|
}
|