@loaders.gl/pcd 3.3.0-alpha.4 → 3.3.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var moduleExports = require('./index');
4
-
5
4
  globalThis.loaders = globalThis.loaders || {};
6
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
7
6
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/es5/index.js CHANGED
@@ -1,32 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
7
+ exports.PCDLoader = void 0;
8
8
  Object.defineProperty(exports, "PCDWorkerLoader", {
9
9
  enumerable: true,
10
10
  get: function get() {
11
11
  return _pcdLoader.PCDLoader;
12
12
  }
13
13
  });
14
- exports._typecheckPCDLoader = exports.PCDLoader = void 0;
15
-
14
+ exports._typecheckPCDLoader = void 0;
16
15
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
-
18
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
19
-
20
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
18
  var _parsePcd = _interopRequireDefault(require("./lib/parse-pcd"));
23
-
24
19
  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
-
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
22
  var PCDLoader = _objectSpread(_objectSpread({}, _pcdLoader.PCDLoader), {}, {
31
23
  parse: function () {
32
24
  var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer) {
@@ -35,7 +27,6 @@ var PCDLoader = _objectSpread(_objectSpread({}, _pcdLoader.PCDLoader), {}, {
35
27
  switch (_context.prev = _context.next) {
36
28
  case 0:
37
29
  return _context.abrupt("return", (0, _parsePcd.default)(arrayBuffer));
38
-
39
30
  case 1:
40
31
  case "end":
41
32
  return _context.stop();
@@ -43,16 +34,13 @@ var PCDLoader = _objectSpread(_objectSpread({}, _pcdLoader.PCDLoader), {}, {
43
34
  }
44
35
  }, _callee);
45
36
  }));
46
-
47
37
  function parse(_x) {
48
38
  return _parse.apply(this, arguments);
49
39
  }
50
-
51
40
  return parse;
52
41
  }(),
53
42
  parseSync: _parsePcd.default
54
43
  });
55
-
56
44
  exports.PCDLoader = PCDLoader;
57
45
  var _typecheckPCDLoader = PCDLoader;
58
46
  exports._typecheckPCDLoader = _typecheckPCDLoader;
@@ -1 +1 @@
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
+ {"version":3,"file":"index.js","names":["PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parsePCDSync","parseSync","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\n\nexport {PCDWorkerLoader};\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),\n parseSync: parsePCDSync\n};\n\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":";;;;;;;;;;;;;;;;;AACA;AACA;AAA0D;AAAA;AAOnD,IAAMA,SAAS,mCACjBC,oBAAe;EAClBC,KAAK;IAAA,uEAAE,iBAAOC,WAAW;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAK,IAAAC,iBAAY,EAACD,WAAW,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACvDE,SAAS,EAAED;AAAY,EACxB;AAAC;AAEK,IAAME,mBAAqC,GAAGN,SAAS;AAAC"}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.decompressLZF = decompressLZF;
7
-
8
7
  function decompressLZF(inData, outLength) {
9
8
  var inLength = inData.length;
10
9
  var outData = new Uint8Array(outLength);
@@ -13,15 +12,12 @@ function decompressLZF(inData, outLength) {
13
12
  var ctrl;
14
13
  var len;
15
14
  var ref;
16
-
17
15
  do {
18
16
  ctrl = inData[inPtr++];
19
-
20
17
  if (ctrl < 1 << 5) {
21
18
  ctrl++;
22
19
  if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');
23
20
  if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');
24
-
25
21
  do {
26
22
  outData[outPtr++] = inData[inPtr++];
27
23
  } while (--ctrl);
@@ -29,23 +25,19 @@ function decompressLZF(inData, outLength) {
29
25
  len = ctrl >> 5;
30
26
  ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
31
27
  if (inPtr >= inLength) throw new Error('Invalid compressed data');
32
-
33
28
  if (len === 7) {
34
29
  len += inData[inPtr++];
35
30
  if (inPtr >= inLength) throw new Error('Invalid compressed data');
36
31
  }
37
-
38
32
  ref -= inData[inPtr++];
39
33
  if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');
40
34
  if (ref < 0) throw new Error('Invalid compressed data');
41
35
  if (ref >= outPtr) throw new Error('Invalid compressed data');
42
-
43
36
  do {
44
37
  outData[outPtr++] = outData[ref++];
45
38
  } while (--len + 2);
46
39
  }
47
40
  } while (inPtr < inLength);
48
-
49
41
  return outData;
50
42
  }
51
43
  //# sourceMappingURL=decompress-lzf.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"decompress-lzf.js","names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"sources":["../../../src/lib/decompress-lzf.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData: Uint8Array, outLength: number): Uint8Array {\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n\n do {\n ctrl = inData[inPtr++];\n\n if (ctrl < 1 << 5) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n\n return outData;\n}\n"],"mappings":";;;;;;AAOO,SAASA,aAAa,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,IAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM;EAC9B,IAAMC,OAAO,GAAG,IAAIC,UAAU,CAACJ,SAAS,CAAC;EACzC,IAAIK,KAAK,GAAG,CAAC;EACb,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,IAAI;EACR,IAAIC,GAAG;EACP,IAAIC,GAAG;EAEP,GAAG;IACDF,IAAI,GAAGR,MAAM,CAACM,KAAK,EAAE,CAAC;IAEtB,IAAIE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;MACjBA,IAAI,EAAE;MACN,IAAID,MAAM,GAAGC,IAAI,GAAGP,SAAS,EAAE,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACnF,IAAIL,KAAK,GAAGE,IAAI,GAAGN,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEvE,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGP,MAAM,CAACM,KAAK,EAAE,CAAC;MACrC,CAAC,QAAQ,EAAEE,IAAI;IACjB,CAAC,MAAM;MACLC,GAAG,GAAGD,IAAI,IAAI,CAAC;MACfE,GAAG,GAAGH,MAAM,IAAI,CAACC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;MACvC,IAAIF,KAAK,IAAIJ,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEjE,IAAIF,GAAG,KAAK,CAAC,EAAE;QACbA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAE,CAAC;QACtB,IAAIA,KAAK,IAAIJ,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MACnE;MAEAD,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAE,CAAC;MACtB,IAAIC,MAAM,GAAGE,GAAG,GAAG,CAAC,GAAGR,SAAS,EAAE,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtF,IAAID,GAAG,GAAG,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MACvD,IAAID,GAAG,IAAIH,MAAM,EAAE,MAAM,IAAII,KAAK,CAAC,yBAAyB,CAAC;MAE7D,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGH,OAAO,CAACM,GAAG,EAAE,CAAC;MACpC,CAAC,QAAQ,EAAED,GAAG,GAAG,CAAC;IACpB;EACF,CAAC,QAAQH,KAAK,GAAGJ,QAAQ;EAEzB,OAAOE,OAAO;AAChB"}
@@ -4,25 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getPCDSchema = getPCDSchema;
7
-
8
7
  var _schema = require("@loaders.gl/schema");
9
-
10
8
  function getPCDSchema(PCDheader, metadata) {
11
9
  var offset = PCDheader.offset;
12
10
  var fields = [];
13
-
14
11
  if (offset.x !== undefined) {
15
12
  fields.push(new _schema.Field('POSITION', new _schema.FixedSizeList(3, new _schema.Field('xyz', new _schema.Float32())), false));
16
13
  }
17
-
18
14
  if (offset.normal_x !== undefined) {
19
15
  fields.push(new _schema.Field('NORMAL', new _schema.FixedSizeList(3, new _schema.Field('xyz', new _schema.Float32())), false));
20
16
  }
21
-
22
17
  if (offset.rgb !== undefined) {
23
18
  fields.push(new _schema.Field('COLOR_0', new _schema.FixedSizeList(3, new _schema.Field('rgb', new _schema.Uint8())), false));
24
19
  }
25
-
26
20
  return new _schema.Schema(fields, metadata);
27
21
  }
28
22
  //# sourceMappingURL=get-pcd-schema.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"get-pcd-schema.js","names":["getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","Field","FixedSizeList","Float32","normal_x","rgb","Uint8","Schema"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":";;;;;;AAAA;AAWO,SAASA,YAAY,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,IAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,IAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CACT,IAAIC,aAAK,CAAC,UAAU,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIE,eAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CACpF;EACH;EAEA,IAAIP,MAAM,CAACQ,QAAQ,KAAKL,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,QAAQ,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIE,eAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAChG;EAEA,IAAIP,MAAM,CAACS,GAAG,KAAKN,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC,IAAIC,aAAK,CAAC,SAAS,EAAE,IAAIC,qBAAa,CAAC,CAAC,EAAE,IAAID,aAAK,CAAC,KAAK,EAAE,IAAIK,aAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F;EAEA,OAAO,IAAIC,cAAM,CAACV,MAAM,EAAEF,QAAQ,CAAC;AACrC"}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = parsePCD;
7
-
8
7
  var _schema = require("@loaders.gl/schema");
9
-
10
8
  var _decompressLzf = require("./decompress-lzf");
11
-
12
9
  var _getPcdSchema = require("./get-pcd-schema");
13
10
 
14
11
  var LITTLE_ENDIAN = true;
@@ -22,19 +19,15 @@ function parsePCD(data) {
22
19
  case 'ascii':
23
20
  attributes = parsePCDASCII(pcdHeader, textData);
24
21
  break;
25
-
26
22
  case 'binary':
27
23
  attributes = parsePCDBinary(pcdHeader, data);
28
24
  break;
29
-
30
25
  case 'binary_compressed':
31
26
  attributes = parsePCDBinaryCompressed(pcdHeader, data);
32
27
  break;
33
-
34
28
  default:
35
29
  throw new Error("PCD: ".concat(pcdHeader.data, " files are not supported"));
36
30
  }
37
-
38
31
  attributes = getMeshAttributes(attributes);
39
32
  var header = getMeshHeader(pcdHeader, attributes);
40
33
  var metadata = new Map([['mode', '0'], ['boundingBox', JSON.stringify(header.boundingBox)]]);
@@ -59,7 +52,6 @@ function getMeshHeader(pcdHeader, attributes) {
59
52
  boundingBox: (0, _schema.getMeshBoundingBox)(attributes)
60
53
  };
61
54
  }
62
-
63
55
  return pcdHeader;
64
56
  }
65
57
 
@@ -70,21 +62,18 @@ function getMeshAttributes(attributes) {
70
62
  size: 3
71
63
  }
72
64
  };
