@loaders.gl/pcd 3.1.3 → 4.0.0-alpha.5

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 (49) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/index.js +8 -17
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/decompress-lzf.js +43 -54
  6. package/dist/lib/decompress-lzf.js.map +1 -0
  7. package/dist/lib/get-pcd-schema.js +19 -24
  8. package/dist/lib/get-pcd-schema.js.map +1 -0
  9. package/dist/lib/parse-pcd.js +261 -260
  10. package/dist/lib/parse-pcd.js.map +1 -0
  11. package/dist/lib/pcd-types.js +2 -2
  12. package/dist/{es5/lib → lib}/pcd-types.js.map +0 -0
  13. package/dist/pcd-loader.js +14 -21
  14. package/dist/pcd-loader.js.map +1 -0
  15. package/dist/pcd-worker.js +1 -1
  16. package/dist/workers/pcd-worker.js +4 -5
  17. package/dist/workers/pcd-worker.js.map +1 -0
  18. package/package.json +7 -7
  19. package/dist/es5/bundle.js +0 -7
  20. package/dist/es5/bundle.js.map +0 -1
  21. package/dist/es5/index.js +0 -59
  22. package/dist/es5/index.js.map +0 -1
  23. package/dist/es5/lib/decompress-lzf.js +0 -51
  24. package/dist/es5/lib/decompress-lzf.js.map +0 -1
  25. package/dist/es5/lib/get-pcd-schema.js +0 -28
  26. package/dist/es5/lib/get-pcd-schema.js.map +0 -1
  27. package/dist/es5/lib/parse-pcd.js +0 -304
  28. package/dist/es5/lib/parse-pcd.js.map +0 -1
  29. package/dist/es5/lib/pcd-types.js +0 -2
  30. package/dist/es5/pcd-loader.js +0 -23
  31. package/dist/es5/pcd-loader.js.map +0 -1
  32. package/dist/es5/workers/pcd-worker.js +0 -8
  33. package/dist/es5/workers/pcd-worker.js.map +0 -1
  34. package/dist/esm/bundle.js +0 -5
  35. package/dist/esm/bundle.js.map +0 -1
  36. package/dist/esm/index.js +0 -9
  37. package/dist/esm/index.js.map +0 -1
  38. package/dist/esm/lib/decompress-lzf.js +0 -44
  39. package/dist/esm/lib/decompress-lzf.js.map +0 -1
  40. package/dist/esm/lib/get-pcd-schema.js +0 -20
  41. package/dist/esm/lib/get-pcd-schema.js.map +0 -1
  42. package/dist/esm/lib/parse-pcd.js +0 -289
  43. package/dist/esm/lib/parse-pcd.js.map +0 -1
  44. package/dist/esm/lib/pcd-types.js +0 -2
  45. package/dist/esm/lib/pcd-types.js.map +0 -1
  46. package/dist/esm/pcd-loader.js +0 -15
  47. package/dist/esm/pcd-loader.js.map +0 -1
  48. package/dist/esm/workers/pcd-worker.js +0 -4
  49. package/dist/esm/workers/pcd-worker.js.map +0 -1
