@loaders.gl/tile-converter 3.2.0-alpha.1 → 3.2.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/3d-tiles-attributes-worker.d.ts +28 -0
  2. package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
  3. package/dist/3d-tiles-attributes-worker.js +4 -0
  4. package/dist/3d-tiles-attributes-worker.js.map +7 -0
  5. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +5 -1
  6. package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
  7. package/dist/3d-tiles-converter/3d-tiles-converter.js +34 -3
  8. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +5 -4
  9. package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
  10. package/dist/3d-tiles-converter/helpers/b3dm-converter.js +10 -10
  11. package/dist/constants.d.ts +2 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +4 -0
  14. package/dist/converter-cli.d.ts +2 -0
  15. package/dist/converter-cli.d.ts.map +1 -0
  16. package/dist/converter-cli.js +232 -0
  17. package/dist/converter.min.js +68 -68
  18. package/dist/deps-installer/deps-installer.d.ts +11 -1
  19. package/dist/deps-installer/deps-installer.d.ts.map +1 -1
  20. package/dist/deps-installer/deps-installer.js +10 -0
  21. package/dist/dist.min.js +910 -790
  22. package/dist/es5/3d-tiles-attributes-worker.js +29 -0
  23. package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
  24. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +116 -46
  25. package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  26. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +21 -23
  27. package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  28. package/dist/es5/constants.js +9 -0
  29. package/dist/es5/constants.js.map +1 -0
  30. package/dist/es5/converter-cli.js +306 -0
  31. package/dist/es5/converter-cli.js.map +1 -0
  32. package/dist/es5/deps-installer/deps-installer.js.map +1 -1
  33. package/dist/es5/i3s-attributes-worker.js +29 -0
  34. package/dist/es5/i3s-attributes-worker.js.map +1 -0
  35. package/dist/es5/i3s-converter/helpers/coordinate-converter.js +19 -11
  36. package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  37. package/dist/es5/i3s-converter/helpers/geometry-attributes.js +2 -2
  38. package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  39. package/dist/es5/i3s-converter/helpers/geometry-converter.js +271 -182
  40. package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
  41. package/dist/es5/i3s-converter/helpers/gltf-attributes.js +71 -0
  42. package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  43. package/dist/es5/i3s-converter/helpers/node-pages.js +47 -99
  44. package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -1
  45. package/dist/es5/i3s-converter/i3s-converter.js +293 -223
  46. package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
  47. package/dist/es5/i3s-converter/json-templates/layers.js +29 -0
  48. package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -1
  49. package/dist/es5/index.js +0 -16
  50. package/dist/es5/index.js.map +1 -1
  51. package/dist/es5/lib/utils/compress-util.js +14 -17
  52. package/dist/es5/lib/utils/compress-util.js.map +1 -1
  53. package/dist/es5/lib/utils/file-utils.js +39 -14
  54. package/dist/es5/lib/utils/file-utils.js.map +1 -1
  55. package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
  56. package/dist/es5/lib/utils/queue.js +61 -0
  57. package/dist/es5/lib/utils/queue.js.map +1 -0
  58. package/dist/es5/lib/utils/statistic-utills.js.map +1 -1
  59. package/dist/es5/lib/utils/write-queue.js +225 -0
  60. package/dist/es5/lib/utils/write-queue.js.map +1 -0
  61. package/dist/es5/pgm-loader.js +1 -1
  62. package/dist/es5/workers/3d-tiles-attributes-worker.js +37 -0
  63. package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
  64. package/dist/es5/workers/i3s-attributes-worker.js +40 -0
  65. package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
  66. package/dist/esm/3d-tiles-attributes-worker.js +16 -0
  67. package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
  68. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +36 -4
  69. package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
  70. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +16 -18
  71. package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
  72. package/dist/esm/constants.js +2 -0
  73. package/dist/esm/constants.js.map +1 -0
  74. package/dist/esm/converter-cli.js +230 -0
  75. package/dist/esm/converter-cli.js.map +1 -0
  76. package/dist/esm/deps-installer/deps-installer.js.map +1 -1
  77. package/dist/esm/i3s-attributes-worker.js +16 -0
  78. package/dist/esm/i3s-attributes-worker.js.map +1 -0
  79. package/dist/esm/i3s-converter/helpers/coordinate-converter.js +19 -11
  80. package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
  81. package/dist/esm/i3s-converter/helpers/geometry-attributes.js +2 -2
  82. package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
  83. package/dist/esm/i3s-converter/helpers/geometry-converter.js +121 -62
  84. package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
  85. package/dist/esm/i3s-converter/helpers/gltf-attributes.js +54 -0
  86. package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
  87. package/dist/esm/i3s-converter/helpers/node-pages.js +12 -4
  88. package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -1
  89. package/dist/esm/i3s-converter/i3s-converter.js +157 -52
  90. package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
  91. package/dist/esm/i3s-converter/json-templates/layers.js +25 -0
  92. package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -1
  93. package/dist/esm/index.js +0 -2
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/lib/utils/compress-util.js +6 -8
  96. package/dist/esm/lib/utils/compress-util.js.map +1 -1
  97. package/dist/esm/lib/utils/file-utils.js +11 -1
  98. package/dist/esm/lib/utils/file-utils.js.map +1 -1
  99. package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
  100. package/dist/esm/lib/utils/queue.js +19 -0
  101. package/dist/esm/lib/utils/queue.js.map +1 -0
  102. package/dist/esm/lib/utils/statistic-utills.js.map +1 -1
  103. package/dist/esm/lib/utils/write-queue.js +88 -0
  104. package/dist/esm/lib/utils/write-queue.js.map +1 -0
  105. package/dist/esm/pgm-loader.js +1 -1
  106. package/dist/esm/workers/3d-tiles-attributes-worker.js +5 -0
  107. package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
  108. package/dist/esm/workers/i3s-attributes-worker.js +4 -0
  109. package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
  110. package/dist/i3s-attributes-worker.d.ts +33 -0
  111. package/dist/i3s-attributes-worker.d.ts.map +1 -0
  112. package/dist/i3s-attributes-worker.js +10 -0
  113. package/dist/i3s-attributes-worker.js.map +7 -0
  114. package/dist/i3s-converter/helpers/coordinate-converter.d.ts +7 -7
  115. package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
  116. package/dist/i3s-converter/helpers/coordinate-converter.js +25 -21
  117. package/dist/i3s-converter/helpers/geometry-attributes.d.ts +2 -2
  118. package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
  119. package/dist/i3s-converter/helpers/geometry-attributes.js +2 -1
  120. package/dist/i3s-converter/helpers/geometry-converter.d.ts +28 -11
  121. package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
  122. package/dist/i3s-converter/helpers/geometry-converter.js +223 -113
  123. package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
  124. package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
  125. package/dist/i3s-converter/helpers/gltf-attributes.js +56 -0
  126. package/dist/i3s-converter/helpers/node-pages.d.ts +6 -5
  127. package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -1
  128. package/dist/i3s-converter/helpers/node-pages.js +13 -8
  129. package/dist/i3s-converter/i3s-converter.d.ts +7 -5
  130. package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
  131. package/dist/i3s-converter/i3s-converter.js +126 -40
  132. package/dist/i3s-converter/json-templates/layers.d.ts +4 -0
  133. package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -1
  134. package/dist/i3s-converter/json-templates/layers.js +24 -0
  135. package/dist/i3s-converter/types.d.ts +83 -8
  136. package/dist/i3s-converter/types.d.ts.map +1 -1
  137. package/dist/index.d.ts +0 -2
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +1 -5
  140. package/dist/lib/utils/compress-util.d.ts +44 -5
  141. package/dist/lib/utils/compress-util.d.ts.map +1 -1
  142. package/dist/lib/utils/compress-util.js +73 -6
  143. package/dist/lib/utils/file-utils.d.ts +34 -5
  144. package/dist/lib/utils/file-utils.d.ts.map +1 -1
  145. package/dist/lib/utils/file-utils.js +40 -1
  146. package/dist/lib/utils/lod-conversion-utils.d.ts +25 -4
  147. package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
  148. package/dist/lib/utils/lod-conversion-utils.js +21 -2
  149. package/dist/lib/utils/queue.d.ts +7 -0
  150. package/dist/lib/utils/queue.d.ts.map +1 -0
  151. package/dist/lib/utils/queue.js +18 -0
  152. package/dist/lib/utils/statistic-utills.d.ts +2 -2
  153. package/dist/lib/utils/statistic-utills.d.ts.map +1 -1
  154. package/dist/lib/utils/write-queue.d.ts +22 -0
  155. package/dist/lib/utils/write-queue.d.ts.map +1 -0
  156. package/dist/lib/utils/write-queue.js +62 -0
  157. package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
  158. package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
  159. package/dist/workers/3d-tiles-attributes-worker.js +9 -0
  160. package/dist/workers/i3s-attributes-worker.d.ts +2 -0
  161. package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
  162. package/dist/workers/i3s-attributes-worker.js +5 -0
  163. package/package.json +23 -18
  164. package/src/3d-tiles-attributes-worker.ts +43 -0
  165. package/src/3d-tiles-converter/3d-tiles-converter.ts +50 -5
  166. package/src/3d-tiles-converter/helpers/b3dm-converter.ts +15 -13
  167. package/src/constants.ts +2 -0
  168. package/src/converter-cli.ts +310 -0
  169. package/src/deps-installer/{deps-installer.js → deps-installer.ts} +11 -1
  170. package/src/i3s-attributes-worker.ts +46 -0
  171. package/src/i3s-converter/helpers/coordinate-converter.ts +29 -24
  172. package/src/i3s-converter/helpers/geometry-attributes.ts +4 -3
  173. package/src/i3s-converter/helpers/{geometry-converter.js → geometry-converter.ts} +425 -179
  174. package/src/i3s-converter/helpers/gltf-attributes.ts +68 -0
  175. package/src/i3s-converter/helpers/node-pages.ts +25 -17
  176. package/src/i3s-converter/i3s-converter.ts +150 -90
  177. package/src/i3s-converter/json-templates/layers.ts +25 -0
  178. package/src/i3s-converter/types.ts +90 -8
  179. package/src/index.ts +0 -4
  180. package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
  181. package/src/lib/utils/file-utils.ts +84 -0
  182. package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -5
  183. package/src/lib/utils/queue.ts +17 -0
  184. package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
  185. package/src/lib/utils/write-queue.ts +75 -0
  186. package/src/workers/3d-tiles-attributes-worker.ts +6 -0
  187. package/src/workers/i3s-attributes-worker.ts +6 -0
  188. package/dist/es5/deps-installer/deps-installer.d.ts +0 -10
  189. package/dist/es5/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  190. package/dist/es5/lib/utils/compress-util.d.ts +0 -53
  191. package/dist/es5/lib/utils/file-utils.d.ts +0 -43
  192. package/dist/es5/lib/utils/lod-conversion-utils.d.ts +0 -32
  193. package/dist/esm/deps-installer/deps-installer.d.ts +0 -10
  194. package/dist/esm/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  195. package/dist/esm/lib/utils/compress-util.d.ts +0 -53
  196. package/dist/esm/lib/utils/file-utils.d.ts +0 -43
  197. package/dist/esm/lib/utils/lod-conversion-utils.d.ts +0 -32
  198. package/src/deps-installer/deps-installer.d.ts +0 -10
  199. package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -44
  200. package/src/lib/utils/compress-util.d.ts +0 -53
  201. package/src/lib/utils/file-utils.d.ts +0 -43
  202. package/src/lib/utils/file-utils.js +0 -38
  203. package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.transform3DTilesAttributesOnWorker = transform3DTilesAttributesOnWorker;