73
-
74
65
  if (attributes.normal && attributes.normal.length > 0) {
75
66
  normalizedAttributes.NORMAL = {
76
67
  value: new Float32Array(attributes.normal),
77
68
  size: 3
78
69
  };
79
70
  }
80
-
81
71
  if (attributes.color && attributes.color.length > 0) {
82
72
  normalizedAttributes.COLOR_0 = {
83
73
  value: new Uint8Array(attributes.color),
84
74
  size: 3
85
75
  };
86
76
  }
87
-
88
77
  return normalizedAttributes;
89
78
  }
90
79
 
@@ -93,13 +82,13 @@ function parsePCDHeader(data) {
93
82
  var result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
94
83
  var pcdHeader = {};
95
84
  pcdHeader.data = result2 && result2[1];
96
-
97
85
  if (result2 !== null) {
98
86
  pcdHeader.headerLen = (result2 && result2[0].length) + result1;
99
87
  }
100
-
101
88
  pcdHeader.str = data.substr(0, pcdHeader.headerLen);
89
+
102
90
  pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, '');
91
+
103
92
  pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
104
93
  pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
105
94
  pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
@@ -113,58 +102,46 @@ function parsePCDHeader(data) {
113
102
  if (pcdHeader.version !== null) {
114
103
  pcdHeader.version = parseFloat(pcdHeader.version[1]);
115
104
  }
116
-
117
105
  if (pcdHeader.fields !== null) {
118
106
  pcdHeader.fields = pcdHeader.fields[1].split(' ');
119
107
  }
120
-
121
108
  if (pcdHeader.type !== null) {
122
109
  pcdHeader.type = pcdHeader.type[1].split(' ');
123
110
  }
124
-
125
111
  if (pcdHeader.width !== null) {
126
112
  pcdHeader.width = parseInt(pcdHeader.width[1], 10);
127
113
  }
128
-
129
114
  if (pcdHeader.height !== null) {
130
115
  pcdHeader.height = parseInt(pcdHeader.height[1], 10);
131
116
  }
132
-
133
117
  if (pcdHeader.viewpoint !== null) {
134
118
  pcdHeader.viewpoint = pcdHeader.viewpoint[1];
135
119
  }
136
-
137
120
  if (pcdHeader.points !== null) {
138
121
  pcdHeader.points = parseInt(pcdHeader.points[1], 10);
139
122
  }
140
-
141
123
  if (pcdHeader.points === null && typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
142
124
  pcdHeader.points = pcdHeader.width * pcdHeader.height;
143
125
  }
144
-
145
126
  if (pcdHeader.size !== null) {
146
127
  pcdHeader.size = pcdHeader.size[1].split(' ').map(function (x) {
147
128
  return parseInt(x, 10);
148
129
  });
149
130
  }
150
-
151
131
  if (pcdHeader.count !== null) {
152
132
  pcdHeader.count = pcdHeader.count[1].split(' ').map(function (x) {
153
133
  return parseInt(x, 10);
154
134
  });
155
135
  } else {
156
136
  pcdHeader.count = [];
157
-
158
137
  if (pcdHeader.fields !== null) {
159
138
  for (var i = 0; i < pcdHeader.fields.length; i++) {
160
139
  pcdHeader.count.push(1);
161
140
  }
162
141
  }
163
142
  }
164
-
165
143
  pcdHeader.offset = {};
166
144
  var sizeSum = 0;
167
-
168
145
  if (pcdHeader.fields !== null && pcdHeader.size !== null) {
169
146
  for (var _i = 0; _i < pcdHeader.fields.length; _i++) {
170
147
  if (pcdHeader.data === 'ascii') {
@@ -187,17 +164,14 @@ function parsePCDASCII(pcdHeader, textData) {
187
164
  var offset = pcdHeader.offset;
188
165
  var pcdData = textData.substr(pcdHeader.headerLen);
189
166
  var lines = pcdData.split('\n');
190
-
191
167
  for (var i = 0; i < lines.length; i++) {
192
168
  if (lines[i] !== '') {
193
169
  var line = lines[i].split(' ');
194
-
195
170
  if (offset.x !== undefined) {
196
171
  position.push(parseFloat(line[offset.x]));
197
172
  position.push(parseFloat(line[offset.y]));
198
173
  position.push(parseFloat(line[offset.z]));
199
174
  }
200
-
201
175
  if (offset.rgb !== undefined) {
202
176
  var floatValue = parseFloat(line[offset.rgb]);
203
177
  var binaryColor = new Float32Array([floatValue]);
@@ -214,7 +188,6 @@ function parsePCDASCII(pcdHeader, textData) {
214
188
  }
215
189
  }
216
190
  }
217
-
218
191
  return {
219
192
  position: position,
220
193
  normal: normal,
@@ -228,33 +201,30 @@ function parsePCDBinary(pcdHeader, data) {
228
201
  var color = [];
229
202
  var dataview = new DataView(data, pcdHeader.headerLen);
230
203
  var offset = pcdHeader.offset;
231
-
232
204
  for (var i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
233
205
  if (offset.x !== undefined) {
234
206
  position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
235
207
  position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
236
208
  position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));
237
209
  }
238
-
239
210
  if (offset.rgb !== undefined) {
240
211
  color.push(dataview.getUint8(row + offset.rgb + 0));
241
212
  color.push(dataview.getUint8(row + offset.rgb + 1));
242
213
  color.push(dataview.getUint8(row + offset.rgb + 2));
243
214
  }
244
-
245
215
  if (offset.normal_x !== undefined) {
246
216
  normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));
247
217
  normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
248
218
  normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
249
219
  }
250
220
  }
251
-
252
221
  return {
253
222
  position: position,
254
223
  normal: normal,
255
224
  color: color
256
225
  };
257
226
  }
227
+
258
228
  /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
259
229
  * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
260
230
  * @license MIT (http://opensource.org/licenses/MIT)
@@ -262,8 +232,6 @@ function parsePCDBinary(pcdHeader, data) {
262
232
  * @param data
263
233
  * @returns [attributes]
264
234
  */
265
-
266
-
267
235
  function parsePCDBinaryCompressed(PCDheader, data) {
268
236
  var position = [];
269
237
  var normal = [];
@@ -274,27 +242,23 @@ function parsePCDBinaryCompressed(PCDheader, data) {
274
242
  var decompressed = (0, _decompressLzf.decompressLZF)(new Uint8Array(data, PCDheader.headerLen + 8, compressedSize), decompressedSize);
275
243
  var dataview = new DataView(decompressed.buffer);
276
244
  var offset = PCDheader.offset;
277
-
278
245
  for (var i = 0; i < PCDheader.points; i++) {
279
246
  if (offset.x !== undefined) {
280
247
  position.push(dataview.getFloat32(PCDheader.points * offset.x + PCDheader.size[0] * i, LITTLE_ENDIAN));
281
248
  position.push(dataview.getFloat32(PCDheader.points * offset.y + PCDheader.size[1] * i, LITTLE_ENDIAN));
282
249
  position.push(dataview.getFloat32(PCDheader.points * offset.z + PCDheader.size[2] * i, LITTLE_ENDIAN));
283
250
  }
284
-
285
251
  if (offset.rgb !== undefined) {
286
252
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 0) / 255.0);
287
253
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 1) / 255.0);
288
254
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 2) / 255.0);
289
255
  }
290
-
291
256
  if (offset.normal_x !== undefined) {
292
257
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_x + PCDheader.size[4] * i, LITTLE_ENDIAN));
293
258
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_y + PCDheader.size[5] * i, LITTLE_ENDIAN));
294
259
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_z + PCDheader.size[6] * i, LITTLE_ENDIAN));
295
260
  }
296
261
  }