@@ -1,22 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._typecheckPCDLoader = exports.PCDLoader = void 0;
4
- // __VERSION__ is injected by babel-plugin-version-inline
5
- // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
7
- /**
8
- * Worker loader for PCD - Point Cloud Data
9
- */
10
- exports.PCDLoader = {
11
- name: 'PCD (Point Cloud Data)',
12
- id: 'pcd',
13
- module: 'pcd',
14
- version: VERSION,
15
- worker: true,
16
- extensions: ['pcd'],
17
- mimeTypes: ['text/plain'],
18
- options: {
19
- pcd: {}
20
- }
1
+ const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : 'latest';
2
+ export const PCDLoader = {
3
+ name: 'PCD (Point Cloud Data)',
4
+ id: 'pcd',
5
+ module: 'pcd',
6
+ version: VERSION,
7
+ worker: true,
8
+ extensions: ['pcd'],
9
+ mimeTypes: ['text/plain'],
10
+ options: {
11
+ pcd: {}
12
+ }
21
13
  };
22
- exports._typecheckPCDLoader = exports.PCDLoader;
14
+ export const _typecheckPCDLoader = PCDLoader;
15
+ //# sourceMappingURL=pcd-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pcd-loader.ts"],"names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","_typecheckPCDLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAKA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,wBADiB;AAEvBC,EAAAA,EAAE,EAAE,KAFmB;AAGvBC,EAAAA,MAAM,EAAE,KAHe;AAIvBC,EAAAA,OAAO,EAAEL,OAJc;AAKvBM,EAAAA,MAAM,EAAE,IALe;AAMvBC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANW;AAOvBC,EAAAA,SAAS,EAAE,CAAC,YAAD,CAPY;AAQvBC,EAAAA,OAAO,EAAE;AACPC,IAAAA,GAAG,EAAE;AADE;AARc,CAAlB;AAaP,OAAO,MAAMC,mBAA2B,GAAGV,SAApC","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"],"file":"pcd-loader.js"}
@@ -886,7 +886,7 @@
886
886
  }
887
887
 
888
888
  // src/pcd-loader.ts
889
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
889
+ var VERSION = true ? "4.0.0-alpha.5" : "latest";
890
890
  var PCDLoader = {
891
891
  name: "PCD (Point Cloud Data)",
892
892
  id: "pcd",
@@ -1,5 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const loader_utils_1 = require("@loaders.gl/loader-utils");
4
- const index_1 = require("../index");
5
- (0, loader_utils_1.createLoaderWorker)(index_1.PCDLoader);
1
+ import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
+ import { PCDLoader } from '../index';
3
+ createLoaderWorker(PCDLoader);
4
+ //# sourceMappingURL=pcd-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/workers/pcd-worker.ts"],"names":["createLoaderWorker","PCDLoader"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,0BAAjC;AACA,SAAQC,SAAR,QAAwB,UAAxB;AAEAD,kBAAkB,CAACC,SAAD,CAAlB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {PCDLoader} from '../index';\n\ncreateLoaderWorker(PCDLoader);\n"],"file":"pcd-worker.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/pcd",
3
- "version": "3.1.3",
3
+ "version": "4.0.0-alpha.5",
4
4
  "description": "Framework-independent loader for the PCD format",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -19,8 +19,8 @@
19
19
  "PCD"
20
20
  ],
21
21
  "types": "dist/index.d.ts",
22
- "main": "dist/es5/index.js",
23
- "module": "dist/esm/index.js",
22
+ "main": "dist/index.js",
23
+ "module": "dist/index.js",
24
24
  "sideEffects": false,