7
+ exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
8
+
9
+ var _workerUtils = require("@loaders.gl/worker-utils");
10
+
11
+ var VERSION = typeof "3.2.0-alpha.4" !== 'undefined' ? "3.2.0-alpha.4" : 'latest';
12
+ var Tile3dAttributesWorker = {
13
+ id: '3d-tiles-attributes',
14
+ name: '3DTiles Attributes Worker',
15
+ module: 'tile-converter',
16
+ version: VERSION,
17
+ options: {
18
+ attributes: null
19
+ }
20
+ };
21
+ exports.Tile3dAttributesWorker = Tile3dAttributesWorker;
22
+
23
+ function transform3DTilesAttributesOnWorker(i3sAttributesData, options) {
24
+ return (0, _workerUtils.processOnWorker)(Tile3dAttributesWorker, i3sAttributesData, options);
25
+ }
26
+
27
+ var _typecheckI3SAttributesWorker = Tile3dAttributesWorker;
28
+ exports._typecheckI3SAttributesWorker = _typecheckI3SAttributesWorker;
29
+ //# sourceMappingURL=3d-tiles-attributes-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/3d-tiles-attributes-worker.ts"],"names":["VERSION","Tile3dAttributesWorker","id","name","module","version","options","attributes","transform3DTilesAttributesOnWorker","i3sAttributesData","_typecheckI3SAttributesWorker"],"mappings":";;;;;;;;AAGA;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAeO,IAAMC,sBAAsB,GAAG;AACpCC,EAAAA,EAAE,EAAE,qBADgC;AAEpCC,EAAAA,IAAI,EAAE,2BAF8B;AAGpCC,EAAAA,MAAM,EAAE,gBAH4B;AAIpCC,EAAAA,OAAO,EAAEL,OAJ2B;AAKpCM,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AAL2B,CAA/B;;;AAaA,SAASC,kCAAT,CACLC,iBADK,EAELH,OAFK,EAGiB;AACtB,SAAO,kCAAgBL,sBAAhB,EAAwCQ,iBAAxC,EAA2DH,OAA3D,CAAP;AACD;;AAEM,IAAMI,6BAA2C,GAAGT,sBAApD","sourcesContent":["import type {WorkerObject} from '@loaders.gl/worker-utils';\nimport type {FeatureAttribute} from '@loaders.gl/i3s';\n\nimport {processOnWorker} from '@loaders.gl/worker-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\nexport type Tile3DAttributesWorkerOptions = {\n featureAttributes: FeatureAttribute | null;\n source: string;\n};\n\nexport type I3SAttributesData = {\n tileContent: any;\n textureFormat: string;\n};\n\n/**\n * I3S Attributes Worker to handle B3DM object\n */\nexport const Tile3dAttributesWorker = {\n id: '3d-tiles-attributes',\n name: '3DTiles Attributes Worker',\n module: 'tile-converter',\n version: VERSION,\n options: {\n attributes: null\n }\n};\n\n/**\n * Performs I3S attributes transformation\n */\nexport function transform3DTilesAttributesOnWorker(\n i3sAttributesData: I3SAttributesData,\n options: Tile3DAttributesWorkerOptions\n): Promise<ArrayBuffer> {\n return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);\n}\n\nexport const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;\n"],"file":"3d-tiles-attributes-worker.js"}
@@ -47,6 +47,12 @@ var _b3dmConverter = _interopRequireDefault(require("./helpers/b3dm-converter"))
47
47
 
