@loaders.gl/tile-converter 4.0.0-alpha.1 → 4.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/converter.js +1 -1
- package/bin/slpk-extractor.js +4 -0
- package/dist/3d-tiles-attributes-worker.d.ts +28 -0
- package/dist/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/3d-tiles-attributes-worker.js +3 -0
- package/dist/3d-tiles-attributes-worker.js.map +7 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +90 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js +275 -226
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +71 -18
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +256 -236
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +4 -7
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +22 -9
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +9 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.js +47 -28
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts +15 -0
- package/dist/3d-tiles-converter/json-templates/tileset.d.ts.map +1 -0
- package/dist/3d-tiles-converter/json-templates/tileset.js +42 -36
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -0
- package/dist/converter-cli.d.ts +2 -0
- package/dist/converter-cli.d.ts.map +1 -0
- package/dist/converter-cli.js +214 -0
- package/dist/converter.min.js +185 -190
- package/dist/deps-installer/deps-installer.d.ts +11 -3
- package/dist/deps-installer/deps-installer.d.ts.map +1 -0
- package/dist/deps-installer/deps-installer.js +61 -23
- package/dist/dist.min.js +64143 -0
- package/dist/es5/3d-tiles-attributes-worker.js +25 -0
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +467 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +293 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +18 -0
- package/dist/es5/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js +33 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js +61 -0
- package/dist/es5/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/constants.js +9 -0
- package/dist/es5/constants.js.map +1 -0
- package/dist/es5/converter-cli.js +244 -0
- package/dist/es5/converter-cli.js.map +1 -0
- package/dist/es5/deps-installer/deps-installer.js +124 -0
- package/dist/es5/deps-installer/deps-installer.js.map +1 -0
- package/dist/es5/i3s-attributes-worker.js +25 -0
- package/dist/es5/i3s-attributes-worker.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +116 -0
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +89 -0
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js +41 -0
- package/dist/es5/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +174 -0
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +213 -0
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +1192 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +113 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +82 -0
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js +76 -0
- package/dist/es5/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js +521 -0
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js +519 -0
- package/dist/es5/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +111 -0
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js +82 -0
- package/dist/es5/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/es5/i3s-converter/i3s-converter.js +1541 -0
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js +107 -0
- package/dist/es5/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/layers.js +163 -0
- package/dist/es5/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js +31 -0
- package/dist/es5/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/node.js +99 -0
- package/dist/es5/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js +39 -0
- package/dist/es5/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js +173 -0
- package/dist/es5/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/es5/i3s-converter/json-templates/store.js +107 -0
- package/dist/es5/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/es5/i3s-converter/types.js +18 -0
- package/dist/es5/i3s-converter/types.js.map +1 -0
- package/dist/es5/i3s-server/README.md +19 -0
- package/dist/es5/i3s-server/app.js +27 -0
- package/dist/es5/i3s-server/app.js.map +1 -0
- package/dist/es5/i3s-server/controllers/index-controller.js +55 -0
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js +84 -0
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/es5/i3s-server/routes/index.js +37 -0
- package/dist/es5/i3s-server/routes/index.js.map +1 -0
- package/dist/es5/i3s-server/routes/slpk-router.js +71 -0
- package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js +17 -0
- package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/es5/index.js +21 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/utils/cli-utils.js +57 -0
- package/dist/es5/lib/utils/cli-utils.js.map +1 -0
- package/dist/es5/lib/utils/compress-util.js +346 -0
- package/dist/es5/lib/utils/compress-util.js.map +1 -0
- package/dist/es5/lib/utils/file-utils.js +208 -0
- package/dist/es5/lib/utils/file-utils.js.map +1 -0
- package/dist/es5/lib/utils/geometry-utils.js +15 -0
- package/dist/es5/lib/utils/geometry-utils.js.map +1 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js +44 -0
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/es5/lib/utils/queue.js +47 -0
- package/dist/es5/lib/utils/queue.js.map +1 -0
- package/dist/es5/lib/utils/statistic-utills.d.ts +25 -0
- package/dist/es5/lib/utils/statistic-utills.js +147 -0
- package/dist/es5/lib/utils/statistic-utills.js.map +1 -0
- package/dist/es5/lib/utils/write-queue.js +214 -0
- package/dist/es5/lib/utils/write-queue.js.map +1 -0
- package/dist/es5/pgm-loader.js +41 -0
- package/dist/es5/pgm-loader.js.map +1 -0
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js +181 -0
- package/dist/es5/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js +172 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/es5/slpk-extractor-cli.js +117 -0
- package/dist/es5/slpk-extractor-cli.js.map +1 -0
- package/dist/es5/workers/3d-tiles-attributes-worker.js +28 -0
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/es5/workers/i3s-attributes-worker.js +30 -0
- package/dist/es5/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-attributes-worker.js +16 -0
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +245 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +218 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +10 -0
- package/dist/esm/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js +27 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -0
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js +37 -0
- package/dist/esm/3d-tiles-converter/json-templates/tileset.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/constants.js +2 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/converter-cli.js +187 -0
- package/dist/esm/converter-cli.js.map +1 -0
- package/dist/esm/deps-installer/deps-installer.js +45 -0
- package/dist/esm/deps-installer/deps-installer.js.map +1 -0
- package/dist/esm/i3s-attributes-worker.js +16 -0
- package/dist/esm/i3s-attributes-worker.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +105 -0
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +79 -0
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js +16 -0
- package/dist/esm/i3s-converter/helpers/create-scene-server-path.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +147 -0
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -0
- package/{src → dist/esm}/i3s-converter/helpers/geometry-attributes.js +80 -106
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +906 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +110 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +35 -0
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -0
- package/{src → dist/esm}/i3s-converter/helpers/node-debug.js +20 -41
- package/dist/esm/i3s-converter/helpers/node-debug.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js +201 -0
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js +206 -0
- package/dist/esm/i3s-converter/helpers/node-pages.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +48 -0
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js +14 -0
- package/dist/esm/i3s-converter/helpers/tileset-traversal.js.map +1 -0
- package/dist/esm/i3s-converter/i3s-converter.js +778 -0
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js +89 -0
- package/dist/esm/i3s-converter/json-templates/geometry-definitions.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/layers.js +133 -0
- package/dist/esm/i3s-converter/json-templates/layers.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/metadata.js +22 -0
- package/dist/esm/i3s-converter/json-templates/metadata.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/node.js +80 -0
- package/dist/esm/i3s-converter/json-templates/node.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/scene-server.js +28 -0
- package/dist/esm/i3s-converter/json-templates/scene-server.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/shared-resources.js +123 -0
- package/dist/esm/i3s-converter/json-templates/shared-resources.js.map +1 -0
- package/dist/esm/i3s-converter/json-templates/store.js +98 -0
- package/dist/esm/i3s-converter/json-templates/store.js.map +1 -0
- package/dist/esm/i3s-converter/types.js +11 -0
- package/dist/esm/i3s-converter/types.js.map +1 -0
- package/dist/esm/i3s-server/README.md +19 -0
- package/dist/esm/i3s-server/app.js +26 -0
- package/dist/esm/i3s-server/app.js.map +1 -0
- package/dist/esm/i3s-server/bin/www +102 -0
- package/dist/esm/i3s-server/certs/cert.pem +19 -0
- package/dist/esm/i3s-server/certs/key.pem +27 -0
- package/dist/esm/i3s-server/controllers/index-controller.js +24 -0
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js +36 -0
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -0
- package/dist/esm/i3s-server/routes/index.js +16 -0
- package/dist/esm/i3s-server/routes/index.js.map +1 -0
- package/dist/esm/i3s-server/routes/slpk-router.js +33 -0
- package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js +16 -0
- package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/utils/cli-utils.js +47 -0
- package/dist/esm/lib/utils/cli-utils.js.map +1 -0
- package/dist/esm/lib/utils/compress-util.js +168 -0
- package/dist/esm/lib/utils/compress-util.js.map +1 -0
- package/dist/esm/lib/utils/file-utils.js +87 -0
- package/dist/esm/lib/utils/file-utils.js.map +1 -0
- package/dist/esm/lib/utils/geometry-utils.js +8 -0
- package/dist/esm/lib/utils/geometry-utils.js.map +1 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js +37 -0
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -0
- package/dist/esm/lib/utils/queue.js +15 -0
- package/dist/esm/lib/utils/queue.js.map +1 -0
- package/dist/esm/lib/utils/statistic-utills.d.ts +25 -0
- package/dist/esm/lib/utils/statistic-utills.js +62 -0
- package/dist/esm/lib/utils/statistic-utills.js.map +1 -0
- package/dist/esm/lib/utils/write-queue.js +85 -0
- package/dist/esm/lib/utils/write-queue.js.map +1 -0
- package/dist/esm/pgm-loader.js +15 -0
- package/dist/esm/pgm-loader.js.map +1 -0
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js +43 -0
- package/dist/esm/slpk-extractor/helpers/file-handle-provider.js.map +1 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js +63 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/esm/slpk-extractor-cli.js +74 -0
- package/dist/esm/slpk-extractor-cli.js.map +1 -0
- package/dist/esm/workers/3d-tiles-attributes-worker.js +8 -0
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +1 -0
- package/dist/esm/workers/i3s-attributes-worker.js +7 -0
- package/dist/esm/workers/i3s-attributes-worker.js.map +1 -0
- package/dist/i3s-attributes-worker.d.ts +45 -0
- package/dist/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/i3s-attributes-worker.js +9 -0
- package/dist/i3s-attributes-worker.js.map +7 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +13 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +138 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +39 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +118 -42
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts +9 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/create-scene-server-path.js +27 -15
- package/dist/i3s-converter/helpers/feature-attributes.d.ts +56 -0
- package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/feature-attributes.js +216 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts +8 -0
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-attributes.js +188 -185
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +41 -35
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-converter.js +1179 -650
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +28 -0
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/gltf-attributes.js +129 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +18 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.js +53 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-debug.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-debug.js +106 -74
- package/dist/i3s-converter/helpers/node-index-document.d.ts +103 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-index-document.js +268 -0
- package/dist/i3s-converter/helpers/node-pages.d.ts +125 -113
- package/dist/i3s-converter/helpers/node-pages.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-pages.js +313 -133
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +22 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +75 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts +25 -0
- package/dist/i3s-converter/helpers/tileset-traversal.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/tileset-traversal.js +29 -0
- package/dist/i3s-converter/i3s-converter.d.ts +267 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
- package/dist/i3s-converter/i3s-converter.js +891 -867
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts +7 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/geometry-definitions.js +87 -0
- package/dist/i3s-converter/json-templates/layers.d.ts +70 -0
- package/dist/i3s-converter/json-templates/layers.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/layers.js +138 -190
- package/dist/i3s-converter/json-templates/metadata.d.ts +22 -0
- package/dist/i3s-converter/json-templates/metadata.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/metadata.js +25 -22
- package/dist/i3s-converter/json-templates/node.d.ts +61 -0
- package/dist/i3s-converter/json-templates/node.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/node.js +88 -79
- package/dist/i3s-converter/json-templates/scene-server.d.ts +28 -0
- package/dist/i3s-converter/json-templates/scene-server.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/scene-server.js +31 -28
- package/dist/i3s-converter/json-templates/shared-resources.d.ts +14 -0
- package/dist/i3s-converter/json-templates/shared-resources.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/shared-resources.js +124 -125
- package/dist/i3s-converter/json-templates/store.d.ts +95 -0
- package/dist/i3s-converter/json-templates/store.d.ts.map +1 -0
- package/dist/i3s-converter/json-templates/store.js +100 -95
- package/dist/i3s-converter/types.d.ts +163 -0
- package/dist/i3s-converter/types.d.ts.map +1 -0
- package/dist/i3s-converter/types.js +17 -0
- package/dist/i3s-server/app.d.ts +3 -0
- package/dist/i3s-server/app.d.ts.map +1 -0
- package/dist/i3s-server/app.js +11 -10
- package/dist/i3s-server/controllers/index-controller.d.ts +2 -0
- package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/index-controller.js +16 -24
- package/dist/i3s-server/controllers/slpk-controller.d.ts +3 -0
- package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -0
- package/dist/i3s-server/controllers/slpk-controller.js +32 -0
- package/dist/i3s-server/routes/index.d.ts +3 -0
- package/dist/i3s-server/routes/index.d.ts.map +1 -0
- package/dist/i3s-server/routes/index.js +11 -15
- package/dist/i3s-server/routes/slpk-router.d.ts +3 -0
- package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -0
- package/dist/i3s-server/routes/slpk-router.js +33 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts +11 -0
- package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -0
- package/dist/i3s-server/utils/create-scene-server.js +14 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -5
- package/dist/lib/utils/cli-utils.d.ts +34 -0
- package/dist/lib/utils/cli-utils.d.ts.map +1 -0
- package/dist/lib/utils/cli-utils.js +82 -0
- package/dist/lib/utils/compress-util.d.ts +45 -0
- package/dist/lib/utils/compress-util.d.ts.map +1 -0
- package/dist/lib/utils/compress-util.js +238 -160
- package/dist/lib/utils/file-utils.d.ts +22 -14
- package/dist/lib/utils/file-utils.d.ts.map +1 -0
- package/dist/lib/utils/file-utils.js +134 -36
- package/dist/lib/utils/geometry-utils.d.ts +9 -0
- package/dist/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/lib/utils/geometry-utils.js +18 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +23 -13
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -0
- package/dist/lib/utils/lod-conversion-utils.js +72 -39
- package/dist/lib/utils/queue.d.ts +7 -0
- package/dist/lib/utils/queue.d.ts.map +1 -0
- package/dist/lib/utils/queue.js +18 -0
- package/dist/lib/utils/statistic-utills.d.ts +3 -25
- package/dist/lib/utils/statistic-utills.d.ts.map +1 -0
- package/dist/lib/utils/statistic-utills.js +58 -67
- package/dist/lib/utils/write-queue.d.ts +39 -0
- package/dist/lib/utils/write-queue.d.ts.map +1 -0
- package/dist/lib/utils/write-queue.js +80 -0
- package/dist/pgm-loader.d.ts +6 -0
- package/dist/pgm-loader.d.ts.map +1 -0
- package/dist/pgm-loader.js +23 -14
- package/dist/slpk-extractor/helpers/file-handle-provider.d.ts +48 -0
- package/dist/slpk-extractor/helpers/file-handle-provider.d.ts.map +1 -0
- package/dist/slpk-extractor/helpers/file-handle-provider.js +71 -0
- package/dist/slpk-extractor/slpk-extractor.d.ts +23 -0
- package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -0
- package/dist/slpk-extractor/slpk-extractor.js +78 -0
- package/dist/slpk-extractor-cli.d.ts +17 -0
- package/dist/slpk-extractor-cli.d.ts.map +1 -0
- package/dist/slpk-extractor-cli.js +102 -0
- package/dist/slpk-extractor.min.js +189 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts +2 -0
- package/dist/workers/3d-tiles-attributes-worker.d.ts.map +1 -0
- package/dist/workers/3d-tiles-attributes-worker.js +9 -0
- package/dist/workers/i3s-attributes-worker.d.ts +2 -0
- package/dist/workers/i3s-attributes-worker.d.ts.map +1 -0
- package/dist/workers/i3s-attributes-worker.js +5 -0
- package/package.json +36 -24
- package/src/3d-tiles-attributes-worker.ts +43 -0
- package/src/3d-tiles-converter/3d-tiles-converter.ts +131 -63
- package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +72 -53
- package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts} +16 -1
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +4 -4
- package/src/3d-tiles-converter/json-templates/{tileset.js → tileset.ts} +9 -9
- package/src/constants.ts +2 -0
- package/src/converter-cli.ts +305 -0
- package/src/deps-installer/deps-installer.ts +72 -0
- package/src/i3s-attributes-worker.ts +59 -0
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +202 -0
- package/src/i3s-converter/helpers/coordinate-converter.ts +94 -34
- package/src/i3s-converter/helpers/create-scene-server-path.ts +29 -0
- package/src/i3s-converter/helpers/feature-attributes.ts +247 -0
- package/src/i3s-converter/helpers/geometry-attributes.ts +267 -0
- package/src/i3s-converter/helpers/geometry-converter.ts +1667 -0
- package/src/i3s-converter/helpers/gltf-attributes.ts +162 -0
- package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
- package/src/i3s-converter/helpers/node-debug.ts +146 -0
- package/src/i3s-converter/helpers/node-index-document.ts +335 -0
- package/src/i3s-converter/helpers/node-pages.ts +344 -0
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +79 -0
- package/src/i3s-converter/helpers/tileset-traversal.ts +51 -0
- package/src/i3s-converter/i3s-converter.ts +650 -669
- package/src/i3s-converter/json-templates/geometry-definitions.ts +83 -0
- package/src/i3s-converter/json-templates/layers.ts +137 -0
- package/src/i3s-converter/json-templates/{metadata.js → metadata.ts} +2 -2
- package/src/i3s-converter/json-templates/{node.js → node.ts} +12 -12
- package/src/i3s-converter/json-templates/{scene-server.js → scene-server.ts} +2 -2
- package/src/i3s-converter/json-templates/{shared-resources.js → shared-resources.ts} +17 -17
- package/src/i3s-converter/types.ts +185 -0
- package/src/i3s-server/README.md +19 -0
- package/src/i3s-server/app.js +8 -1
- package/src/i3s-server/controllers/slpk-controller.js +38 -0
- package/src/i3s-server/routes/slpk-router.js +33 -0
- package/src/i3s-server/utils/create-scene-server.js +15 -0
- package/src/index.ts +0 -4
- package/src/lib/utils/cli-utils.ts +78 -0
- package/src/lib/utils/{compress-util.js → compress-util.ts} +105 -18
- package/src/lib/utils/file-utils.ts +140 -0
- package/src/lib/utils/geometry-utils.ts +14 -0
- package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +31 -5
- package/src/lib/utils/queue.ts +17 -0
- package/src/lib/utils/write-queue.ts +110 -0
- package/src/pgm-loader.ts +3 -3
- package/src/slpk-extractor/helpers/file-handle-provider.ts +91 -0
- package/src/slpk-extractor/slpk-extractor.ts +102 -0
- package/src/slpk-extractor-cli.ts +128 -0
- package/src/workers/3d-tiles-attributes-worker.ts +6 -0
- package/src/workers/i3s-attributes-worker.ts +7 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js.map +0 -1
- package/dist/3d-tiles-converter/helpers/texture-atlas.js.map +0 -1
- package/dist/3d-tiles-converter/json-templates/tileset.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/deps-installer/deps-installer.js.map +0 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/create-scene-server-path.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-attributes.js.map +0 -1
- package/dist/i3s-converter/helpers/geometry-converter.js.map +0 -1
- package/dist/i3s-converter/helpers/node-debug.js.map +0 -1
- package/dist/i3s-converter/helpers/node-pages.js.map +0 -1
- package/dist/i3s-converter/i3s-converter.js.map +0 -1
- package/dist/i3s-converter/json-templates/layers.js.map +0 -1
- package/dist/i3s-converter/json-templates/metadata.js.map +0 -1
- package/dist/i3s-converter/json-templates/node.js.map +0 -1
- package/dist/i3s-converter/json-templates/scene-server.js.map +0 -1
- package/dist/i3s-converter/json-templates/shared-resources.js.map +0 -1
- package/dist/i3s-converter/json-templates/store.js.map +0 -1
- package/dist/i3s-server/app.js.map +0 -1
- package/dist/i3s-server/controllers/index-controller.js.map +0 -1
- package/dist/i3s-server/routes/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/geoid-height-model.d.ts +0 -41
- package/dist/lib/geoid-height-model.js +0 -140
- package/dist/lib/geoid-height-model.js.map +0 -1
- package/dist/lib/pgm-parser.d.ts +0 -14
- package/dist/lib/pgm-parser.js +0 -183
- package/dist/lib/pgm-parser.js.map +0 -1
- package/dist/lib/utils/compress-util.js.map +0 -1
- package/dist/lib/utils/compress-utils.d.ts +0 -53
- package/dist/lib/utils/file-utils.js.map +0 -1
- package/dist/lib/utils/lod-conversion-utils.js.map +0 -1
- package/dist/lib/utils/statistic-utills.js.map +0 -1
- package/dist/pgm-loader.js.map +0 -1
- package/src/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -23
- package/src/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.d.ts +0 -16
- package/src/deps-installer/deps-installer.d.ts +0 -10
- package/src/deps-installer/deps-installer.js +0 -22
- package/src/i3s-converter/helpers/create-scene-server-path.js +0 -25
- package/src/i3s-converter/helpers/geometry-converter.d.ts +0 -40
- package/src/i3s-converter/helpers/geometry-converter.js +0 -915
- package/src/i3s-converter/helpers/node-pages.d.ts +0 -144
- package/src/i3s-converter/helpers/node-pages.js +0 -208
- package/src/i3s-converter/json-templates/layers.js +0 -199
- package/src/lib/geoid-height-model.d.ts +0 -41
- package/src/lib/geoid-height-model.js +0 -239
- package/src/lib/pgm-parser.d.ts +0 -14
- package/src/lib/pgm-parser.js +0 -179
- package/src/lib/utils/compress-utils.d.ts +0 -53
- package/src/lib/utils/file-utils.d.ts +0 -43
- package/src/lib/utils/file-utils.js +0 -38
- package/src/lib/utils/lod-conversion-utils.d.ts +0 -32
- /package/dist/{i3s-server → es5/i3s-server}/bin/www +0 -0
- /package/dist/{i3s-server → es5/i3s-server}/certs/cert.pem +0 -0
- /package/dist/{i3s-server → es5/i3s-server}/certs/key.pem +0 -0
- /package/src/i3s-converter/json-templates/{store.js → store.ts} +0 -0
- /package/src/lib/utils/{statistic-utills.js → statistic-utills.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/helpers/geometry-converter.js"],"names":["Vector3","Matrix4","Vector4","Ellipsoid","DracoWriter","encode","assert","concatenateArrayBuffers","concatenateTypedArrays","md5","generateAttributes","VALUES_PER_VERTEX","VALUES_PER_TEX_COORD","VALUES_PER_COLOR_ELEMENT","STRING_TYPE","SHORT_INT_TYPE","DOUBLE_TYPE","OBJECT_ID_TYPE","BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES","convertB3dmToI3sGeometry","tileContent","nodeId","featuresHashArray","attributeStorageInfo","draco","materialAndTextureList","convertMaterials","convertedAttributesMap","convertAttributes","has","push","material","getDefaultMaterial","result","nodesCounter","materials","gltf","length","id","i","sourceMaterial","convertedAttributes","get","texture","_makeNodeResources","vertexCount","positions","triangleCount","faceRange","featureIds","normals","colors","texCoords","featureCount","batchTableJson","makeFeatureIdsUnique","featureIndices","header","Uint32Array","typedFeatureIds","generateBigUint64Array","set","fileBuffer","Uint8Array","buffer","ArrayBuffer","compressedGeometry","generateCompressedGeometry","Float32Array","attributes","convertBatchTableToAttributeBuffers","geometry","sharedResources","getSharedResources","meshMaterial","attributesMap","Map","nodes","scene","scenes","convertNodes","attrKey","keys","delete","index","reduce","acc","value","concat","matrix","node","convertNode","nodeMatrix","compositeMatrix","multiplyRight","mesh","convertMesh","children","content","primitive","primitives","outputAttributes","transformVertexArray","vertices","POSITION","cartographicOrigin","cartesianModelMatrix","indices","attributeSpecificTransformation","transformVertexPositions","NORMAL","transformVertexNormals","flattenTexCoords","TEXCOORD_0","flattenColors","COLOR_0","flattenBatchIds","getBatchIdsByAttributeName","args","newVertices","coordIndex","vertex","subarray","vertexVector","Array","from","x","y","z","calleeArgs","transform","WGS84","cartesianToCartographic","subtract","transformAsVector","newTexCoords","texCoord","colorsAttribute","components","newColors","colorIndex","color","colorUint8","j","batchedIds","newBatchIds","batchIds","possibleBatchIdAttributeName","sourceMaterials","convertMaterial","doubleSided","emissiveFactor","map","c","Math","round","alphaMode","toLowerCase","pbrMetallicRoughness","roughnessFactor","metallicFactor","baseColorTexture","source","textureSetDefinitionId","emissiveTexture","baseColorFactor","undefined","gltfMaterials","i3sResources","materialDefinitionInfos","gltfMaterial","materialDefinitionInfo","textureDefinitionInfo","convertGLTFMaterialToI3sSharedResources","textureDefinitionInfos","extractSharedResourcesTextureInfo","colorFactor","extractSharedResourcesMaterialInfo","matDielectricColorComponent","black","unitVector","dielectricSpecular","baseColorVector","firstOperand","multiply","diffuse","lerp","specular","toArray","encoding","mimeType","images","generateImageId","size","image","width","data","height","levelCountOfTexture","indexOfLevel","indexOfTextureInStore","zerosCount","toString","rightHalf","repeat","shiftedLevelCountOfTexture","shiftedIndexOfLevel","shiftedWidth","shiftedHeight","leftHalf","imageId","BigInt","batchTable","replaceMap","getFeaturesReplaceMap","replaceIndicesByUnique","featureMap","oldFeatureId","uniqueFeatureId","getOrCreateUniqueFeatureId","generateStringFromBatchTableByIndex","str","key","batchTableStr","hash","includes","indexOf","indicesArray","attributeBuffers","batchTableWithFeatureIds","OBJECTID","type","getAttributeType","attributeBuffer","generateShortIntegerAttributeBuffer","generateDoubleAttributeBuffer","generateStringAttributeBuffer","attribute","find","attr","name","attributeValues","valueType","count","valuesArray","padding","Float64Array","batchAttributes","stringCountArray","totalNumberOfBytes","stringSizesArray","stringBufferArray","currentString","String","currentStringBuffer","Buffer","currentStringSize","totalBytes","BigUint64Array","featureIndex","generateFeatureIndexAttribute","compressedAttributes","attributesMetadata","Int32Array","method","orderedFeatureIndices","fillIndex","startIndex","endIndex","fill"],"mappings":"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","sourcesContent":["import {Vector3, Matrix4, Vector4} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\nimport {DracoWriter} from '@loaders.gl/draco';\nimport {encode, assert} from '@loaders.gl/core';\nimport {concatenateArrayBuffers, concatenateTypedArrays} from '@loaders.gl/loader-utils';\nimport md5 from 'md5';\nimport {generateAttributes} from './geometry-attributes';\n\nconst VALUES_PER_VERTEX = 3;\nconst VALUES_PER_TEX_COORD = 2;\nconst VALUES_PER_COLOR_ELEMENT = 4;\n\nconst STRING_TYPE = 'string';\nconst SHORT_INT_TYPE = 'Int32';\nconst DOUBLE_TYPE = 'Float64';\nconst OBJECT_ID_TYPE = 'Oid32';\n/*\n * 'CUSTOM_ATTRIBUTE_2' - Attribute name which includes batch info and used by New York map.\n * _BATCHID - Default attribute name which includes batch info.\n * BATCHID - Legacy attribute name which includes batch info.\n */\nconst BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES = ['CUSTOM_ATTRIBUTE_2', '_BATCHID', 'BATCHID'];\n\nexport default async function convertB3dmToI3sGeometry(\n tileContent,\n nodeId,\n featuresHashArray,\n attributeStorageInfo,\n draco\n) {\n const materialAndTextureList = convertMaterials(tileContent);\n const convertedAttributesMap = convertAttributes(tileContent);\n\n if (convertedAttributesMap.has('default')) {\n materialAndTextureList.push({\n material: getDefaultMaterial()\n });\n }\n\n const result = [];\n let nodesCounter = nodeId;\n let {materials = []} = tileContent.gltf;\n if (!materials.length === 0) {\n materials.push({id: 'default'});\n }\n for (let i = 0; i < materials.length; i++) {\n const sourceMaterial = materials[i];\n if (!convertedAttributesMap.has(sourceMaterial.id)) {\n continue; // eslint-disable-line no-continue\n }\n const convertedAttributes = convertedAttributesMap.get(sourceMaterial.id);\n const {material, texture} = materialAndTextureList[i];\n result.push(\n await _makeNodeResources({\n convertedAttributes,\n material,\n texture,\n tileContent,\n nodeId: nodesCounter,\n featuresHashArray,\n attributeStorageInfo,\n draco\n })\n );\n nodesCounter++;\n }\n\n if (!result.length) {\n return null;\n }\n return result;\n}\n\nasync function _makeNodeResources({\n convertedAttributes,\n material,\n texture,\n tileContent,\n nodeId,\n featuresHashArray,\n attributeStorageInfo,\n draco\n}) {\n const vertexCount = convertedAttributes.positions.length / VALUES_PER_VERTEX;\n const triangleCount = vertexCount / 3;\n const {faceRange, featureIds, positions, normals, colors, texCoords, featureCount} =\n generateAttributes({triangleCount, ...convertedAttributes});\n\n if (tileContent.batchTableJson) {\n makeFeatureIdsUnique(\n featureIds,\n convertedAttributes.featureIndices,\n featuresHashArray,\n tileContent.batchTableJson\n );\n }\n\n const header = new Uint32Array(2);\n const typedFeatureIds = generateBigUint64Array(featureIds);\n\n header.set([vertexCount, featureCount], 0);\n const fileBuffer = new Uint8Array(\n concatenateArrayBuffers(\n header.buffer,\n positions.buffer,\n normals.buffer,\n texture ? texCoords.buffer : new ArrayBuffer(0),\n colors.buffer,\n typedFeatureIds.buffer,\n faceRange.buffer\n )\n );\n const compressedGeometry = draco\n ? await generateCompressedGeometry(vertexCount, convertedAttributes, {\n positions,\n normals,\n texCoords: texture ? texCoords : new Float32Array(0),\n colors,\n featureIds,\n faceRange\n })\n : null;\n\n const attributes = convertBatchTableToAttributeBuffers(\n tileContent.batchTableJson,\n featureIds,\n attributeStorageInfo\n );\n\n return {\n geometry: fileBuffer,\n compressedGeometry,\n texture,\n sharedResources: getSharedResources(tileContent, nodeId),\n meshMaterial: material,\n vertexCount,\n attributes,\n featureCount\n };\n}\n\n/**\n * Convert attributes from the gltf nodes tree to i3s plain geometry\n * @param {Object} tileContent - 3d tile content\n * @returns {Map}\n * Map<{\n * positions: Float32Array,\n * normals: Float32Array,\n * colors: Uint8Array,\n * texCoords: Float32Array\n * }>\n * @todo implement colors support (if applicable for gltf format)\n */\nfunction convertAttributes(tileContent) {\n const attributesMap = new Map();\n\n for (const material of tileContent.gltf.materials || [{id: 'default'}]) {\n attributesMap.set(material.id, {\n positions: new Float32Array(0),\n normals: new Float32Array(0),\n texCoords: new Float32Array(0),\n colors: new Uint8Array(0),\n featureIndices: []\n });\n }\n\n const nodes = (tileContent.gltf.scene || tileContent.gltf.scenes?.[0] || tileContent.gltf).nodes;\n convertNodes(nodes, tileContent, attributesMap);\n\n for (const attrKey of attributesMap.keys()) {\n const attributes = attributesMap.get(attrKey);\n if (attributes.positions.length === 0) {\n attributesMap.delete(attrKey);\n continue; // eslint-disable-line no-continue\n }\n const vertexCount = attributes.positions.length / VALUES_PER_VERTEX;\n if (!attributes.colors.length) {\n attributes.colors = new Uint8Array(vertexCount * VALUES_PER_COLOR_ELEMENT);\n for (let index = 0; index < attributes.colors.length; index += 4) {\n attributes.colors.set([255, 255, 255, 255], index);\n }\n }\n if (!attributes.texCoords.length) {\n attributes.texCoords = new Float32Array(vertexCount * VALUES_PER_TEX_COORD);\n for (let index = 0; index < attributes.texCoords.length; index += 2) {\n attributes.texCoords.set([1, 1], index);\n }\n }\n attributes.featureIndices = attributes.featureIndices.reduce((acc, value) => acc.concat(value));\n }\n\n return attributesMap;\n}\n\n/**\n * Gltf has hierarchical structure of nodes. This function converts nodes starting from those which are in gltf scene object.\n * The goal is applying tranformation matrix for all children. Functions \"convertNodes\" and \"convertNode\" work together recursively.\n * @param {Object[]} nodes - gltf nodes array\n * @param {Object} tileContent - 3d tile content\n * @param {Map} attributesMap Map<{positions: Float32Array, normals: Float32Array, texCoords: Float32Array, colors: UInt8Array, featureIndices: Array}> - for recursive concatenation of\n * attributes\n * @param {Matrix4} matrix - transformation matrix - cumulative transformation matrix formed from all parent node matrices\n * @returns {void}\n */\nfunction convertNodes(\n nodes,\n tileContent,\n attributesMap,\n matrix = new Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])\n) {\n if (nodes) {\n for (const node of nodes) {\n convertNode(node, tileContent, attributesMap, matrix);\n }\n }\n}\n\n/**\n * Convert all primitives of node and all children nodes\n * @param {Object} node - gltf node\n * @param {Object} tileContent - 3d tile content\n * @param {Map} attributesMap Map<{positions: Float32Array, normals: Float32Array, texCoords: Float32Array, colors: Uint8Array, featureIndices: Array}> - for recursive concatenation of\n * attributes\n * @param {Matrix4} matrix - transformation matrix - cumulative transformation matrix formed from all parent node matrices\n * @todo: optimize arrays concatenation\n */\nfunction convertNode(\n node,\n tileContent,\n attributesMap,\n matrix = new Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])\n) {\n const nodeMatrix = node.matrix;\n const compositeMatrix = nodeMatrix ? matrix.multiplyRight(nodeMatrix) : matrix;\n\n const mesh = node.mesh;\n if (mesh) {\n convertMesh(mesh, tileContent, attributesMap, compositeMatrix);\n }\n\n convertNodes(node.children, tileContent, attributesMap, compositeMatrix);\n}\n\n/**\n * Convert all primitives of node and all children nodes\n * @param {Object} mesh - gltf node\n * @param {Object} content - 3d tile content\n * @param {Map} attributesMap Map<{positions: Float32Array, normals: Float32Array, texCoords: Float32Array, colors: Uint8Array, featureIndices: Array}> - for recursive concatenation of\n * attributes\n * @param {Matrix4} matrix - transformation matrix - cumulative transformation matrix formed from all parent node matrices\n * @todo: optimize arrays concatenation\n */\nfunction convertMesh(\n mesh,\n content,\n attributesMap,\n matrix = new Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])\n) {\n for (const primitive of mesh.primitives) {\n let outputAttributes = null;\n if (primitive.material) {\n outputAttributes = attributesMap.get(primitive.material.id);\n } else if (attributesMap.has('default')) {\n outputAttributes = attributesMap.get('default');\n }\n assert(outputAttributes !== null, 'Primitive - material mapping failed');\n const attributes = primitive.attributes;\n\n outputAttributes.positions = concatenateTypedArrays(\n outputAttributes.positions,\n transformVertexArray({\n vertices: attributes.POSITION.value,\n cartographicOrigin: content.cartographicOrigin,\n cartesianModelMatrix: content.cartesianModelMatrix,\n nodeMatrix: matrix,\n indices: primitive.indices.value,\n attributeSpecificTransformation: transformVertexPositions\n })\n );\n outputAttributes.normals = concatenateTypedArrays(\n outputAttributes.normals,\n transformVertexArray({\n vertices: attributes.NORMAL && attributes.NORMAL.value,\n cartographicOrigin: content.cartographicOrigin,\n cartesianModelMatrix: content.cartesianModelMatrix,\n nodeMatrix: matrix,\n indices: primitive.indices.value,\n attributeSpecificTransformation: transformVertexNormals\n })\n );\n outputAttributes.texCoords = concatenateTypedArrays(\n outputAttributes.texCoords,\n flattenTexCoords(\n attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value,\n primitive.indices.value\n )\n );\n\n outputAttributes.colors = concatenateTypedArrays(\n outputAttributes.colors,\n flattenColors(attributes.COLOR_0, primitive.indices.value)\n );\n\n outputAttributes.featureIndices.push(\n flattenBatchIds(getBatchIdsByAttributeName(attributes), primitive.indices.value)\n );\n }\n}\n\n/**\n * Convert vertices attributes (POSITIONS or NORMALS) to i3s compatible format\n * @param {object} args - source tile (3DTile)\n * @param {Float32Array} args.vertices - gltf primitive POSITION or NORMAL attribute\n * @param {Object} args.cartographicOrigin - cartographic origin coordinates\n * @param {Object} args.cartesianModelMatrix - a cartesian model matrix to transform coordnates from cartesian to cartographic format\n * @param {Matrix4} args.nodeMatrix - a gltf node transformation matrix - cumulative transformation matrix formed from all parent node matrices\n * @param {Uint8Array} args.indices - gltf primitive indices\n * @param {Function} args.attributeSpecificTransformation - function to do attribute - specific transformations\n * @returns {Float32Array}\n */\nfunction transformVertexArray(args) {\n const {vertices, indices, attributeSpecificTransformation} = args;\n const newVertices = new Float32Array(indices.length * VALUES_PER_VERTEX);\n if (!vertices) {\n return newVertices;\n }\n for (let i = 0; i < indices.length; i++) {\n const coordIndex = indices[i] * VALUES_PER_VERTEX;\n const vertex = vertices.subarray(coordIndex, coordIndex + VALUES_PER_VERTEX);\n let vertexVector = new Vector3(Array.from(vertex));\n\n vertexVector = attributeSpecificTransformation(vertexVector, args);\n\n newVertices[i * VALUES_PER_VERTEX] = vertexVector.x;\n newVertices[i * VALUES_PER_VERTEX + 1] = vertexVector.y;\n newVertices[i * VALUES_PER_VERTEX + 2] = vertexVector.z;\n }\n return newVertices;\n}\n\nfunction transformVertexPositions(vertexVector, calleeArgs) {\n const {cartesianModelMatrix, cartographicOrigin, nodeMatrix} = calleeArgs;\n\n if (nodeMatrix) {\n vertexVector = vertexVector.transform(nodeMatrix);\n }\n\n vertexVector = vertexVector.transform(cartesianModelMatrix);\n Ellipsoid.WGS84.cartesianToCartographic(\n [vertexVector[0], vertexVector[1], vertexVector[2]],\n vertexVector\n );\n vertexVector = vertexVector.subtract(cartographicOrigin);\n return vertexVector;\n}\n\nfunction transformVertexNormals(vertexVector, calleeArgs) {\n const {cartesianModelMatrix, nodeMatrix} = calleeArgs;\n\n if (nodeMatrix) {\n vertexVector = vertexVector.transformAsVector(nodeMatrix);\n }\n\n vertexVector = vertexVector.transformAsVector(cartesianModelMatrix);\n return vertexVector;\n}\n\n/**\n * Convert uv0 (texture coordinates) from coords based on indices to plain arrays, compatible with i3s\n * @param {Float32Array} texCoords - gltf primitive TEXCOORD_0 attribute\n * @param {Uint8Array} indices - gltf primitive indices\n * @returns {Float32Array}\n */\nfunction flattenTexCoords(texCoords, indices) {\n if (!texCoords) {\n return new Float32Array(0);\n }\n const newTexCoords = new Float32Array(indices.length * VALUES_PER_TEX_COORD);\n for (let i = 0; i < indices.length; i++) {\n const coordIndex = indices[i] * VALUES_PER_TEX_COORD;\n const texCoord = texCoords.subarray(coordIndex, coordIndex + VALUES_PER_TEX_COORD);\n newTexCoords[i * VALUES_PER_TEX_COORD] = texCoord[0];\n newTexCoords[i * VALUES_PER_TEX_COORD + 1] = texCoord[1];\n }\n return newTexCoords;\n}\n\n/**\n * Convert color from COLOR_0 based on indices to plain arrays, compatible with i3s\n * @param {object} colorsAttribute - gltf primitive COLOR_0 attribute\n * @param {Uint8Array} indices - gltf primitive indices\n * @returns {Uint8Array}\n */\nfunction flattenColors(colorsAttribute, indices) {\n if (!colorsAttribute) {\n return new Uint8Array(0);\n }\n const components = colorsAttribute.components;\n const colors = colorsAttribute.value;\n const newColors = new Uint8Array(indices.length * components);\n for (let i = 0; i < indices.length; i++) {\n const colorIndex = indices[i] * components;\n const color = colors.subarray(colorIndex, colorIndex + components);\n const colorUint8 = new Uint8Array(components);\n for (let j = 0; j < color.length; j++) {\n colorUint8[j] = color[j] * 255;\n }\n newColors.set(colorUint8, i * components);\n }\n return newColors;\n}\n\n/**\n * Flatten batchedIds list based on indices to right ordered array, compatible with i3s\n * @param {Array} batchedIds - gltf primitive\n * @param {Uint8Array} indices - gltf primitive indices\n * @returns {Array}\n */\nfunction flattenBatchIds(batchedIds, indices) {\n if (!batchedIds.length || !indices.length) {\n return [];\n }\n const newBatchIds = [];\n for (let i = 0; i < indices.length; i++) {\n const coordIndex = indices[i];\n newBatchIds.push(batchedIds[coordIndex]);\n }\n return newBatchIds;\n}\n/**\n * Return batchIds based on possible attribute names for different kind of maps.\n * @param {Object} attributes {attributeName: Float32Array}\n * @returns {Array}\n */\nfunction getBatchIdsByAttributeName(attributes) {\n let batchIds = [];\n\n for (let index = 0; index < BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES.length; index++) {\n const possibleBatchIdAttributeName = BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES[index];\n if (\n attributes[possibleBatchIdAttributeName] &&\n attributes[possibleBatchIdAttributeName].value\n ) {\n batchIds = attributes[possibleBatchIdAttributeName].value;\n break;\n }\n }\n\n return batchIds;\n}\n\nfunction convertMaterials(tileContent) {\n const result = [];\n const sourceMaterials = tileContent.gltf.materials || [];\n for (const sourceMaterial of sourceMaterials) {\n result.push(convertMaterial(sourceMaterial));\n }\n return result;\n}\n\n/**\n * Convert texture and material from gltf 2.0 material object\n * @param {Object} sourceMaterial - material object\n * @returns {Object}\n */\nfunction convertMaterial(sourceMaterial) {\n const material = {\n doubleSided: sourceMaterial.doubleSided,\n emissiveFactor: sourceMaterial.emissiveFactor.map((c) => Math.round(c * 255)),\n // It is in upper case in GLTF: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#alpha-coverage\n // But it is in lower case in I3S: https://github.com/Esri/i3s-spec/blob/master/docs/1.7/materialDefinitions.cmn.md\n alphaMode: (sourceMaterial.alphaMode || 'OPAQUE').toLowerCase(),\n pbrMetallicRoughness: {\n roughnessFactor: sourceMaterial.pbrMetallicRoughness.roughnessFactor,\n metallicFactor: sourceMaterial.pbrMetallicRoughness.metallicFactor\n }\n };\n\n let texture;\n if (sourceMaterial.pbrMetallicRoughness.baseColorTexture) {\n texture = sourceMaterial.pbrMetallicRoughness.baseColorTexture.texture.source;\n material.pbrMetallicRoughness.baseColorTexture = {\n textureSetDefinitionId: 0\n };\n } else if (sourceMaterial.emissiveTexture) {\n texture = sourceMaterial.emissiveTexture.texture.source;\n // ArcGIS webscene doesn't show emissiveTexture but shows baseColorTexture\n material.pbrMetallicRoughness.baseColorTexture = {\n textureSetDefinitionId: 0\n };\n }\n\n if (!texture) {\n // Should use default baseColorFactor if it is not present in source material\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-pbrmetallicroughness\n const baseColorFactor = sourceMaterial.pbrMetallicRoughness.baseColorFactor;\n material.pbrMetallicRoughness.baseColorFactor =\n (baseColorFactor && baseColorFactor.map((c) => Math.round(c * 255))) || undefined;\n }\n\n return {material, texture};\n}\n\nfunction getDefaultMaterial() {\n return {\n alphaMode: 'opaque',\n pbrMetallicRoughness: {}\n };\n}\n\n/**\n * Form \"sharedResources\" from gltf materials array\n * @param {Object} tileContent - 3d tile content\n * @returns {Object} {materialDefinitionInfos: Object[], textureDefinitionInfos: Object[]} -\n * 2 arrays in format of i3s sharedResources data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/sharedResource.cmn.md\n */\nfunction getSharedResources(tileContent, nodeId) {\n const gltfMaterials = tileContent.gltf.materials;\n const i3sResources = {};\n\n if (!gltfMaterials || !gltfMaterials.length) {\n return i3sResources;\n }\n\n i3sResources.materialDefinitionInfos = [];\n for (const gltfMaterial of gltfMaterials) {\n const {materialDefinitionInfo, textureDefinitionInfo} = convertGLTFMaterialToI3sSharedResources(\n gltfMaterial,\n nodeId\n );\n i3sResources.materialDefinitionInfos.push(materialDefinitionInfo);\n if (textureDefinitionInfo) {\n i3sResources.textureDefinitionInfos = i3sResources.textureDefinitionInfos || [];\n i3sResources.textureDefinitionInfos.push(textureDefinitionInfo);\n }\n }\n return i3sResources;\n}\n\n/**\n * Convert gltf material into I3S sharedResources data\n * @param {Object} gltfMaterial - gltf material data\n * @returns {Object} - Couple {materialDefinitionInfo, textureDefinitionInfo} extracted from gltf material data\n */\nfunction convertGLTFMaterialToI3sSharedResources(gltfMaterial, nodeId) {\n const texture =\n gltfMaterial.pbrMetallicRoughness.baseColorTexture || gltfMaterial.emissiveTexture;\n let textureDefinitionInfo = null;\n if (texture) {\n textureDefinitionInfo = extractSharedResourcesTextureInfo(texture.texture, nodeId);\n }\n const {baseColorFactor, metallicFactor} = gltfMaterial.pbrMetallicRoughness;\n let colorFactor = baseColorFactor;\n // If alpha channel is 0 try to get emissive factor from gltf material.\n if ((!baseColorFactor || baseColorFactor[3] === 0) && gltfMaterial.emissiveFactor) {\n colorFactor = gltfMaterial.emissiveFactor;\n colorFactor[3] = colorFactor[3] || 1;\n }\n\n return {\n materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor, metallicFactor),\n textureDefinitionInfo\n };\n}\n\n/**\n * Form \"materialDefinition\" which is part of \"sharedResouces\"\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materials\n * See formulas in appendix \"Appendix B: BRDF Implementation\":\n * const dielectricSpecular = rgb(0.04, 0.04, 0.04)\n * const black = rgb(0, 0, 0)\n * cdiff = lerp(baseColor.rgb * (1 - dielectricSpecular.r), black, metallic)\n * F0 = lerp(dieletricSpecular, baseColor.rgb, metallic)\n *\n * Assumption: F0 - specular in i3s (\"specular reflection\" <-> \"reflectance value at normal incidence\")\n * cdiff - diffuse in i3s (\"Diffuse color\" <-> \"'c' diffuse\" (c means color?))\n * @param {number[]} baseColorFactor - RGBA color in 0..1 format\n * @param {number} metallicFactor - \"metallicFactor\" attribute of gltf material object\n * @returns {Object}\n */\nfunction extractSharedResourcesMaterialInfo(baseColorFactor, metallicFactor = 0) {\n const matDielectricColorComponent = 0.04 / 255; // Color from rgb (255) to 0..1 resolution\n // All color resolutions are 0..1\n const black = new Vector4(0, 0, 0, 1);\n const unitVector = new Vector4(1, 1, 1, 1);\n const dielectricSpecular = new Vector4(\n matDielectricColorComponent,\n matDielectricColorComponent,\n matDielectricColorComponent,\n 0\n );\n const baseColorVector = new Vector4(baseColorFactor);\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\n // Formulas for Cdiff & F0\n const firstOperand = unitVector.subtract(dielectricSpecular).multiply(baseColorVector);\n const diffuse = firstOperand.lerp(firstOperand, black, metallicFactor);\n dielectricSpecular[3] = 1;\n const specular = dielectricSpecular.lerp(dielectricSpecular, baseColorVector, metallicFactor);\n return {\n diffuse: diffuse.toArray(),\n specular: specular.toArray()\n };\n}\n\n/**\n * Form \"textureDefinition\" which is part of \"sharedResouces\"\n * @param {Object} texture - texture image info\n * @returns {Object}\n */\nfunction extractSharedResourcesTextureInfo(texture, nodeId) {\n return {\n encoding: [texture.source.mimeType],\n images: [\n {\n // 'i3s' has just size which is width of the image. Images are supposed to be square.\n // https://github.com/Esri/i3s-spec/blob/master/docs/1.7/image.cmn.md\n id: generateImageId(texture, nodeId),\n size: texture.source.image.width,\n length: [texture.source.image.data.length]\n }\n ]\n };\n}\n/*\n * Formula for counting imageId:\n * https://github.com/Esri/i3s-spec/blob/0a6366a9249b831db8436c322f8d27521e86cf07/format/Indexed%203d%20Scene%20Layer%20Format%20Specification.md#generating-image-ids\n * @param {Object} texture - texture image info\n * @returns {string}\n */\nfunction generateImageId(texture, nodeId) {\n const {width, height} = texture.source.image;\n const levelCountOfTexture = 1;\n const indexOfLevel = 0;\n const indexOfTextureInStore = nodeId + 1;\n\n const zerosCount = 32 - indexOfTextureInStore.toString(2).length;\n const rightHalf = '0'.repeat(zerosCount).concat(indexOfTextureInStore.toString(2));\n\n const shiftedLevelCountOfTexture = levelCountOfTexture << 28;\n const shiftedIndexOfLevel = indexOfLevel << 24;\n const shiftedWidth = (width - 1) << 12;\n const shiftedHeight = (height - 1) << 0;\n\n const leftHalf = shiftedLevelCountOfTexture + shiftedIndexOfLevel + shiftedWidth + shiftedHeight;\n const imageId = BigInt(`0b${leftHalf.toString(2)}${rightHalf}`);\n return imageId.toString();\n}\n\n/**\n * Make all feature ids unique through all nodes in layout.\n * @param {Array} featureIds\n * @param {Array} featureIndices\n * @param {Array} featuresHashArray\n * @param {Object} batchTable\n * @returns {void}\n */\nfunction makeFeatureIdsUnique(featureIds, featureIndices, featuresHashArray, batchTable) {\n const replaceMap = getFeaturesReplaceMap(featureIds, batchTable, featuresHashArray);\n replaceIndicesByUnique(featureIndices, replaceMap);\n replaceIndicesByUnique(featureIds, replaceMap);\n}\n\n/**\n * Generate replace map to make featureIds unique.\n * @param {Array} featureIds\n * @param {Object} batchTable\n * @param {Array} featuresHashArray\n * @returns {Object}\n */\nfunction getFeaturesReplaceMap(featureIds, batchTable, featuresHashArray) {\n const featureMap = {};\n\n for (let index = 0; index < featureIds.length; index++) {\n const oldFeatureId = featureIds[index];\n const uniqueFeatureId = getOrCreateUniqueFeatureId(index, batchTable, featuresHashArray);\n featureMap[oldFeatureId.toString()] = uniqueFeatureId;\n }\n\n return featureMap;\n}\n\n/**\n * Generates string for unique batch id creation.\n * @param {Object} batchTable\n * @param {Number} index\n * @returns {String}\n */\nfunction generateStringFromBatchTableByIndex(batchTable, index) {\n let str = '';\n for (const key in batchTable) {\n str += batchTable[key][index];\n }\n return str;\n}\n\n/**\n * Return already exited featureId or creates and returns new to support unique feature ids throw nodes.\n * @param {Number} index\n * @param {Object} batchTable\n * @param {Array} featuresHashArray\n * @returns {Number}\n */\nfunction getOrCreateUniqueFeatureId(index, batchTable, featuresHashArray) {\n const batchTableStr = generateStringFromBatchTableByIndex(batchTable, index);\n const hash = md5(batchTableStr);\n\n if (featuresHashArray.includes(hash)) {\n return featuresHashArray.indexOf(hash);\n }\n return featuresHashArray.push(hash) - 1;\n}\n\n/**\n * Do replacement of indices for making them unique through all nodes.\n * @param {Array} indicesArray\n * @param {Object} featureMap\n * @returns {void}\n */\nfunction replaceIndicesByUnique(indicesArray, featureMap) {\n for (let index = 0; index < indicesArray.length; index++) {\n indicesArray[index] = featureMap[indicesArray[index]];\n }\n}\n\n/**\n * Convert batch table data to attribute buffers.\n * @param {Object} batchTable - table with metadata for particular feature.\n * @param {Array} featureIds\n * @param {Array} attributeStorageInfo\n * @returns {Array} - Array of file buffers.\n */\nfunction convertBatchTableToAttributeBuffers(batchTable, featureIds, attributeStorageInfo) {\n const attributeBuffers = [];\n\n if (batchTable) {\n const batchTableWithFeatureIds = {\n OBJECTID: featureIds,\n ...batchTable\n };\n\n for (const key in batchTableWithFeatureIds) {\n const type = getAttributeType(key, attributeStorageInfo);\n\n let attributeBuffer = null;\n\n switch (type) {\n case OBJECT_ID_TYPE:\n case SHORT_INT_TYPE:\n attributeBuffer = generateShortIntegerAttributeBuffer(batchTableWithFeatureIds[key]);\n break;\n case DOUBLE_TYPE:\n attributeBuffer = generateDoubleAttributeBuffer(batchTableWithFeatureIds[key]);\n break;\n case STRING_TYPE:\n attributeBuffer = generateStringAttributeBuffer(batchTableWithFeatureIds[key]);\n break;\n default:\n attributeBuffer = generateStringAttributeBuffer(batchTableWithFeatureIds[key]);\n }\n\n attributeBuffers.push(attributeBuffer);\n }\n }\n\n return attributeBuffers;\n}\n/**\n * Return attribute type.\n * @param {String} key\n * @param {Array} attributeStorageInfo\n * @returns {String} attribute type.\n */\nfunction getAttributeType(key, attributeStorageInfo) {\n const attribute = attributeStorageInfo.find((attr) => attr.name === key);\n return attribute.attributeValues.valueType;\n}\n\n/**\n * Convert short integer to attribute arrayBuffer.\n * @param {Array} featureIds\n * @returns {ArrayBuffer} - Buffer with objectId data.\n */\nfunction generateShortIntegerAttributeBuffer(featureIds) {\n const count = new Uint32Array([featureIds.length]);\n const valuesArray = new Uint32Array(featureIds);\n return concatenateArrayBuffers(count.buffer, valuesArray.buffer);\n}\n\n/**\n * Convert double to attribute arrayBuffer.\n * @param {Array} featureIds\n * @returns {ArrayBuffer} - Buffer with objectId data.\n */\nfunction generateDoubleAttributeBuffer(featureIds) {\n const count = new Uint32Array([featureIds.length]);\n const padding = new Uint8Array(4);\n const valuesArray = new Float64Array(featureIds);\n\n return concatenateArrayBuffers(count.buffer, padding.buffer, valuesArray.buffer);\n}\n\n/**\n * Convert batch table attributes to array buffer with batch table data.\n * @param {Array} batchAttributes\n * @returns {ArrayBuffer} - Buffer with batch table data.\n */\nfunction generateStringAttributeBuffer(batchAttributes) {\n const stringCountArray = new Uint32Array([batchAttributes.length]);\n let totalNumberOfBytes = 0;\n const stringSizesArray = new Uint32Array(batchAttributes.length);\n const stringBufferArray = [];\n\n for (let index = 0; index < batchAttributes.length; index++) {\n const currentString = `${String(batchAttributes[index])}\\0`;\n const currentStringBuffer = Buffer.from(currentString);\n const currentStringSize = currentStringBuffer.length;\n totalNumberOfBytes += currentStringSize;\n stringSizesArray[index] = currentStringSize;\n stringBufferArray.push(currentStringBuffer);\n }\n\n const totalBytes = new Uint32Array([totalNumberOfBytes]);\n\n return concatenateArrayBuffers(\n stringCountArray.buffer,\n totalBytes.buffer,\n stringSizesArray.buffer,\n ...stringBufferArray\n );\n}\n\n/**\n * Convert featureIds to BigUint64Array.\n * @param {Array} featureIds\n * @returns {BigUint64Array} - Array of feature ids in BigUint64 format.\n */\nfunction generateBigUint64Array(featureIds) {\n const typedFeatureIds = new BigUint64Array(featureIds.length);\n for (let index = 0; index < featureIds.length; index++) {\n typedFeatureIds[index] = BigInt(featureIds[index]);\n }\n return typedFeatureIds;\n}\n\n/**\n * Generates draco compressed geometry\n * @param {Number} vertexCount\n * @param {Object} convertedAttributes\n * @returns {Promise<object>} - COmpressed geometry.\n */\nasync function generateCompressedGeometry(vertexCount, convertedAttributes, attributes) {\n const {positions, normals, texCoords, colors, featureIds, faceRange} = attributes;\n const indices = new Uint32Array(vertexCount);\n\n for (let index = 0; index < indices.length; index++) {\n indices.set([index], index);\n }\n\n const featureIndices = new Uint32Array(\n convertedAttributes.featureIndices.length ? convertedAttributes.featureIndices : vertexCount\n );\n\n const featureIndex = generateFeatureIndexAttribute(featureIndices, faceRange);\n\n const compressedAttributes = {\n positions,\n normals,\n colors,\n 'feature-index': featureIndex\n };\n\n if (texCoords.length) {\n compressedAttributes.texCoords = texCoords;\n }\n\n const attributesMetadata = {\n 'feature-index': {\n 'i3s-attribute-type': 'feature-index',\n 'i3s-feature-ids': new Int32Array(featureIds)\n }\n };\n\n return new Uint8Array(\n await encode({attributes: compressedAttributes, indices}, DracoWriter, {\n draco: {\n method: 'MESH_SEQUENTIAL_ENCODING',\n attributesMetadata\n }\n })\n );\n}\n\n/**\n * Generates ordered feature indices based on face range\n * @param {Uint32Array} featureIndex\n * @param {Uint32Array} faceRange\n * @returns {Uint32Array}\n */\nfunction generateFeatureIndexAttribute(featureIndex, faceRange) {\n const orderedFeatureIndices = new Uint32Array(featureIndex.length);\n let fillIndex = 0;\n let startIndex = 0;\n\n for (let index = 1; index < faceRange.length; index += 2) {\n const endIndex = (faceRange[index] + 1) * VALUES_PER_VERTEX;\n\n orderedFeatureIndices.fill(fillIndex, startIndex, endIndex);\n\n fillIndex++;\n startIndex = endIndex + 1;\n }\n\n return orderedFeatureIndices;\n}\n"],"file":"geometry-converter.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/helpers/node-debug.js"],"names":["OrientedBoundingBox","BoundingSphere","CubeGeometry","Vector3","Ellipsoid","validateNodeBoundingVolumes","node","parentNode","obb","mbs","tileWarnings","validateObb","validateMbs","parentObb","createBoundingBoxFromTileObb","tileVertices","getTileObbVertices","isTileObbInsideParentObb","isAllVerticesInsideBoundingVolume","title","id","push","tileMbs","createBoundingSphereFromTileMbs","parentMbs","distanceBetweenCenters","center","distanceTo","radius","halfSize","quaternion","fromCenterHalfSizeQuaternion","geometry","attributes","positions","Float32Array","POSITION","value","obbCenterCartesian","WGS84","cartographicToCartesian","vertices","i","length","positionsVector","rotatedPositions","transformByQuaternion","add","concat","boundingVolume","isVerticesInsideObb","index","point","cartographicPoint","cartesianToCartographic","distance"],"mappings":"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","sourcesContent":["import {OrientedBoundingBox, BoundingSphere} from '@math.gl/culling';\nimport {CubeGeometry} from '@luma.gl/engine';\nimport {Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\n\n// TODO Unite Tile validation logic in i3s-17-and-debug with this code.\nexport function validateNodeBoundingVolumes(node) {\n if (!node.parentNode.obb || !node.parentNode.mbs) {\n return null;\n }\n const tileWarnings = [];\n\n validateObb(tileWarnings, node);\n validateMbs(tileWarnings, node);\n\n return tileWarnings;\n}\n\nfunction validateObb(tileWarnings, node) {\n const parentObb = createBoundingBoxFromTileObb(node.parentNode.obb);\n const tileVertices = getTileObbVertices(node);\n const isTileObbInsideParentObb = isAllVerticesInsideBoundingVolume(parentObb, tileVertices);\n\n if (isTileObbInsideParentObb) {\n return;\n }\n\n const title = `OBB of Tile (${node.id}) doesn't fit into Parent (${node.parentNode.id}) tile OBB`;\n tileWarnings.push(title);\n}\n\nfunction validateMbs(tileWarnings, node) {\n const tileMbs = createBoundingSphereFromTileMbs(node.mbs);\n const parentMbs = createBoundingSphereFromTileMbs(node.parentNode.mbs);\n const distanceBetweenCenters = tileMbs.center.distanceTo(parentMbs.center);\n\n if (distanceBetweenCenters + tileMbs.radius > parentMbs.radius) {\n const title = `MBS of Tile (${node.id}) doesn't fit into Parent (${node.parentNode.id}) tile MBS`;\n tileWarnings.push(title);\n }\n}\n\nfunction createBoundingSphereFromTileMbs(mbs) {\n return new BoundingSphere([mbs[0], mbs[1], mbs[2]], mbs[3]);\n}\n\nfunction createBoundingBoxFromTileObb(obb) {\n const {center, halfSize, quaternion} = obb;\n return new OrientedBoundingBox().fromCenterHalfSizeQuaternion(center, halfSize, quaternion);\n}\n\n// TODO check if Obb generates properly\nfunction getTileObbVertices(node) {\n const geometry = new CubeGeometry();\n const halfSize = node.obb.halfSize;\n const {attributes} = geometry;\n const positions = new Float32Array(attributes.POSITION.value);\n const obbCenterCartesian = Ellipsoid.WGS84.cartographicToCartesian(node.obb.center);\n\n let vertices = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n const positionsVector = new Vector3(\n (positions[i] *= halfSize[0]),\n (positions[i + 1] *= halfSize[1]),\n (positions[i + 2] *= halfSize[2])\n );\n const rotatedPositions = positionsVector\n .transformByQuaternion(node.obb.quaternion)\n .add(obbCenterCartesian);\n vertices = vertices.concat(rotatedPositions);\n }\n\n return vertices;\n}\n\nfunction isAllVerticesInsideBoundingVolume(boundingVolume, positions) {\n let isVerticesInsideObb = true;\n\n for (let index = 0; index < positions.length / 3; index += 3) {\n const point = [positions[index], positions[index + 1], positions[index + 2]];\n const cartographicPoint = Ellipsoid.WGS84.cartesianToCartographic(point);\n\n const distance = boundingVolume.distanceTo(cartographicPoint);\n\n if (distance > 0) {\n isVerticesInsideObb = false;\n break;\n }\n }\n\n return isVerticesInsideObb;\n}\n"],"file":"node-debug.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/helpers/node-pages.js"],"names":["join","transform","METADATA","metadataTemplate","NodePages","constructor","writeFileFunc","nodesPerPage","nodesCounter","nodePages","nodes","writeFile","useWriteFunction","func","getNodeById","id","pageIndex","Math","floor","nodeIndex","updateMaterialByNodeId","materialId","node","mesh","material","definition","resource","index","updateVertexCountByNodeId","vertexCount","geometry","updateNodeAttributeByNodeId","attribute","updateFeatureCountByNodeId","featureCount","updateTexelCountHintByNodeId","texelCountHint","addChildRelation","parentId","childId","parentNode","children","push","updateResourceInMesh","currentNodePage","length","save","layers0Path","fileMap","slpk","promises","nodePage","entries","nodePageStr","JSON","stringify","slpkPath","toString","metadata","nodeCount","compress","nodePagePath","Promise","all"],"mappings":"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","sourcesContent":["import {join} from 'path';\nimport transform from 'json-map-transform';\nimport {METADATA as metadataTemplate} from '../json-templates/metadata';\n\n/**\n * class NodePages - wrapper of nodePages array\n *\n * @example\n * import {writeFile} from './helpers/write-file';\n *\n * // create an instance of the class\n * const nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n * ...\n * // push root node\n * const parentId = nodePages.push({\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: []\n });\n * ...\n * // push node with parent relation\n * const nodeInPage = {\n lodThreshold: HARDCODED_MAX_SCREEN_THRESHOLD_SQ,\n obb: coordinates.obb,\n children: [],\n mesh: {\n geometry: {\n definition: 0\n }\n }\n };\n * const nodeId = this.nodePages.push(nodeInPage, parentId);\n * ...\n * // save all the nodePages in the end of pushing all the nodes\n * await this.nodePages.save(layers0path);\n */\nexport default class NodePages {\n /**\n * @constructs\n * Create a nodePages instance.\n * @param writeFileFunc - function to save one nodePage into a file\n * @param nodesPerPage - length limit for one nodePage. An additional nodePage is created when this limit is met\n */\n constructor(writeFileFunc, nodesPerPage) {\n this.nodesPerPage = nodesPerPage;\n this.nodesCounter = 0;\n this.nodePages = [{}];\n this.nodePages[0].nodes = [];\n this.writeFile = writeFileFunc;\n }\n\n useWriteFunction(func) {\n this.writeFile = func;\n }\n\n /**\n * Get the node by its end-to-end index\n * @param {number} id - end-to-end index of the node\n * @return {object} the node object\n */\n getNodeById(id) {\n const pageIndex = Math.floor(id / this.nodesPerPage);\n const nodeIndex = id % this.nodesPerPage;\n return this.nodePages[pageIndex].nodes[nodeIndex];\n }\n\n /**\n * Update material in node.mesh object by node id\n * @param id - end-to-end index of the node\n * @param materialId - id from scene layer materialDefinitions\n */\n updateMaterialByNodeId(id, materialId) {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.material = {\n definition: materialId,\n resource: node.index\n };\n }\n\n /**\n * Update vertexCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param vertexCount - vertex count for particular node\n */\n updateVertexCountByNodeId(id, vertexCount) {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.vertexCount = vertexCount;\n }\n\n /**\n * Update resource in node.mesh.attribute object by node id\n * @param id - end-to-end index of the node\n */\n updateNodeAttributeByNodeId(id) {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.attribute.resource = node.index;\n }\n\n /**\n * Update featureCount in node.mesh.geometry object by node id\n * @param id - end-to-end index of the node\n * @param featureCount - features count of the node\n */\n updateFeatureCountByNodeId(id, featureCount) {\n const node = this.getNodeById(id);\n if (!node.mesh) {\n return;\n }\n node.mesh.geometry.featureCount = featureCount;\n }\n\n updateTexelCountHintByNodeId(id, texelCountHint) {\n const node = this.getNodeById(id);\n if (!node.mesh || !node.mesh.material) {\n return;\n }\n node.mesh.material.texelCountHint = texelCountHint;\n }\n\n /**\n * Add a child id into the parent node.children array\n * @param {number | null} parentId - end-to-end parent node index\n * @param {number} childId - end-to-end child node index\n * @return {void}\n */\n addChildRelation(parentId, childId) {\n if (parentId === null) {\n return;\n }\n const parentNode = this.getNodeById(parentId);\n parentNode.children.push(childId);\n }\n\n /**\n * Update resource index in node.mesh object\n * @param {object} node - node object\n * @return {void}\n */\n updateResourceInMesh(node) {\n if (node.mesh) {\n node.mesh.geometry.resource = node.index;\n }\n }\n\n /**\n * Put new node in nodePages array\n * @param {object} node - node object\n * @param {number | null} parentId - index of parent node\n * @return {number}\n */\n push(node, parentId = null) {\n let currentNodePage = this.nodePages[this.nodePages.length - 1];\n if (currentNodePage.nodes.length === this.nodesPerPage) {\n currentNodePage = {nodes: []};\n this.nodePages.push(currentNodePage);\n }\n node.index = this.nodesCounter++;\n currentNodePage.nodes.push(node);\n this.addChildRelation(parentId, node.index);\n this.updateResourceInMesh(node);\n return node.index;\n }\n\n /**\n * Save all the node pages\n * Run this method when all nodes is pushed in nodePages\n * @param {string} layers0Path - path of layer\n * @param {Object} fileMap\n * @param {boolean} slpk\n * @return {promise}\n */\n async save(layers0Path, fileMap, slpk = false) {\n const promises = [];\n if (slpk) {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const slpkPath = join(layers0Path, 'nodepages');\n promises.push(this.writeFile(slpkPath, nodePageStr, `${index.toString()}.json`));\n fileMap[`nodePages/${index.toString()}.json.gz`] = `${slpkPath}.json.gz`;\n }\n const metadata = transform({nodeCount: this.nodesCounter}, metadataTemplate);\n const compress = false;\n fileMap['metadata.json'] = await this.writeFile(\n layers0Path,\n JSON.stringify(metadata),\n 'metadata.json',\n compress\n );\n } else {\n for (const [index, nodePage] of this.nodePages.entries()) {\n const nodePageStr = JSON.stringify(nodePage);\n const nodePagePath = join(layers0Path, 'nodepages', index.toString());\n promises.push(this.writeFile(nodePagePath, nodePageStr));\n }\n }\n\n await Promise.all(promises);\n }\n}\n"],"file":"node-pages.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/i3s-converter/i3s-converter.ts"],"names":["load","encode","Tileset3D","CesiumIonLoader","join","v4","uuidv4","process","transform","md5","NodePages","writeFile","removeDir","writeFileForSlpk","compressWithChildProcess","calculateFilesSize","timeConverter","convertB3dmToI3sGeometry","createBoundingVolumes","convertCommonToI3SExtentCoordinate","createSceneServerPath","convertGeometricErrorToScreenThreshold","PGMLoader","LAYERS","layersTemplate","NODE","nodeTemplate","SHARED_RESOURCES_TEMPLATE","validateNodeBoundingVolumes","KTX2BasisUniversalTextureWriter","ION_DEFAULT_TOKEN","env","IonToken","HARDCODED_NODES_PER_PAGE","_3D_TILES","_3D_OBJECT_LAYER_TYPE","STRING_TYPE","SHORT_INT_TYPE","DOUBLE_TYPE","OBJECT_ID_TYPE","REFRESH_TOKEN_TIMEOUT","I3SConverter","constructor","nodePages","fileMap","options","layers0Path","materialMap","Map","materialDefinitions","vertexCounter","layers0","featuresHashArray","refinementCounter","tilesCount","tilesWithAddRefineCount","validate","boundingVolumeWarnings","convert","conversionStartTime","hrtime","tilesetName","slpk","egmFilePath","inputUrl","outputPath","draco","sevenZipExe","maxDepth","token","console","log","geoidHeightModel","useWriteFunction","preloadOptions","_fetchPreloadOptions","tilesetOptions","loadOptions","headers","fetch","Object","assign","sourceTilesetJson","sourceTileset","_createAndSaveTileset","_finishConversion","tilesetPath","e","_formLayers0","sourceRootTile","root","boundingVolumes","parentId","push","lodThreshold","obb","children","isCreateSlpk","root0","_formRootNodeIndexDocument","_convertNodesTree","_writeLayers0","_writeNodeIndexDocument","save","_createSlpk","extent","layers0data","version","toUpperCase","id","name","href","store","nodesPerPage","compressGeometry","root0data","level","lodSelection","metricType","maxError","_loadTile","content","type","child","_createNode","childPath","path","JSON","stringify","_addChildrenWithNeighborsAndWriteFile","parentNode","sourceTiles","unloadContent","nodePath","rootPath","slpkTilesetPath","slpkFileName","data","childNodes","_addChildren","_addNeighborsAndWriteFile","sourceTile","node","length","neighbor","neighbors","warn","parentTile","_checkAddRefinementTypeForTile","_updateTilesetOptions","maxScreenThresholdSQ","find","val","batchTable","batchTableJson","_convertAttributeStorageInfo","resourcesData","_convertResources","nodes","emptyResources","geometry","compressedGeometry","texture","sharedResources","meshMaterial","vertexCount","attributes","featureCount","resources","nodeInPage","_createNodeInNodePages","_createNodeIndexDocument","mesh","_writeResources","firstNode","sourceTileContent","attributeStorageInfo","_convertBatchTableInfoToNodeAttributes","Number","nodesCounter","definition","attribute","nodeId","updateMaterialByNodeId","_findOrCreateMaterial","texelCountHint","image","height","width","updateTexelCountHintByNodeId","updateVertexCountByNodeId","updateNodeAttributeByNodeId","updateFeatureCountByNodeId","index","nodeData","toString","mbs","geometryData","sharedResource","textureData","attributeData","folderName","key","geometryBuffer","slpkChildPath","_writeGeometries","_writeShared","_writeTexture","_writeAttributes","slpkGeometryPath","geometryPath","slpkCompressedGeometryPath","compressedGeometryPath","sharedData","sharedDataStr","slpkSharedPath","sharedPath","format","_getFormatByMimeType","mimeType","textureSetDefinitions","formats","bufferView","ktx2TextureData","slpkTexturePath","compress","texturePath","ktx2TexturePath","fileBuffer","Uint8Array","slpkAttributesPath","attributesPath","material","hash","has","get","newMaterialId","set","_createdStorageAttribute","attributeIndex","attributeType","storageAttribute","ordering","header","property","valueType","attributeValues","valuesPerElement","_setupIdAttribute","_setupStringAttribute","_setupDoubleAttribute","getAttributeType","isInteger","unshift","encoding","attributeByteCounts","_createFieldAttribute","fieldAttributeType","alias","batchTableWithObjectId","OBJECTID","firstAttribute","_getFieldAttributeType","fieldAttribute","popupInfo","_createPopupInfo","fields","layerType","title","mediaInfos","fieldInfos","popupElements","expressionInfos","fieldName","visible","isEditable","label","params","addRefinementPercentage","filesSize","diff","conversionTime","accessToken","preload","refreshTokenTime","tile","ADD_TILE_REFINEMENT","refine"],"mappings":"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","sourcesContent":["import type {Tileset3DProps} from '@loaders.gl/tiles';\nimport type {GLTFMaterial} from '@loaders.gl/gltf';\nimport type {BatchTableJson, B3DMContent} from '@loaders.gl/3d-tiles';\n\nimport type {\n AttributeStorageInfo,\n SceneLayer3D,\n BoundingVolumes,\n Node3DIndexDocument,\n NodeReference,\n I3SGeometry,\n MaxScreenThresholdSQ,\n NodeInPage,\n LodSelection,\n SharedResources,\n TextureImage,\n Attribute,\n ESRIField,\n Field,\n PopupInfo\n} from '@loaders.gl/i3s';\nimport {load, encode} from '@loaders.gl/core';\nimport {Tileset3D} from '@loaders.gl/tiles';\nimport {CesiumIonLoader} from '@loaders.gl/3d-tiles';\nimport {join} from 'path';\nimport {v4 as uuidv4} from 'uuid';\nimport process from 'process';\nimport transform from 'json-map-transform';\nimport md5 from 'md5';\n\nimport NodePages from './helpers/node-pages';\nimport {writeFile, removeDir, writeFileForSlpk} from '../lib/utils/file-utils';\nimport {\n compressWithChildProcess\n // generateHash128FromZip,\n // addFileToZip\n} from '../lib/utils/compress-util';\nimport {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';\nimport convertB3dmToI3sGeometry from './helpers/geometry-converter';\nimport {\n createBoundingVolumes,\n convertCommonToI3SExtentCoordinate\n} from './helpers/coordinate-converter';\nimport {createSceneServerPath} from './helpers/create-scene-server-path';\nimport {convertGeometricErrorToScreenThreshold} from '../lib/utils/lod-conversion-utils';\nimport {PGMLoader} from '../pgm-loader';\n\nimport {LAYERS as layersTemplate} from './json-templates/layers';\nimport {NODE as nodeTemplate} from './json-templates/node';\nimport {SHARED_RESOURCES_TEMPLATE} from './json-templates/shared-resources';\nimport {validateNodeBoundingVolumes} from './helpers/node-debug';\nimport {GeoidHeightModel} from '../lib/geoid-height-model';\nimport TileHeader from '@loaders.gl/tiles/src/tileset/tile-3d';\nimport {KTX2BasisUniversalTextureWriter} from '@loaders.gl/textures';\n\nconst ION_DEFAULT_TOKEN =\n process.env.IonToken || // eslint-disable-line\n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlYWMxMzcyYy0zZjJkLTQwODctODNlNi01MDRkZmMzMjIxOWIiLCJpZCI6OTYyMCwic2NvcGVzIjpbImFzbCIsImFzciIsImdjIl0sImlhdCI6MTU2Mjg2NjI3M30.1FNiClUyk00YH_nWfSGpiQAjR5V2OvREDq1PJ5QMjWQ'; // eslint-disable-line\nconst HARDCODED_NODES_PER_PAGE = 64;\nconst _3D_TILES = '3DTILES';\nconst _3D_OBJECT_LAYER_TYPE = '3DObject';\nconst STRING_TYPE = 'string';\nconst SHORT_INT_TYPE = 'Int32';\nconst DOUBLE_TYPE = 'double';\nconst OBJECT_ID_TYPE = 'OBJECTID';\nconst REFRESH_TOKEN_TIMEOUT = 1800; // 30 minutes in seconds\n// const FS_FILE_TOO_LARGE = 'ERR_FS_FILE_TOO_LARGE';\n\n/**\n * Converter from 3d-tiles tileset to i3s layer\n */\nexport default class I3SConverter {\n nodePages: NodePages;\n fileMap: {[key: string]: string};\n options: any;\n layers0Path: string;\n materialMap: Map<any, any>;\n materialDefinitions: GLTFMaterial[];\n vertexCounter: number;\n layers0: SceneLayer3D;\n featuresHashArray: string[];\n refinementCounter: {\n tilesCount: number;\n tilesWithAddRefineCount: number;\n };\n validate: boolean;\n boundingVolumeWarnings?: string[];\n conversionStartTime: [number, number];\n refreshTokenTime: [number, number];\n sourceTileset: Tileset3D | null;\n geoidHeightModel: GeoidHeightModel | null;\n\n constructor() {\n this.nodePages = new NodePages(writeFile, HARDCODED_NODES_PER_PAGE);\n this.fileMap = {};\n this.options = {};\n this.layers0Path = '';\n this.materialMap = new Map();\n this.materialDefinitions = [];\n this.vertexCounter = 0;\n this.layers0 = null;\n this.featuresHashArray = [];\n this.refinementCounter = {\n tilesCount: 0,\n tilesWithAddRefineCount: 0\n };\n this.validate = false;\n this.boundingVolumeWarnings = null;\n }\n\n /**\n * Convert a 3d tileset\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.maxDepth The max tree depth of conversion\n * @param options.slpk Generate slpk (Scene Layer Packages) output file\n * @param options.sevenZipExe Location of 7z.exe archiver to create slpk on Windows\n * @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format\n * @param options.token Token for Cesium ION tilesets authentication\n * @param options.draco Generate I3S 1.7 draco compressed geometries\n * @param options.validate -enable validation\n */\n async convert(options: {\n inputUrl: string;\n outputPath: string;\n tilesetName: string;\n sevenZipExe: string;\n egmFilePath?: string;\n maxDepth?: number;\n slpk?: boolean;\n token?: string;\n draco?: boolean;\n validate?: boolean;\n }): Promise<any> {\n this.conversionStartTime = process.hrtime();\n const {\n tilesetName,\n slpk,\n egmFilePath,\n inputUrl,\n validate,\n outputPath,\n draco,\n sevenZipExe,\n maxDepth,\n token\n } = options;\n this.options = {maxDepth, slpk, sevenZipExe, egmFilePath, draco, token, inputUrl};\n this.validate = validate;\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 if (slpk) {\n this.nodePages.useWriteFunction(writeFileForSlpk);\n }\n\n const preloadOptions = await this._fetchPreloadOptions();\n const tilesetOptions: Tileset3DProps = {loadOptions: {}};\n if (preloadOptions.headers) {\n tilesetOptions.loadOptions.fetch = {headers: preloadOptions.headers};\n }\n Object.assign(tilesetOptions, preloadOptions);\n const sourceTilesetJson = await load(inputUrl, CesiumIonLoader, tilesetOptions.loadOptions);\n // console.log(tilesetJson); // eslint-disable-line\n this.sourceTileset = new Tileset3D(sourceTilesetJson, tilesetOptions);\n\n await this._createAndSaveTileset(outputPath, tilesetName);\n await this._finishConversion({slpk, outputPath, tilesetName});\n return sourceTilesetJson;\n }\n\n /**\n * Convert and save the layer and embedded tiles\n * @param outputPath - path to save output data\n * @param tilesetName - new tileset path\n */\n private async _createAndSaveTileset(outputPath: string, tilesetName: string): Promise<void> {\n const tilesetPath = join(`${outputPath}`, `${tilesetName}`);\n // Removing the tilesetPath needed to exclude erroneous files after conversion\n try {\n await removeDir(tilesetPath);\n } catch (e) {\n // do nothing\n }\n\n this.layers0Path = join(tilesetPath, 'SceneServer', 'layers', '0');\n\n this._formLayers0(tilesetName);\n\n this.materialDefinitions = [];\n this.materialMap = new Map();\n\n const sourceRootTile = this.sourceTileset.root;\n const boundingVolumes = createBoundingVolumes(sourceRootTile, this.geoidHeightModel);\n const parentId = this.nodePages.push({\n lodThreshold: 0,\n obb: boundingVolumes.obb,\n children: []\n });\n\n const isCreateSlpk = this.options.slpk;\n const root0 = this._formRootNodeIndexDocument(boundingVolumes);\n\n await this._convertNodesTree(root0, sourceRootTile, parentId, boundingVolumes);\n\n this.layers0.materialDefinitions = this.materialDefinitions;\n await this._writeLayers0();\n createSceneServerPath(tilesetName, this.layers0, tilesetPath);\n await this._writeNodeIndexDocument(root0, 'root', join(this.layers0Path, 'nodes', 'root'));\n await this.nodePages.save(this.layers0Path, this.fileMap, isCreateSlpk);\n await this._createSlpk(tilesetPath);\n }\n\n /**\n * Form object of 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md\n * @param tilesetName - Name of layer\n */\n private _formLayers0(tilesetName: string): void {\n const extent = convertCommonToI3SExtentCoordinate(this.sourceTileset);\n const layers0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 0,\n name: tilesetName,\n href: './layers/0',\n store: {\n id: `{${uuidv4().toUpperCase()}}`,\n extent\n },\n nodePages: {\n nodesPerPage: HARDCODED_NODES_PER_PAGE\n },\n compressGeometry: this.options.draco\n };\n\n this.layers0 = transform(layers0data, layersTemplate);\n }\n\n /**\n * Convert and save the layer and embedded tiles\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n * @return 3DNodeIndexDocument data https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n */\n private _formRootNodeIndexDocument(boundingVolumes: BoundingVolumes): Node3DIndexDocument {\n const root0data = {\n version: `{${uuidv4().toUpperCase()}}`,\n id: 'root',\n level: 0,\n lodSelection: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 0\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 0\n }\n ],\n ...boundingVolumes,\n children: []\n };\n return transform(root0data, nodeTemplate);\n }\n\n /**\n * Form object of 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md\n * @param root0 - 3DNodeIndexDocument of root node https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md\n * @param sourceRootTile - Source (3DTile) tile data\n * @param parentId - node id in node pages\n * @param boundingVolumes - mbs and obb data about node's bounding volume\n */\n private async _convertNodesTree(\n root0: Node3DIndexDocument,\n sourceRootTile: TileHeader,\n parentId: number,\n boundingVolumes: BoundingVolumes\n ): Promise<void> {\n await this.sourceTileset._loadTile(sourceRootTile);\n if (sourceRootTile.content && sourceRootTile.content.type === 'b3dm') {\n root0.children.push({\n id: '1',\n href: './1',\n ...boundingVolumes\n });\n const [child] = await this._createNode(root0, sourceRootTile, parentId, 0);\n const childPath = join(this.layers0Path, 'nodes', child.path);\n\n if (this.options.slpk) {\n this.fileMap['nodes/1/3dNodeIndexDocument.json.gz'] = await writeFileForSlpk(\n childPath,\n JSON.stringify(child),\n '3dNodeIndexDocument.json'\n );\n } else {\n await writeFile(childPath, JSON.stringify(child));\n }\n } else {\n await this._addChildrenWithNeighborsAndWriteFile({\n parentNode: root0,\n sourceTiles: sourceRootTile.children,\n parentId,\n level: 1\n });\n }\n await sourceRootTile.unloadContent();\n }\n\n /**\n * Write 3DSceneLayer https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DSceneLayer.cmn.md in file\n */\n private async _writeLayers0(): Promise<void> {\n if (this.options.slpk) {\n this.fileMap['3dSceneLayer.json.gz'] = await writeFileForSlpk(\n this.layers0Path,\n JSON.stringify(this.layers0),\n '3dSceneLayer.json'\n );\n } else {\n await writeFile(this.layers0Path, JSON.stringify(this.layers0));\n }\n }\n\n /**\n * Write 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md in file\n */\n private async _writeNodeIndexDocument(\n root0: Node3DIndexDocument,\n nodePath: string,\n rootPath: string\n ): Promise<void> {\n if (this.options.slpk) {\n this.fileMap[`nodes/${nodePath}/3dNodeIndexDocument.json.gz`] = await writeFileForSlpk(\n rootPath,\n JSON.stringify(root0),\n '3dNodeIndexDocument.json'\n );\n } else {\n await writeFile(rootPath, JSON.stringify(root0));\n }\n }\n\n /**\n * Pack files into *.slpk archive\n * @param tilesetPath - Path to save file\n */\n private async _createSlpk(tilesetPath: string): Promise<void> {\n if (this.options.slpk) {\n const slpkTilesetPath = join(tilesetPath, 'SceneServer', 'layers', '0');\n const slpkFileName = `${tilesetPath}.slpk`;\n await compressWithChildProcess(\n slpkTilesetPath,\n slpkFileName,\n 0,\n '.',\n this.options.sevenZipExe\n );\n\n // TODO: `addFileToZip` corrupts archive so it can't be validated with windows i3s_converter.exe\n // const fileHash128Path = `${tilesetPath}/@specialIndexFileHASH128@`;\n // try {\n // await generateHash128FromZip(slpkFileName, fileHash128Path);\n // await addFileToZip(\n // tilesetPath,\n // '@specialIndexFileHASH128@',\n // slpkFileName,\n // this.options.sevenZipExe\n // );\n // } catch (error) {\n // if (error.code === FS_FILE_TOO_LARGE) {\n // console.warn(`${slpkFileName} file is too big to generate a hash`); // eslint-disable-line\n // } else {\n // console.error(error); // eslint-disable-line\n // }\n // }\n // All converted files are contained in slpk now they can be deleted\n try {\n await removeDir(tilesetPath);\n } catch (e) {\n // do nothing\n }\n }\n }\n\n /**\n * Add child nodes recursively and write them to files\n * @param data - arguments\n * @param data.sourceTiles - array of source child nodes\n * @param data.parentNode - 3DNodeIndexDocument of parent node for processing child nodes\n * @param data.parentId - id of parent node in node pages\n * @param data.level - level of node (distanse to root node in the tree)\n */\n private async _addChildrenWithNeighborsAndWriteFile(data: {\n parentNode: Node3DIndexDocument;\n sourceTiles: TileHeader[];\n parentId: number;\n level: number;\n }): Promise<void> {\n const childNodes = [];\n await this._addChildren({...data, childNodes});\n await this._addNeighborsAndWriteFile(data.parentNode, childNodes);\n }\n\n /**\n * Add child nodes recursively and write them to files\n * @param data - arguments\n * @param data.childNodes - array of target child nodes\n * @param data.sourceTiles - array of source child nodes\n * @param data.parentNode - 3DNodeIndexDocument of parent node for processing child nodes\n * @param data.parentId - id of parent node in node pages\n * @param data.level - level of node (distanse to root node in the tree)\n */\n private async _addChildren(data: {\n childNodes: NodeReference[];\n sourceTiles: TileHeader[];\n parentNode: Node3DIndexDocument;\n parentId: number;\n level: number;\n }): Promise<void> {\n const {childNodes, sourceTiles, parentNode, parentId, level} = data;\n if (this.options.maxDepth && level > this.options.maxDepth) {\n return;\n }\n for (const sourceTile of sourceTiles) {\n if (sourceTile.type === 'json') {\n await this.sourceTileset._loadTile(sourceTile);\n await this._addChildren({\n parentNode,\n sourceTiles: sourceTile.children,\n childNodes,\n parentId,\n level: level + 1\n });\n await sourceTile.unloadContent();\n } else {\n const boundingVolumes = createBoundingVolumes(sourceTile, this.geoidHeightModel);\n const children = await this._createNode(parentNode, sourceTile, parentId, level);\n for (const child of children) {\n parentNode.children.push({\n id: child.id,\n href: `../${child.path}`,\n ...boundingVolumes\n });\n childNodes.push(child);\n }\n }\n if (sourceTile.id) {\n console.log(sourceTile.id); // eslint-disable-line\n }\n }\n }\n\n /**\n * Add neightbors to 3DNodeIndexDocument and write it in a file\n * @param parentNode - arguments\n * @param childNodes - array of target child nodes\n */\n private async _addNeighborsAndWriteFile(\n parentNode: Node3DIndexDocument,\n childNodes: Node3DIndexDocument[]\n ): Promise<void> {\n for (const node of childNodes) {\n const childPath = join(this.layers0Path, 'nodes', node.path);\n const nodePath = node.path;\n delete node.path;\n\n // Don't do large amount of \"neightbors\" to avoid big memory consumption\n if (parentNode.children.length < 1000) {\n for (const neighbor of parentNode.children) {\n // eslint-disable-next-line max-depth\n if (node.id === neighbor.id) {\n continue; // eslint-disable-line\n }\n\n node.neighbors.push({...neighbor});\n }\n } else {\n // eslint-disable-next-line no-console, no-undef\n console.warn(\n `Node ${node.id}: neighbors attribute is omited because of large number of neigbors`\n );\n delete node.neighbors;\n }\n await this._writeNodeIndexDocument(node, nodePath, childPath);\n node.neighbors = [];\n }\n }\n\n /**\n * Convert tile to one or more I3S nodes\n * @param parentTile - parent 3DNodeIndexDocument\n * @param sourceTile - source tile (3DTile)\n * @param parentId - id of parent node in node pages\n * @param level - level of node (distanse to root node in the tree)\n */\n private async _createNode(\n parentTile: Node3DIndexDocument,\n sourceTile: TileHeader,\n parentId: number,\n level: number\n ): Promise<Node3DIndexDocument[]> {\n if (this.validate) {\n this._checkAddRefinementTypeForTile(sourceTile);\n }\n\n await this._updateTilesetOptions();\n await this.sourceTileset._loadTile(sourceTile);\n const boundingVolumes = createBoundingVolumes(sourceTile, this.geoidHeightModel);\n\n const lodSelection = convertGeometricErrorToScreenThreshold(sourceTile, boundingVolumes);\n const maxScreenThresholdSQ = lodSelection.find(\n (val) => val.metricType === 'maxScreenThresholdSQ'\n ) || {maxError: 0};\n\n const batchTable = sourceTile?.content?.batchTableJson;\n\n if (batchTable) {\n this._convertAttributeStorageInfo(sourceTile.content);\n }\n\n const resourcesData = await this._convertResources(sourceTile);\n\n const nodes = [];\n const emptyResources = {\n geometry: null,\n compressedGeometry: null,\n texture: null,\n sharedResources: null,\n meshMaterial: null,\n vertexCount: null,\n attributes: null,\n featureCount: null\n };\n for (const resources of resourcesData || [emptyResources]) {\n const nodeInPage = this._createNodeInNodePages(\n maxScreenThresholdSQ,\n boundingVolumes,\n sourceTile,\n parentId,\n resources\n );\n const node = this._createNodeIndexDocument(\n parentTile,\n boundingVolumes,\n lodSelection,\n nodeInPage,\n resources\n );\n\n if (nodeInPage.mesh) {\n await this._writeResources(resources, node.path);\n }\n\n if (this.validate) {\n this.boundingVolumeWarnings = validateNodeBoundingVolumes(node);\n\n if (this.boundingVolumeWarnings && this.boundingVolumeWarnings.length) {\n console.warn('Bounding Volume Warnings: ', ...this.boundingVolumeWarnings); //eslint-disable-line\n }\n }\n\n nodes.push(node);\n }\n\n sourceTile.unloadContent();\n\n const firstNode = nodes[0];\n await this._addChildrenWithNeighborsAndWriteFile({\n parentNode: firstNode,\n sourceTiles: sourceTile.children,\n parentId: firstNode.id,\n level: level + 1\n });\n return nodes;\n }\n\n /**\n * Convert attributesStorageInfo https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * from B3DM batch table\n * @param sourceTileContent - tile content of 3DTile\n * @return {void}\n */\n private _convertAttributeStorageInfo(sourceTileContent: B3DMContent): void {\n // In legacy b3dm files sometimes sourceTileContent is null.\n const batchTable = sourceTileContent && sourceTileContent.batchTableJson;\n if (batchTable && !this.layers0.attributeStorageInfo.length) {\n this._convertBatchTableInfoToNodeAttributes(batchTable);\n }\n }\n\n /**\n * Convert tile to one or more I3S nodes\n * @param sourceTile - source tile (3DTile)\n * result.geometry - ArrayBuffer with geometry attributes\n * result.compressedGeometry - ArrayBuffer with compressed (draco) geometry\n * result.texture - texture image\n * result.sharedResources - shared resource data object\n * result.meshMaterial - PBR-like material object\n * result.vertexCount - number of vertices in geometry\n * result.attributes - feature attributes\n * result.featureCount - number of features\n */\n private async _convertResources(sourceTile: TileHeader): Promise<I3SGeometry[]> {\n if (!sourceTile.content || sourceTile.content.type !== 'b3dm') {\n return null;\n }\n const resourcesData = await convertB3dmToI3sGeometry(\n sourceTile.content,\n Number(this.nodePages.nodesCounter),\n this.featuresHashArray,\n this.layers0.attributeStorageInfo,\n this.options.draco\n );\n return resourcesData;\n }\n\n /**\n * Create a new node object (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/node.cmn.md)\n * in node pages (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodePage.cmn.md)\n * @param maxScreenThresholdSQ - Level of Details (LOD) metric\n * @param boundingVolumes - Bounding volumes\n * @param sourceTile - source tile (3DTile)\n * @param parentId - id of parent node in node pages\n * @param resources - the node resources data\n * @param resources.meshMaterial - PBR-like material object\n * @param resources.texture - texture image\n * @param resources.vertexCount - number of vertices in geometry\n * @param resources.featureCount - number of features\n * @return the node object in node pages\n */\n private _createNodeInNodePages(\n maxScreenThresholdSQ: MaxScreenThresholdSQ,\n boundingVolumes: BoundingVolumes,\n sourceTile: TileHeader,\n parentId: number,\n resources: I3SGeometry\n ): NodeInPage {\n const {meshMaterial, texture, vertexCount, featureCount, geometry} = resources;\n const nodeInPage = {\n lodThreshold: maxScreenThresholdSQ.maxError,\n obb: boundingVolumes.obb,\n children: [],\n mesh: null\n };\n if (geometry && sourceTile.content && sourceTile.content.type === 'b3dm') {\n nodeInPage.mesh = {\n geometry: {\n definition: texture ? 0 : 1\n },\n attribute: {}\n };\n }\n const nodeId = this.nodePages.push(nodeInPage, parentId);\n\n if (meshMaterial) {\n this.nodePages.updateMaterialByNodeId(nodeId, this._findOrCreateMaterial(meshMaterial));\n }\n\n if (texture) {\n const texelCountHint = texture.image.height * texture.image.width;\n this.nodePages.updateTexelCountHintByNodeId(nodeId, texelCountHint);\n }\n\n if (vertexCount) {\n this.vertexCounter += vertexCount;\n this.nodePages.updateVertexCountByNodeId(nodeId, vertexCount);\n }\n this.nodePages.updateNodeAttributeByNodeId(nodeId);\n if (featureCount) {\n this.nodePages.updateFeatureCountByNodeId(nodeId, featureCount);\n }\n\n return nodeInPage;\n }\n\n /**\n * Create a new node page object in node pages\n * @param parentNode - 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object of the parent node\n * @param boundingVolumes - Bounding volumes\n * @param lodSelection - Level of Details (LOD) metrics\n * @param nodeInPage - corresponding node object in a node page\n * @param resources - the node resources data\n * @param resources.texture - texture image\n * @param resources.attributes - feature attributes\n * @return 3DNodeIndexDocument https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md object\n */\n private _createNodeIndexDocument(\n parentNode: Node3DIndexDocument,\n boundingVolumes: BoundingVolumes,\n lodSelection: LodSelection[],\n nodeInPage: NodeInPage,\n resources: I3SGeometry\n ): Node3DIndexDocument {\n const {texture, attributes} = resources;\n const nodeId = nodeInPage.index;\n const nodeData = {\n version: parentNode.version,\n id: nodeId.toString(),\n path: nodeId.toString(),\n level: parentNode.level + 1,\n ...boundingVolumes,\n lodSelection,\n parentNode: {\n id: parentNode.id,\n href: `../${parentNode.id}`,\n mbs: parentNode.mbs,\n obb: parentNode.obb\n },\n children: [],\n neighbors: []\n };\n const node = transform(nodeData, nodeTemplate);\n\n if (nodeInPage.mesh) {\n node.geometryData = [{href: './geometries/0'}];\n node.sharedResource = {href: './shared'};\n\n if (texture) {\n node.textureData = [{href: './textures/0'}, {href: './textures/1'}];\n }\n\n if (\n attributes &&\n attributes.length &&\n this.layers0.attributeStorageInfo &&\n this.layers0.attributeStorageInfo.length\n ) {\n node.attributeData = [];\n for (let index = 0; index < attributes.length; index++) {\n const folderName = this.layers0.attributeStorageInfo[index].key;\n node.attributeData.push({href: `./attributes/${folderName}/0`});\n }\n }\n }\n\n return node;\n }\n\n /**\n * Write node resources in files\n * @param resources - source tile (3DTile)\n * @param resources.geometry - Uint8Array with geometry attributes\n * @param resources.compressedGeometry - Uint8Array with compressed (draco) geometry\n * @param resources.texture - texture image\n * @param resources.sharedResources - shared resource data object\n * @param resources.attributes - feature attributes\n * @return {Promise<void>}\n */\n private async _writeResources(resources: I3SGeometry, nodePath: string): Promise<void> {\n const {\n geometry: geometryBuffer,\n compressedGeometry,\n texture,\n sharedResources,\n attributes\n } = resources;\n const childPath = join(this.layers0Path, 'nodes', nodePath);\n const slpkChildPath = join('nodes', nodePath);\n\n await this._writeGeometries(geometryBuffer, compressedGeometry, childPath, slpkChildPath);\n await this._writeShared(sharedResources, childPath, slpkChildPath, nodePath);\n await this._writeTexture(texture, childPath, slpkChildPath);\n await this._writeAttributes(attributes, childPath, slpkChildPath);\n }\n\n /**\n * Write non-compressed and compressed geometries in files\n * @param geometryBuffer - Uint8Array with geometry attributes\n * @param compressedGeometry - Uint8Array with compressed (draco) geometry\n * @param childPath - a child path to write resources\n * @param slpkChildPath - resource path inside *slpk file\n */\n private async _writeGeometries(\n geometryBuffer: ArrayBuffer,\n compressedGeometry: ArrayBuffer,\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (this.options.slpk) {\n const slpkGeometryPath = join(childPath, 'geometries');\n this.fileMap[`${slpkChildPath}/geometries/0.bin.gz`] = await writeFileForSlpk(\n slpkGeometryPath,\n geometryBuffer,\n '0.bin'\n );\n } else {\n const geometryPath = join(childPath, 'geometries/0/');\n await writeFile(geometryPath, geometryBuffer, 'index.bin');\n }\n\n if (this.options.draco) {\n if (this.options.slpk) {\n const slpkCompressedGeometryPath = join(childPath, 'geometries');\n this.fileMap[`${slpkChildPath}/geometries/1.bin.gz`] = await writeFileForSlpk(\n slpkCompressedGeometryPath,\n compressedGeometry,\n '1.bin'\n );\n } else {\n const compressedGeometryPath = join(childPath, 'geometries/1/');\n await writeFile(compressedGeometryPath, compressedGeometry, 'index.bin');\n }\n }\n }\n\n /**\n * Write shared resources in a file\n * @param sharedResources - shared resource data object\n * @param childPath - a child path to write resources\n * @param slpkChildPath - resource path inside *slpk file\n * @param nodePath - a node path\n */\n private async _writeShared(\n sharedResources: SharedResources,\n childPath: string,\n slpkChildPath: string,\n nodePath: string\n ): Promise<void> {\n sharedResources.nodePath = nodePath;\n const sharedData = transform(sharedResources, SHARED_RESOURCES_TEMPLATE);\n const sharedDataStr = JSON.stringify(sharedData);\n if (this.options.slpk) {\n const slpkSharedPath = join(childPath, 'shared');\n this.fileMap[`${slpkChildPath}/shared/sharedResource.json.gz`] = await writeFileForSlpk(\n slpkSharedPath,\n sharedDataStr,\n 'sharedResource.json'\n );\n } else {\n const sharedPath = join(childPath, 'shared/');\n await writeFile(sharedPath, sharedDataStr);\n }\n }\n\n /**\n * Write the texture image in a file\n * @param texture - the texture image\n * @param childPath - a child path to write resources\n * @param slpkChildPath - the resource path inside *slpk file\n */\n private async _writeTexture(\n texture: TextureImage,\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (texture) {\n const format = this._getFormatByMimeType(texture.mimeType);\n if (!this.layers0.textureSetDefinitions.length) {\n this.layers0.textureSetDefinitions.push({\n formats: [\n {\n name: '0',\n format\n },\n {\n name: '1',\n format: 'ktx2'\n }\n ]\n });\n }\n\n const textureData = texture.bufferView.data;\n const ktx2TextureData = await encode(texture.image, KTX2BasisUniversalTextureWriter);\n\n if (this.options.slpk) {\n const slpkTexturePath = join(childPath, 'textures');\n const compress = false;\n\n this.fileMap[`${slpkChildPath}/textures/0.${format}`] = await writeFileForSlpk(\n slpkTexturePath,\n textureData,\n `0.${format}`,\n compress\n );\n\n this.fileMap[`${slpkChildPath}/textures/1.ktx2`] = await writeFileForSlpk(\n slpkTexturePath,\n ktx2TextureData,\n `1.ktx2`,\n compress\n );\n } else {\n const texturePath = join(childPath, 'textures/0/');\n await writeFile(texturePath, textureData, `index.${format}`);\n\n const ktx2TexturePath = join(childPath, 'textures/1/');\n await writeFile(ktx2TexturePath, ktx2TextureData, `index.ktx2`);\n }\n }\n }\n\n /**\n * Write feature attributes in files\n * @param attributes - feature attributes\n * @param childPath - a child path to write resources\n * @param slpkChildPath - the resource path inside *slpk file\n */\n private async _writeAttributes(\n attributes: ArrayBuffer[],\n childPath: string,\n slpkChildPath: string\n ): Promise<void> {\n if (\n attributes.length &&\n this.layers0.attributeStorageInfo &&\n this.layers0.attributeStorageInfo.length\n ) {\n for (let index = 0; index < attributes.length; index++) {\n const folderName = this.layers0.attributeStorageInfo[index].key;\n const fileBuffer = new Uint8Array(attributes[index]);\n\n if (this.options.slpk) {\n const slpkAttributesPath = join(childPath, 'attributes', folderName);\n this.fileMap[`${slpkChildPath}/attributes/${folderName}.bin.gz`] = await writeFileForSlpk(\n slpkAttributesPath,\n fileBuffer,\n '0.bin'\n );\n } else {\n const attributesPath = join(childPath, `attributes/${folderName}/0`);\n await writeFile(attributesPath, fileBuffer, 'index.bin');\n }\n }\n }\n }\n\n /**\n * Return file format by its MIME type\n * @param mimeType - feature attributes\n */\n private _getFormatByMimeType(mimeType: string): string {\n switch (mimeType) {\n case 'image/jpeg':\n return 'jpg';\n case 'image/png':\n return 'png';\n default:\n return 'jpg';\n }\n }\n\n /**\n * Find or create material in materialDefinitions array\n * @param material - end-to-end index of the node\n * @return material id\n */\n private _findOrCreateMaterial(material: GLTFMaterial): number {\n const hash = md5(JSON.stringify(material));\n if (this.materialMap.has(hash)) {\n return this.materialMap.get(hash);\n }\n const newMaterialId = this.materialDefinitions.push(material) - 1;\n this.materialMap.set(hash, newMaterialId);\n return newMaterialId;\n }\n\n /**\n * Generate storage attribute for map segmentation.\n * @param attributeIndex - order index of attribute (f_0, f_1 ...).\n * @param key - attribute key from batch table.\\\n * @param attributeType - attribute type.\n * @return Updated storageAttribute.\n */\n private _createdStorageAttribute(\n attributeIndex: number,\n key: string,\n attributeType: Attribute\n ): AttributeStorageInfo {\n const storageAttribute = {\n key: `f_${attributeIndex}`,\n name: key,\n ordering: ['attributeValues'],\n header: [{property: 'count', valueType: 'UInt32'}],\n attributeValues: {valueType: 'Int32', valuesPerElement: 1}\n };\n\n switch (attributeType) {\n case OBJECT_ID_TYPE:\n this._setupIdAttribute(storageAttribute);\n break;\n case STRING_TYPE:\n this._setupStringAttribute(storageAttribute);\n break;\n case DOUBLE_TYPE:\n this._setupDoubleAttribute(storageAttribute);\n break;\n case SHORT_INT_TYPE:\n break;\n default:\n this._setupStringAttribute(storageAttribute);\n }\n\n return storageAttribute;\n }\n\n /**\n * Get the attribute type for attributeStorageInfo https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param key - attribute's key\n * @param attribute - attribute's type in batchTable\n */\n private getAttributeType(key: string, attribute: string): string {\n if (key === OBJECT_ID_TYPE) {\n return OBJECT_ID_TYPE;\n }\n if (typeof attribute === STRING_TYPE) {\n return STRING_TYPE;\n } else if (typeof attribute === 'number') {\n return Number.isInteger(attribute) ? SHORT_INT_TYPE : DOUBLE_TYPE;\n }\n return STRING_TYPE;\n }\n\n /**\n * Setup storage attribute as string.\n * @param storageAttribute - attribute for map segmentation.\n */\n private _setupStringAttribute(storageAttribute: AttributeStorageInfo): void {\n storageAttribute.ordering.unshift('attributeByteCounts');\n storageAttribute.header.push({property: 'attributeValuesByteCount', valueType: 'UInt32'});\n storageAttribute.attributeValues = {\n valueType: 'String',\n encoding: 'UTF-8',\n valuesPerElement: 1\n };\n storageAttribute.attributeByteCounts = {\n valueType: 'UInt32',\n valuesPerElement: 1\n };\n }\n\n /**\n * Setup Id attribute for map segmentation.\n * @param storageAttribute - attribute for map segmentation .\n */\n private _setupIdAttribute(storageAttribute: AttributeStorageInfo): void {\n storageAttribute.attributeValues = {\n valueType: 'Oid32',\n valuesPerElement: 1\n };\n }\n\n /**\n * Setup double attribute for map segmentation.\n * @param storageAttribute - attribute for map segmentation .\n */\n private _setupDoubleAttribute(storageAttribute: AttributeStorageInfo): void {\n storageAttribute.attributeValues = {\n valueType: 'Float64',\n valuesPerElement: 1\n };\n }\n\n /**\n * Setup field attribute for map segmentation.\n * @param key - attribute for map segmentation.\n * @param fieldAttributeType - esri attribute type ('esriFieldTypeString' or 'esriFieldTypeOID').\n */\n private _createFieldAttribute(key: string, fieldAttributeType: ESRIField): Field {\n return {\n name: key,\n type: fieldAttributeType,\n alias: key\n };\n }\n\n /**\n * Do conversion of 3DTiles batch table to I3s node attributes.\n * @param batchTable - Table with layer meta data.\n */\n private _convertBatchTableInfoToNodeAttributes(batchTable: BatchTableJson): void {\n let attributeIndex = 0;\n const batchTableWithObjectId = {\n OBJECTID: [0],\n ...batchTable\n };\n\n for (const key in batchTableWithObjectId) {\n const firstAttribute = batchTableWithObjectId[key][0];\n const attributeType = this.getAttributeType(key, firstAttribute);\n\n const storageAttribute = this._createdStorageAttribute(attributeIndex, key, attributeType);\n const fieldAttributeType = this._getFieldAttributeType(attributeType);\n const fieldAttribute = this._createFieldAttribute(key, fieldAttributeType);\n const popupInfo = this._createPopupInfo(batchTableWithObjectId);\n\n this.layers0.attributeStorageInfo.push(storageAttribute);\n this.layers0.fields.push(fieldAttribute);\n this.layers0.popupInfo = popupInfo;\n this.layers0.layerType = _3D_OBJECT_LAYER_TYPE;\n\n attributeIndex += 1;\n }\n }\n\n /**\n * Find and return attribute type based on key form Batch table.\n * @param attributeType\n */\n private _getFieldAttributeType(attributeType: Attribute): ESRIField {\n switch (attributeType) {\n case OBJECT_ID_TYPE:\n return 'esriFieldTypeOID';\n case STRING_TYPE:\n return 'esriFieldTypeString';\n case SHORT_INT_TYPE:\n return 'esriFieldTypeInteger';\n case DOUBLE_TYPE:\n return 'esriFieldTypeDouble';\n default:\n return 'esriFieldTypeString';\n }\n }\n\n /**\n * Generate popup info to show metadata on the map.\n * @param batchTable - Batch table data with OBJECTID.\n * @return data for correct rendering of popup.\n */\n private _createPopupInfo(batchTable: BatchTableJson): PopupInfo {\n const title = '{OBJECTID}';\n const mediaInfos = [];\n const fieldInfos = [];\n const popupElements = [];\n const expressionInfos = [];\n\n for (const key in batchTable) {\n fieldInfos.push({\n fieldName: key,\n visible: true,\n isEditable: false,\n label: key\n });\n }\n popupElements.push({\n fieldInfos,\n type: 'fields'\n });\n\n return {\n title,\n mediaInfos,\n popupElements,\n fieldInfos,\n expressionInfos\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 {tilesCount, tilesWithAddRefineCount} = this.refinementCounter;\n const addRefinementPercentage = tilesWithAddRefineCount\n ? (tilesWithAddRefineCount / tilesCount) * 100\n : 0;\n const filesSize = await calculateFilesSize(params);\n const diff = process.hrtime(this.conversionStartTime);\n const conversionTime = timeConverter(diff);\n console.log(`------------------------------------------------`); // eslint-disable-line no-undef, no-console\n console.log(`Finishing conversion of ${_3D_TILES}`); // eslint-disable-line no-undef, no-console\n console.log(`Total conversion time: ${conversionTime}`); // eslint-disable-line no-undef, no-console\n console.log(`Vertex count: `, this.vertexCounter); // eslint-disable-line no-undef, no-console\n console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line no-undef, no-console\n console.log(`Percentage of tiles with \"ADD\" refinement type:`, addRefinementPercentage, '%'); // eslint-disable-line no-undef, no-console\n console.log(`------------------------------------------------`); // eslint-disable-line no-undef, no-console\n }\n\n /**\n * Fetch preload options for ION tileset\n */\n private async _fetchPreloadOptions(): Promise<any> {\n const options = {\n 'cesium-ion': {accessToken: this.options.token || ION_DEFAULT_TOKEN}\n };\n const preloadOptions = await CesiumIonLoader.preload(this.options.inputUrl, options);\n this.refreshTokenTime = process.hrtime();\n return {...options, ...preloadOptions};\n }\n\n /**\n * Update options of source tileset\n */\n private async _updateTilesetOptions(): Promise<void> {\n const diff = process.hrtime(this.refreshTokenTime);\n if (diff[0] < REFRESH_TOKEN_TIMEOUT) {\n return;\n }\n this.refreshTokenTime = process.hrtime();\n\n const preloadOptions = await this._fetchPreloadOptions();\n this.sourceTileset.options = {...this.sourceTileset.options, ...preloadOptions};\n if (preloadOptions.headers) {\n this.sourceTileset.loadOptions.fetch = {\n ...this.sourceTileset.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n console.log('Authorization Bearer token has been updated'); // eslint-disable-line no-undef, no-console\n }\n }\n\n /** Do calculations of all tiles and tiles with \"ADD\" type of refinement.\n * @param tile\n */\n private _checkAddRefinementTypeForTile(tile: TileHeader): void {\n const ADD_TILE_REFINEMENT = 1;\n\n if (tile.refine === ADD_TILE_REFINEMENT) {\n this.refinementCounter.tilesWithAddRefineCount += 1;\n console.warn('This tile uses \"ADD\" type of refinement'); // eslint-disable-line\n }\n\n this.refinementCounter.tilesCount += 1;\n }\n}\n"],"file":"i3s-converter.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/layers.js"],"names":["transform","STORE","PLAIN_GEOMETRY_DEFINITION","offset","position","type","component","normal","uv0","color","featureId","binding","faceRange","PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0","COMPRESSED_GEOMETRY_DEFINITION","compressedAttributes","encoding","attributes","COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0","SPATIAL_REFERENCE","wkid","path","default","latestWkid","vcsWkid","latestVcsWkid","HEIGHT_MODEL_INFO","heightModel","vertCRS","heightUnit","NODE_PAGES","nodesPerPage","lodSelectionMetricType","LAYERS","version","val","toUpperCase","id","name","href","layerType","spatialReference","capabilities","store","heightModelInfo","nodePages","materialDefinitions","textureSetDefinitions","geometryDefinitions","result","geometryBuffers","push","attributeStorageInfo","fields","popupInfo"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,oBAAtB;AACA,SAAQC,KAAR,QAAoB,SAApB;AAEA,MAAMC,yBAAyB,GAAG;AAChCC,EAAAA,MAAM,EAAE,CADwB;AAEhCC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,IAAI,EAAE,SADE;AAERC,IAAAA,SAAS,EAAE;AAFH,GAFsB;AAMhCC,EAAAA,MAAM,EAAE;AACNF,IAAAA,IAAI,EAAE,SADA;AAENC,IAAAA,SAAS,EAAE;AAFL,GANwB;AAUhCE,EAAAA,GAAG,EAAE;AACHH,IAAAA,IAAI,EAAE,SADH;AAEHC,IAAAA,SAAS,EAAE;AAFR,GAV2B;AAchCG,EAAAA,KAAK,EAAE;AACLJ,IAAAA,IAAI,EAAE,OADD;AAELC,IAAAA,SAAS,EAAE;AAFN,GAdyB;AAkBhCI,EAAAA,SAAS,EAAE;AACTC,IAAAA,OAAO,EAAE,aADA;AAETN,IAAAA,IAAI,EAAE,QAFG;AAGTC,IAAAA,SAAS,EAAE;AAHF,GAlBqB;AAuBhCM,EAAAA,SAAS,EAAE;AACTD,IAAAA,OAAO,EAAE,aADA;AAETN,IAAAA,IAAI,EAAE,QAFG;AAGTC,IAAAA,SAAS,EAAE;AAHF;AAvBqB,CAAlC;AA8BA,MAAMO,qCAAqC,GAAG;AAC5CV,EAAAA,MAAM,EAAE,CADoC;AAE5CC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,IAAI,EAAE,SADE;AAERC,IAAAA,SAAS,EAAE;AAFH,GAFkC;AAM5CC,EAAAA,MAAM,EAAE;AACNF,IAAAA,IAAI,EAAE,SADA;AAENC,IAAAA,SAAS,EAAE;AAFL,GANoC;AAU5CG,EAAAA,KAAK,EAAE;AACLJ,IAAAA,IAAI,EAAE,OADD;AAELC,IAAAA,SAAS,EAAE;AAFN,GAVqC;AAc5CI,EAAAA,SAAS,EAAE;AACTC,IAAAA,OAAO,EAAE,aADA;AAETN,IAAAA,IAAI,EAAE,QAFG;AAGTC,IAAAA,SAAS,EAAE;AAHF,GAdiC;AAmB5CM,EAAAA,SAAS,EAAE;AACTD,IAAAA,OAAO,EAAE,aADA;AAETN,IAAAA,IAAI,EAAE,QAFG;AAGTC,IAAAA,SAAS,EAAE;AAHF;AAnBiC,CAA9C;AA0BA,MAAMQ,8BAA8B,GAAG;AACrCC,EAAAA,oBAAoB,EAAE;AACpBC,IAAAA,QAAQ,EAAE,OADU;AAEpBC,IAAAA,UAAU,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,KAAvB,EAA8B,OAA9B,EAAuC,eAAvC;AAFQ;AADe,CAAvC;AAOA,MAAMC,0CAA0C,GAAG;AACjDH,EAAAA,oBAAoB,EAAE;AACpBC,IAAAA,QAAQ,EAAE,OADU;AAEpBC,IAAAA,UAAU,EAAE,CAAC,UAAD,EAAa,QAAb,EAAuB,OAAvB,EAAgC,eAAhC;AAFQ;AAD2B,CAAnD;AAOA,MAAME,iBAAiB,GAAG;AACxBC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,MADF;AAEJC,IAAAA,OAAO,EAAE;AAFL,GADkB;AAKxBC,EAAAA,UAAU,EAAE;AACVF,IAAAA,IAAI,EAAE,YADI;AAEVC,IAAAA,OAAO,EAAE;AAFC,GALY;AASxBE,EAAAA,OAAO,EAAE;AACPH,IAAAA,IAAI,EAAE,SADC;AAEPC,IAAAA,OAAO,EAAE;AAFF,GATe;AAaxBG,EAAAA,aAAa,EAAE;AACbJ,IAAAA,IAAI,EAAE,eADO;AAEbC,IAAAA,OAAO,EAAE;AAFI;AAbS,CAA1B;AAmBA,MAAMI,iBAAiB,GAAG;AACxBC,EAAAA,WAAW,EAAE;AACXN,IAAAA,IAAI,EAAE,aADK;AAEXC,IAAAA,OAAO,EAAE;AAFE,GADW;AAKxBM,EAAAA,OAAO,EAAE;AACPP,IAAAA,IAAI,EAAE,SADC;AAEPC,IAAAA,OAAO,EAAE;AAFF,GALe;AASxBO,EAAAA,UAAU,EAAE;AACVR,IAAAA,IAAI,EAAE,YADI;AAEVC,IAAAA,OAAO,EAAE;AAFC;AATY,CAA1B;AAeA,MAAMQ,UAAU,GAAG;AACjBC,EAAAA,YAAY,EAAE;AACZV,IAAAA,IAAI,EAAE;AADM,GADG;AAIjBW,EAAAA,sBAAsB,EAAE;AACtBX,IAAAA,IAAI,EAAE,wBADgB;AAEtBC,IAAAA,OAAO,EAAE;AAFa;AAJP,CAAnB;AAUA,OAAO,MAAMW,MAAM,GAAG;AACpBC,EAAAA,OAAO,EAAE;AACPb,IAAAA,IAAI,EAAE,SADC;AAEPrB,IAAAA,SAAS,EAAGmC,GAAD,IAASA,GAAG,CAACC,WAAJ;AAFb,GADW;AAKpBC,EAAAA,EAAE,EAAE;AACFhB,IAAAA,IAAI,EAAE,IADJ;AAEFC,IAAAA,OAAO,EAAE;AAFP,GALgB;AASpBgB,EAAAA,IAAI,EAAE;AACJjB,IAAAA,IAAI,EAAE;AADF,GATc;AAYpBkB,EAAAA,IAAI,EAAE;AACJlB,IAAAA,IAAI,EAAE,MADF;AAEJC,IAAAA,OAAO,EAAE;AAFL,GAZc;AAgBpBkB,EAAAA,SAAS,EAAE;AACTnB,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,OAAO,EAAE;AAFA,GAhBS;AAoBpBmB,EAAAA,gBAAgB,EAAE;AAChBpB,IAAAA,IAAI,EAAE,kBADU;AAEhBrB,IAAAA,SAAS,EAAGmC,GAAD,IAASnC,SAAS,CAACmC,GAAD,EAAMhB,iBAAN;AAFb,GApBE;AAwBpBuB,EAAAA,YAAY,EAAE;AACZrB,IAAAA,IAAI,EAAE,cADM;AAEZC,IAAAA,OAAO,EAAE,CAAC,MAAD,EAAS,OAAT;AAFG,GAxBM;AA4BpBqB,EAAAA,KAAK,EAAE;AACLtB,IAAAA,IAAI,EAAE,OADD;AAELrB,IAAAA,SAAS,EAAGmC,GAAD,IAASnC,SAAS,CAACmC,GAAD,EAAMlC,KAAN;AAFxB,GA5Ba;AAgCpB2C,EAAAA,eAAe,EAAE;AACfvB,IAAAA,IAAI,EAAE,iBADS;AAEfrB,IAAAA,SAAS,EAAGmC,GAAD,IAASnC,SAAS,CAACmC,GAAD,EAAMT,iBAAN;AAFd,GAhCG;AAoCpBmB,EAAAA,SAAS,EAAE;AACTxB,IAAAA,IAAI,EAAE,WADG;AAETrB,IAAAA,SAAS,EAAGmC,GAAD,IAASnC,SAAS,CAACmC,GAAD,EAAML,UAAN;AAFpB,GApCS;AAwCpBgB,EAAAA,mBAAmB,EAAE;AACnBzB,IAAAA,IAAI,EAAE,qBADa;AAEnBC,IAAAA,OAAO,EAAE;AAFU,GAxCD;AA4CpByB,EAAAA,qBAAqB,EAAE;AACrB1B,IAAAA,IAAI,EAAE,uBADe;AAErBC,IAAAA,OAAO,EAAE;AAFY,GA5CH;AAgDpB0B,EAAAA,mBAAmB,EAAE;AACnB3B,IAAAA,IAAI,EAAE,kBADa;AAEnBrB,IAAAA,SAAS,EAAGmC,GAAD,IAAS;AAClB,YAAMc,MAAM,GAAG,CAAC,EAAD,EAAK,EAAL,CAAf;AACAA,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,GAA4B,EAA5B;AACAD,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,GAA4B,EAA5B;AAEAD,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,CAA0BC,IAA1B,CAA+BjD,yBAA/B;AACA+C,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,CAA0BC,IAA1B,CAA+BtC,qCAA/B;;AACA,UAAIsB,GAAJ,EAAS;AACPc,QAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,CAA0BC,IAA1B,CAA+BrC,8BAA/B;AACAmC,QAAAA,MAAM,CAAC,CAAD,CAAN,CAAUC,eAAV,CAA0BC,IAA1B,CAA+BjC,0CAA/B;AACD;;AACD,aAAO+B,MAAP;AACD,KAdkB;AAenB3B,IAAAA,OAAO,EAAE,CACP;AACE4B,MAAAA,eAAe,EAAE,CAAChD,yBAAD,EAA4BW,qCAA5B;AADnB,KADO;AAfU,GAhDD;AAqEpBuC,EAAAA,oBAAoB,EAAE;AACpB/B,IAAAA,IAAI,EAAE,sBADc;AAEpBC,IAAAA,OAAO,EAAE;AAFW,GArEF;AAyEpB+B,EAAAA,MAAM,EAAE;AACNhC,IAAAA,IAAI,EAAE,QADA;AAENC,IAAAA,OAAO,EAAE;AAFH,GAzEY;AA6EpBgC,EAAAA,SAAS,EAAE;AACTjC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,OAAO,EAAE;AAFA;AA7ES,CAAf","sourcesContent":["import transform from 'json-map-transform';\nimport {STORE} from './store';\n\nconst PLAIN_GEOMETRY_DEFINITION = {\n offset: 8,\n position: {\n type: 'Float32',\n component: 3\n },\n normal: {\n type: 'Float32',\n component: 3\n },\n uv0: {\n type: 'Float32',\n component: 2\n },\n color: {\n type: 'UInt8',\n component: 4\n },\n featureId: {\n binding: 'per-feature',\n type: 'UInt64',\n component: 1\n },\n faceRange: {\n binding: 'per-feature',\n type: 'UInt32',\n component: 2\n }\n};\n\nconst PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0 = {\n offset: 8,\n position: {\n type: 'Float32',\n component: 3\n },\n normal: {\n type: 'Float32',\n component: 3\n },\n color: {\n type: 'UInt8',\n component: 4\n },\n featureId: {\n binding: 'per-feature',\n type: 'UInt64',\n component: 1\n },\n faceRange: {\n binding: 'per-feature',\n type: 'UInt32',\n component: 2\n }\n};\n\nconst COMPRESSED_GEOMETRY_DEFINITION = {\n compressedAttributes: {\n encoding: 'draco',\n attributes: ['position', 'normal', 'uv0', 'color', 'feature-index']\n }\n};\n\nconst COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0 = {\n compressedAttributes: {\n encoding: 'draco',\n attributes: ['position', 'normal', 'color', 'feature-index']\n }\n};\n\nconst SPATIAL_REFERENCE = {\n wkid: {\n path: 'wkid',\n default: 4326\n },\n latestWkid: {\n path: 'latestWkid',\n default: 4326\n },\n vcsWkid: {\n path: 'vcsWkid',\n default: 5773\n },\n latestVcsWkid: {\n path: 'latestVcsWkid',\n default: 5773\n }\n};\n\nconst HEIGHT_MODEL_INFO = {\n heightModel: {\n path: 'heightModel',\n default: 'gravity_related_height'\n },\n vertCRS: {\n path: 'vertCRS',\n default: 'EGM96_Geoid'\n },\n heightUnit: {\n path: 'heightUnit',\n default: 'meter'\n }\n};\n\nconst NODE_PAGES = {\n nodesPerPage: {\n path: 'nodesPerPage'\n },\n lodSelectionMetricType: {\n path: 'lodSelectionMetricType',\n default: 'maxScreenThresholdSQ'\n }\n};\n\nexport const LAYERS = {\n version: {\n path: 'version',\n transform: (val) => val.toUpperCase()\n },\n id: {\n path: 'id',\n default: 0\n },\n name: {\n path: 'name'\n },\n href: {\n path: 'href',\n default: './layers/0'\n },\n layerType: {\n path: 'layerType',\n default: 'IntegratedMesh'\n },\n spatialReference: {\n path: 'spatialReference',\n transform: (val) => transform(val, SPATIAL_REFERENCE)\n },\n capabilities: {\n path: 'capabilities',\n default: ['View', 'Query']\n },\n store: {\n path: 'store',\n transform: (val) => transform(val, STORE)\n },\n heightModelInfo: {\n path: 'heightModelInfo',\n transform: (val) => transform(val, HEIGHT_MODEL_INFO)\n },\n nodePages: {\n path: 'nodePages',\n transform: (val) => transform(val, NODE_PAGES)\n },\n materialDefinitions: {\n path: 'materialDefinitions',\n default: []\n },\n textureSetDefinitions: {\n path: 'textureSetDefinitions',\n default: []\n },\n geometryDefinitions: {\n path: 'compressGeometry',\n transform: (val) => {\n const result = [{}, {}];\n result[0].geometryBuffers = [];\n result[1].geometryBuffers = [];\n\n result[0].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION);\n result[1].geometryBuffers.push(PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0);\n if (val) {\n result[0].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION);\n result[1].geometryBuffers.push(COMPRESSED_GEOMETRY_DEFINITION_WITHOUT_UV0);\n }\n return result;\n },\n default: [\n {\n geometryBuffers: [PLAIN_GEOMETRY_DEFINITION, PLAIN_GEOMETRY_DEFINITION_WITHOUT_UV0]\n }\n ]\n },\n attributeStorageInfo: {\n path: 'attributeStorageInfo',\n default: []\n },\n fields: {\n path: 'fields',\n default: []\n },\n popupInfo: {\n path: 'popupInfo',\n default: null\n }\n};\n"],"file":"layers.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/metadata.js"],"names":["METADATA","folderPattern","path","default","archiveCompressionType","resourceCompressionType","I3SVersion","nodeCount"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,GAAG;AACtBC,EAAAA,aAAa,EAAE;AACbC,IAAAA,IAAI,EAAE,eADO;AAEbC,IAAAA,OAAO,EAAE;AAFI,GADO;AAKtBC,EAAAA,sBAAsB,EAAE;AACtBF,IAAAA,IAAI,EAAE,wBADgB;AAEtBC,IAAAA,OAAO,EAAE;AAFa,GALF;AAStBE,EAAAA,uBAAuB,EAAE;AACvBH,IAAAA,IAAI,EAAE,yBADiB;AAEvBC,IAAAA,OAAO,EAAE;AAFc,GATH;AAatBG,EAAAA,UAAU,EAAE;AACVJ,IAAAA,IAAI,EAAE,YADI;AAEVC,IAAAA,OAAO,EAAE;AAFC,GAbU;AAiBtBI,EAAAA,SAAS,EAAE;AACTL,IAAAA,IAAI,EAAE;AADG;AAjBW,CAAjB","sourcesContent":["export const METADATA = {\n folderPattern: {\n path: 'folderPattern',\n default: 'BASIC'\n },\n archiveCompressionType: {\n path: 'archiveCompressionType',\n default: 'STORE'\n },\n resourceCompressionType: {\n path: 'resourceCompressionType',\n default: 'GZIP'\n },\n I3SVersion: {\n path: 'I3SVersion',\n default: '1.8'\n },\n nodeCount: {\n path: 'nodeCount'\n }\n};\n"],"file":"metadata.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/node.js"],"names":["transform","COORDINATES","mbs","path","obb","_href","href","PARENT_NODE","id","NODE","version","level","lodSelection","default","metricType","maxError","children","neighbors","parentNode","val","sharedResource","featureData","geometryData","textureData","attributeData"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,oBAAtB;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,GAAG,EAAE;AACHC,IAAAA,IAAI,EAAE;AADH,GADa;AAIlBC,EAAAA,GAAG,EAAE;AACHD,IAAAA,IAAI,EAAE;AADH;AAJa,CAApB;AASA,MAAME,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJH,IAAAA,IAAI,EAAE;AADF;AADM,CAAd;AAMA,MAAMI,WAAW,GAAG;AAClBC,EAAAA,EAAE,EAAE;AACFL,IAAAA,IAAI,EAAE;AADJ,GADc;AAIlB,KAAGE,KAJe;AAKlB,KAAGJ;AALe,CAApB;AAQA,OAAO,MAAMQ,IAAI,GAAG;AAClBC,EAAAA,OAAO,EAAE;AACPP,IAAAA,IAAI,EAAE;AADC,GADS;AAIlBK,EAAAA,EAAE,EAAE;AACFL,IAAAA,IAAI,EAAE;AADJ,GAJc;AAOlBA,EAAAA,IAAI,EAAE;AACJA,IAAAA,IAAI,EAAE;AADF,GAPY;AAUlBQ,EAAAA,KAAK,EAAE;AACLR,IAAAA,IAAI,EAAE;AADD,GAVW;AAalB,KAAGF,WAbe;AAclBW,EAAAA,YAAY,EAAE;AACZT,IAAAA,IAAI,EAAE,cADM;AAEZU,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,UAAU,EAAE,sBADd;AAEEC,MAAAA,QAAQ,EAAE;AAFZ,KADO,EAKP;AACED,MAAAA,UAAU,EAAE,oBADd;AAEEC,MAAAA,QAAQ,EAAE;AAFZ,KALO;AAFG,GAdI;AA2BlBC,EAAAA,QAAQ,EAAE;AACRb,IAAAA,IAAI,EAAE,UADE;AAERU,IAAAA,OAAO,EAAE;AAFD,GA3BQ;AA+BlBI,EAAAA,SAAS,EAAE;AACTd,IAAAA,IAAI,EAAE,WADG;AAETU,IAAAA,OAAO,EAAE;AAFA,GA/BO;AAmClBK,EAAAA,UAAU,EAAE;AACVf,IAAAA,IAAI,EAAE,YADI;AAEVH,IAAAA,SAAS,EAAGmB,GAAD,IAASnB,SAAS,CAACmB,GAAD,EAAMZ,WAAN,CAFnB;AAGVM,IAAAA,OAAO,EAAE;AAHC,GAnCM;AAwClBO,EAAAA,cAAc,EAAE;AACdjB,IAAAA,IAAI,EAAE,gBADQ;AAEdU,IAAAA,OAAO,EAAE;AAFK,GAxCE;AA4ClBQ,EAAAA,WAAW,EAAE;AACXlB,IAAAA,IAAI,EAAE,aADK;AAEXU,IAAAA,OAAO,EAAE;AAFE,GA5CK;AAgDlBS,EAAAA,YAAY,EAAE;AACZnB,IAAAA,IAAI,EAAE,cADM;AAEZU,IAAAA,OAAO,EAAE;AAFG,GAhDI;AAoDlBU,EAAAA,WAAW,EAAE;AACXpB,IAAAA,IAAI,EAAE,aADK;AAEXU,IAAAA,OAAO,EAAE;AAFE,GApDK;AAwDlBW,EAAAA,aAAa,EAAE;AACbrB,IAAAA,IAAI,EAAE,eADO;AAEbU,IAAAA,OAAO,EAAE;AAFI;AAxDG,CAAb","sourcesContent":["import transform from 'json-map-transform';\n\nconst COORDINATES = {\n mbs: {\n path: 'mbs'\n },\n obb: {\n path: 'obb'\n }\n};\n\nconst _href = {\n href: {\n path: 'href'\n }\n};\n\nconst PARENT_NODE = {\n id: {\n path: 'id'\n },\n ..._href,\n ...COORDINATES\n};\n\nexport const NODE = {\n version: {\n path: 'version'\n },\n id: {\n path: 'id'\n },\n path: {\n path: 'path'\n },\n level: {\n path: 'level'\n },\n ...COORDINATES,\n lodSelection: {\n path: 'lodSelection',\n default: [\n {\n metricType: 'maxScreenThresholdSQ',\n maxError: 196349.54374999998\n },\n {\n metricType: 'maxScreenThreshold',\n maxError: 999.99999999999994\n }\n ]\n },\n children: {\n path: 'children',\n default: null\n },\n neighbors: {\n path: 'neighbors',\n default: null\n },\n parentNode: {\n path: 'parentNode',\n transform: (val) => transform(val, PARENT_NODE),\n default: null\n },\n sharedResource: {\n path: 'sharedResource',\n default: null\n },\n featureData: {\n path: 'featureData',\n default: null\n },\n geometryData: {\n path: 'geometryData',\n default: null\n },\n textureData: {\n path: 'textureData',\n default: null\n },\n attributeData: {\n path: 'attributeData',\n default: null\n }\n};\n"],"file":"node.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/scene-server.js"],"names":["SCENE_SERVER_TEMPLATE","serviceItemId","path","serviceName","name","currentVersion","default","serviceVersion","supportedBindings","layers","transform","layers0"],"mappings":"AAAA,OAAO,MAAMA,qBAAqB,GAAG;AACnCC,EAAAA,aAAa,EAAE;AACbC,IAAAA,IAAI,EAAE;AADO,GADoB;AAInCC,EAAAA,WAAW,EAAE;AACXD,IAAAA,IAAI,EAAE;AADK,GAJsB;AAOnCE,EAAAA,IAAI,EAAE;AACJF,IAAAA,IAAI,EAAE;AADF,GAP6B;AAUnCG,EAAAA,cAAc,EAAE;AACdH,IAAAA,IAAI,EAAE,gBADQ;AAEdI,IAAAA,OAAO,EAAE;AAFK,GAVmB;AAcnCC,EAAAA,cAAc,EAAE;AACdL,IAAAA,IAAI,EAAE,gBADQ;AAEdI,IAAAA,OAAO,EAAE;AAFK,GAdmB;AAkBnCE,EAAAA,iBAAiB,EAAE;AACjBN,IAAAA,IAAI,EAAE,mBADW;AAEjBI,IAAAA,OAAO,EAAE,CAAC,MAAD;AAFQ,GAlBgB;AAsBnCG,EAAAA,MAAM,EAAE;AACNP,IAAAA,IAAI,EAAE,SADA;AAENQ,IAAAA,SAAS,EAAGC,OAAD,IAAa,CAACA,OAAD;AAFlB;AAtB2B,CAA9B","sourcesContent":["export const SCENE_SERVER_TEMPLATE = {\n serviceItemId: {\n path: 'serviceItemId'\n },\n serviceName: {\n path: 'layerName'\n },\n name: {\n path: 'layerName'\n },\n currentVersion: {\n path: 'currentVersion',\n default: 10.7\n },\n serviceVersion: {\n path: 'serviceVersion',\n default: '1.8'\n },\n supportedBindings: {\n path: 'supportedBindings',\n default: ['REST']\n },\n layers: {\n path: 'layers0',\n transform: (layers0) => [layers0]\n }\n};\n"],"file":"scene-server.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/shared-resources.js"],"names":["transform","MATERIAL_DEFINITION_INFO_PARAMS","renderMode","path","default","shininess","reflectivity","ambient","diffuse","specular","useVertexColorAlpha","vertexRegions","vertexColors","MATERIAL_DEFINITION_INFO","name","type","params","val","thisObject","originalObject","TEXTURE_DEFINITION_IMAGE","id","size","href","length","TEXTURE_DEFINITION_INFO","encoding","wrap","atlas","uvSet","channels","images","map","image","SHARED_RESOURCES_TEMPLATE","materialDefinitions","transfromMaterialDefinitions","textureDefinitions","transfromTextureDefinitions","materialDefinitionInfos","result","index","materialDefinitionInfo","entries","nodePath","textureDefinitionInfos","textureDefinitionInfo","imageIndex"],"mappings":"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","sourcesContent":["import transform from 'json-map-transform';\n\nconst MATERIAL_DEFINITION_INFO_PARAMS = {\n renderMode: {\n path: 'renderMode',\n default: 'solid'\n },\n shininess: {\n path: 'shininess',\n default: 1\n },\n reflectivity: {\n path: 'reflectivity',\n default: 0\n },\n ambient: {\n path: 'ambient',\n default: [1, 1, 1, 1]\n },\n diffuse: {\n path: 'diffuse',\n default: [1, 1, 1, 1]\n },\n specular: {\n path: 'specular',\n default: [0, 0, 0, 0]\n },\n useVertexColorAlpha: {\n path: 'useVertexColorAlpha',\n default: false\n },\n vertexRegions: {\n path: 'vertexRegions',\n default: false\n },\n vertexColors: {\n path: 'vertexColors',\n default: true\n }\n};\n\nconst MATERIAL_DEFINITION_INFO = {\n name: {\n path: 'name',\n default: 'standard'\n },\n type: {\n path: 'type',\n default: 'standard'\n },\n params: {\n path: 'params',\n transform: (val, thisObject, originalObject) =>\n transform(originalObject, MATERIAL_DEFINITION_INFO_PARAMS)\n }\n};\n\nconst TEXTURE_DEFINITION_IMAGE = {\n id: {\n path: 'id'\n },\n size: {\n path: 'size'\n },\n href: {\n path: 'href',\n default: ['../textures/0']\n },\n length: {\n path: 'length'\n }\n};\n\nconst TEXTURE_DEFINITION_INFO = {\n encoding: {\n path: 'encoding'\n },\n wrap: {\n path: 'wrap',\n default: ['none']\n },\n atlas: {\n path: 'atlas',\n default: false\n },\n uvSet: {\n path: 'uvSet',\n default: 'uv0'\n },\n channels: {\n path: 'channels',\n default: 'rgb'\n },\n images: {\n path: 'images',\n transform: (val, thisObject, originalObject) =>\n val.map((image) => transform(image, TEXTURE_DEFINITION_IMAGE))\n }\n};\n\nexport const SHARED_RESOURCES_TEMPLATE = {\n materialDefinitions: {\n path: 'materialDefinitionInfos',\n transform: transfromMaterialDefinitions\n },\n textureDefinitions: {\n path: 'textureDefinitionInfos',\n transform: transfromTextureDefinitions\n }\n};\n\nfunction transfromMaterialDefinitions(materialDefinitionInfos, thisObject, originalObject) {\n const result = {};\n for (const [index, materialDefinitionInfo] of materialDefinitionInfos.entries()) {\n result[`Mat${originalObject.nodePath}${index}`] = transform(\n materialDefinitionInfo,\n MATERIAL_DEFINITION_INFO\n );\n }\n return result;\n}\n\nfunction transfromTextureDefinitions(textureDefinitionInfos, thisObject, originalObject) {\n if (!textureDefinitionInfos) {\n return null;\n }\n const result = {};\n for (const [index, textureDefinitionInfo] of textureDefinitionInfos.entries()) {\n const imageIndex = `${originalObject.nodePath}${index}`;\n textureDefinitionInfo.imageIndex = imageIndex;\n result[imageIndex] = transform(textureDefinitionInfo, TEXTURE_DEFINITION_INFO);\n }\n return result;\n}\n"],"file":"shared-resources.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-converter/json-templates/store.js"],"names":["STORE","id","path","transform","val","toUpperCase","profile","default","version","resourcePattern","rootNode","extent","indexCRS","vertexCRS","normalReferenceFrame","attributeEncoding","textureEncoding","lodType","lodModel","defaultGeometrySchema","geometryType","header","property","type","topology","ordering","vertexAttributes","position","valueType","valuesPerElement","normal","uv0","color","featureAttributeOrder","featureAttributes","faceRange"],"mappings":"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","sourcesContent":["export const STORE = {\n id: {\n path: 'id',\n transform: (val) => val.toUpperCase()\n },\n profile: {\n path: 'profile',\n default: 'meshpyramids'\n },\n version: {\n path: 'version',\n default: '1.8'\n },\n resourcePattern: {\n path: 'resourcePattern',\n default: ['3dNodeIndexDocument', 'Attributes', 'SharedResource', 'Geometry']\n },\n rootNode: {\n path: 'rootNode',\n default: './nodes/root'\n },\n extent: {\n path: 'extent'\n },\n indexCRS: {\n path: 'indexCRS',\n default: 'http://www.opengis.net/def/crs/EPSG/0/4326'\n },\n vertexCRS: {\n path: 'vertexCRS',\n default: 'http://www.opengis.net/def/crs/EPSG/0/4326'\n },\n normalReferenceFrame: {\n path: 'normalReferenceFrame',\n default: 'east-north-up'\n },\n attributeEncoding: {\n path: 'attributeEncoding',\n default: 'application/octet-stream; version=1.6'\n },\n textureEncoding: {\n path: 'textureEncoding',\n default: ['image/jpeg', 'image/ktx2']\n },\n lodType: {\n path: 'lodType',\n default: 'MeshPyramid'\n },\n lodModel: {\n path: 'lodModel',\n default: 'node-switching'\n },\n defaultGeometrySchema: {\n path: 'defaultGeometrySchema',\n default: {\n geometryType: 'triangles',\n header: [\n {\n property: 'vertexCount',\n type: 'UInt32'\n },\n {\n property: 'featureCount',\n type: 'UInt32'\n }\n ],\n topology: 'PerAttributeArray',\n ordering: ['position', 'normal', 'uv0', 'color'],\n vertexAttributes: {\n position: {\n valueType: 'Float32',\n valuesPerElement: 3\n },\n normal: {\n valueType: 'Float32',\n valuesPerElement: 3\n },\n uv0: {\n valueType: 'Float32',\n valuesPerElement: 2\n },\n color: {\n valueType: 'UInt8',\n valuesPerElement: 4\n }\n },\n featureAttributeOrder: ['id', 'faceRange'],\n featureAttributes: {\n id: {\n valueType: 'UInt64',\n valuesPerElement: 1\n },\n faceRange: {\n valueType: 'UInt32',\n valuesPerElement: 2\n }\n }\n }\n }\n};\n"],"file":"store.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/i3s-server/app.js"],"names":["express","require","path","logger","cors","indexRouter","app","use","json","urlencoded","extended","static","join","__dirname","module","exports"],"mappings":"AAAA,MAAMA,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,MAAMC,IAAI,GAAGD,OAAO,CAAC,MAAD,CAApB;;AACA,MAAME,MAAM,GAAGF,OAAO,CAAC,QAAD,CAAtB;;AACA,MAAMG,IAAI,GAAGH,OAAO,CAAC,MAAD,CAApB;;AAEA,MAAMI,WAAW,GAAGJ,OAAO,CAAC,gBAAD,CAA3B;;AAEA,MAAMK,GAAG,GAAGN,OAAO,EAAnB;AAEAM,GAAG,CAACC,GAAJ,CAAQJ,MAAM,CAAC,KAAD,CAAd;AACAG,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACQ,IAAR,EAAR;AACAF,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACS,UAAR,CAAmB;AAACC,EAAAA,QAAQ,EAAE;AAAX,CAAnB,CAAR;AACAJ,GAAG,CAACC,GAAJ,CAAQP,OAAO,CAACW,MAAR,CAAeT,IAAI,CAACU,IAAL,CAAUC,SAAV,EAAqB,QAArB,CAAf,CAAR;AACAP,GAAG,CAACC,GAAJ,CAAQH,IAAI,EAAZ;AAEAE,GAAG,CAACC,GAAJ,CAAQ,GAAR,EAAaF,WAAb;AAEAS,MAAM,CAACC,OAAP,GAAiBT,GAAjB","sourcesContent":["const express = require('express');\nconst path = require('path');\nconst logger = require('morgan');\nconst cors = require('cors');\n\nconst indexRouter = require('./routes/index');\n\nconst app = express();\n\napp.use(logger('dev'));\napp.use(express.json());\napp.use(express.urlencoded({extended: false}));\napp.use(express.static(path.join(__dirname, 'public')));\napp.use(cors());\n\napp.use('/', indexRouter);\n\nmodule.exports = app;\n"],"file":"app.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-server/controllers/index-controller.js"],"names":["path","require","fs","promises","I3S_LAYER_PATH","process","env","I3sLayerPath","FULL_LAYER_PATH","join","cwd","getFileNameByUrl","url","extensions","ext","fileName","access","module","exports"],"mappings":"AAAA,MAAMA,IAAI,GAAGC,OAAO,CAAC,MAAD,CAApB;;AACA,MAAMC,EAAE,GAAGD,OAAO,CAAC,IAAD,CAAlB;;AAEA,MAAM;AAACE,EAAAA;AAAD,IAAaD,EAAnB;AAEA,MAAME,cAAc,GAAGC,OAAO,CAACC,GAAR,CAAYC,YAAZ,IAA4B,EAAnD;AACA,MAAMC,eAAe,GAAGR,IAAI,CAACS,IAAL,CAAUJ,OAAO,CAACK,GAAR,EAAV,EAAyBN,cAAzB,CAAxB;;AAEA,eAAeO,gBAAf,CAAgCC,GAAhC,EAAqC;AACnC,QAAMC,UAAU,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,EAAuB,MAAvB,EAA+B,KAA/B,EAAsC,SAAtC,EAAiD,MAAjD,CAAnB;;AACA,OAAK,MAAMC,GAAX,IAAkBD,UAAlB,EAA8B;AAC5B,UAAME,QAAQ,aAAMP,eAAN,SAAwBI,GAAxB,oBAAqCE,GAArC,CAAd;;AACA,QAAI;AACF,YAAMX,QAAQ,CAACa,MAAT,CAAgBD,QAAhB,CAAN;AACA,aAAOA,QAAP;AACD,KAHD,CAGE,MAAM;AACN;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AAEDE,MAAM,CAACC,OAAP,GAAiB;AACfP,EAAAA;AADe,CAAjB","sourcesContent":["const path = require('path');\nconst fs = require('fs');\n\nconst {promises} = fs;\n\nconst I3S_LAYER_PATH = process.env.I3sLayerPath || ''; // eslint-disable-line no-process-env, no-undef\nconst FULL_LAYER_PATH = path.join(process.cwd(), I3S_LAYER_PATH); // eslint-disable-line no-undef\n\nasync function getFileNameByUrl(url) {\n const extensions = ['json', 'bin', 'jpg', 'jpeg', 'png', 'bin.dds', 'ktx2'];\n for (const ext of extensions) {\n const fileName = `${FULL_LAYER_PATH}${url}/index.${ext}`;\n try {\n await promises.access(fileName);\n return fileName;\n } catch {\n continue; // eslint-disable-line no-continue\n }\n }\n return null;\n}\n\nmodule.exports = {\n getFileNameByUrl\n};\n"],"file":"index-controller.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/i3s-server/routes/index.js"],"names":["express","require","router","Router","getFileNameByUrl","get","req","res","next","fileName","path","sendFile","status","send","module","exports"],"mappings":"AAAA,MAAMA,OAAO,GAAGC,OAAO,CAAC,SAAD,CAAvB;;AACA,MAAMC,MAAM,GAAGF,OAAO,CAACG,MAAR,EAAf;;AACA,MAAM;AAACC,EAAAA;AAAD,IAAqBH,OAAO,CAAC,iCAAD,CAAlC;;AAGAC,MAAM,CAACG,GAAP,CAAW,GAAX,EAAgB,gBAAgBC,GAAhB,EAAqBC,GAArB,EAA0BC,IAA1B,EAAgC;AAC9C,QAAMC,QAAQ,GAAG,MAAML,gBAAgB,CAACE,GAAG,CAACI,IAAL,CAAvC;;AACA,MAAID,QAAJ,EAAc;AACZF,IAAAA,GAAG,CAACI,QAAJ,CAAaF,QAAb;AACD,GAFD,MAEO;AACLF,IAAAA,GAAG,CAACK,MAAJ,CAAW,GAAX;AACAL,IAAAA,GAAG,CAACM,IAAJ,CAAS,gBAAT;AACD;AACF,CARD;AAUAC,MAAM,CAACC,OAAP,GAAiBb,MAAjB","sourcesContent":["const express = require('express');\nconst router = express.Router();\nconst {getFileNameByUrl} = require('../controllers/index-controller');\n\n/* GET home page. */\nrouter.get('*', async function (req, res, next) {\n const fileName = await getFileNameByUrl(req.path);\n if (fileName) {\n res.sendFile(fileName);\n } else {\n res.status(404);\n res.send('File not found');\n }\n});\n\nmodule.exports = router;\n"],"file":"index.js"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["default","I3SConverter","NodePages","Tiles3DConverter","DepsInstaller"],"mappings":"AAAA,SAAQA,OAAO,IAAIC,YAAnB,QAAsC,+BAAtC;AACA,SAAQD,OAAO,IAAIE,SAAnB,QAAmC,oCAAnC;AAEA,SAAQF,OAAO,IAAIG,gBAAnB,QAA0C,yCAA1C;AAEA,SAAQC,aAAR,QAA4B,iCAA5B","sourcesContent":["export {default as I3SConverter} from './i3s-converter/i3s-converter';\nexport {default as NodePages} from './i3s-converter/helpers/node-pages';\n\nexport {default as Tiles3DConverter} from './3d-tiles-converter/3d-tiles-converter';\n\nexport {DepsInstaller} from './deps-installer/deps-installer';\n"],"file":"index.js"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* class GeoidHeightModel - "Gravity Height Model"
|
|
3
|
-
* Calculates difference between mean see level height and WGS84 ellipsoid height
|
|
4
|
-
* Input data have to be loaded from "Earth Gravity Model" *.pgm file with "PGMLoader"
|
|
5
|
-
* A particular model file can be loaded on https://geographiclib.sourceforge.io/html/geoid.html
|
|
6
|
-
*
|
|
7
|
-
* The implementation is ported from GeographicLib-1.50.1
|
|
8
|
-
*/
|
|
9
|
-
export class GeoidHeightModel {
|
|
10
|
-
/**
|
|
11
|
-
* @constructs
|
|
12
|
-
* Create a GeoidHeightModel instance.
|
|
13
|
-
* @param options - object which includes parameters parsed from *.pgm header
|
|
14
|
-
* @param options.data - binary buffer of *.pgm file
|
|
15
|
-
*/
|
|
16
|
-
constructor(options: {
|
|
17
|
-
cubic: boolean;
|
|
18
|
-
_width: number;
|
|
19
|
-
_height: number;
|
|
20
|
-
_rlonres: number;
|
|
21
|
-
_rlatres: number;
|
|
22
|
-
_offset: number;
|
|
23
|
-
_scale: number;
|
|
24
|
-
_swidth: number;
|
|
25
|
-
_datastart: number;
|
|
26
|
-
_maxerror: number;
|
|
27
|
-
_rmserror: number;
|
|
28
|
-
_description: string;
|
|
29
|
-
_datetime: string;
|
|
30
|
-
data: Uint8Array;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Calculates difference between mean see level height and WGS84 ellipsoid height
|
|
35
|
-
* Code is ported from /GeographicLib-1.50.1/src/Geoid.cpp
|
|
36
|
-
* @param lat - latitude
|
|
37
|
-
* @param lon - longitude
|
|
38
|
-
* @returns height in meters
|
|
39
|
-
*/
|
|
40
|
-
getHeight(lat: number, lon: number): number;
|
|
41
|
-
}
|