25
25
  "files": [
26
26
  "src",
@@ -30,11 +30,11 @@
30
30
  "scripts": {
31
31
  "pre-build": "npm run build-worker && npm run build-bundle",
32
32
  "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js",
33
- "build-worker": "esbuild src/workers/pcd-worker.ts --bundle --outfile=dist/pcd-worker.js"
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.1.3",
37
- "@loaders.gl/schema": "3.1.3"
36
+ "@loaders.gl/loader-utils": "4.0.0-alpha.5",
37
+ "@loaders.gl/schema": "4.0.0-alpha.5"
38
38
  },
39
- "gitHead": "4a690c369779346d73c9a27395d1c08d77d279a4"
39
+ "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
40
40
  }
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var moduleExports = require('./index');
4
-
5
- globalThis.loaders = globalThis.loaders || {};
6
- module.exports = Object.assign(globalThis.loaders, moduleExports);
7
- //# sourceMappingURL=bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
package/dist/es5/index.js DELETED
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "PCDWorkerLoader", {
9
- enumerable: true,
10
- get: function get() {
11
- return _pcdLoader.PCDLoader;
12
- }
13
- });
14
- exports._typecheckPCDLoader = exports.PCDLoader = void 0;
15
-
16
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
-
18
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
-
20
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
- var _parsePcd = _interopRequireDefault(require("./lib/parse-pcd"));
23
-
24
- var _pcdLoader = require("./pcd-loader");
25
-
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
-
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
29
-
30
- var PCDLoader = _objectSpread(_objectSpread({}, _pcdLoader.PCDLoader), {}, {
31
- parse: function () {
32
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
33
- return _regenerator.default.wrap(function _callee$(_context) {
34
- while (1) {
35
- switch (_context.prev = _context.next) {
36
- case 0:
37
- return _context.abrupt("return", (0, _parsePcd.default)(arrayBuffer));
38
-
39
- case 1:
40
- case "end":
41
- return _context.stop();
42
- }
43
- }
44
- }, _callee);
45
- }));
46
-
47
- function parse(_x) {
48
- return _parse.apply(this, arguments);
49
- }
50
-
51
- return parse;
52
- }(),
53
- parseSync: _parsePcd.default
54
- });
55
-
56
- exports.PCDLoader = PCDLoader;
57
- var _typecheckPCDLoader = PCDLoader;
58
- exports._typecheckPCDLoader = _typecheckPCDLoader;
59
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","parsePCDSync","_typecheckPCDLoader"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAOO,IAAMA,SAAS,mCACjBC,oBADiB;AAEpBC,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAuB,uBAAaA,WAAb,CAAvB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFe;AAGpBC,EAAAA,SAAS,EAAEC;AAHS,EAAf;;;AAMA,IAAMC,mBAAqC,GAAGN,SAA9C","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"],"file":"index.js"}
@@ -1,51 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.decompressLZF = decompressLZF;
7
-
8
- function decompressLZF(inData, outLength) {
9
- var inLength = inData.length;
10
- var outData = new Uint8Array(outLength);
11
- var inPtr = 0;
12
- var outPtr = 0;
13
- var ctrl;
14
- var len;
15
- var ref;
16
-
17
- do {
18
- ctrl = inData[inPtr++];
19
-
20
- if (ctrl < 1 << 5) {
21
- ctrl++;
22
- if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');
23
- if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');
24
-
25
- do {
26
- outData[outPtr++] = inData[inPtr++];
27
- } while (--ctrl);
28
- } else {
29
- len = ctrl >> 5;
30
- ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
31
- if (inPtr >= inLength) throw new Error('Invalid compressed data');
32
-
33
- if (len === 7) {
34
- len += inData[inPtr++];
35
- if (inPtr >= inLength) throw new Error('Invalid compressed data');
36
- }
37
-
38
- ref -= inData[inPtr++];
39
- if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');
40
- if (ref < 0) throw new Error('Invalid compressed data');
41
- if (ref >= outPtr) throw new Error('Invalid compressed data');
42
-
43
- do {
44
- outData[outPtr++] = outData[ref++];
45
- } while (--len + 2);
46
- }
47
- } while (inPtr < inLength);
48
-
49
- return outData;
50
- }
51
- //# sourceMappingURL=decompress-lzf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/decompress-lzf.ts"],"names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"mappings":";;;;;;;AAOO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,SAA3C,EAA0E;AAC/E,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAxB;AACA,MAAMC,OAAO,GAAG,IAAIC,UAAJ,CAAeJ,SAAf,CAAhB;AACA,MAAIK,KAAK,GAAG,CAAZ;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,IAAJ;AACA,MAAIC,GAAJ;AACA,MAAIC,GAAJ;;AAEA,KAAG;AACDF,IAAAA,IAAI,GAAGR,MAAM,CAACM,KAAK,EAAN,CAAb;;AAEA,QAAIE,IAAI,GAAG,KAAK,CAAhB,EAAmB;AACjBA,MAAAA,IAAI;AACJ,UAAID,MAAM,GAAGC,IAAT,GAAgBP,SAApB,EAA+B,MAAM,IAAIU,KAAJ,CAAU,mCAAV,CAAN;AAC/B,UAAIL,KAAK,GAAGE,IAAR,GAAeN,QAAnB,EAA6B,MAAM,IAAIS,KAAJ,CAAU,yBAAV,CAAN;;AAE7B,SAAG;AACDP,QAAAA,OAAO,CAACG,MAAM,EAAP,CAAP,GAAoBP,MAAM,CAACM,KAAK,EAAN,CAA1B;AACD,OAFD,QAES,EAAEE,IAFX;AAGD,KARD,MAQO;AACLC,MAAAA,GAAG,GAAGD,IAAI,IAAI,CAAd;AACAE,MAAAA,GAAG,GAAGH,MAAM,IAAI,CAACC,IAAI,GAAG,IAAR,KAAiB,CAArB,CAAN,GAAgC,CAAtC;AACA,UAAIF,KAAK,IAAIJ,QAAb,EAAuB,MAAM,IAAIS,KAAJ,CAAU,yBAAV,CAAN;;AAEvB,UAAIF,GAAG,KAAK,CAAZ,EAAe;AACbA,QAAAA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAN,CAAb;AACA,YAAIA,KAAK,IAAIJ,QAAb,EAAuB,MAAM,IAAIS,KAAJ,CAAU,yBAAV,CAAN;AACxB;;AAEDD,MAAAA,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAN,CAAb;AACA,UAAIC,MAAM,GAAGE,GAAT,GAAe,CAAf,GAAmBR,SAAvB,EAAkC,MAAM,IAAIU,KAAJ,CAAU,mCAAV,CAAN;AAClC,UAAID,GAAG,GAAG,CAAV,EAAa,MAAM,IAAIC,KAAJ,CAAU,yBAAV,CAAN;AACb,UAAID,GAAG,IAAIH,MAAX,EAAmB,MAAM,IAAII,KAAJ,CAAU,yBAAV,CAAN;;AAEnB,SAAG;AACDP,QAAAA,OAAO,CAACG,MAAM,EAAP,CAAP,GAAoBH,OAAO,CAACM,GAAG,EAAJ,CAA3B;AACD,OAFD,QAES,EAAED,GAAF,GAAQ,CAFjB;AAGD;AACF,GA9BD,QA8BSH,KAAK,GAAGJ,QA9BjB;;AAgCA,SAAOE,OAAP;AACD","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"],"file":"decompress-lzf.js"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getPCDSchema = getPCDSchema;
7
-
8
- var _schema = require("@loaders.gl/schema");
9
-
10
- function getPCDSchema(PCDheader, metadata) {
11
- var offset = PCDheader.offset;
12
- var fields = [];
13
-
14
- if (offset.x !== undefined) {
15
- fields.push(new _schema.Field('POSITION', new _schema.FixedSizeList(3, new _schema.Field('xyz', new _schema.Float32())), false));
16
- }
17
-
18
- if (offset.normal_x !== undefined) {
19
- fields.push(new _schema.Field('NORMAL', new _schema.FixedSizeList(3, new _schema.Field('xyz', new _schema.Float32())), false));
20
- }
21
-
22
- if (offset.rgb !== undefined) {
23
- fields.push(new _schema.Field('COLOR_0', new _schema.FixedSizeList(3, new _schema.Field('rgb', new _schema.Uint8())), false));
24
- }
25
-
26
- return new _schema.Schema(fields, metadata);
27
- }
28
- //# sourceMappingURL=get-pcd-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/get-pcd-schema.ts"],"names":["getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","Field","FixedSizeList","Float32","normal_x","rgb","Uint8","Schema"],"mappings":";;;;;;;AAAA;;AAWO,SAASA,YAAT,CAAsBC,SAAtB,EAA4CC,QAA5C,EAA8E;AACnF,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAzB;AAEA,MAAMC,MAAe,GAAG,EAAxB;;AAEA,MAAID,MAAM,CAACE,CAAP,KAAaC,SAAjB,EAA4B;AAC1BF,IAAAA,MAAM,CAACG,IAAP,CACE,IAAIC,aAAJ,CAAU,UAAV,EAAsB,IAAIC,qBAAJ,CAAkB,CAAlB,EAAqB,IAAID,aAAJ,CAAU,KAAV,EAAiB,IAAIE,eAAJ,EAAjB,CAArB,CAAtB,EAA6E,KAA7E,CADF;AAGD;;AAED,MAAIP,MAAM,CAACQ,QAAP,KAAoBL,SAAxB,EAAmC;AACjCF,IAAAA,MAAM,CAACG,IAAP,CAAY,IAAIC,aAAJ,CAAU,QAAV,EAAoB,IAAIC,qBAAJ,CAAkB,CAAlB,EAAqB,IAAID,aAAJ,CAAU,KAAV,EAAiB,IAAIE,eAAJ,EAAjB,CAArB,CAApB,EAA2E,KAA3E,CAAZ;AACD;;AAED,MAAIP,MAAM,CAACS,GAAP,KAAeN,SAAnB,EAA8B;AAC5BF,IAAAA,MAAM,CAACG,IAAP,CAAY,IAAIC,aAAJ,CAAU,SAAV,EAAqB,IAAIC,qBAAJ,CAAkB,CAAlB,EAAqB,IAAID,aAAJ,CAAU,KAAV,EAAiB,IAAIK,aAAJ,EAAjB,CAArB,CAArB,EAA0E,KAA1E,CAAZ;AACD;;AAED,SAAO,IAAIC,cAAJ,CAAWV,MAAX,EAAmBF,QAAnB,CAAP;AACD","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"],"file":"get-pcd-schema.js"}
@@ -1,304 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = parsePCD;
7
-
8
- var _schema = require("@loaders.gl/schema");
9
-
10
- var _decompressLzf = require("./decompress-lzf");
11
-
12
- var _getPcdSchema = require("./get-pcd-schema");
13
-
14
- var LITTLE_ENDIAN = true;
15
-
16
- function parsePCD(data) {
17
- var textData = new TextDecoder().decode(data);
18
- var pcdHeader = parsePCDHeader(textData);
19
- var attributes = {};
20
-
21
- switch (pcdHeader.data) {
22
- case 'ascii':
23
- attributes = parsePCDASCII(pcdHeader, textData);
24
- break;
25
-
26
- case 'binary':
27
- attributes = parsePCDBinary(pcdHeader, data);
28
- break;
29
-
30
- case 'binary_compressed':
31
- attributes = parsePCDBinaryCompressed(pcdHeader, data);
32
- break;
33
-
34
- default:
35
- throw new Error("PCD: ".concat(pcdHeader.data, " files are not supported"));
36
- }
37
-
38
- attributes = getMeshAttributes(attributes);
39
- var header = getMeshHeader(pcdHeader, attributes);
40
- var metadata = new Map([['mode', '0'], ['boundingBox', JSON.stringify(header.boundingBox)]]);
41
- var schema = (0, _getPcdSchema.getPCDSchema)(pcdHeader, metadata);
42
- return {
43
- loaderData: {
44
- header: pcdHeader
45
- },
46
- header: header,
47
- schema: schema,
48
- mode: 0,
49
- indices: null,
50
- attributes: attributes
51
- };
52
- }
53
-
54
- function getMeshHeader(pcdHeader, attributes) {
55
- if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
56
- var pointCount = pcdHeader.width * pcdHeader.height;
57
- return {
58
- vertexCount: pointCount,
59
- boundingBox: (0, _schema.getMeshBoundingBox)(attributes)
60
- };
61
- }
62
-
63
- return pcdHeader;
64
- }
65
-
66
- function getMeshAttributes(attributes) {
67
- var normalizedAttributes = {
68
- POSITION: {
69
- value: new Float32Array(attributes.position),
70
- size: 3
71
- }
72
- };
73
-
74
- if (attributes.normal && attributes.normal.length > 0) {
75
- normalizedAttributes.NORMAL = {
76
- value: new Float32Array(attributes.normal),
77
- size: 3
78
- };
79
- }
80
-
81
- if (attributes.color && attributes.color.length > 0) {
82
- normalizedAttributes.COLOR_0 = {
83
- value: new Uint8Array(attributes.color),
84
- size: 3
85
- };
86
- }
87
-
88
- return normalizedAttributes;
89
- }
90
-
91
- function parsePCDHeader(data) {
92
- var result1 = data.search(/[\r\n]DATA\s(\S*)\s/i);
93
- var result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
94
- var pcdHeader = {};
95
- pcdHeader.data = result2 && result2[1];
96
-
97
- if (result2 !== null) {
98
- pcdHeader.headerLen = (result2 && result2[0].length) + result1;
99
- }
100
-
101
- pcdHeader.str = data.substr(0, pcdHeader.headerLen);
102
- pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, '');
103
- pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
104
- pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
105
- pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
106
- pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);
107
- pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);
108
- pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);
109
- pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);
110
- pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);
111
- pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);
112
-
113
- if (pcdHeader.version !== null) {
114
- pcdHeader.version = parseFloat(pcdHeader.version[1]);
115
- }
116
-
117
- if (pcdHeader.fields !== null) {
118
- pcdHeader.fields = pcdHeader.fields[1].split(' ');
119
- }
120
-
121
- if (pcdHeader.type !== null) {
122
- pcdHeader.type = pcdHeader.type[1].split(' ');
123
- }
124
-
125
- if (pcdHeader.width !== null) {
126
- pcdHeader.width = parseInt(pcdHeader.width[1], 10);
127
- }
128
-
129
- if (pcdHeader.height !== null) {
130
- pcdHeader.height = parseInt(pcdHeader.height[1], 10);
131
- }
132
-
133
- if (pcdHeader.viewpoint !== null) {
134
- pcdHeader.viewpoint = pcdHeader.viewpoint[1];
135
- }
136
-
137
- if (pcdHeader.points !== null) {
138
- pcdHeader.points = parseInt(pcdHeader.points[1], 10);
139
- }
140
-
141
- if (pcdHeader.points === null && typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
142
- pcdHeader.points = pcdHeader.width * pcdHeader.height;
143
- }
144
-
145
- if (pcdHeader.size !== null) {
146
- pcdHeader.size = pcdHeader.size[1].split(' ').map(function (x) {
147
- return parseInt(x, 10);
148
- });
149
- }
150
-
151
- if (pcdHeader.count !== null) {
152
- pcdHeader.count = pcdHeader.count[1].split(' ').map(function (x) {
153
- return parseInt(x, 10);
154
- });
155
- } else {
156
- pcdHeader.count = [];
157
-
158
- if (pcdHeader.fields !== null) {
159
- for (var i = 0; i < pcdHeader.fields.length; i++) {
160
- pcdHeader.count.push(1);
161
- }
162
- }
163
- }
164
-
165
- pcdHeader.offset = {};
166
- var sizeSum = 0;
167
-
168
- if (pcdHeader.fields !== null && pcdHeader.size !== null) {
169
- for (var _i = 0; _i < pcdHeader.fields.length; _i++) {
170
- if (pcdHeader.data === 'ascii') {
171
- pcdHeader.offset[pcdHeader.fields[_i]] = _i;
172
- } else {
173
- pcdHeader.offset[pcdHeader.fields[_i]] = sizeSum;
174
- sizeSum += pcdHeader.size[_i];
175
- }
176
- }
177
- }
178
-
179
- pcdHeader.rowSize = sizeSum;
180
- return pcdHeader;
181
- }
182
-
183
- function parsePCDASCII(pcdHeader, textData) {
184
- var position = [];
185
- var normal = [];
186
- var color = [];
187
- var offset = pcdHeader.offset;
188
- var pcdData = textData.substr(pcdHeader.headerLen);
189
- var lines = pcdData.split('\n');
190
-
191
- for (var i = 0; i < lines.length; i++) {
192
- if (lines[i] !== '') {
193
- var line = lines[i].split(' ');
194
-
195
- if (offset.x !== undefined) {
196
- position.push(parseFloat(line[offset.x]));
197
- position.push(parseFloat(line[offset.y]));
198
- position.push(parseFloat(line[offset.z]));
199
- }
200
-
201
- if (offset.rgb !== undefined) {
202
- var floatValue = parseFloat(line[offset.rgb]);
203
- var binaryColor = new Float32Array([floatValue]);
204
- var dataview = new DataView(binaryColor.buffer, 0);
205
- color.push(dataview.getUint8(0));
206
- color.push(dataview.getUint8(1));
207
- color.push(dataview.getUint8(2));
208
- }
209
-
210
- if (offset.normal_x !== undefined) {
211
- normal.push(parseFloat(line[offset.normal_x]));
212
- normal.push(parseFloat(line[offset.normal_y]));
213
- normal.push(parseFloat(line[offset.normal_z]));
214
- }
215
- }
216
- }
217
-
218
- return {
219
- position: position,
220
- normal: normal,
221
- color: color
222
- };
223
- }
224
-
225
- function parsePCDBinary(pcdHeader, data) {
226
- var position = [];
227
- var normal = [];
228
- var color = [];
229
- var dataview = new DataView(data, pcdHeader.headerLen);
230
- var offset = pcdHeader.offset;
231
-
232
- for (var i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
233
- if (offset.x !== undefined) {
234
- position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
235
- position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
236
- position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));
237
- }
238
-
239
- if (offset.rgb !== undefined) {
240
- color.push(dataview.getUint8(row + offset.rgb + 0));
241
- color.push(dataview.getUint8(row + offset.rgb + 1));
242
- color.push(dataview.getUint8(row + offset.rgb + 2));
243
- }
244
-
245
- if (offset.normal_x !== undefined) {
246
- normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));
247
- normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
248
- normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
249
- }
250
- }
251
-
252
- return {
253
- position: position,
254
- normal: normal,
255
- color: color
256
- };
257
- }
258
- /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
259
- * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
260
- * @license MIT (http://opensource.org/licenses/MIT)
261
- * @param pcdHeader
262
- * @param data
263
- * @returns [attributes]
264
- */
265
-
266
-
267
- function parsePCDBinaryCompressed(PCDheader, data) {
268
- var position = [];
269
- var normal = [];
270
- var color = [];
271
- var sizes = new Uint32Array(data.slice(PCDheader.headerLen, PCDheader.headerLen + 8));
272
- var compressedSize = sizes[0];
273
- var decompressedSize = sizes[1];
274
- var decompressed = (0, _decompressLzf.decompressLZF)(new Uint8Array(data, PCDheader.headerLen + 8, compressedSize), decompressedSize);
275
- var dataview = new DataView(decompressed.buffer);
276
- var offset = PCDheader.offset;
277
-
278
- for (var i = 0; i < PCDheader.points; i++) {
279
- if (offset.x !== undefined) {
280
- position.push(dataview.getFloat32(PCDheader.points * offset.x + PCDheader.size[0] * i, LITTLE_ENDIAN));
281
- position.push(dataview.getFloat32(PCDheader.points * offset.y + PCDheader.size[1] * i, LITTLE_ENDIAN));
282
- position.push(dataview.getFloat32(PCDheader.points * offset.z + PCDheader.size[2] * i, LITTLE_ENDIAN));
283
- }
284
-
285
- if (offset.rgb !== undefined) {
286
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 0) / 255.0);
287
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 1) / 255.0);
288
- color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 2) / 255.0);
289
- }
290
-
291
- if (offset.normal_x !== undefined) {
292
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_x + PCDheader.size[4] * i, LITTLE_ENDIAN));
293
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_y + PCDheader.size[5] * i, LITTLE_ENDIAN));
294
- normal.push(dataview.getFloat32(PCDheader.points * offset.normal_z + PCDheader.size[6] * i, LITTLE_ENDIAN));
295
- }
296
- }
297
-
298
- return {
299
- position: position,
300
- normal: normal,
301
- color: color
302
- };
303
- }
304
- //# sourceMappingURL=parse-pcd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/parse-pcd.ts"],"names":["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"],"mappings":"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","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"],"file":"parse-pcd.js"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=pcd-types.js.map