48
48
  var _coordinateConverter = require("../i3s-converter/helpers/coordinate-converter");
49
49
 
50
+ var _dTilesAttributesWorker = require("../3d-tiles-attributes-worker");
51
+
52
+ var _workerUtils = require("@loaders.gl/worker-utils");
53
+
54
+ var _constants = require("../constants");
55
+
50
56
  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; }
51
57
 
52
58
  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; }
@@ -69,6 +75,7 @@ var Tiles3DConverter = function () {
69
75
  (0, _defineProperty2.default)(this, "geoidHeightModel", void 0);
70
76
  (0, _defineProperty2.default)(this, "sourceTileset", void 0);
71
77
  (0, _defineProperty2.default)(this, "attributeStorageInfo", void 0);
78
+ (0, _defineProperty2.default)(this, "workerSource", {});
72
79
  this.options = {};
73
80
  this.tilesetPath = '';
74
81
  this.vertexCounter = 0;
@@ -76,33 +83,47 @@ var Tiles3DConverter = function () {
76
83
  this.geoidHeightModel = null;
77
84
  this.sourceTileset = null;
78
85
  this.attributeStorageInfo = null;
86
+ this.workerSource = {};
79
87
  }
80
88
 
81
89
  (0, _createClass2.default)(Tiles3DConverter, [{
82
90
  key: "convert",
83
91
  value: function () {
84
92
  var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(options) {
85
- var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset;
93
+ var inputUrl, outputPath, tilesetName, maxDepth, egmFilePath, sourceTilesetJson, rootNode, rootTile, tileset, workerFarm;
86
94
  return _regenerator.default.wrap(function _callee$(_context) {
87
95
  while (1) {
88
96
  switch (_context.prev = _context.next) {
89
97
  case 0:
98
+ if (!_core.isBrowser) {
99
+ _context.next = 3;
100
+ break;
101
+ }
102
+
103
+ console.log(_constants.BROWSER_ERROR_MESSAGE);
104
+ return _context.abrupt("return", _constants.BROWSER_ERROR_MESSAGE);
105
+
106
+ case 3:
90
107
  inputUrl = options.inputUrl, outputPath = options.outputPath, tilesetName = options.tilesetName, maxDepth = options.maxDepth, egmFilePath = options.egmFilePath;
91
108
  this.conversionStartTime = _process.default.hrtime();
92
109
  this.options = {
93
110
  maxDepth: maxDepth
94
111
  };
95
112
  console.log('Loading egm file...');
96
- _context.next = 6;
113
+ _context.next = 9;
97
114
  return (0, _core.load)(egmFilePath, _pgmLoader.PGMLoader);
98
115
 
99
- case 6:
116
+ case 9:
100
117
  this.geoidHeightModel = _context.sent;
101
118
  console.log('Loading egm file completed!');
102
- _context.next = 10;
119
+ _context.next = 13;
120
+ return this.loadWorkers();
121
+
122
+ case 13:
123
+ _context.next = 15;
103
124
  return (0, _core.load)(inputUrl, _i3s.I3SLoader, {});
104
125
 
105
- case 10:
126
+ case 15:
106
127
  sourceTilesetJson = _context.sent;
107
128
  this.sourceTileset = new _tiles.Tileset3D(sourceTilesetJson, {
108
129
  loadOptions: {
@@ -112,6 +133,10 @@ var Tiles3DConverter = function () {
112
133
  }
113
134
  }
114
135
  });
136
+ _context.next = 19;
137
+ return this.sourceTileset.tilesetInitializationPromise;
138
+
139
+ case 19:
115
140
  rootNode = this.sourceTileset.root;
116
141
 
117
142
  if (!rootNode.header.obb) {
@@ -120,19 +145,19 @@ var Tiles3DConverter = function () {
120
145
 
121
146
  this.tilesetPath = (0, _path.join)("".concat(outputPath), "".concat(tilesetName));
122
147
  this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;
123
- _context.prev = 16;
124
- _context.next = 19;
148
+ _context.prev = 23;
149
+ _context.next = 26;
125
150
  return (0, _fileUtils.removeDir)(this.tilesetPath);
126
151
 
127
- case 19:
128
- _context.next = 23;
152
+ case 26:
153
+ _context.next = 30;
129
154
  break;
130
155
 
131
- case 21:
132
- _context.prev = 21;
133
- _context.t0 = _context["catch"](16);
156
+ case 28:
157
+ _context.prev = 28;
158
+ _context.t0 = _context["catch"](23);
134
159
 
135
- case 23:
160
+ case 30:
136
161
  rootTile = {
137
162
  boundingVolume: {
138
163
  box: (0, _i3sObbTo3dTilesObb.i3sObbTo3dTilesObb)(rootNode.header.obb, this.geoidHeightModel)
@@ -140,29 +165,32 @@ var Tiles3DConverter = function () {
140
165
  geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(rootNode),
141
166
  children: []
142
167
  };
143
- _context.next = 26;
168
+ _context.next = 33;
144
169
  return this._addChildren(rootNode, rootTile, 1);
145
170
 
146
- case 26:
171
+ case 33:
147
172
  tileset = (0, _jsonMapTransform.default)({
148
173
  root: rootTile
149
174
  }, (0, _tileset.TILESET)());
150
- _context.next = 29;
175
+ _context.next = 36;
151
176
  return (0, _fileUtils.writeFile)(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
152
177
 
153
- case 29:
178
+ case 36:
154
179
  this._finishConversion({
155
180
  slpk: false,
156
181
  outputPath: outputPath,
157
182
  tilesetName: tilesetName
158
183
  });
159
184
 
160
- case 30:
185
+ workerFarm = _workerUtils.WorkerFarm.getWorkerFarm({});
186
+ workerFarm.destroy();
187
+
188
+ case 39:
161
189
  case "end":
162
190
  return _context.stop();
163
191
  }
164
192
  }
165
- }, _callee, this, [[16, 21]]);
193
+ }, _callee, this, [[23, 28]]);
166
194
  }));
167
195
 
168
196
  function convert(_x) {
@@ -175,7 +203,7 @@ var Tiles3DConverter = function () {
175
203
  key: "_addChildren",
176
204
  value: function () {
177
205
  var _addChildren2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(parentSourceNode, parentNode, level) {
178
- var _iterator, _step, childNodeInfo, sourceChild, attributes, boundingVolume, child, b3dm;
206
+ var _iterator, _step, childNodeInfo, sourceChild, _sourceChild$header, featureAttributes, boundingVolume, child, i3sAttributesData, b3dm;
179
207
 
180
208
  return _regenerator.default.wrap(function _callee2$(_context2) {
181
209
  while (1) {
@@ -196,7 +224,7 @@ var Tiles3DConverter = function () {
196
224
 
197
225
  case 5:
198
226
  if ((_step = _iterator.n()).done) {
199
- _context2.next = 39;
227
+ _context2.next = 40;
200
228
  break;
201
229
  }
202
230
 
@@ -209,7 +237,7 @@ var Tiles3DConverter = function () {
209
237
  parentSourceNode.children.push(sourceChild);
210
238
 
211
239
  if (!sourceChild.contentUrl) {
212
- _context2.next = 35;
240
+ _context2.next = 36;
213
241
  break;
214
242
  }
215
243
 
@@ -218,7 +246,7 @@ var Tiles3DConverter = function () {
218
246
 
219
247
  case 14:
220
248
  this.vertexCounter += sourceChild.content.vertexCount;
221
- attributes = null;
249
+ featureAttributes = null;
222
250
 
223
251
  if (!this.attributeStorageInfo) {
224
252
  _context2.next = 20;
@@ -229,7 +257,7 @@ var Tiles3DConverter = function () {
229
257
  return this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
230
258
 
231
259
  case 19:
232
- attributes = _context2.sent;
260
+ featureAttributes = _context2.sent;
233
261
 
234
262
  case 20:
235
263
  if (!sourceChild.header.obb) {
@@ -244,59 +272,63 @@ var Tiles3DConverter = function () {
244
272
  geometricError: (0, _lodConversionUtils.convertScreenThresholdToGeometricError)(sourceChild),
245
273
  children: []
246
274
  };
247
- _context2.next = 25;
248
- return new _b3dmConverter.default().convert(sourceChild, attributes);
275
+ i3sAttributesData = {
276
+ tileContent: sourceChild.content,
277
+ textureFormat: sourceChild === null || sourceChild === void 0 ? void 0 : (_sourceChild$header = sourceChild.header) === null || _sourceChild$header === void 0 ? void 0 : _sourceChild$header.textureFormat
278
+ };
279
+ _context2.next = 26;
280
+ return new _b3dmConverter.default().convert(i3sAttributesData, featureAttributes);
249
281
 
250
- case 25:
282
+ case 26:
251
283
  b3dm = _context2.sent;
252
284
  child.content = {
253
285
  uri: "".concat(sourceChild.id, ".b3dm"),
254
286
  boundingVolume: boundingVolume
255
287
  };
256
- _context2.next = 29;
288
+ _context2.next = 30;
257
289
  return (0, _fileUtils.writeFile)(this.tilesetPath, new Uint8Array(b3dm), "".concat(sourceChild.id, ".b3dm"));
258
290
 
259
- case 29:
291
+ case 30:
260
292
  parentNode.children.push(child);
261
293
  sourceChild.unloadContent();
262
- _context2.next = 33;
294
+ _context2.next = 34;
263
295
  return this._addChildren(sourceChild, child, level + 1);
264
296
 
265
- case 33:
266
- _context2.next = 37;
297
+ case 34:
298
+ _context2.next = 38;
267
299
  break;
268
300
 
269
- case 35:
270
- _context2.next = 37;
301
+ case 36:
302
+ _context2.next = 38;
271
303
  return this._addChildren(sourceChild, parentNode, level + 1);
272
304
 
273
- case 37:
305
+ case 38:
274
306
  _context2.next = 5;
275
307
  break;
276
308
 
277
- case 39:
278
- _context2.next = 44;
309
+ case 40:
310
+ _context2.next = 45;
279
311
  break;
280
312
 
281
- case 41:
282
- _context2.prev = 41;
313
+ case 42:
314
+ _context2.prev = 42;
283
315
  _context2.t0 = _context2["catch"](3);
284
316
 
285
317
  _iterator.e(_context2.t0);
286
318
 
287
- case 44:
288
- _context2.prev = 44;
319
+ case 45:
320
+ _context2.prev = 45;
289
321
 
290
322
  _iterator.f();
291
323
 
292
- return _context2.finish(44);
324
+ return _context2.finish(45);
293
325
 
294
- case 47:
326
+ case 48:
295
327
  case "end":
296
328
  return _context2.stop();
297
329
  }
298
330
  }
299
- }, _callee2, this, [[3, 41, 44, 47]]);
331
+ }, _callee2, this, [[3, 42, 45, 48]]);
300
332
  }));
301
333
 
302
334
  function _addChildren(_x2, _x3, _x4) {
@@ -458,8 +490,8 @@ var Tiles3DConverter = function () {
458
490
  for (var index = 0; index < attributesList.length; index++) {
459
491
  var attributeObject = attributesList[index];
460
492
 
461
- for (var key in attributeObject) {
462
- attributeObject[key] = Array.from(attributeObject[key]);
493
+ for (var _key in attributeObject) {
494
+ attributeObject[_key] = Array.from(attributeObject[_key]);
463
495
  }
464
496
  }
465
497
  }
@@ -500,6 +532,44 @@ var Tiles3DConverter = function () {
500
532
 
501
533
  return _finishConversion;
502
534
  }()
535
+ }, {
536
+ key: "loadWorkers",
537
+ value: function () {
538
+ var _loadWorkers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6() {
539
+ var tile3dAttributesWorkerUrl, sourceResponse, source;
540
+ return _regenerator.default.wrap(function _callee6$(_context6) {
541
+ while (1) {
542
+ switch (_context6.prev = _context6.next) {
543
+ case 0:
544
+ console.log("Loading workers source...");
545
+ tile3dAttributesWorkerUrl = (0, _workerUtils.getWorkerURL)(_dTilesAttributesWorker.Tile3dAttributesWorker, _objectSpread({}, (0, _core.getLoaderOptions)()));
546
+ _context6.next = 4;
547
+ return (0, _core.fetchFile)(tile3dAttributesWorkerUrl);
548
+
549
+ case 4:
550
+ sourceResponse = _context6.sent;
551
+ _context6.next = 7;
552
+ return sourceResponse.text();
553
+
554
+ case 7:
555
+ source = _context6.sent;
556
+ this.workerSource.tile3dWorkerSource = source;
557
+ console.log("Loading workers source completed!");
558
+
559
+ case 10:
560
+ case "end":
561
+ return _context6.stop();
562
+ }
563
+ }
564
+ }, _callee6, this);
565
+ }));
566
+
567
+ function loadWorkers() {
568
+ return _loadWorkers.apply(this, arguments);
569
+ }
570
+
571
+ return loadWorkers;
572
+ }()
503
573
  }]);
504
574
  return Tiles3DConverter;
505
575
  }();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","console","log","PGMLoader","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","attributes","_loadChildAttributes","child","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {load} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth: number;\n egmFilePath: string;\n }): Promise<any> {\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let attributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const b3dm = await new B3dmConverter().convert(sourceChild, attributes);\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n}\n"],"file":"3d-tiles-converter.js"}
1
+ {"version":3,"sources":["../../../src/3d-tiles-converter/3d-tiles-converter.ts"],"names":["I3S","Tiles3DConverter","options","tilesetPath","vertexCounter","conversionStartTime","geoidHeightModel","sourceTileset","attributeStorageInfo","workerSource","isBrowser","console","log","BROWSER_ERROR_MESSAGE","inputUrl","outputPath","tilesetName","maxDepth","egmFilePath","process","hrtime","PGMLoader","loadWorkers","I3SLoader","sourceTilesetJson","Tileset3D","loadOptions","i3s","coordinateSystem","COORDINATE_SYSTEM","LNGLAT_OFFSETS","decodeTextures","tilesetInitializationPromise","rootNode","root","header","obb","mbs","rootTile","boundingVolume","box","geometricError","children","_addChildren","tileset","JSON","stringify","_finishConversion","slpk","workerFarm","WorkerFarm","getWorkerFarm","destroy","parentSourceNode","parentNode","level","childNodeInfo","_loadChildNode","sourceChild","push","contentUrl","_loadTile","content","vertexCount","featureAttributes","_loadChildAttributes","child","i3sAttributesData","tileContent","textureFormat","B3dmConverter","convert","b3dm","uri","id","Uint8Array","unloadContent","nodePages","nodePagesTile","formTileFromNodePages","loader","nodeUrl","_relativeUrlToFullUrl","url","href","isTileHeader","loadContent","Tile3D","baseUrl","relativeUrl","resultArray","split","relativeUrlArray","folder","slice","join","promises","attributeUrls","index","length","attribute","attributeName","name","attributeType","_getAttributeType","I3SAttributeLoader","Promise","all","attributesList","_replaceNestedArrays","Object","assign","attributeValues","valueType","objectIds","attributeObject","key","Array","from","params","filesSize","diff","conversionTime","tile3dAttributesWorkerUrl","Tile3dAttributesWorker","sourceResponse","text","source","tile3dWorkerSource"],"mappings":"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","sourcesContent":["import type {AttributeStorageInfo, FeatureAttribute, NodeReference} from '@loaders.gl/i3s';\nimport type {Node3D} from '@loaders.gl/3d-tiles';\n\nimport {join} from 'path';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';\nimport {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';\nimport {Tileset3D, Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\nimport {PGMLoader} from '../pgm-loader';\nimport {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';\nimport {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversion-utils';\nimport {writeFile, removeDir} from '../lib/utils/file-utils';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport {TILESET as tilesetTemplate} from './json-templates/tileset';\nimport B3dmConverter from './helpers/b3dm-converter';\nimport {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';\nimport {\n I3SAttributesData,\n Tile3dAttributesWorker\n /*transform3DTilesAttributesOnWorker*/\n} from '../3d-tiles-attributes-worker';\nimport {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';\nimport {BROWSER_ERROR_MESSAGE} from '../constants';\n\nconst I3S = 'I3S';\n\n/**\n * Converter from i3s to 3d-tiles\n */\nexport default class Tiles3DConverter {\n options: any;\n tilesetPath: string;\n vertexCounter: number;\n conversionStartTime: [number, number];\n geoidHeightModel: Geoid | null;\n sourceTileset: Tileset3D | null;\n attributeStorageInfo: AttributeStorageInfo | null;\n workerSource: {[key: string]: string} = {};\n\n constructor() {\n this.options = {};\n this.tilesetPath = '';\n this.vertexCounter = 0;\n this.conversionStartTime = [0, 0];\n this.geoidHeightModel = null;\n this.sourceTileset = null;\n this.attributeStorageInfo = null;\n this.workerSource = {};\n }\n\n /**\n * Convert i3s format data to 3dTiles\n * @param options\n * @param options.inputUrl the url to read the tileset from\n * @param options.outputPath the output filename\n * @param options.tilesetName the output name of the tileset\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.maxDepth The max tree depth of conversion\n */\n public async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n maxDepth?: number;\n egmFilePath: string;\n }): Promise<any> {\n if (isBrowser) {\n console.log(BROWSER_ERROR_MESSAGE);\n return BROWSER_ERROR_MESSAGE;\n }\n const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;\n this.conversionStartTime = process.hrtime();\n this.options = {maxDepth};\n\n console.log('Loading egm file...'); // eslint-disable-line\n this.geoidHeightModel = await load(egmFilePath, PGMLoader);\n console.log('Loading egm file completed!'); // eslint-disable-line\n\n await this.loadWorkers();\n\n const sourceTilesetJson = await load(inputUrl, I3SLoader, {});\n\n this.sourceTileset = new Tileset3D(sourceTilesetJson, {\n loadOptions: {\n i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}\n }\n });\n\n await this.sourceTileset.tilesetInitializationPromise;\n const rootNode = this.sourceTileset.root!;\n if (!rootNode.header.obb) {\n rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);\n }\n\n this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n this.attributeStorageInfo = sourceTilesetJson.attributeStorageInfo;\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(this.tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n const rootTile: Node3D = {\n boundingVolume: {\n box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)\n },\n geometricError: convertScreenThresholdToGeometricError(rootNode),\n children: []\n };\n\n await this._addChildren(rootNode, rootTile, 1);\n\n const tileset = transform({root: rootTile}, tilesetTemplate());\n await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');\n\n this._finishConversion({slpk: false, outputPath, tilesetName});\n\n // Clean up worker pools\n const workerFarm = WorkerFarm.getWorkerFarm({});\n workerFarm.destroy();\n }\n\n /**\n * The recursive function of traversal of a nodes tree\n * @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param parentNode object in resulting tileset\n * @param level a current level of a tree depth\n */\n private async _addChildren(\n parentSourceNode: Tile3D,\n parentNode: Node3D,\n level: number\n ): Promise<void> {\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const childNodeInfo of parentSourceNode.header.children || []) {\n const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);\n parentSourceNode.children.push(sourceChild);\n if (sourceChild.contentUrl) {\n await this.sourceTileset!._loadTile(sourceChild);\n this.vertexCounter += sourceChild.content.vertexCount;\n\n let featureAttributes: FeatureAttribute | null = null;\n if (this.attributeStorageInfo) {\n featureAttributes = await this._loadChildAttributes(\n sourceChild,\n this.attributeStorageInfo\n );\n }\n\n if (!sourceChild.header.obb) {\n sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);\n }\n\n const boundingVolume = {\n box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)\n };\n const child: Node3D = {\n boundingVolume,\n geometricError: convertScreenThresholdToGeometricError(sourceChild),\n children: []\n };\n\n const i3sAttributesData: I3SAttributesData = {\n tileContent: sourceChild.content,\n textureFormat: sourceChild?.header?.textureFormat\n };\n\n // TODO Uncomment when 3d-tiles-attributes-worker will be published on CDN.\n // const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {\n // source: this.workerSource.tile3dWorkerSource,\n // featureAttributes\n // });\n\n const b3dm = await new B3dmConverter().convert(i3sAttributesData, featureAttributes);\n\n child.content = {\n uri: `${sourceChild.id}.b3dm`,\n boundingVolume\n };\n await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);\n parentNode.children.push(child);\n\n sourceChild.unloadContent();\n await this._addChildren(sourceChild, child, level + 1);\n } else {\n await this._addChildren(sourceChild, parentNode, level + 1);\n }\n }\n }\n\n /**\n * Load a child node having information from the node header\n * @param parentNode a parent node tile object (@loaders.gl/tiles/Tile3D)\n * @param childNodeInfo child information from 3DNodeIndexDocument\n * (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)\n */\n private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {\n let header;\n if (this.sourceTileset!.tileset.nodePages) {\n console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef\n header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(\n childNodeInfo.id\n );\n } else {\n const {loader} = this.sourceTileset!;\n const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);\n // load metadata\n const options = {\n i3s: {\n ...this.sourceTileset!.loadOptions,\n isTileHeader: true,\n loadContent: false\n }\n };\n\n console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef\n header = await load(nodeUrl, loader, options);\n }\n return new Tile3D(this.sourceTileset!, header, parentNode);\n }\n\n /**\n * Make an url of a resource from its relative url having the base url\n * @param baseUrl the base url. A resulting url will be related from this url\n * @param relativeUrl a realtive url of a resource\n */\n private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {\n let resultArray = baseUrl.split('/');\n const relativeUrlArray = relativeUrl.split('/');\n for (const folder of relativeUrlArray) {\n switch (folder) {\n case '.':\n continue; // eslint-disable-line no-continue\n case '..':\n resultArray = resultArray.slice(0, -1);\n break;\n default:\n resultArray.push(folder);\n }\n }\n return resultArray.join('/');\n }\n\n /**\n * Do loading all attributes related to particular node.\n * @param sourceChild\n * @param attributeStorageInfo\n * @returns Promise of attributes object.\n */\n private async _loadChildAttributes(\n sourceChild: Tile3D,\n attributeStorageInfo: AttributeStorageInfo\n ): Promise<FeatureAttribute> {\n const promises: any[] = [];\n const {attributeUrls} = sourceChild.header;\n\n for (let index = 0; index < attributeUrls.length; index++) {\n const inputUrl = attributeUrls[index];\n const attribute = attributeStorageInfo[index];\n const options = {\n attributeName: attribute.name,\n attributeType: this._getAttributeType(attribute)\n };\n\n promises.push(load(inputUrl, I3SAttributeLoader, options));\n }\n const attributesList = await Promise.all(promises);\n this._replaceNestedArrays(attributesList);\n return Object.assign({}, ...attributesList);\n }\n\n /**\n * Returns attribute type for loading attributes\n * @param attribute\n * Workaround for I3S v1.6. There is no attribute.attributeValues.valueType field in attribute.\n * There is an 'Oid32' type if attribute has objectIds property.\n * Doc: https://github.com/Esri/i3s-spec/blob/master/docs/1.6/attributeStorageInfo.cmn.md\n */\n private _getAttributeType(attribute: AttributeStorageInfo): string {\n if (attribute.attributeValues) {\n return attribute.attributeValues.valueType;\n } else if (attribute.objectIds) {\n return 'Oid32';\n }\n return '';\n }\n\n /**\n * Make simple arrays from attribute typed arrays.\n * @param attributesList\n */\n private _replaceNestedArrays(attributesList: FeatureAttribute[]): void {\n for (let index = 0; index < attributesList.length; index++) {\n const attributeObject = attributesList[index];\n\n for (const key in attributeObject) {\n attributeObject[key] = Array.from(attributeObject[key]);\n }\n }\n }\n\n /**\n * Print statistics in the end of conversion\n * @param params - output files data\n */\n private async _finishConversion(params: {\n slpk: boolean;\n outputPath: string;\n tilesetName: string;\n }): Promise<void> {\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n\n console.log(`------------------------------------------------`); // eslint-disable-line\n console.log(`Finish conversion of ${I3S}`); // eslint-disable-line\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line\n console.log(`------------------------------------------------`); // eslint-disable-line\n }\n\n private async loadWorkers(): Promise<void> {\n console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console\n const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});\n const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);\n const source = await sourceResponse.text();\n\n this.workerSource.tile3dWorkerSource = source;\n console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console\n }\n}\n"],"file":"3d-tiles-converter.js"}
@@ -46,8 +46,8 @@ var B3dmConverter = function () {
46
46
  (0, _createClass2.default)(B3dmConverter, [{
47
47
  key: "convert",
48
48
  value: function () {
49
- var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sTile) {
50
- var attributes,
49
+ var _convert = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(i3sAttributesData) {
50
+ var featureAttributes,
51
51
  gltf,
52
52
  b3dm,
53
53
  _args = arguments;
@@ -55,22 +55,21 @@ var B3dmConverter = function () {
55
55
  while (1) {
56
56
  switch (_context.prev = _context.next) {
57
57
  case 0:
58
- attributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
59
- this.i3sTile = i3sTile;
60
- _context.next = 4;
61
- return this.buildGltf(i3sTile);
58
+ featureAttributes = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
59
+ _context.next = 3;
60
+ return this.buildGltf(i3sAttributesData);
62
61
 
63
- case 4:
62
+ case 3:
64
63
  gltf = _context.sent;
65
64
  b3dm = (0, _core.encodeSync)({
66
65
  gltfEncoded: new Uint8Array(gltf),
67
66
  type: 'b3dm',
68
- featuresLength: this._getFeaturesLength(attributes),
69
- batchTable: attributes
67
+ featuresLength: this._getFeaturesLength(featureAttributes),
68
+ batchTable: featureAttributes
70
69
  }, _dTiles.Tile3DWriter);
71
70
  return _context.abrupt("return", b3dm);
72
71
 
73
- case 7:
72
+ case 6:
74
73
  case "end":
75
74
  return _context.stop();
76
75
  }
@@ -87,19 +86,19 @@ var B3dmConverter = function () {
87
86
  }, {
88
87
  key: "buildGltf",
89
88
  value: function () {
90
- var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(i3sTile) {
91
- var _i3sTile$content, material, attributes, originalIndices, cartesianOrigin, cartographicOrigin, modelMatrix, gltfBuilder, textureIndex, pbrMaterialInfo, materialIndex, positions, positionsValue, indices, meshIndex, transformMatrix, nodeIndex, sceneIndex, gltfBuffer;
92
-
89
+ var _buildGltf = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(i3sAttributesData) {
90
+ var tileContent, textureFormat, material, attributes, originalIndices, cartesianOrigin, cartographicOrigin, modelMatrix, gltfBuilder, textureIndex, pbrMaterialInfo, materialIndex, positions, positionsValue, indices, meshIndex, transformMatrix, nodeIndex, sceneIndex, gltfBuffer;
93
91
  return _regenerator.default.wrap(function _callee2$(_context2) {
94
92
  while (1) {
95
93
  switch (_context2.prev = _context2.next) {
96
94
  case 0:
97
- _i3sTile$content = i3sTile.content, material = _i3sTile$content.material, attributes = _i3sTile$content.attributes, originalIndices = _i3sTile$content.indices, cartesianOrigin = _i3sTile$content.cartesianOrigin, cartographicOrigin = _i3sTile$content.cartographicOrigin, modelMatrix = _i3sTile$content.modelMatrix;
95
+ tileContent = i3sAttributesData.tileContent, textureFormat = i3sAttributesData.textureFormat;
96
+ material = tileContent.material, attributes = tileContent.attributes, originalIndices = tileContent.indices, cartesianOrigin = tileContent.cartesianOrigin, cartographicOrigin = tileContent.cartographicOrigin, modelMatrix = tileContent.modelMatrix;
98
97
  gltfBuilder = new _gltf.GLTFScenegraph();
99
- _context2.next = 4;
100
- return this._addI3sTextureToGltf(i3sTile, gltfBuilder);
98
+ _context2.next = 5;
99
+ return this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
101
100
 
102
- case 4:
101
+ case 5:
103
102
  textureIndex = _context2.sent;
104
103
  pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
105
104
  materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
@@ -136,7 +135,7 @@ var B3dmConverter = function () {
136
135
  gltfBuffer = (0, _core.encodeSync)(gltfBuilder.gltf, _gltf.GLTFWriter);
137
136
  return _context2.abrupt("return", gltfBuffer);
138
137
 
139
- case 21:
138
+ case 22:
140
139
  case "end":
141
140
  return _context2.stop();
142
141
  }
@@ -153,14 +152,13 @@ var B3dmConverter = function () {
153
152
  }, {
154
153
  key: "_addI3sTextureToGltf",
155
154
  value: function () {
156
- var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(i3sTile, gltfBuilder) {
157
- var _i3sTile$content2, texture, material, attributes, textureFormat, textureIndex, selectedTexture, mimeType, imageIndex;
158
-
155
+ var _addI3sTextureToGltf2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(tileContent, textureFormat, gltfBuilder) {
156
+ var texture, material, attributes, textureIndex, selectedTexture, mimeType, imageIndex;
159
157
  return _regenerator.default.wrap(function _callee3$(_context3) {
160
158
  while (1) {
161
159
  switch (_context3.prev = _context3.next) {
162
160
  case 0:
163
- _i3sTile$content2 = i3sTile.content, texture = _i3sTile$content2.texture, material = _i3sTile$content2.material, attributes = _i3sTile$content2.attributes, textureFormat = i3sTile.header.textureFormat;
161
+ texture = tileContent.texture, material = tileContent.material, attributes = tileContent.attributes;
164
162
  textureIndex = null;
165
163
  selectedTexture = texture;
166
164
 
@@ -187,7 +185,7 @@ var B3dmConverter = function () {
187
185
  }, _callee3, this);
188
186
  }));
189
187
 
190
- function _addI3sTextureToGltf(_x3, _x4) {
188
+ function _addI3sTextureToGltf(_x3, _x4, _x5) {
191
189
  return _addI3sTextureToGltf2.apply(this, arguments);
192
190
  }
193
191