297
-
298
262
  return {
299
263
  position: position,
300
264
  normal: normal,
@@ -1 +1 @@
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
+ {"version":3,"file":"parse-pcd.js","names":["LITTLE_ENDIAN","parsePCD","data","textData","TextDecoder","decode","pcdHeader","parsePCDHeader","attributes","parsePCDASCII","parsePCDBinary","parsePCDBinaryCompressed","Error","getMeshAttributes","header","getMeshHeader","metadata","Map","JSON","stringify","boundingBox","schema","getPCDSchema","loaderData","mode","indices","width","height","pointCount","vertexCount","getMeshBoundingBox","normalizedAttributes","POSITION","value","Float32Array","position","size","normal","length","NORMAL","color","COLOR_0","Uint8Array","result1","search","result2","exec","substr","headerLen","str","replace","version","fields","type","count","viewpoint","points","parseFloat","split","parseInt","map","x","i","push","offset","sizeSum","rowSize","pcdData","lines","line","undefined","y","z","rgb","floatValue","binaryColor","dataview","DataView","buffer","getUint8","normal_x","normal_y","normal_z","row","getFloat32","PCDheader","sizes","Uint32Array","slice","compressedSize","decompressedSize","decompressed","decompressLZF"],"sources":["../../../src/lib/parse-pcd.ts"],"sourcesContent":["// PCD Loader, adapted from THREE.js (MIT license)\n// Description: A loader for PCD ascii and binary files.\n// Limitations: Compressed binary files are not supported.\n//\n// Attributions per original THREE.js source file:\n// @author Filipe Caixeta / http://filipecaixeta.com.br\n// @author Mugen87 / https://github.com/Mugen87\n\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport {decompressLZF} from './decompress-lzf';\nimport {getPCDSchema} from './get-pcd-schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype NormalizedAttributes = {\n POSITION: {\n value: Float32Array;\n size: number;\n };\n NORMAL?: {\n value: Float32Array;\n size: number;\n };\n COLOR_0?: {\n value: Uint8Array;\n size: number;\n };\n};\n\ntype HeaderAttributes = {\n [attributeName: string]: number[];\n};\n\nconst LITTLE_ENDIAN: boolean = true;\n\n/**\n *\n * @param data\n * @returns\n */\nexport default function parsePCD(data: ArrayBufferLike) {\n // parse header (always ascii format)\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n let attributes: any = {};\n\n // parse data\n switch (pcdHeader.data) {\n case 'ascii':\n attributes = parsePCDASCII(pcdHeader, textData);\n break;\n\n case 'binary':\n attributes = parsePCDBinary(pcdHeader, data);\n break;\n\n case 'binary_compressed':\n attributes = parsePCDBinaryCompressed(pcdHeader, data);\n break;\n\n default:\n throw new Error(`PCD: ${pcdHeader.data} files are not supported`);\n }\n\n attributes = getMeshAttributes(attributes);\n\n const header = getMeshHeader(pcdHeader, attributes);\n\n const metadata = new Map([\n ['mode', '0'],\n ['boundingBox', JSON.stringify(header.boundingBox)]\n ]);\n\n const schema = getPCDSchema(pcdHeader, metadata);\n\n return {\n loaderData: {\n header: pcdHeader\n },\n header,\n schema,\n mode: 0, // POINTS\n indices: null,\n attributes\n };\n}\n\n// Create a header that contains common data for PointCloud category loaders\nfunction getMeshHeader(pcdHeader: PCDHeader, attributes: NormalizedAttributes): Partial<PCDHeader> {\n if (typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {\n const pointCount = pcdHeader.width * pcdHeader.height; // Supports \"organized\" point sets\n return {\n vertexCount: pointCount,\n boundingBox: getMeshBoundingBox(attributes)\n };\n }\n return pcdHeader;\n}\n\n/**\n * @param attributes\n * @returns Normalized attributes\n */\nfunction getMeshAttributes(attributes: HeaderAttributes): {[attributeName: string]: MeshAttribute} {\n const normalizedAttributes: MeshAttributes = {\n POSITION: {\n // Binary PCD is only 32 bit\n value: new Float32Array(attributes.position),\n size: 3\n }\n };\n\n if (attributes.normal && attributes.normal.length > 0) {\n normalizedAttributes.NORMAL = {\n value: new Float32Array(attributes.normal),\n size: 3\n };\n }\n\n if (attributes.color && attributes.color.length > 0) {\n // TODO - RGBA\n normalizedAttributes.COLOR_0 = {\n value: new Uint8Array(attributes.color),\n size: 3\n };\n }\n\n return normalizedAttributes;\n}\n\n/**\n * Incoming data parsing\n * @param data\n * @returns Header\n */\n/* eslint-disable complexity, max-statements */\nfunction parsePCDHeader(data: string): PCDHeader {\n const result1 = data.search(/[\\r\\n]DATA\\s(\\S*)\\s/i);\n const result2 = /[\\r\\n]DATA\\s(\\S*)\\s/i.exec(data.substr(result1 - 1));\n\n const pcdHeader: any = {};\n pcdHeader.data = result2 && result2[1];\n if (result2 !== null) {\n pcdHeader.headerLen = (result2 && result2[0].length) + result1;\n }\n pcdHeader.str = data.substr(0, pcdHeader.headerLen);\n\n // remove comments\n\n pcdHeader.str = pcdHeader.str.replace(/\\#.*/gi, '');\n\n // parse\n\n pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);\n pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);\n pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);\n pcdHeader.type = /TYPE (.*)/i.exec(pcdHeader.str);\n pcdHeader.count = /COUNT (.*)/i.exec(pcdHeader.str);\n pcdHeader.width = /WIDTH (.*)/i.exec(pcdHeader.str);\n pcdHeader.height = /HEIGHT (.*)/i.exec(pcdHeader.str);\n pcdHeader.viewpoint = /VIEWPOINT (.*)/i.exec(pcdHeader.str);\n pcdHeader.points = /POINTS (.*)/i.exec(pcdHeader.str);\n\n // evaluate\n\n if (pcdHeader.version !== null) {\n pcdHeader.version = parseFloat(pcdHeader.version[1]);\n }\n\n if (pcdHeader.fields !== null) {\n pcdHeader.fields = pcdHeader.fields[1].split(' ');\n }\n\n if (pcdHeader.type !== null) {\n pcdHeader.type = pcdHeader.type[1].split(' ');\n }\n\n if (pcdHeader.width !== null) {\n pcdHeader.width = parseInt(pcdHeader.width[1], 10);\n }\n\n if (pcdHeader.height !== null) {\n pcdHeader.height = parseInt(pcdHeader.height[1], 10);\n }\n\n if (pcdHeader.viewpoint !== null) {\n pcdHeader.viewpoint = pcdHeader.viewpoint[1];\n }\n\n if (pcdHeader.points !== null) {\n pcdHeader.points = parseInt(pcdHeader.points[1], 10);\n }\n\n if (\n pcdHeader.points === null &&\n typeof pcdHeader.width === 'number' &&\n typeof pcdHeader.height === 'number'\n ) {\n pcdHeader.points = pcdHeader.width * pcdHeader.height;\n }\n\n if (pcdHeader.size !== null) {\n pcdHeader.size = pcdHeader.size[1].split(' ').map((x) => parseInt(x, 10));\n }\n\n if (pcdHeader.count !== null) {\n pcdHeader.count = pcdHeader.count[1].split(' ').map((x) => parseInt(x, 10));\n } else {\n pcdHeader.count = [];\n if (pcdHeader.fields !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n pcdHeader.count.push(1);\n }\n }\n }\n\n pcdHeader.offset = {};\n\n let sizeSum = 0;\n if (pcdHeader.fields !== null && pcdHeader.size !== null) {\n for (let i = 0; i < pcdHeader.fields.length; i++) {\n if (pcdHeader.data === 'ascii') {\n pcdHeader.offset[pcdHeader.fields[i]] = i;\n } else {\n pcdHeader.offset[pcdHeader.fields[i]] = sizeSum;\n sizeSum += pcdHeader.size[i];\n }\n }\n }\n\n // for binary only\n pcdHeader.rowSize = sizeSum;\n\n return pcdHeader;\n}\n\n/**\n * @param pcdHeader\n * @param textData\n * @returns [attributes]\n */\n/* eslint-enable complexity, max-statements */\nfunction parsePCDASCII(pcdHeader: PCDHeader, textData: string): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n\n const offset = pcdHeader.offset;\n const pcdData = textData.substr(pcdHeader.headerLen);\n const lines = pcdData.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n if (lines[i] !== '') {\n const line = lines[i].split(' ');\n\n if (offset.x !== undefined) {\n position.push(parseFloat(line[offset.x]));\n position.push(parseFloat(line[offset.y]));\n position.push(parseFloat(line[offset.z]));\n }\n\n if (offset.rgb !== undefined) {\n const floatValue = parseFloat(line[offset.rgb]);\n const binaryColor = new Float32Array([floatValue]);\n const dataview = new DataView(binaryColor.buffer, 0);\n color.push(dataview.getUint8(0));\n color.push(dataview.getUint8(1));\n color.push(dataview.getUint8(2));\n // TODO - handle alpha channel / RGBA?\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(parseFloat(line[offset.normal_x]));\n normal.push(parseFloat(line[offset.normal_y]));\n normal.push(parseFloat(line[offset.normal_z]));\n }\n }\n }\n\n return {position, normal, color};\n}\n\n/**\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinary(pcdHeader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n\n const dataview = new DataView(data, pcdHeader.headerLen);\n const offset = pcdHeader.offset;\n\n for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {\n if (offset.x !== undefined) {\n position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));\n position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));\n }\n\n if (offset.rgb !== undefined) {\n color.push(dataview.getUint8(row + offset.rgb + 0));\n color.push(dataview.getUint8(row + offset.rgb + 1));\n color.push(dataview.getUint8(row + offset.rgb + 2));\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));\n normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));\n }\n }\n\n return {position, normal, color};\n}\n\n/** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)\n * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js\n * @license MIT (http://opensource.org/licenses/MIT)\n * @param pcdHeader\n * @param data\n * @returns [attributes]\n */\nfunction parsePCDBinaryCompressed(PCDheader: PCDHeader, data: ArrayBufferLike): HeaderAttributes {\n const position: number[] = [];\n const normal: number[] = [];\n const color: number[] = [];\n\n const sizes = new Uint32Array(data.slice(PCDheader.headerLen, PCDheader.headerLen + 8));\n const compressedSize = sizes[0];\n const decompressedSize = sizes[1];\n const decompressed = decompressLZF(\n new Uint8Array(data, PCDheader.headerLen + 8, compressedSize),\n decompressedSize\n );\n const dataview = new DataView(decompressed.buffer);\n\n const offset = PCDheader.offset;\n\n for (let i = 0; i < PCDheader.points; i++) {\n if (offset.x !== undefined) {\n position.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.x + (PCDheader.size as number[])[0] * i,\n LITTLE_ENDIAN\n )\n );\n position.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.y + (PCDheader.size as number[])[1] * i,\n LITTLE_ENDIAN\n )\n );\n position.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.z + (PCDheader.size as number[])[2] * i,\n LITTLE_ENDIAN\n )\n );\n }\n\n if (offset.rgb !== undefined) {\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 0\n ) / 255.0\n );\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 1\n ) / 255.0\n );\n color.push(\n dataview.getUint8(\n (PCDheader.points as number) * offset.rgb + (PCDheader.size as number[])[3] * i + 2\n ) / 255.0\n );\n }\n\n if (offset.normal_x !== undefined) {\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_x + (PCDheader.size as number[])[4] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_y + (PCDheader.size as number[])[5] * i,\n LITTLE_ENDIAN\n )\n );\n normal.push(\n dataview.getFloat32(\n (PCDheader.points as number) * offset.normal_z + (PCDheader.size as number[])[6] * i,\n LITTLE_ENDIAN\n )\n );\n }\n }\n\n return {\n position,\n normal,\n color\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"pcd-types.js"}
1
+ {"version":3,"file":"pcd-types.js","names":[],"sources":["../../../src/lib/pcd-types.ts"],"sourcesContent":["import type {Mesh} from '@loaders.gl/schema';\n\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\nexport type PCDHeader = {\n data: any;\n headerLen: number;\n str: string;\n version: RegExpExecArray | null | number;\n fields: RegExpExecArray | null | string[];\n size: RegExpExecArray | null | number[];\n type: RegExpExecArray | null | string[];\n count: RegExpExecArray | null | number[];\n width: RegExpExecArray | number;\n height: RegExpExecArray | number;\n viewpoint: RegExpExecArray | null | string;\n points: RegExpExecArray | number;\n offset: {[index: string]: number};\n rowSize: number;\n vertexCount: number;\n boundingBox: BoundingBox;\n};\n\n/** */\nexport type PCDMesh = Mesh & {\n loader: 'pcd';\n loaderData: PCDHeader;\n topology: 'point-list';\n mode: 0;\n};\n"],"mappings":""}
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports._typecheckPCDLoader = exports.PCDLoader = void 0;
7
- var VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'latest';
7
+ var VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
8
+
8
9
  var PCDLoader = {
9
10
  name: 'PCD (Point Cloud Data)',
10
11
  id: 'pcd',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pcd-loader.ts"],"names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","_typecheckPCDLoader"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAKO,IAAMC,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;;AAaA,IAAMC,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"}
1
+ {"version":3,"file":"pcd-loader.js","names":["VERSION","PCDLoader","name","id","module","version","worker","extensions","mimeTypes","options","pcd","_typecheckPCDLoader"],"sources":["../../src/pcd-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/**\n * Worker loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n name: 'PCD (Point Cloud Data)',\n id: 'pcd',\n module: 'pcd',\n version: VERSION,\n worker: true,\n extensions: ['pcd'],\n mimeTypes: ['text/plain'],\n options: {\n pcd: {}\n }\n};\n\nexport const _typecheckPCDLoader: Loader = PCDLoader;\n"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;;AAKpE,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,wBAAwB;EAC9BC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,YAAY,CAAC;EACzBC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR;AACF,CAAC;AAAC;AAEK,IAAMC,mBAA2B,GAAGV,SAAS;AAAC"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _loaderUtils = require("@loaders.gl/loader-utils");
4
-
5
4
  var _index = require("../index");
6
-
7
5
  (0, _loaderUtils.createLoaderWorker)(_index.PCDLoader);
8
6
  //# sourceMappingURL=pcd-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/workers/pcd-worker.ts"],"names":["PCDLoader"],"mappings":";;AAAA;;AACA;;AAEA,qCAAmBA,gBAAnB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {PCDLoader} from '../index';\n\ncreateLoaderWorker(PCDLoader);\n"],"file":"pcd-worker.js"}
1
+ {"version":3,"file":"pcd-worker.js","names":["createLoaderWorker","PCDLoader"],"sources":["../../../src/workers/pcd-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {PCDLoader} from '../index';\n\ncreateLoaderWorker(PCDLoader);\n"],"mappings":";;AAAA;AACA;AAEA,IAAAA,+BAAkB,EAACC,gBAAS,CAAC"}
@@ -1,5 +1,5 @@
1
- const moduleExports = require('./index');
2
1
 
2
+ const moduleExports = require('./index');
3
3
  globalThis.loaders = globalThis.loaders || {};
4
4
  module.exports = Object.assign(globalThis.loaders, moduleExports);
5
5
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,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"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import parsePCDSync from './lib/parse-pcd';
2
2
  import { PCDLoader as PCDWorkerLoader } from './pcd-loader';
3
3
  export { PCDWorkerLoader };
4
- export const PCDLoader = { ...PCDWorkerLoader,
4
+
5
+ export const PCDLoader = {
6
+ ...PCDWorkerLoader,
5
7
  parse: async arrayBuffer => parsePCDSync(arrayBuffer),
6
8
  parseSync: parsePCDSync
7
9
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["parsePCDSync","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","_typecheckPCDLoader"],"mappings":"AACA,OAAOA,YAAP,MAAyB,iBAAzB;AACA,SAAQC,SAAS,IAAIC,eAArB,QAA2C,cAA3C;AAEA,SAAQA,eAAR;AAKA,OAAO,MAAMD,SAAS,GAAG,EACvB,GAAGC,eADoB;AAEvBC,EAAAA,KAAK,EAAE,MAAOC,WAAP,IAAuBJ,YAAY,CAACI,WAAD,CAFnB;AAGvBC,EAAAA,SAAS,EAAEL;AAHY,CAAlB;AAMP,OAAO,MAAMM,mBAAqC,GAAGL,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
+ {"version":3,"file":"index.js","names":["parsePCDSync","PCDLoader","PCDWorkerLoader","parse","arrayBuffer","parseSync","_typecheckPCDLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parsePCDSync from './lib/parse-pcd';\nimport {PCDLoader as PCDWorkerLoader} from './pcd-loader';\n\nexport {PCDWorkerLoader};\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoader = {\n ...PCDWorkerLoader,\n parse: async (arrayBuffer) => parsePCDSync(arrayBuffer),\n parseSync: parsePCDSync\n};\n\nexport const _typecheckPCDLoader: LoaderWithParser = PCDLoader;\n"],"mappings":"AACA,OAAOA,YAAY,MAAM,iBAAiB;AAC1C,SAAQC,SAAS,IAAIC,eAAe,QAAO,cAAc;AAEzD,SAAQA,eAAe;;AAKvB,OAAO,MAAMD,SAAS,GAAG;EACvB,GAAGC,eAAe;EAClBC,KAAK,EAAE,MAAOC,WAAW,IAAKJ,YAAY,CAACI,WAAW,CAAC;EACvDC,SAAS,EAAEL;AACb,CAAC;AAED,OAAO,MAAMM,mBAAqC,GAAGL,SAAS"}
@@ -1,3 +1,4 @@
1
+
1
2
  export function decompressLZF(inData, outLength) {
2
3
  const inLength = inData.length;
3
4
  const outData = new Uint8Array(outLength);
@@ -6,15 +7,12 @@ export function decompressLZF(inData, outLength) {
6
7
  let ctrl;
7
8
  let len;
8
9
  let ref;
9
-
10
10
  do {
11
11
  ctrl = inData[inPtr++];
12
-
13
12
  if (ctrl < 1 << 5) {
14
13
  ctrl++;
15
14
  if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');
16
15
  if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');
17
-
18
16
  do {
19
17
  outData[outPtr++] = inData[inPtr++];
20
18
  } while (--ctrl);
@@ -22,23 +20,19 @@ export function decompressLZF(inData, outLength) {
22
20
  len = ctrl >> 5;
23
21
  ref = outPtr - ((ctrl & 0x1f) << 8) - 1;
24
22
  if (inPtr >= inLength) throw new Error('Invalid compressed data');
25
-
26
23
  if (len === 7) {
27
24
  len += inData[inPtr++];
28
25
  if (inPtr >= inLength) throw new Error('Invalid compressed data');
29
26
  }
30
-
31
27
  ref -= inData[inPtr++];
32
28
  if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');
33
29
  if (ref < 0) throw new Error('Invalid compressed data');
34
30
  if (ref >= outPtr) throw new Error('Invalid compressed data');
35
-
36
31
  do {
37
32
  outData[outPtr++] = outData[ref++];
38
33
  } while (--len + 2);
39
34
  }
40
35
  } while (inPtr < inLength);
41
-
42
36
  return outData;
43
37
  }
44
38
  //# sourceMappingURL=decompress-lzf.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/decompress-lzf.ts"],"names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"mappings":"AAOA,OAAO,SAASA,aAAT,CAAuBC,MAAvB,EAA2CC,SAA3C,EAA0E;AAC/E,QAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAxB;AACA,QAAMC,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
+ {"version":3,"file":"decompress-lzf.js","names":["decompressLZF","inData","outLength","inLength","length","outData","Uint8Array","inPtr","outPtr","ctrl","len","ref","Error"],"sources":["../../../src/lib/decompress-lzf.ts"],"sourcesContent":["/* eslint-disable */\n/**\n * from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js\n * @param inData\n * @param outLength\n * @returns\n */\nexport function decompressLZF(inData: Uint8Array, outLength: number): Uint8Array {\n const inLength = inData.length;\n const outData = new Uint8Array(outLength);\n let inPtr = 0;\n let outPtr = 0;\n let ctrl;\n let len;\n let ref;\n\n do {\n ctrl = inData[inPtr++];\n\n if (ctrl < 1 << 5) {\n ctrl++;\n if (outPtr + ctrl > outLength) throw new Error('Output buffer is not large enough');\n if (inPtr + ctrl > inLength) throw new Error('Invalid compressed data');\n\n do {\n outData[outPtr++] = inData[inPtr++];\n } while (--ctrl);\n } else {\n len = ctrl >> 5;\n ref = outPtr - ((ctrl & 0x1f) << 8) - 1;\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n\n if (len === 7) {\n len += inData[inPtr++];\n if (inPtr >= inLength) throw new Error('Invalid compressed data');\n }\n\n ref -= inData[inPtr++];\n if (outPtr + len + 2 > outLength) throw new Error('Output buffer is not large enough');\n if (ref < 0) throw new Error('Invalid compressed data');\n if (ref >= outPtr) throw new Error('Invalid compressed data');\n\n do {\n outData[outPtr++] = outData[ref++];\n } while (--len + 2);\n }\n } while (inPtr < inLength);\n\n return outData;\n}\n"],"mappings":";AAOA,OAAO,SAASA,aAAa,CAACC,MAAkB,EAAEC,SAAiB,EAAc;EAC/E,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAM;EAC9B,MAAMC,OAAO,GAAG,IAAIC,UAAU,CAACJ,SAAS,CAAC;EACzC,IAAIK,KAAK,GAAG,CAAC;EACb,IAAIC,MAAM,GAAG,CAAC;EACd,IAAIC,IAAI;EACR,IAAIC,GAAG;EACP,IAAIC,GAAG;EAEP,GAAG;IACDF,IAAI,GAAGR,MAAM,CAACM,KAAK,EAAE,CAAC;IAEtB,IAAIE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE;MACjBA,IAAI,EAAE;MACN,IAAID,MAAM,GAAGC,IAAI,GAAGP,SAAS,EAAE,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACnF,IAAIL,KAAK,GAAGE,IAAI,GAAGN,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEvE,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGP,MAAM,CAACM,KAAK,EAAE,CAAC;MACrC,CAAC,QAAQ,EAAEE,IAAI;IACjB,CAAC,MAAM;MACLC,GAAG,GAAGD,IAAI,IAAI,CAAC;MACfE,GAAG,GAAGH,MAAM,IAAI,CAACC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC;MACvC,IAAIF,KAAK,IAAIJ,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MAEjE,IAAIF,GAAG,KAAK,CAAC,EAAE;QACbA,GAAG,IAAIT,MAAM,CAACM,KAAK,EAAE,CAAC;QACtB,IAAIA,KAAK,IAAIJ,QAAQ,EAAE,MAAM,IAAIS,KAAK,CAAC,yBAAyB,CAAC;MACnE;MAEAD,GAAG,IAAIV,MAAM,CAACM,KAAK,EAAE,CAAC;MACtB,IAAIC,MAAM,GAAGE,GAAG,GAAG,CAAC,GAAGR,SAAS,EAAE,MAAM,IAAIU,KAAK,CAAC,mCAAmC,CAAC;MACtF,IAAID,GAAG,GAAG,CAAC,EAAE,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MACvD,IAAID,GAAG,IAAIH,MAAM,EAAE,MAAM,IAAII,KAAK,CAAC,yBAAyB,CAAC;MAE7D,GAAG;QACDP,OAAO,CAACG,MAAM,EAAE,CAAC,GAAGH,OAAO,CAACM,GAAG,EAAE,CAAC;MACpC,CAAC,QAAQ,EAAED,GAAG,GAAG,CAAC;IACpB;EACF,CAAC,QAAQH,KAAK,GAAGJ,QAAQ;EAEzB,OAAOE,OAAO;AAChB"}
@@ -2,19 +2,15 @@ import { Schema, Field, Float32, Uint8, FixedSizeList } from '@loaders.gl/schema
2
2
  export function getPCDSchema(PCDheader, metadata) {
3
3
  const offset = PCDheader.offset;
4
4
  const fields = [];
5
-
6
5
  if (offset.x !== undefined) {
7
6
  fields.push(new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false));
8
7
  }
9
-
10
8
  if (offset.normal_x !== undefined) {
11
9
  fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));
12
10
  }
13
-
14
11
  if (offset.rgb !== undefined) {
15
12
  fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));
16
13
  }
17
-
18
14
  return new Schema(fields, metadata);
19
15
  }
20
16
  //# sourceMappingURL=get-pcd-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/get-pcd-schema.ts"],"names":["Schema","Field","Float32","Uint8","FixedSizeList","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","normal_x","rgb"],"mappings":"AAAA,SAAQA,MAAR,EAAgBC,KAAhB,EAAuBC,OAAvB,EAAgCC,KAAhC,EAAuCC,aAAvC,QAA2D,oBAA3D;AAWA,OAAO,SAASC,YAAT,CAAsBC,SAAtB,EAA4CC,QAA5C,EAA8E;AACnF,QAAMC,MAAM,GAAGF,SAAS,CAACE,MAAzB;AAEA,QAAMC,MAAe,GAAG,EAAxB;;AAEA,MAAID,MAAM,CAACE,CAAP,KAAaC,SAAjB,EAA4B;AAC1BF,IAAAA,MAAM,CAACG,IAAP,CACE,IAAIX,KAAJ,CAAU,UAAV,EAAsB,IAAIG,aAAJ,CAAkB,CAAlB,EAAqB,IAAIH,KAAJ,CAAU,KAAV,EAAiB,IAAIC,OAAJ,EAAjB,CAArB,CAAtB,EAA6E,KAA7E,CADF;AAGD;;AAED,MAAIM,MAAM,CAACK,QAAP,KAAoBF,SAAxB,EAAmC;AACjCF,IAAAA,MAAM,CAACG,IAAP,CAAY,IAAIX,KAAJ,CAAU,QAAV,EAAoB,IAAIG,aAAJ,CAAkB,CAAlB,EAAqB,IAAIH,KAAJ,CAAU,KAAV,EAAiB,IAAIC,OAAJ,EAAjB,CAArB,CAApB,EAA2E,KAA3E,CAAZ;AACD;;AAED,MAAIM,MAAM,CAACM,GAAP,KAAeH,SAAnB,EAA8B;AAC5BF,IAAAA,MAAM,CAACG,IAAP,CAAY,IAAIX,KAAJ,CAAU,SAAV,EAAqB,IAAIG,aAAJ,CAAkB,CAAlB,EAAqB,IAAIH,KAAJ,CAAU,KAAV,EAAiB,IAAIE,KAAJ,EAAjB,CAArB,CAArB,EAA0E,KAA1E,CAAZ;AACD;;AAED,SAAO,IAAIH,MAAJ,CAAWS,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
+ {"version":3,"file":"get-pcd-schema.js","names":["Schema","Field","Float32","Uint8","FixedSizeList","getPCDSchema","PCDheader","metadata","offset","fields","x","undefined","push","normal_x","rgb"],"sources":["../../../src/lib/get-pcd-schema.ts"],"sourcesContent":["import {Schema, Field, Float32, Uint8, FixedSizeList} from '@loaders.gl/schema';\nimport type {PCDHeader} from './pcd-types';\n\ntype SchemaMetadata = Map<string, any>;\n\n/**\n * Gets schema from PCD header\n * @param PCDheader\n * @param metadata\n * @returns Schema\n */\nexport function getPCDSchema(PCDheader: PCDHeader, metadata: SchemaMetadata): Schema {\n const offset = PCDheader.offset;\n\n const fields: Field[] = [];\n\n if (offset.x !== undefined) {\n fields.push(\n new Field('POSITION', new FixedSizeList(3, new Field('xyz', new Float32())), false)\n );\n }\n\n if (offset.normal_x !== undefined) {\n fields.push(new Field('NORMAL', new FixedSizeList(3, new Field('xyz', new Float32())), false));\n }\n\n if (offset.rgb !== undefined) {\n fields.push(new Field('COLOR_0', new FixedSizeList(3, new Field('rgb', new Uint8())), false));\n }\n\n return new Schema(fields, metadata);\n}\n"],"mappings":"AAAA,SAAQA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,KAAK,EAAEC,aAAa,QAAO,oBAAoB;AAW/E,OAAO,SAASC,YAAY,CAACC,SAAoB,EAAEC,QAAwB,EAAU;EACnF,MAAMC,MAAM,GAAGF,SAAS,CAACE,MAAM;EAE/B,MAAMC,MAAe,GAAG,EAAE;EAE1B,IAAID,MAAM,CAACE,CAAC,KAAKC,SAAS,EAAE;IAC1BF,MAAM,CAACG,IAAI,CACT,IAAIX,KAAK,CAAC,UAAU,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CACpF;EACH;EAEA,IAAIM,MAAM,CAACK,QAAQ,KAAKF,SAAS,EAAE;IACjCF,MAAM,CAACG,IAAI,CAAC,IAAIX,KAAK,CAAC,QAAQ,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAChG;EAEA,IAAIM,MAAM,CAACM,GAAG,KAAKH,SAAS,EAAE;IAC5BF,MAAM,CAACG,IAAI,CAAC,IAAIX,KAAK,CAAC,SAAS,EAAE,IAAIG,aAAa,CAAC,CAAC,EAAE,IAAIH,KAAK,CAAC,KAAK,EAAE,IAAIE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;EAC/F;EAEA,OAAO,IAAIH,MAAM,CAACS,MAAM,EAAEF,QAAQ,CAAC;AACrC"}
@@ -1,7 +1,10 @@
1
+
2
+
1
3
  import { getMeshBoundingBox } from '@loaders.gl/schema';
2
4
  import { decompressLZF } from './decompress-lzf';
3
5
  import { getPCDSchema } from './get-pcd-schema';
4
6
  const LITTLE_ENDIAN = true;
7
+
5
8
  export default function parsePCD(data) {
6
9
  const textData = new TextDecoder().decode(data);
7
10
  const pcdHeader = parsePCDHeader(textData);
@@ -11,19 +14,15 @@ export default function parsePCD(data) {
11
14
  case 'ascii':
12
15
  attributes = parsePCDASCII(pcdHeader, textData);
13
16
  break;
14
-
15
17
  case 'binary':
16
18
  attributes = parsePCDBinary(pcdHeader, data);
17
19
  break;
18
-
19
20
  case 'binary_compressed':
20
21
  attributes = parsePCDBinaryCompressed(pcdHeader, data);
21
22
  break;
22
-
23
23
  default:
24
24
  throw new Error("PCD: ".concat(pcdHeader.data, " files are not supported"));
25
25
  }
26
-
27
26
  attributes = getMeshAttributes(attributes);
28
27
  const header = getMeshHeader(pcdHeader, attributes);
29
28
  const metadata = new Map([['mode', '0'], ['boundingBox', JSON.stringify(header.boundingBox)]]);
@@ -48,7 +47,6 @@ function getMeshHeader(pcdHeader, attributes) {
48
47
  boundingBox: getMeshBoundingBox(attributes)
49
48
  };
50
49
  }
51
-
52
50
  return pcdHeader;
53
51
  }
54
52
 
@@ -59,21 +57,18 @@ function getMeshAttributes(attributes) {
59
57
  size: 3
60
58
  }
61
59
  };
62
-
63
60
  if (attributes.normal && attributes.normal.length > 0) {
64
61
  normalizedAttributes.NORMAL = {
65
62
  value: new Float32Array(attributes.normal),
66
63
  size: 3
67
64
  };
68
65
  }
69
-
70
66
  if (attributes.color && attributes.color.length > 0) {
71
67
  normalizedAttributes.COLOR_0 = {
72
68
  value: new Uint8Array(attributes.color),
73
69
  size: 3
74
70
  };
75
71
  }
76
-
77
72
  return normalizedAttributes;
78
73
  }
79
74
 
@@ -82,13 +77,13 @@ function parsePCDHeader(data) {
82
77
  const result2 = /[\r\n]DATA\s(\S*)\s/i.exec(data.substr(result1 - 1));
83
78
  const pcdHeader = {};
84
79
  pcdHeader.data = result2 && result2[1];
85
-
86
80
  if (result2 !== null) {
87
81
  pcdHeader.headerLen = (result2 && result2[0].length) + result1;
88
82
  }
89
-
90
83
  pcdHeader.str = data.substr(0, pcdHeader.headerLen);
84
+
91
85
  pcdHeader.str = pcdHeader.str.replace(/\#.*/gi, '');
86
+
92
87
  pcdHeader.version = /VERSION (.*)/i.exec(pcdHeader.str);
93
88
  pcdHeader.fields = /FIELDS (.*)/i.exec(pcdHeader.str);
94
89
  pcdHeader.size = /SIZE (.*)/i.exec(pcdHeader.str);
@@ -102,54 +97,42 @@ function parsePCDHeader(data) {
102
97
  if (pcdHeader.version !== null) {
103
98
  pcdHeader.version = parseFloat(pcdHeader.version[1]);
104
99
  }
105
-
106
100
  if (pcdHeader.fields !== null) {
107
101
  pcdHeader.fields = pcdHeader.fields[1].split(' ');
108
102
  }
109
-
110
103
  if (pcdHeader.type !== null) {
111
104
  pcdHeader.type = pcdHeader.type[1].split(' ');
112
105
  }
113
-
114
106
  if (pcdHeader.width !== null) {
115
107
  pcdHeader.width = parseInt(pcdHeader.width[1], 10);
116
108
  }
117
-
118
109
  if (pcdHeader.height !== null) {
119
110
  pcdHeader.height = parseInt(pcdHeader.height[1], 10);
120
111
  }
121
-
122
112
  if (pcdHeader.viewpoint !== null) {
123
113
  pcdHeader.viewpoint = pcdHeader.viewpoint[1];
124
114
  }
125
-
126
115
  if (pcdHeader.points !== null) {
127
116
  pcdHeader.points = parseInt(pcdHeader.points[1], 10);
128
117
  }
129
-
130
118
  if (pcdHeader.points === null && typeof pcdHeader.width === 'number' && typeof pcdHeader.height === 'number') {
131
119
  pcdHeader.points = pcdHeader.width * pcdHeader.height;
132
120
  }
133
-
134
121
  if (pcdHeader.size !== null) {
135
122
  pcdHeader.size = pcdHeader.size[1].split(' ').map(x => parseInt(x, 10));
136
123
  }
137
-
138
124
  if (pcdHeader.count !== null) {
139
125
  pcdHeader.count = pcdHeader.count[1].split(' ').map(x => parseInt(x, 10));
140
126
  } else {
141
127
  pcdHeader.count = [];
142
-
143
128
  if (pcdHeader.fields !== null) {
144
129
  for (let i = 0; i < pcdHeader.fields.length; i++) {
145
130
  pcdHeader.count.push(1);
146
131
  }
147
132
  }
148
133
  }
149
-
150
134
  pcdHeader.offset = {};
151
135
  let sizeSum = 0;
152
-
153
136
  if (pcdHeader.fields !== null && pcdHeader.size !== null) {
154
137
  for (let i = 0; i < pcdHeader.fields.length; i++) {
155
138
  if (pcdHeader.data === 'ascii') {
@@ -172,17 +155,14 @@ function parsePCDASCII(pcdHeader, textData) {
172
155
  const offset = pcdHeader.offset;
173
156
  const pcdData = textData.substr(pcdHeader.headerLen);
174
157
  const lines = pcdData.split('\n');
175
-
176
158
  for (let i = 0; i < lines.length; i++) {
177
159
  if (lines[i] !== '') {
178
160
  const line = lines[i].split(' ');
179
-
180
161
  if (offset.x !== undefined) {
181
162
  position.push(parseFloat(line[offset.x]));
182
163
  position.push(parseFloat(line[offset.y]));
183
164
  position.push(parseFloat(line[offset.z]));
184
165
  }
185
-
186
166
  if (offset.rgb !== undefined) {
187
167
  const floatValue = parseFloat(line[offset.rgb]);
188
168
  const binaryColor = new Float32Array([floatValue]);
@@ -199,7 +179,6 @@ function parsePCDASCII(pcdHeader, textData) {
199
179
  }
200
180
  }
201
181
  }
202
-
203
182
  return {
204
183
  position,
205
184
  normal,
@@ -213,33 +192,30 @@ function parsePCDBinary(pcdHeader, data) {
213
192
  const color = [];
214
193
  const dataview = new DataView(data, pcdHeader.headerLen);
215
194
  const offset = pcdHeader.offset;
216
-
217
195
  for (let i = 0, row = 0; i < pcdHeader.points; i++, row += pcdHeader.rowSize) {
218
196
  if (offset.x !== undefined) {
219
197
  position.push(dataview.getFloat32(row + offset.x, LITTLE_ENDIAN));
220
198
  position.push(dataview.getFloat32(row + offset.y, LITTLE_ENDIAN));
221
199
  position.push(dataview.getFloat32(row + offset.z, LITTLE_ENDIAN));
222
200
  }
223
-
224
201
  if (offset.rgb !== undefined) {
225
202
  color.push(dataview.getUint8(row + offset.rgb + 0));
226
203
  color.push(dataview.getUint8(row + offset.rgb + 1));
227
204
  color.push(dataview.getUint8(row + offset.rgb + 2));
228
205
  }
229
-
230
206
  if (offset.normal_x !== undefined) {
231
207
  normal.push(dataview.getFloat32(row + offset.normal_x, LITTLE_ENDIAN));
232
208
  normal.push(dataview.getFloat32(row + offset.normal_y, LITTLE_ENDIAN));
233
209
  normal.push(dataview.getFloat32(row + offset.normal_z, LITTLE_ENDIAN));
234
210
  }
235
211
  }
236
-
237
212
  return {
238
213
  position,
239
214
  normal,
240
215
  color
241
216
  };
242
217
  }
218
+
243
219
  /** Parse compressed PCD data in in binary_compressed form ( https://pointclouds.org/documentation/tutorials/pcd_file_format.html)
244
220
  * from https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/PCDLoader.js
245
221
  * @license MIT (http://opensource.org/licenses/MIT)
@@ -247,8 +223,6 @@ function parsePCDBinary(pcdHeader, data) {
247
223
  * @param data
248
224
  * @returns [attributes]
249
225
  */
250
-
251
-
252
226
  function parsePCDBinaryCompressed(PCDheader, data) {
253
227
  const position = [];
254
228
  const normal = [];
@@ -259,27 +233,23 @@ function parsePCDBinaryCompressed(PCDheader, data) {
259
233
  const decompressed = decompressLZF(new Uint8Array(data, PCDheader.headerLen + 8, compressedSize), decompressedSize);
260
234
  const dataview = new DataView(decompressed.buffer);
261
235
  const offset = PCDheader.offset;
262
-
263
236
  for (let i = 0; i < PCDheader.points; i++) {
264
237
  if (offset.x !== undefined) {
265
238
  position.push(dataview.getFloat32(PCDheader.points * offset.x + PCDheader.size[0] * i, LITTLE_ENDIAN));
266
239
  position.push(dataview.getFloat32(PCDheader.points * offset.y + PCDheader.size[1] * i, LITTLE_ENDIAN));
267
240
  position.push(dataview.getFloat32(PCDheader.points * offset.z + PCDheader.size[2] * i, LITTLE_ENDIAN));
268
241
  }
269
-
270
242
  if (offset.rgb !== undefined) {
271
243
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 0) / 255.0);
272
244
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 1) / 255.0);
273
245
  color.push(dataview.getUint8(PCDheader.points * offset.rgb + PCDheader.size[3] * i + 2) / 255.0);
274
246
  }
275
-
276
247
  if (offset.normal_x !== undefined) {
277
248
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_x + PCDheader.size[4] * i, LITTLE_ENDIAN));
278
249
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_y + PCDheader.size[5] * i, LITTLE_ENDIAN));
279
250
  normal.push(dataview.getFloat32(PCDheader.points * offset.normal_z + PCDheader.size[6] * i, LITTLE_ENDIAN));
280
251
  }
281
252
  }
282
-
283
253
  return {
284
254
  position,
285
255
  normal,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/parse-pcd.ts"],"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"],"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
+ {"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":";;AASA,SAAQA,kBAAkB,QAAO,oBAAoB;AACrD,SAAQC,aAAa,QAAO,kBAAkB;AAC9C,SAAQC,YAAY,QAAO,kBAAkB;AAsB7C,MAAMC,aAAsB,GAAG,IAAI;;AAOnC,eAAe,SAASC,QAAQ,CAACC,IAAqB,EAAE;EAEtD,MAAMC,QAAQ,GAAG,IAAIC,WAAW,EAAE,CAACC,MAAM,CAACH,IAAI,CAAC;EAC/C,MAAMI,SAAS,GAAGC,cAAc,CAACJ,QAAQ,CAAC;EAE1C,IAAIK,UAAe,GAAG,CAAC,CAAC;;EAGxB,QAAQF,SAAS,CAACJ,IAAI;IACpB,KAAK,OAAO;MACVM,UAAU,GAAGC,aAAa,CAACH,SAAS,EAAEH,QAAQ,CAAC;MAC/C;IAEF,KAAK,QAAQ;MACXK,UAAU,GAAGE,cAAc,CAACJ,SAAS,EAAEJ,IAAI,CAAC;MAC5C;IAEF,KAAK,mBAAmB;MACtBM,UAAU,GAAGG,wBAAwB,CAACL,SAAS,EAAEJ,IAAI,CAAC;MACtD;IAEF;MACE,MAAM,IAAIU,KAAK,gBAASN,SAAS,CAACJ,IAAI,8BAA2B;EAAC;EAGtEM,UAAU,GAAGK,iBAAiB,CAACL,UAAU,CAAC;EAE1C,MAAMM,MAAM,GAAGC,aAAa,CAACT,SAAS,EAAEE,UAAU,CAAC;EAEnD,MAAMQ,QAAQ,GAAG,IAAIC,GAAG,CAAC,CACvB,CAAC,MAAM,EAAE,GAAG,CAAC,EACb,CAAC,aAAa,EAAEC,IAAI,CAACC,SAAS,CAACL,MAAM,CAACM,WAAW,CAAC,CAAC,CACpD,CAAC;EAEF,MAAMC,MAAM,GAAGtB,YAAY,CAACO,SAAS,EAAEU,QAAQ,CAAC;EAEhD,OAAO;IACLM,UAAU,EAAE;MACVR,MAAM,EAAER;IACV,CAAC;IACDQ,MAAM;IACNO,MAAM;IACNE,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE,IAAI;IACbhB;EACF,CAAC;AACH;;AAGA,SAASO,aAAa,CAACT,SAAoB,EAAEE,UAAgC,EAAsB;EACjG,IAAI,OAAOF,SAAS,CAACmB,KAAK,KAAK,QAAQ,IAAI,OAAOnB,SAAS,CAACoB,MAAM,KAAK,QAAQ,EAAE;IAC/E,MAAMC,UAAU,GAAGrB,SAAS,CAACmB,KAAK,GAAGnB,SAAS,CAACoB,MAAM;IACrD,OAAO;MACLE,WAAW,EAAED,UAAU;MACvBP,WAAW,EAAEvB,kBAAkB,CAACW,UAAU;IAC5C,CAAC;EACH;EACA,OAAOF,SAAS;AAClB;;AAMA,SAASO,iBAAiB,CAACL,UAA4B,EAA4C;EACjG,MAAMqB,oBAAoC,GAAG;IAC3CC,QAAQ,EAAE;MAERC,KAAK,EAAE,IAAIC,YAAY,CAACxB,UAAU,CAACyB,QAAQ,CAAC;MAC5CC,IAAI,EAAE;IACR;EACF,CAAC;EAED,IAAI1B,UAAU,CAAC2B,MAAM,IAAI3B,UAAU,CAAC2B,MAAM,CAACC,MAAM,GAAG,CAAC,EAAE;IACrDP,oBAAoB,CAACQ,MAAM,GAAG;MAC5BN,KAAK,EAAE,IAAIC,YAAY,CAACxB,UAAU,CAAC2B,MAAM,CAAC;MAC1CD,IAAI,EAAE;IACR,CAAC;EACH;EAEA,IAAI1B,UAAU,CAAC8B,KAAK,IAAI9B,UAAU,CAAC8B,KAAK,CAACF,MAAM,GAAG,CAAC,EAAE;IAEnDP,oBAAoB,CAACU,OAAO,GAAG;MAC7BR,KAAK,EAAE,IAAIS,UAAU,CAAChC,UAAU,CAAC8B,KAAK,CAAC;MACvCJ,IAAI,EAAE;IACR,CAAC;EACH;EAEA,OAAOL,oBAAoB;AAC7B;;AAQA,SAAStB,cAAc,CAACL,IAAY,EAAa;EAC/C,MAAMuC,OAAO,GAAGvC,IAAI,CAACwC,MAAM,CAAC,sBAAsB,CAAC;EACnD,MAAMC,OAAO,GAAG,sBAAsB,CAACC,IAAI,CAAC1C,IAAI,CAAC2C,MAAM,CAACJ,OAAO,GAAG,CAAC,CAAC,CAAC;EAErE,MAAMnC,SAAc,GAAG,CAAC,CAAC;EACzBA,SAAS,CAACJ,IAAI,GAAGyC,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC;EACtC,IAAIA,OAAO,KAAK,IAAI,EAAE;IACpBrC,SAAS,CAACwC,SAAS,GAAG,CAACH,OAAO,IAAIA,OAAO,CAAC,CAAC,CAAC,CAACP,MAAM,IAAIK,OAAO;EAChE;EACAnC,SAAS,CAACyC,GAAG,GAAG7C,IAAI,CAAC2C,MAAM,CAAC,CAAC,EAAEvC,SAAS,CAACwC,SAAS,CAAC;;EAInDxC,SAAS,CAACyC,GAAG,GAAGzC,SAAS,CAACyC,GAAG,CAACC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;;EAInD1C,SAAS,CAAC2C,OAAO,GAAG,eAAe,CAACL,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACvDzC,SAAS,CAAC4C,MAAM,GAAG,cAAc,CAACN,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACrDzC,SAAS,CAAC4B,IAAI,GAAG,YAAY,CAACU,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACjDzC,SAAS,CAAC6C,IAAI,GAAG,YAAY,CAACP,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACjDzC,SAAS,CAAC8C,KAAK,GAAG,aAAa,CAACR,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACnDzC,SAAS,CAACmB,KAAK,GAAG,aAAa,CAACmB,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACnDzC,SAAS,CAACoB,MAAM,GAAG,cAAc,CAACkB,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EACrDzC,SAAS,CAAC+C,SAAS,GAAG,iBAAiB,CAACT,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;EAC3DzC,SAAS,CAACgD,MAAM,GAAG,cAAc,CAACV,IAAI,CAACtC,SAAS,CAACyC,GAAG,CAAC;;EAIrD,IAAIzC,SAAS,CAAC2C,OAAO,KAAK,IAAI,EAAE;IAC9B3C,SAAS,CAAC2C,OAAO,GAAGM,UAAU,CAACjD,SAAS,CAAC2C,OAAO,CAAC,CAAC,CAAC,CAAC;EACtD;EAEA,IAAI3C,SAAS,CAAC4C,MAAM,KAAK,IAAI,EAAE;IAC7B5C,SAAS,CAAC4C,MAAM,GAAG5C,SAAS,CAAC4C,MAAM,CAAC,CAAC,CAAC,CAACM,KAAK,CAAC,GAAG,CAAC;EACnD;EAEA,IAAIlD,SAAS,CAAC6C,IAAI,KAAK,IAAI,EAAE;IAC3B7C,SAAS,CAAC6C,IAAI,GAAG7C,SAAS,CAAC6C,IAAI,CAAC,CAAC,CAAC,CAACK,KAAK,CAAC,GAAG,CAAC;EAC/C;EAEA,IAAIlD,SAAS,CAACmB,KAAK,KAAK,IAAI,EAAE;IAC5BnB,SAAS,CAACmB,KAAK,GAAGgC,QAAQ,CAACnD,SAAS,CAACmB,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACpD;EAEA,IAAInB,SAAS,CAACoB,MAAM,KAAK,IAAI,EAAE;IAC7BpB,SAAS,CAACoB,MAAM,GAAG+B,QAAQ,CAACnD,SAAS,CAACoB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACtD;EAEA,IAAIpB,SAAS,CAAC+C,SAAS,KAAK,IAAI,EAAE;IAChC/C,SAAS,CAAC+C,SAAS,GAAG/C,SAAS,CAAC+C,SAAS,CAAC,CAAC,CAAC;EAC9C;EAEA,IAAI/C,SAAS,CAACgD,MAAM,KAAK,IAAI,EAAE;IAC7BhD,SAAS,CAACgD,MAAM,GAAGG,QAAQ,CAACnD,SAAS,CAACgD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;EACtD;EAEA,IACEhD,SAAS,CAACgD,MAAM,KAAK,IAAI,IACzB,OAAOhD,SAAS,CAACmB,KAAK,KAAK,QAAQ,IACnC,OAAOnB,SAAS,CAACoB,MAAM,KAAK,QAAQ,EACpC;IACApB,SAAS,CAACgD,MAAM,GAAGhD,SAAS,CAACmB,KAAK,GAAGnB,SAAS,CAACoB,MAAM;EACvD;EAEA,IAAIpB,SAAS,CAAC4B,IAAI,KAAK,IAAI,EAAE;IAC3B5B,SAAS,CAAC4B,IAAI,GAAG5B,SAAS,CAAC4B,IAAI,CAAC,CAAC,CAAC,CAACsB,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAAEC,CAAC,IAAKF,QAAQ,CAACE,CAAC,EAAE,EAAE,CAAC,CAAC;EAC3E;EAEA,IAAIrD,SAAS,CAAC8C,KAAK,KAAK,IAAI,EAAE;IAC5B9C,SAAS,CAAC8C,KAAK,GAAG9C,SAAS,CAAC8C,KAAK,CAAC,CAAC,CAAC,CAACI,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,CAAEC,CAAC,IAAKF,QAAQ,CAACE,CAAC,EAAE,EAAE,CAAC,CAAC;EAC7E,CAAC,MAAM;IACLrD,SAAS,CAAC8C,KAAK,GAAG,EAAE;IACpB,IAAI9C,SAAS,CAAC4C,MAAM,KAAK,IAAI,EAAE;MAC7B,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGtD,SAAS,CAAC4C,MAAM,CAACd,MAAM,EAAEwB,CAAC,EAAE,EAAE;QAChDtD,SAAS,CAAC8C,KAAK,CAACS,IAAI,CAAC,CAAC,CAAC;MACzB;IACF;EACF;EAEAvD,SAAS,CAACwD,MAAM,GAAG,CAAC,CAAC;EAErB,IAAIC,OAAO,GAAG,CAAC;EACf,IAAIzD,SAAS,CAAC4C,MAAM,KAAK,IAAI,IAAI5C,SAAS,CAAC4B,IAAI,KAAK,IAAI,EAAE;IACxD,KAAK,IAAI0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGtD,SAAS,CAAC4C,MAAM,CAACd,MAAM,EAAEwB,CAAC,EAAE,EAAE;MAChD,IAAItD,SAAS,CAACJ,IAAI,KAAK,OAAO,EAAE;QAC9BI,SAAS,CAACwD,MAAM,CAACxD,SAAS,CAAC4C,MAAM,CAACU,CAAC,CAAC,CAAC,GAAGA,CAAC;MAC3C,CAAC,MAAM;QACLtD,SAAS,CAACwD,MAAM,CAACxD,SAAS,CAAC4C,MAAM,CAACU,CAAC,CAAC,CAAC,GAAGG,OAAO;QAC/CA,OAAO,IAAIzD,SAAS,CAAC4B,IAAI,CAAC0B,CAAC,CAAC;MAC9B;IACF;EACF;;EAGAtD,SAAS,CAAC0D,OAAO,GAAGD,OAAO;EAE3B,OAAOzD,SAAS;AAClB;;AAQA,SAASG,aAAa,CAACH,SAAoB,EAAEH,QAAgB,EAAoB;EAC/E,MAAM8B,QAAkB,GAAG,EAAE;EAC7B,MAAME,MAAgB,GAAG,EAAE;EAC3B,MAAMG,KAAe,GAAG,EAAE;EAE1B,MAAMwB,MAAM,GAAGxD,SAAS,CAACwD,MAAM;EAC/B,MAAMG,OAAO,GAAG9D,QAAQ,CAAC0C,MAAM,CAACvC,SAAS,CAACwC,SAAS,CAAC;EACpD,MAAMoB,KAAK,GAAGD,OAAO,CAACT,KAAK,CAAC,IAAI,CAAC;EAEjC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGM,KAAK,CAAC9B,MAAM,EAAEwB,CAAC,EAAE,EAAE;IACrC,IAAIM,KAAK,CAACN,CAAC,CAAC,KAAK,EAAE,EAAE;MACnB,MAAMO,IAAI,GAAGD,KAAK,CAACN,CAAC,CAAC,CAACJ,KAAK,CAAC,GAAG,CAAC;MAEhC,IAAIM,MAAM,CAACH,CAAC,KAAKS,SAAS,EAAE;QAC1BnC,QAAQ,CAAC4B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACH,CAAC,CAAC,CAAC,CAAC;QACzC1B,QAAQ,CAAC4B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACO,CAAC,CAAC,CAAC,CAAC;QACzCpC,QAAQ,CAAC4B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACQ,CAAC,CAAC,CAAC,CAAC;MAC3C;MAEA,IAAIR,MAAM,CAACS,GAAG,KAAKH,SAAS,EAAE;QAC5B,MAAMI,UAAU,GAAGjB,UAAU,CAACY,IAAI,CAACL,MAAM,CAACS,GAAG,CAAC,CAAC;QAC/C,MAAME,WAAW,GAAG,IAAIzC,YAAY,CAAC,CAACwC,UAAU,CAAC,CAAC;QAClD,MAAME,QAAQ,GAAG,IAAIC,QAAQ,CAACF,WAAW,CAACG,MAAM,EAAE,CAAC,CAAC;QACpDtC,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChCvC,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChCvC,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAAC,CAAC,CAAC,CAAC;MAElC;;MAEA,IAAIf,MAAM,CAACgB,QAAQ,KAAKV,SAAS,EAAE;QACjCjC,MAAM,CAAC0B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACgB,QAAQ,CAAC,CAAC,CAAC;QAC9C3C,MAAM,CAAC0B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACiB,QAAQ,CAAC,CAAC,CAAC;QAC9C5C,MAAM,CAAC0B,IAAI,CAACN,UAAU,CAACY,IAAI,CAACL,MAAM,CAACkB,QAAQ,CAAC,CAAC,CAAC;MAChD;IACF;EACF;EAEA,OAAO;IAAC/C,QAAQ;IAAEE,MAAM;IAAEG;EAAK,CAAC;AAClC;;AAOA,SAAS5B,cAAc,CAACJ,SAAoB,EAAEJ,IAAqB,EAAoB;EACrF,MAAM+B,QAAkB,GAAG,EAAE;EAC7B,MAAME,MAAgB,GAAG,EAAE;EAC3B,MAAMG,KAAe,GAAG,EAAE;EAE1B,MAAMoC,QAAQ,GAAG,IAAIC,QAAQ,CAACzE,IAAI,EAAEI,SAAS,CAACwC,SAAS,CAAC;EACxD,MAAMgB,MAAM,GAAGxD,SAAS,CAACwD,MAAM;EAE/B,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEqB,GAAG,GAAG,CAAC,EAAErB,CAAC,GAAGtD,SAAS,CAACgD,MAAM,EAAEM,CAAC,EAAE,EAAEqB,GAAG,IAAI3E,SAAS,CAAC0D,OAAO,EAAE;IAC5E,IAAIF,MAAM,CAACH,CAAC,KAAKS,SAAS,EAAE;MAC1BnC,QAAQ,CAAC4B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACH,CAAC,EAAE3D,aAAa,CAAC,CAAC;MACjEiC,QAAQ,CAAC4B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACO,CAAC,EAAErE,aAAa,CAAC,CAAC;MACjEiC,QAAQ,CAAC4B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACQ,CAAC,EAAEtE,aAAa,CAAC,CAAC;IACnE;IAEA,IAAI8D,MAAM,CAACS,GAAG,KAAKH,SAAS,EAAE;MAC5B9B,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAACI,GAAG,GAAGnB,MAAM,CAACS,GAAG,GAAG,CAAC,CAAC,CAAC;MACnDjC,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAACI,GAAG,GAAGnB,MAAM,CAACS,GAAG,GAAG,CAAC,CAAC,CAAC;MACnDjC,KAAK,CAACuB,IAAI,CAACa,QAAQ,CAACG,QAAQ,CAACI,GAAG,GAAGnB,MAAM,CAACS,GAAG,GAAG,CAAC,CAAC,CAAC;IACrD;IAEA,IAAIT,MAAM,CAACgB,QAAQ,KAAKV,SAAS,EAAE;MACjCjC,MAAM,CAAC0B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACgB,QAAQ,EAAE9E,aAAa,CAAC,CAAC;MACtEmC,MAAM,CAAC0B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACiB,QAAQ,EAAE/E,aAAa,CAAC,CAAC;MACtEmC,MAAM,CAAC0B,IAAI,CAACa,QAAQ,CAACQ,UAAU,CAACD,GAAG,GAAGnB,MAAM,CAACkB,QAAQ,EAAEhF,aAAa,CAAC,CAAC;IACxE;EACF;EAEA,OAAO;IAACiC,QAAQ;IAAEE,MAAM;IAAEG;EAAK,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS3B,wBAAwB,CAACwE,SAAoB,EAAEjF,IAAqB,EAAoB;EAC/F,MAAM+B,QAAkB,GAAG,EAAE;EAC7B,MAAME,MAAgB,GAAG,EAAE;EAC3B,MAAMG,KAAe,GAAG,EAAE;EAE1B,MAAM8C,KAAK,GAAG,IAAIC,WAAW,CAACnF,IAAI,CAACoF,KAAK,CAACH,SAAS,CAACrC,SAAS,EAAEqC,SAAS,CAACrC,SAAS,GAAG,CAAC,CAAC,CAAC;EACvF,MAAMyC,cAAc,GAAGH,KAAK,CAAC,CAAC,CAAC;EAC/B,MAAMI,gBAAgB,GAAGJ,KAAK,CAAC,CAAC,CAAC;EACjC,MAAMK,YAAY,GAAG3F,aAAa,CAChC,IAAI0C,UAAU,CAACtC,IAAI,EAAEiF,SAAS,CAACrC,SAAS,GAAG,CAAC,EAAEyC,cAAc,CAAC,EAC7DC,gBAAgB,CACjB;EACD,MAAMd,QAAQ,GAAG,IAAIC,QAAQ,CAACc,YAAY,CAACb,MAAM,CAAC;EAElD,MAAMd,MAAM,GAAGqB,SAAS,CAACrB,MAAM;EAE/B,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuB,SAAS,CAAC7B,MAAM,EAAEM,CAAC,EAAE,EAAE;IACzC,IAAIE,MAAM,CAACH,CAAC,KAAKS,SAAS,EAAE;MAC1BnC,QAAQ,CAAC4B,IAAI,CACXa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACH,CAAC,GAAIwB,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EAC7E5D,aAAa,CACd,CACF;MACDiC,QAAQ,CAAC4B,IAAI,CACXa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACO,CAAC,GAAIc,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EAC7E5D,aAAa,CACd,CACF;MACDiC,QAAQ,CAAC4B,IAAI,CACXa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACQ,CAAC,GAAIa,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EAC7E5D,aAAa,CACd,CACF;IACH;IAEA,IAAI8D,MAAM,CAACS,GAAG,KAAKH,SAAS,EAAE;MAC5B9B,KAAK,CAACuB,IAAI,CACRa,QAAQ,CAACG,QAAQ,CACdM,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACS,GAAG,GAAIY,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,GAAG,CAAC,CACpF,GAAG,KAAK,CACV;MACDtB,KAAK,CAACuB,IAAI,CACRa,QAAQ,CAACG,QAAQ,CACdM,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACS,GAAG,GAAIY,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,GAAG,CAAC,CACpF,GAAG,KAAK,CACV;MACDtB,KAAK,CAACuB,IAAI,CACRa,QAAQ,CAACG,QAAQ,CACdM,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACS,GAAG,GAAIY,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,GAAG,CAAC,CACpF,GAAG,KAAK,CACV;IACH;IAEA,IAAIE,MAAM,CAACgB,QAAQ,KAAKV,SAAS,EAAE;MACjCjC,MAAM,CAAC0B,IAAI,CACTa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACgB,QAAQ,GAAIK,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EACpF5D,aAAa,CACd,CACF;MACDmC,MAAM,CAAC0B,IAAI,CACTa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACiB,QAAQ,GAAII,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EACpF5D,aAAa,CACd,CACF;MACDmC,MAAM,CAAC0B,IAAI,CACTa,QAAQ,CAACQ,UAAU,CAChBC,SAAS,CAAC7B,MAAM,GAAcQ,MAAM,CAACkB,QAAQ,GAAIG,SAAS,CAACjD,IAAI,CAAc,CAAC,CAAC,GAAG0B,CAAC,EACpF5D,aAAa,CACd,CACF;IACH;EACF;EAEA,OAAO;IACLiC,QAAQ;IACRE,MAAM;IACNG;EACF,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"pcd-types.js"}
1
+ {"version":3,"file":"pcd-types.js","names":[],"sources":["../../../src/lib/pcd-types.ts"],"sourcesContent":["import type {Mesh} from '@loaders.gl/schema';\n\ntype BoundingBox = [[number, number, number], [number, number, number]];\n\nexport type PCDHeader = {\n data: any;\n headerLen: number;\n str: string;\n version: RegExpExecArray | null | number;\n fields: RegExpExecArray | null | string[];\n size: RegExpExecArray | null | number[];\n type: RegExpExecArray | null | string[];\n count: RegExpExecArray | null | number[];\n width: RegExpExecArray | number;\n height: RegExpExecArray | number;\n viewpoint: RegExpExecArray | null | string;\n points: RegExpExecArray | number;\n offset: {[index: string]: number};\n rowSize: number;\n vertexCount: number;\n boundingBox: BoundingBox;\n};\n\n/** */\nexport type PCDMesh = Mesh & {\n loader: 'pcd';\n loaderData: PCDHeader;\n topology: 'point-list';\n mode: 0;\n};\n"],"mappings":""}
@@ -1,4 +1,6 @@
1
- const VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'latest';
1
+
2
+ const VERSION = typeof "3.3.0-alpha.6" !== 'undefined' ? "3.3.0-alpha.6" : 'latest';
3
+
2
4
  export const PCDLoader = {
3
5
  name: 'PCD (Point Cloud Data)',
4
6
  id: 'pcd',
@@ -1 +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"}
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,"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"}
1
+ {"version":3,"file":"pcd-worker.js","names":["createLoaderWorker","PCDLoader"],"sources":["../../../src/workers/pcd-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {PCDLoader} from '../index';\n\ncreateLoaderWorker(PCDLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,SAAS,QAAO,UAAU;AAElCD,kBAAkB,CAACC,SAAS,CAAC"}
@@ -918,7 +918,7 @@
918
918
  }
919
919
 
920
920
  // src/pcd-loader.ts
921
- var VERSION = true ? "3.3.0-alpha.4" : "latest";
921
+ var VERSION = true ? "3.3.0-alpha.6" : "latest";
922
922
  var PCDLoader = {
923
923
  name: "PCD (Point Cloud Data)",
924
924
  id: "pcd",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/pcd",
3
- "version": "3.3.0-alpha.4",
3
+ "version": "3.3.0-alpha.6",
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.3.0-alpha.4",
37
- "@loaders.gl/schema": "3.3.0-alpha.4"
36
+ "@loaders.gl/loader-utils": "3.3.0-alpha.6",
37
+ "@loaders.gl/schema": "3.3.0-alpha.6"
38
38
  },
39
- "gitHead": "d1c524fd3cb9296ecd1bf7d185765c4f6aaef6a1"
39
+ "gitHead": "718a2998a26883247461ff05f01dcbef8d8c2417"
40
40
  }