@loaders.gl/tile-converter 4.0.0-alpha.1 → 4.0.0-alpha.10
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/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 +280 -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 +289 -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/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/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 +232 -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/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/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 +40 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +119 -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 +128 -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 +23 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +76 -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/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/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 +34 -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 +370 -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 -33
- 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 +163 -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 +81 -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/{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/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
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {load, fetchFile} from '@loaders.gl/core';
|
|
2
|
+
import {ZipLoader} from '@loaders.gl/zip';
|
|
3
|
+
import {writeFile} from '../lib/utils/file-utils';
|
|
4
|
+
import {join} from 'path';
|
|
5
|
+
import {ChildProcessProxy} from '@loaders.gl/worker-utils';
|
|
6
|
+
|
|
7
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';
|
|
9
|
+
|
|
10
|
+
const PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Install external dependencies for converter:
|
|
14
|
+
* * PGM file (implemented);
|
|
15
|
+
* * Draco library (not implemented);
|
|
16
|
+
* * 7z archiver (not implemented);
|
|
17
|
+
*/
|
|
18
|
+
export class DepsInstaller {
|
|
19
|
+
/**
|
|
20
|
+
* Run instalation
|
|
21
|
+
* @param path destination folder
|
|
22
|
+
* @param workersPath destination folder for workers.
|
|
23
|
+
* This path is '' by default and is not used by tile-converter.
|
|
24
|
+
* It is used in tests to prevent rewriting actual workers during tests running
|
|
25
|
+
*/
|
|
26
|
+
async install(path: string = '', workersPath: string = ''): Promise<void> {
|
|
27
|
+
console.log('Installing "EGM2008-5" model...'); // eslint-disable-line no-console
|
|
28
|
+
const fileMap = await load(PGM_LINK, ZipLoader, {});
|
|
29
|
+
|
|
30
|
+
let depsPath = process.cwd();
|
|
31
|
+
if (path) {
|
|
32
|
+
depsPath = join(depsPath, path);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
await writeFile(depsPath, new Uint8Array(fileMap['geoids/egm2008-5.pgm']), 'egm2008-5.pgm');
|
|
36
|
+
|
|
37
|
+
console.log('Installing "I3S Content Loader worker"'); // eslint-disable-line no-console
|
|
38
|
+
await this.installWorker('i3s', 'i3s-content-worker-node.js', workersPath);
|
|
39
|
+
|
|
40
|
+
console.log('Installing "Draco Loader worker"'); // eslint-disable-line no-console
|
|
41
|
+
await this.installWorker('draco', 'draco-worker-node.js', workersPath);
|
|
42
|
+
|
|
43
|
+
console.log('Installing "Basis Loader worker"'); // eslint-disable-line no-console
|
|
44
|
+
await this.installWorker('textures', 'basis-worker-node.js', workersPath);
|
|
45
|
+
|
|
46
|
+
console.log('Installing "join-images" npm package');
|
|
47
|
+
const childProcess = new ChildProcessProxy();
|
|
48
|
+
await childProcess.start({
|
|
49
|
+
command: process.platform === 'win32' ? 'npm.cmd' : 'npm',
|
|
50
|
+
// `npm install sharp join-images` works unstable. It fails because installed `sharp` version
|
|
51
|
+
// may be different from the version required by `join-images`. Pointing to specific versions
|
|
52
|
+
// resolve this issue
|
|
53
|
+
arguments: ['install', 'sharp@0.30.4', 'join-images@1.1.3'],
|
|
54
|
+
wait: 0,
|
|
55
|
+
ignoreStderr: true
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
console.log('All dependencies were installed succesfully.'); // eslint-disable-line no-console
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private async installWorker(module: string, name: string, extraPath: string) {
|
|
62
|
+
const fileResponse = await fetchFile(
|
|
63
|
+
`https://unpkg.com/@loaders.gl/${module}@${VERSION}/dist/${name}`
|
|
64
|
+
);
|
|
65
|
+
const fileData = await fileResponse.arrayBuffer();
|
|
66
|
+
if (!fileData) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const path = join(process.cwd(), extraPath, 'modules', module, 'dist');
|
|
70
|
+
await writeFile(path, fileData, name);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type {WorkerObject} from '@loaders.gl/worker-utils';
|
|
2
|
+
import type {ConvertedAttributes} from './i3s-converter/types';
|
|
3
|
+
import type {Matrix4, Vector3} from '@math.gl/core';
|
|
4
|
+
import type {GLTFNodePostprocessed} from '@loaders.gl/gltf';
|
|
5
|
+
|
|
6
|
+
import {processOnWorker} from '@loaders.gl/worker-utils';
|
|
7
|
+
|
|
8
|
+
// __VERSION__ is injected by babel-plugin-version-inline
|
|
9
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
10
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
11
|
+
|
|
12
|
+
export type I3SAttributesWorkerOptions = {
|
|
13
|
+
_nodeWorkers: boolean;
|
|
14
|
+
reuseWorkers: boolean;
|
|
15
|
+
useCartesianPositions: boolean;
|
|
16
|
+
source: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type TextureImageProperties = {
|
|
20
|
+
data: Uint8Array;
|
|
21
|
+
compressed?: boolean;
|
|
22
|
+
height?: number;
|
|
23
|
+
width?: number;
|
|
24
|
+
components?: number;
|
|
25
|
+
mimeType?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export type B3DMAttributesData = {
|
|
29
|
+
gltfMaterials?: {id: string}[];
|
|
30
|
+
nodes: GLTFNodePostprocessed[];
|
|
31
|
+
images: (null | TextureImageProperties)[];
|
|
32
|
+
cartographicOrigin: Vector3;
|
|
33
|
+
cartesianModelMatrix: Matrix4;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* I3S Attributes Worker to handle B3DM object
|
|
38
|
+
*/
|
|
39
|
+
export const I3SAttributesWorker = {
|
|
40
|
+
id: 'i3s-attributes',
|
|
41
|
+
name: 'I3S Attributes Worker',
|
|
42
|
+
module: 'tile-converter',
|
|
43
|
+
version: VERSION,
|
|
44
|
+
options: {
|
|
45
|
+
useCartesianPositions: false
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Performs I3S attributes transformation
|
|
51
|
+
*/
|
|
52
|
+
export function transformI3SAttributesOnWorker(
|
|
53
|
+
attributesData: B3DMAttributesData,
|
|
54
|
+
options: I3SAttributesWorkerOptions
|
|
55
|
+
): Promise<Map<string, ConvertedAttributes>> {
|
|
56
|
+
return processOnWorker(I3SAttributesWorker, attributesData, options);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const _typecheckI3SAttributesWorker: WorkerObject = I3SAttributesWorker;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import {GLTFAccessorPostprocessed, GLTFMeshPrimitivePostprocessed} from '@loaders.gl/gltf';
|
|
2
|
+
import type {NumericArray} from '@loaders.gl/loader-utils';
|
|
3
|
+
import type {
|
|
4
|
+
GLTF_EXT_feature_metadata_attribute,
|
|
5
|
+
GLTF_EXT_feature_metadata_primitive
|
|
6
|
+
} from '@loaders.gl/gltf';
|
|
7
|
+
import {TypedArray} from '@math.gl/core';
|
|
8
|
+
import {TextureImageProperties} from '../../i3s-attributes-worker';
|
|
9
|
+
|
|
10
|
+
const EXT_MESH_FEATURES = 'EXT_mesh_features';
|
|
11
|
+
const EXT_FEATURE_METADATA = 'EXT_feature_metadata';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Getting batchIds from 3DTilesNext extensions.
|
|
15
|
+
* @param attributes - gltf accessors
|
|
16
|
+
* @param primitive - gltf primitive data
|
|
17
|
+
* @param images - gltf texture images
|
|
18
|
+
*/
|
|
19
|
+
export function handleBatchIdsExtensions(
|
|
20
|
+
attributes: {
|
|
21
|
+
[key: string]: GLTFAccessorPostprocessed;
|
|
22
|
+
},
|
|
23
|
+
primitive: GLTFMeshPrimitivePostprocessed,
|
|
24
|
+
images: (TextureImageProperties | null)[]
|
|
25
|
+
): NumericArray {
|
|
26
|
+
const extensions = primitive?.extensions;
|
|
27
|
+
|
|
28
|
+
if (!extensions) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
for (const [extensionName, extensionData] of Object.entries(extensions || {})) {
|
|
33
|
+
switch (extensionName) {
|
|
34
|
+
case EXT_FEATURE_METADATA:
|
|
35
|
+
return handleExtFeatureMetadataExtension(
|
|
36
|
+
attributes,
|
|
37
|
+
extensionData as GLTF_EXT_feature_metadata_primitive,
|
|
38
|
+
images
|
|
39
|
+
);
|
|
40
|
+
case EXT_MESH_FEATURES:
|
|
41
|
+
console.warn('EXT_mesh_features extension is not supported yet');
|
|
42
|
+
return [];
|
|
43
|
+
default:
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get batchIds from EXT_feature_metadata extension.
|
|
53
|
+
* Docs - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata
|
|
54
|
+
* @param attributes
|
|
55
|
+
* @param extFeatureMetadata
|
|
56
|
+
* @param textures
|
|
57
|
+
*/
|
|
58
|
+
function handleExtFeatureMetadataExtension(
|
|
59
|
+
attributes: {
|
|
60
|
+
[key: string]: GLTFAccessorPostprocessed;
|
|
61
|
+
},
|
|
62
|
+
extFeatureMetadata: GLTF_EXT_feature_metadata_primitive,
|
|
63
|
+
images: (TextureImageProperties | null)[]
|
|
64
|
+
): NumericArray {
|
|
65
|
+
// Take only first extension object to get batchIds attribute name.
|
|
66
|
+
const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];
|
|
67
|
+
|
|
68
|
+
if (featureIdAttribute?.featureIds?.attribute) {
|
|
69
|
+
const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];
|
|
70
|
+
return batchIdsAttribute.value;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (
|
|
74
|
+
featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&
|
|
75
|
+
featureIdAttribute?.featureIds?.hasOwnProperty('divisor')
|
|
76
|
+
) {
|
|
77
|
+
const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;
|
|
78
|
+
return generateImplicitFeatureIds(
|
|
79
|
+
featuresCount,
|
|
80
|
+
featureIdAttribute.featureIds.constant,
|
|
81
|
+
featureIdAttribute.featureIds.divisor
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Take only first extension object to get batchIds attribute name.
|
|
86
|
+
const featureIdTexture =
|
|
87
|
+
extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];
|
|
88
|
+
|
|
89
|
+
if (featureIdTexture) {
|
|
90
|
+
const textureAttributeIndex = featureIdTexture?.featureIds?.texture?.texCoord || 0;
|
|
91
|
+
const textCoordAttribute = `TEXCOORD_${textureAttributeIndex}`;
|
|
92
|
+
const textureCoordinates = attributes[textCoordAttribute].value;
|
|
93
|
+
return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Take only first extension texture to get batchIds from the root EXT_feature_metadata object.
|
|
97
|
+
const featureTexture =
|
|
98
|
+
extFeatureMetadata?.featureTextures && extFeatureMetadata?.featureTextures[0];
|
|
99
|
+
|
|
100
|
+
if (featureTexture) {
|
|
101
|
+
const batchIdsAttribute = attributes[featureTexture];
|
|
102
|
+
return batchIdsAttribute.value;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Generates implicit feature ids
|
|
110
|
+
* Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids
|
|
111
|
+
* @param featuresCount
|
|
112
|
+
* @param constant
|
|
113
|
+
* @param devisor
|
|
114
|
+
*/
|
|
115
|
+
function generateImplicitFeatureIds(
|
|
116
|
+
featuresCount: number,
|
|
117
|
+
constant: number = 0,
|
|
118
|
+
divisor: number = 0
|
|
119
|
+
): number[] {
|
|
120
|
+
let featureIds: number[] = [];
|
|
121
|
+
|
|
122
|
+
if (divisor > 0) {
|
|
123
|
+
let currentValue = constant;
|
|
124
|
+
let devisorCounter = divisor;
|
|
125
|
+
|
|
126
|
+
for (let index = 0; index < featuresCount; index++) {
|
|
127
|
+
featureIds.push(currentValue);
|
|
128
|
+
|
|
129
|
+
devisorCounter -= 1;
|
|
130
|
+
|
|
131
|
+
if (devisorCounter === 0) {
|
|
132
|
+
currentValue++;
|
|
133
|
+
devisorCounter = divisor;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
featureIds = Array<number>(featuresCount).fill(constant, 0, featuresCount);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return featureIds;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Get batchIds from texture.
|
|
145
|
+
* @param primitive
|
|
146
|
+
* @param featureIdTextures
|
|
147
|
+
*/
|
|
148
|
+
function generateBatchIdsFromTexture(
|
|
149
|
+
featureIdTexture: GLTF_EXT_feature_metadata_attribute,
|
|
150
|
+
textureCoordinates: TypedArray,
|
|
151
|
+
images: (TextureImageProperties | null)[]
|
|
152
|
+
) {
|
|
153
|
+
if (!images?.length) {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const CHANNELS_MAP = {
|
|
158
|
+
r: 0,
|
|
159
|
+
g: 1,
|
|
160
|
+
b: 2,
|
|
161
|
+
a: 3
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const textureIndex = featureIdTexture?.featureIds?.texture?.index;
|
|
165
|
+
const featureChannel = featureIdTexture?.featureIds?.channels;
|
|
166
|
+
|
|
167
|
+
if (!featureChannel || textureIndex === undefined) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const image = images[textureIndex];
|
|
172
|
+
const batchIds: number[] = [];
|
|
173
|
+
const channels = CHANNELS_MAP[featureChannel];
|
|
174
|
+
|
|
175
|
+
if (image && image?.width && image?.height && image?.components) {
|
|
176
|
+
for (let index = 0; index < textureCoordinates.length; index += 2) {
|
|
177
|
+
const u = textureCoordinates[index];
|
|
178
|
+
const v = textureCoordinates[index + 1];
|
|
179
|
+
|
|
180
|
+
const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);
|
|
181
|
+
const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);
|
|
182
|
+
|
|
183
|
+
const offset = (ty * image.width + tx) * image.components + channels;
|
|
184
|
+
const batchId = new Uint8Array(image.data)[offset];
|
|
185
|
+
|
|
186
|
+
batchIds.push(batchId);
|
|
187
|
+
}
|
|
188
|
+
} else {
|
|
189
|
+
console.warn(`Can't get batch Ids from ${image?.mimeType || ''} compressed texture`);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return batchIds;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Handle UVs if they are out of range [0,1].
|
|
197
|
+
* @param n
|
|
198
|
+
* @param m
|
|
199
|
+
*/
|
|
200
|
+
function emod(n: number): number {
|
|
201
|
+
return ((n % 1) + 1) % 1;
|
|
202
|
+
}
|
|
@@ -1,40 +1,42 @@
|
|
|
1
|
-
import type {BoundingVolumes,
|
|
1
|
+
import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';
|
|
2
2
|
|
|
3
3
|
import {Matrix3, Quaternion, Vector3} from '@math.gl/core';
|
|
4
4
|
import {Ellipsoid} from '@math.gl/geospatial';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
import {
|
|
6
|
+
OrientedBoundingBox,
|
|
7
|
+
makeOrientedBoundingBoxFromPoints,
|
|
8
|
+
makeBoundingSphereFromPoints,
|
|
9
|
+
BoundingSphere
|
|
10
|
+
} from '@math.gl/culling';
|
|
11
|
+
import {Geoid} from '@math.gl/geoid';
|
|
9
12
|
|
|
10
13
|
/**
|
|
11
14
|
* Create bounding volumes object from tile and geoid height model.
|
|
12
|
-
* @param tile
|
|
13
|
-
* @param geoidHeightModel
|
|
15
|
+
* @param sourceBoundingVolume - initialized bounding volume of the source tile
|
|
16
|
+
* @param geoidHeightModel - instance of Geoid class that converts elevation from geoidal to ellipsoidal and back
|
|
14
17
|
* @returns - Bounding volumes object
|
|
15
18
|
*/
|
|
16
19
|
export function createBoundingVolumes(
|
|
17
|
-
|
|
18
|
-
geoidHeightModel:
|
|
20
|
+
sourceBoundingVolume: OrientedBoundingBox | BoundingSphere,
|
|
21
|
+
geoidHeightModel: Geoid
|
|
19
22
|
): BoundingVolumes {
|
|
20
23
|
let radius;
|
|
21
24
|
let halfSize;
|
|
22
25
|
let quaternion;
|
|
23
26
|
|
|
24
|
-
const boundingVolume = tile.boundingVolume;
|
|
25
27
|
const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(
|
|
26
|
-
|
|
28
|
+
sourceBoundingVolume.center,
|
|
27
29
|
new Vector3()
|
|
28
30
|
);
|
|
29
31
|
cartographicCenter[2] =
|
|
30
32
|
cartographicCenter[2] -
|
|
31
33
|
geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);
|
|
32
|
-
if (
|
|
33
|
-
halfSize =
|
|
34
|
+
if (sourceBoundingVolume instanceof OrientedBoundingBox) {
|
|
35
|
+
halfSize = sourceBoundingVolume.halfSize;
|
|
34
36
|
radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();
|
|
35
|
-
quaternion =
|
|
37
|
+
quaternion = sourceBoundingVolume.quaternion;
|
|
36
38
|
} else {
|
|
37
|
-
radius =
|
|
39
|
+
radius = sourceBoundingVolume.radius;
|
|
38
40
|
halfSize = [radius, radius, radius];
|
|
39
41
|
quaternion = new Quaternion()
|
|
40
42
|
.fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))
|
|
@@ -52,30 +54,89 @@ export function createBoundingVolumes(
|
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param
|
|
57
|
-
* @
|
|
57
|
+
* Generates bounding volumes from geometry positions
|
|
58
|
+
* @param cartesianPositions
|
|
59
|
+
* @param geoidHeightModel
|
|
58
60
|
*/
|
|
59
|
-
export function
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
export function createBoundingVolumesFromGeometry(
|
|
62
|
+
cartesianPositions: Float32Array,
|
|
63
|
+
geoidHeightModel: Geoid
|
|
64
|
+
): {mbs: Mbs; obb: Obb} {
|
|
65
|
+
const positionVectors = convertPositionsToVectors(cartesianPositions);
|
|
66
|
+
|
|
67
|
+
const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);
|
|
68
|
+
const geometryMbs = makeBoundingSphereFromPoints(positionVectors);
|
|
69
|
+
|
|
70
|
+
let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());
|
|
71
|
+
let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());
|
|
72
|
+
|
|
73
|
+
mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);
|
|
74
|
+
obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],
|
|
78
|
+
obb: {
|
|
79
|
+
center: obbCenter,
|
|
80
|
+
halfSize: geometryObb.halfSize,
|
|
81
|
+
quaternion: geometryObb.quaternion
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Create array of posisitons where each vertex is vector
|
|
88
|
+
* @param {array} positions
|
|
89
|
+
* @returns {Vector3[]}
|
|
90
|
+
*/
|
|
91
|
+
export function convertPositionsToVectors(positions: Float32Array): Vector3[] {
|
|
92
|
+
const result: Vector3[] = [];
|
|
93
|
+
|
|
94
|
+
for (let i = 0; i < positions.length; i += 3) {
|
|
95
|
+
// TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.
|
|
96
|
+
// modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors
|
|
97
|
+
const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);
|
|
98
|
+
result.push(positionVector);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md
|
|
106
|
+
* @param
|
|
107
|
+
* @param boundingVolume
|
|
108
|
+
* @returns - fullExtent object
|
|
109
|
+
*/
|
|
110
|
+
export function convertBoundingVolumeToI3SFullExtent(
|
|
111
|
+
boundingVolume: OrientedBoundingBox | BoundingSphere
|
|
112
|
+
): FullExtent {
|
|
113
|
+
let sphere: BoundingSphere;
|
|
114
|
+
if (boundingVolume instanceof BoundingSphere) {
|
|
115
|
+
sphere = boundingVolume;
|
|
116
|
+
} else {
|
|
117
|
+
sphere = boundingVolume.getBoundingSphere();
|
|
118
|
+
}
|
|
119
|
+
const center: Vector3 = sphere.center;
|
|
120
|
+
const radius: number = sphere.radius;
|
|
121
|
+
const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(
|
|
122
|
+
new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),
|
|
64
123
|
new Vector3()
|
|
65
124
|
);
|
|
66
|
-
const
|
|
67
|
-
new Vector3(
|
|
125
|
+
const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(
|
|
126
|
+
new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),
|
|
68
127
|
new Vector3()
|
|
69
128
|
);
|
|
70
|
-
const isFirstRight = rightTop[0] < leftBottom[0];
|
|
71
|
-
const isFirstTop = rightTop[1] < leftBottom[1];
|
|
72
129
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
130
|
+
// Converter sometimes returns min values that are bigger then max,
|
|
131
|
+
// so we should check and take bigger value from max and smaller for nim
|
|
132
|
+
return {
|
|
133
|
+
xmin: Math.min(vertexMin[0], vertexMax[0]),
|
|
134
|
+
xmax: Math.max(vertexMin[0], vertexMax[0]),
|
|
135
|
+
ymin: Math.min(vertexMin[1], vertexMax[1]),
|
|
136
|
+
ymax: Math.max(vertexMin[1], vertexMax[1]),
|
|
137
|
+
zmin: Math.min(vertexMin[2], vertexMax[2]),
|
|
138
|
+
zmax: Math.max(vertexMin[2], vertexMax[2])
|
|
139
|
+
};
|
|
79
140
|
}
|
|
80
141
|
|
|
81
142
|
/**
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type {SceneLayer3D} from '@loaders.gl/i3s';
|
|
2
|
+
import {v4 as uuidv4} from 'uuid';
|
|
3
|
+
import transform from 'json-map-transform';
|
|
4
|
+
import {join} from 'path';
|
|
5
|
+
|
|
6
|
+
import {SCENE_SERVER as sceneServerTemplate} from '../json-templates/scene-server';
|
|
7
|
+
import {writeFile} from '../../lib/utils/file-utils';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Form and save sceneServer meta data into a file
|
|
11
|
+
* @param layerName - layer name to display
|
|
12
|
+
* @param layers0 - layer object embedded into sceneServer meta data
|
|
13
|
+
* @param rootPath - root path of new converted tileset
|
|
14
|
+
*/
|
|
15
|
+
export async function createSceneServerPath(
|
|
16
|
+
layerName: string,
|
|
17
|
+
layers0: SceneLayer3D,
|
|
18
|
+
rootPath: string
|
|
19
|
+
): Promise<void> {
|
|
20
|
+
const sceneServerData = {
|
|
21
|
+
serviceItemId: uuidv4().replace(/-/gi, ''),
|
|
22
|
+
layerName,
|
|
23
|
+
layers0
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const sceneServer = transform(sceneServerData, sceneServerTemplate());
|
|
27
|
+
const nodePagePath = join(rootPath, 'SceneServer');
|
|
28
|
+
await writeFile(nodePagePath, JSON.stringify(sceneServer));
|
|
29
|
+
}
|