@loaders.gl/tile-converter 4.0.0-alpha.4 → 4.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +273 -231
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +79 -18
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +269 -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 +186 -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 +60 -23
- package/dist/dist.min.js +63496 -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 +470 -0
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +301 -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 +123 -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 +90 -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 +1173 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +83 -0
- package/dist/es5/i3s-converter/helpers/gltf-attributes.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 +492 -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/i3s-converter.js +1519 -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 +2 -0
- package/dist/es5/i3s-converter/types.js.map +1 -0
- package/dist/es5/i3s-server/app.js +18 -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/routes/index.js +37 -0
- package/dist/es5/i3s-server/routes/index.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/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 +248 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +224 -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 +44 -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 +80 -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 +887 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +76 -0
- package/dist/esm/i3s-converter/helpers/gltf-attributes.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 +188 -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/i3s-converter.js +771 -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 +2 -0
- package/dist/esm/i3s-converter/types.js.map +1 -0
- package/dist/esm/i3s-server/app.js +16 -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/routes/index.js +16 -0
- package/dist/esm/i3s-server/routes/index.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/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 +37 -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 +11 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +141 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +41 -0
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/coordinate-converter.js +120 -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 +36 -35
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/geometry-converter.js +1149 -650
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +9 -0
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/gltf-attributes.js +88 -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 +95 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/node-index-document.js +250 -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/i3s-converter.d.ts +267 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -0
- package/dist/i3s-converter/i3s-converter.js +860 -861
- 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 +145 -0
- package/dist/i3s-converter/types.d.ts.map +1 -0
- package/dist/i3s-converter/types.js +2 -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 +2 -9
- 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/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/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 +133 -36
- package/dist/lib/utils/lod-conversion-utils.d.ts +21 -12
- 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 +35 -24
- package/src/3d-tiles-attributes-worker.ts +43 -0
- package/src/3d-tiles-converter/3d-tiles-converter.ts +124 -59
- package/src/3d-tiles-converter/helpers/{b3dm-converter.js → b3dm-converter.ts} +71 -38
- 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 +71 -0
- package/src/i3s-attributes-worker.ts +50 -0
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +206 -0
- package/src/i3s-converter/helpers/coordinate-converter.ts +87 -27
- 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 +1608 -0
- package/src/i3s-converter/helpers/gltf-attributes.ts +103 -0
- package/src/i3s-converter/helpers/node-debug.ts +146 -0
- package/src/i3s-converter/helpers/node-index-document.ts +315 -0
- package/src/i3s-converter/helpers/node-pages.ts +344 -0
- package/src/i3s-converter/i3s-converter.ts +557 -627
- 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 +165 -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 +139 -0
- package/src/lib/utils/{lod-conversion-utils.js → lod-conversion-utils.ts} +27 -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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tile-converter",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.6",
|
|
4
4
|
"description": "Converter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"3dTiles",
|
|
16
16
|
"i3s"
|
|
17
17
|
],
|
|
18
|
-
"types": "
|
|
19
|
-
"main": "dist/index.js",
|
|
20
|
-
"module": "dist/index.js",
|
|
18
|
+
"types": "dist/index.d.ts",
|
|
19
|
+
"main": "dist/es5/index.js",
|
|
20
|
+
"module": "dist/esm/index.js",
|
|
21
21
|
"sideEffects": false,
|
|
22
22
|
"bin": {
|
|
23
23
|
"tile-converter": "./bin/converter.js",
|
|
@@ -30,35 +30,42 @@
|
|
|
30
30
|
"README.md"
|
|
31
31
|
],
|
|
32
32
|
"browser": {
|
|
33
|
-
"fs": false
|
|
33
|
+
"fs": false,
|
|
34
|
+
"path": false,
|
|
35
|
+
"process": false,
|
|
36
|
+
"archiver": false,
|
|
37
|
+
"join-images": false
|
|
34
38
|
},
|
|
35
39
|
"scripts": {
|
|
36
|
-
"pre-build": "npm run build-bundle",
|
|
37
|
-
"
|
|
38
|
-
"build-bundle": "esbuild
|
|
39
|
-
"build-
|
|
40
|
+
"pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-i3s-attributes-worker && npm run build-3d-tiles-attributes-worker",
|
|
41
|
+
"build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/dist.min.js --platform=node --external:join-images",
|
|
42
|
+
"build-converter-bundle": "esbuild src/converter-cli.ts --outfile=dist/converter.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\"",
|
|
43
|
+
"build-i3s-attributes-worker": "esbuild src/workers/i3s-attributes-worker.ts --outfile=dist/i3s-attributes-worker.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"",
|
|
44
|
+
"build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
40
45
|
},
|
|
41
46
|
"dependencies": {
|
|
42
|
-
"@loaders.gl/3d-tiles": "4.0.0-alpha.
|
|
43
|
-
"@loaders.gl/crypto": "4.0.0-alpha.
|
|
44
|
-
"@loaders.gl/draco": "4.0.0-alpha.
|
|
45
|
-
"@loaders.gl/gltf": "4.0.0-alpha.
|
|
46
|
-
"@loaders.gl/i3s": "4.0.0-alpha.
|
|
47
|
-
"@loaders.gl/images": "4.0.0-alpha.
|
|
48
|
-
"@loaders.gl/loader-utils": "4.0.0-alpha.
|
|
49
|
-
"@loaders.gl/polyfills": "4.0.0-alpha.
|
|
50
|
-
"@loaders.gl/
|
|
51
|
-
"@loaders.gl/
|
|
52
|
-
"@loaders.gl/
|
|
53
|
-
"@
|
|
47
|
+
"@loaders.gl/3d-tiles": "4.0.0-alpha.6",
|
|
48
|
+
"@loaders.gl/crypto": "4.0.0-alpha.6",
|
|
49
|
+
"@loaders.gl/draco": "4.0.0-alpha.6",
|
|
50
|
+
"@loaders.gl/gltf": "4.0.0-alpha.6",
|
|
51
|
+
"@loaders.gl/i3s": "4.0.0-alpha.6",
|
|
52
|
+
"@loaders.gl/images": "4.0.0-alpha.6",
|
|
53
|
+
"@loaders.gl/loader-utils": "4.0.0-alpha.6",
|
|
54
|
+
"@loaders.gl/polyfills": "4.0.0-alpha.6",
|
|
55
|
+
"@loaders.gl/schema": "4.0.0-alpha.6",
|
|
56
|
+
"@loaders.gl/textures": "4.0.0-alpha.6",
|
|
57
|
+
"@loaders.gl/tiles": "4.0.0-alpha.6",
|
|
58
|
+
"@loaders.gl/worker-utils": "4.0.0-alpha.6",
|
|
59
|
+
"@loaders.gl/zip": "4.0.0-alpha.6",
|
|
54
60
|
"@math.gl/core": "^3.5.1",
|
|
55
61
|
"@math.gl/culling": "^3.5.1",
|
|
62
|
+
"@math.gl/geoid": "^3.5.1",
|
|
56
63
|
"@math.gl/geospatial": "^3.5.1",
|
|
57
64
|
"archiver": "^5.0.0",
|
|
58
65
|
"cors": "^2.8.5",
|
|
59
66
|
"crypt": "^0.0.2",
|
|
60
67
|
"debug": "~2.6.9",
|
|
61
|
-
"express": "~4.
|
|
68
|
+
"express": "~4.17.3",
|
|
62
69
|
"json-map-transform": "^1.2.6",
|
|
63
70
|
"jszip": "^3.5.0",
|
|
64
71
|
"md5": "^2.3.0",
|
|
@@ -66,7 +73,11 @@
|
|
|
66
73
|
"uuid": "^8.1.0"
|
|
67
74
|
},
|
|
68
75
|
"peerDependencies": {
|
|
69
|
-
"@loaders.gl/core": "
|
|
76
|
+
"@loaders.gl/core": "4.0.0-alpha.5"
|
|
70
77
|
},
|
|
71
|
-
"
|
|
78
|
+
"quarantinedDependencies": {
|
|
79
|
+
"join-images": "^1.1.3",
|
|
80
|
+
"sharp": "^0.31.3"
|
|
81
|
+
},
|
|
82
|
+
"gitHead": "acc1985050dfaa0f1f0c066f8da5bce7454a046c"
|
|
72
83
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type {WorkerObject} from '@loaders.gl/worker-utils';
|
|
2
|
+
import type {FeatureAttribute} from '@loaders.gl/i3s';
|
|
3
|
+
|
|
4
|
+
import {processOnWorker} from '@loaders.gl/worker-utils';
|
|
5
|
+
|
|
6
|
+
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
9
|
+
|
|
10
|
+
export type Tile3DAttributesWorkerOptions = {
|
|
11
|
+
featureAttributes: FeatureAttribute | null;
|
|
12
|
+
source: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type I3SAttributesData = {
|
|
16
|
+
tileContent: any;
|
|
17
|
+
textureFormat: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* I3S Attributes Worker to handle B3DM object
|
|
22
|
+
*/
|
|
23
|
+
export const Tile3dAttributesWorker = {
|
|
24
|
+
id: '3d-tiles-attributes',
|
|
25
|
+
name: '3DTiles Attributes Worker',
|
|
26
|
+
module: 'tile-converter',
|
|
27
|
+
version: VERSION,
|
|
28
|
+
options: {
|
|
29
|
+
featureAttributes: null
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Performs I3S attributes transformation
|
|
35
|
+
*/
|
|
36
|
+
export function transform3DTilesAttributesOnWorker(
|
|
37
|
+
i3sAttributesData: I3SAttributesData,
|
|
38
|
+
options: Tile3DAttributesWorkerOptions
|
|
39
|
+
): Promise<ArrayBuffer> {
|
|
40
|
+
return processOnWorker(Tile3dAttributesWorker, i3sAttributesData, options);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export const _typecheckI3SAttributesWorker: WorkerObject = Tile3dAttributesWorker;
|
|
@@ -4,9 +4,10 @@ import type {Node3D} from '@loaders.gl/3d-tiles';
|
|
|
4
4
|
import {join} from 'path';
|
|
5
5
|
import process from 'process';
|
|
6
6
|
import transform from 'json-map-transform';
|
|
7
|
-
import {load} from '@loaders.gl/core';
|
|
7
|
+
import {fetchFile, getLoaderOptions, load, isBrowser} from '@loaders.gl/core';
|
|
8
8
|
import {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';
|
|
9
9
|
import {Tileset3D, Tile3D} from '@loaders.gl/tiles';
|
|
10
|
+
import {Geoid} from '@math.gl/geoid';
|
|
10
11
|
|
|
11
12
|
import {PGMLoader} from '../pgm-loader';
|
|
12
13
|
import {i3sObbTo3dTilesObb} from './helpers/i3s-obb-to-3d-tiles-obb';
|
|
@@ -14,9 +15,14 @@ import {convertScreenThresholdToGeometricError} from '../lib/utils/lod-conversio
|
|
|
14
15
|
import {writeFile, removeDir} from '../lib/utils/file-utils';
|
|
15
16
|
import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
|
|
16
17
|
import {TILESET as tilesetTemplate} from './json-templates/tileset';
|
|
17
|
-
import B3dmConverter from './helpers/b3dm-converter';
|
|
18
18
|
import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
I3SAttributesData,
|
|
21
|
+
Tile3dAttributesWorker,
|
|
22
|
+
transform3DTilesAttributesOnWorker
|
|
23
|
+
} from '../3d-tiles-attributes-worker';
|
|
24
|
+
import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
|
|
25
|
+
import {BROWSER_ERROR_MESSAGE} from '../constants';
|
|
20
26
|
|
|
21
27
|
const I3S = 'I3S';
|
|
22
28
|
|
|
@@ -28,9 +34,10 @@ export default class Tiles3DConverter {
|
|
|
28
34
|
tilesetPath: string;
|
|
29
35
|
vertexCounter: number;
|
|
30
36
|
conversionStartTime: [number, number];
|
|
31
|
-
geoidHeightModel:
|
|
32
|
-
sourceTileset: Tileset3D;
|
|
33
|
-
attributeStorageInfo: AttributeStorageInfo;
|
|
37
|
+
geoidHeightModel: Geoid | null;
|
|
38
|
+
sourceTileset: Tileset3D | null;
|
|
39
|
+
attributeStorageInfo: AttributeStorageInfo | null;
|
|
40
|
+
workerSource: {[key: string]: string} = {};
|
|
34
41
|
|
|
35
42
|
constructor() {
|
|
36
43
|
this.options = {};
|
|
@@ -40,6 +47,7 @@ export default class Tiles3DConverter {
|
|
|
40
47
|
this.geoidHeightModel = null;
|
|
41
48
|
this.sourceTileset = null;
|
|
42
49
|
this.attributeStorageInfo = null;
|
|
50
|
+
this.workerSource = {};
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
/**
|
|
@@ -51,13 +59,17 @@ export default class Tiles3DConverter {
|
|
|
51
59
|
* @param options.egmFilePath location of *.pgm file to convert heights from ellipsoidal to gravity-related format
|
|
52
60
|
* @param options.maxDepth The max tree depth of conversion
|
|
53
61
|
*/
|
|
54
|
-
|
|
62
|
+
public async convert(options: {
|
|
55
63
|
inputUrl: string;
|
|
56
64
|
outputPath: string;
|
|
57
65
|
tilesetName: string;
|
|
58
|
-
maxDepth
|
|
66
|
+
maxDepth?: number;
|
|
59
67
|
egmFilePath: string;
|
|
60
68
|
}): Promise<any> {
|
|
69
|
+
if (isBrowser) {
|
|
70
|
+
console.log(BROWSER_ERROR_MESSAGE);
|
|
71
|
+
return BROWSER_ERROR_MESSAGE;
|
|
72
|
+
}
|
|
61
73
|
const {inputUrl, outputPath, tilesetName, maxDepth, egmFilePath} = options;
|
|
62
74
|
this.conversionStartTime = process.hrtime();
|
|
63
75
|
this.options = {maxDepth};
|
|
@@ -66,13 +78,25 @@ export default class Tiles3DConverter {
|
|
|
66
78
|
this.geoidHeightModel = await load(egmFilePath, PGMLoader);
|
|
67
79
|
console.log('Loading egm file completed!'); // eslint-disable-line
|
|
68
80
|
|
|
81
|
+
await this.loadWorkers();
|
|
82
|
+
|
|
69
83
|
const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
|
|
84
|
+
|
|
70
85
|
this.sourceTileset = new Tileset3D(sourceTilesetJson, {
|
|
71
|
-
loadOptions: {
|
|
86
|
+
loadOptions: {
|
|
87
|
+
_nodeWorkers: true,
|
|
88
|
+
reuseWorkers: true,
|
|
89
|
+
'i3s-content-nodejs': {
|
|
90
|
+
workerUrl: './modules/i3s/dist/i3s-content-nodejs-worker.js'
|
|
91
|
+
},
|
|
92
|
+
i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}
|
|
93
|
+
}
|
|
72
94
|
});
|
|
73
95
|
|
|
74
|
-
|
|
75
|
-
|
|
96
|
+
await this.sourceTileset.tilesetInitializationPromise;
|
|
97
|
+
const rootNode = this.sourceTileset.root!;
|
|
98
|
+
if (!rootNode.header.obb) {
|
|
99
|
+
rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
|
|
76
100
|
}
|
|
77
101
|
|
|
78
102
|
this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);
|
|
@@ -86,18 +110,83 @@ export default class Tiles3DConverter {
|
|
|
86
110
|
|
|
87
111
|
const rootTile: Node3D = {
|
|
88
112
|
boundingVolume: {
|
|
89
|
-
box: i3sObbTo3dTilesObb(
|
|
113
|
+
box: i3sObbTo3dTilesObb(rootNode.header.obb, this.geoidHeightModel)
|
|
90
114
|
},
|
|
91
|
-
geometricError: convertScreenThresholdToGeometricError(
|
|
115
|
+
geometricError: convertScreenThresholdToGeometricError(rootNode),
|
|
92
116
|
children: []
|
|
93
117
|
};
|
|
94
118
|
|
|
95
|
-
await this._addChildren(
|
|
119
|
+
await this._addChildren(rootNode, rootTile, 1);
|
|
96
120
|
|
|
97
|
-
const tileset = transform({root: rootTile}, tilesetTemplate);
|
|
121
|
+
const tileset = transform({root: rootTile}, tilesetTemplate());
|
|
98
122
|
await writeFile(this.tilesetPath, JSON.stringify(tileset), 'tileset.json');
|
|
99
123
|
|
|
100
124
|
this._finishConversion({slpk: false, outputPath, tilesetName});
|
|
125
|
+
|
|
126
|
+
// Clean up worker pools
|
|
127
|
+
const workerFarm = WorkerFarm.getWorkerFarm({});
|
|
128
|
+
workerFarm.destroy();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Convert particular I3S Node
|
|
133
|
+
* @param parentSourceNode the parent node tile object (@loaders.gl/tiles/Tile3D)
|
|
134
|
+
* @param parentNode object in resulting tileset
|
|
135
|
+
* @param level a current level of a tree depth
|
|
136
|
+
* @param childNodeInfo child node to convert
|
|
137
|
+
*/
|
|
138
|
+
private async convertChildNode(
|
|
139
|
+
parentSourceNode: Tile3D,
|
|
140
|
+
parentNode: Node3D,
|
|
141
|
+
level: number,
|
|
142
|
+
childNodeInfo: NodeReference
|
|
143
|
+
): Promise<void> {
|
|
144
|
+
const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
|
|
145
|
+
parentSourceNode.children.push(sourceChild);
|
|
146
|
+
if (sourceChild.contentUrl) {
|
|
147
|
+
await this.sourceTileset!._loadTile(sourceChild);
|
|
148
|
+
this.vertexCounter += sourceChild.content.vertexCount;
|
|
149
|
+
|
|
150
|
+
let featureAttributes: FeatureAttribute | null = null;
|
|
151
|
+
if (this.attributeStorageInfo) {
|
|
152
|
+
featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!sourceChild.header.obb) {
|
|
156
|
+
sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const boundingVolume = {
|
|
160
|
+
box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
|
|
161
|
+
};
|
|
162
|
+
const child: Node3D = {
|
|
163
|
+
boundingVolume,
|
|
164
|
+
geometricError: convertScreenThresholdToGeometricError(sourceChild),
|
|
165
|
+
children: []
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const i3sAttributesData: I3SAttributesData = {
|
|
169
|
+
tileContent: sourceChild.content,
|
|
170
|
+
textureFormat: sourceChild?.header?.textureFormat
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const b3dm = await transform3DTilesAttributesOnWorker(i3sAttributesData, {
|
|
174
|
+
source: this.workerSource.tile3dWorkerSource,
|
|
175
|
+
featureAttributes
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
child.content = {
|
|
179
|
+
uri: `${sourceChild.id}.b3dm`,
|
|
180
|
+
boundingVolume
|
|
181
|
+
};
|
|
182
|
+
await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
|
|
183
|
+
parentNode.children.push(child);
|
|
184
|
+
|
|
185
|
+
sourceChild.unloadContent();
|
|
186
|
+
await this._addChildren(sourceChild, child, level + 1);
|
|
187
|
+
} else {
|
|
188
|
+
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
189
|
+
}
|
|
101
190
|
}
|
|
102
191
|
|
|
103
192
|
/**
|
|
@@ -114,45 +203,11 @@ export default class Tiles3DConverter {
|
|
|
114
203
|
if (this.options.maxDepth && level > this.options.maxDepth) {
|
|
115
204
|
return;
|
|
116
205
|
}
|
|
206
|
+
const promises: Promise<void>[] = [];
|
|
117
207
|
for (const childNodeInfo of parentSourceNode.header.children || []) {
|
|
118
|
-
|
|
119
|
-
parentSourceNode.children.push(sourceChild);
|
|
120
|
-
if (sourceChild.contentUrl) {
|
|
121
|
-
await this.sourceTileset._loadTile(sourceChild);
|
|
122
|
-
this.vertexCounter += sourceChild.content.vertexCount;
|
|
123
|
-
|
|
124
|
-
let attributes = null;
|
|
125
|
-
if (this.attributeStorageInfo) {
|
|
126
|
-
attributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (!sourceChild.header.obb) {
|
|
130
|
-
sourceChild.header.obb = createObbFromMbs(sourceChild.header.mbs);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const boundingVolume = {
|
|
134
|
-
box: i3sObbTo3dTilesObb(sourceChild.header.obb, this.geoidHeightModel)
|
|
135
|
-
};
|
|
136
|
-
const child: Node3D = {
|
|
137
|
-
boundingVolume,
|
|
138
|
-
geometricError: convertScreenThresholdToGeometricError(sourceChild),
|
|
139
|
-
children: []
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
const b3dm = await new B3dmConverter().convert(sourceChild, attributes);
|
|
143
|
-
child.content = {
|
|
144
|
-
uri: `${sourceChild.id}.b3dm`,
|
|
145
|
-
boundingVolume
|
|
146
|
-
};
|
|
147
|
-
await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
|
|
148
|
-
parentNode.children.push(child);
|
|
149
|
-
|
|
150
|
-
sourceChild.unloadContent();
|
|
151
|
-
await this._addChildren(sourceChild, child, level + 1);
|
|
152
|
-
} else {
|
|
153
|
-
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
154
|
-
}
|
|
208
|
+
promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
|
|
155
209
|
}
|
|
210
|
+
await Promise.all(promises);
|
|
156
211
|
}
|
|
157
212
|
|
|
158
213
|
/**
|
|
@@ -163,18 +218,18 @@ export default class Tiles3DConverter {
|
|
|
163
218
|
*/
|
|
164
219
|
private async _loadChildNode(parentNode: Tile3D, childNodeInfo: NodeReference): Promise<Tile3D> {
|
|
165
220
|
let header;
|
|
166
|
-
if (this.sourceTileset
|
|
221
|
+
if (this.sourceTileset!.tileset.nodePages) {
|
|
167
222
|
console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef
|
|
168
|
-
header = await this.sourceTileset
|
|
223
|
+
header = await this.sourceTileset!.tileset.nodePagesTile.formTileFromNodePages(
|
|
169
224
|
childNodeInfo.id
|
|
170
225
|
);
|
|
171
226
|
} else {
|
|
172
|
-
const {loader} = this.sourceTileset
|
|
173
|
-
const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href);
|
|
227
|
+
const {loader} = this.sourceTileset!;
|
|
228
|
+
const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);
|
|
174
229
|
// load metadata
|
|
175
230
|
const options = {
|
|
176
231
|
i3s: {
|
|
177
|
-
...this.sourceTileset
|
|
232
|
+
...this.sourceTileset!.loadOptions,
|
|
178
233
|
isTileHeader: true,
|
|
179
234
|
loadContent: false
|
|
180
235
|
}
|
|
@@ -183,7 +238,7 @@ export default class Tiles3DConverter {
|
|
|
183
238
|
console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef
|
|
184
239
|
header = await load(nodeUrl, loader, options);
|
|
185
240
|
}
|
|
186
|
-
return new Tile3D(this.sourceTileset
|
|
241
|
+
return new Tile3D(this.sourceTileset!, header, parentNode);
|
|
187
242
|
}
|
|
188
243
|
|
|
189
244
|
/**
|
|
@@ -218,7 +273,7 @@ export default class Tiles3DConverter {
|
|
|
218
273
|
sourceChild: Tile3D,
|
|
219
274
|
attributeStorageInfo: AttributeStorageInfo
|
|
220
275
|
): Promise<FeatureAttribute> {
|
|
221
|
-
const promises = [];
|
|
276
|
+
const promises: any[] = [];
|
|
222
277
|
const {attributeUrls} = sourceChild.header;
|
|
223
278
|
|
|
224
279
|
for (let index = 0; index < attributeUrls.length; index++) {
|
|
@@ -286,4 +341,14 @@ export default class Tiles3DConverter {
|
|
|
286
341
|
console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line
|
|
287
342
|
console.log(`------------------------------------------------`); // eslint-disable-line
|
|
288
343
|
}
|
|
344
|
+
|
|
345
|
+
private async loadWorkers(): Promise<void> {
|
|
346
|
+
console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console
|
|
347
|
+
const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});
|
|
348
|
+
const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);
|
|
349
|
+
const source = await sourceResponse.text();
|
|
350
|
+
|
|
351
|
+
this.workerSource.tile3dWorkerSource = source;
|
|
352
|
+
console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console
|
|
353
|
+
}
|
|
289
354
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {I3SAttributesData} from '../../3d-tiles-attributes-worker';
|
|
2
|
+
|
|
3
|
+
import {encodeSync} from '@loaders.gl/core';
|
|
2
4
|
import {GLTFScenegraph, GLTFWriter} from '@loaders.gl/gltf';
|
|
3
5
|
import {Tile3DWriter} from '@loaders.gl/3d-tiles';
|
|
4
|
-
import {ImageWriter} from '@loaders.gl/images';
|
|
5
6
|
import {Matrix4, Vector3} from '@math.gl/core';
|
|
6
7
|
import {Ellipsoid} from '@math.gl/geospatial';
|
|
7
8
|
import {convertTextureAtlas} from './texture-atlas';
|
|
@@ -9,33 +10,57 @@ import {convertTextureAtlas} from './texture-atlas';
|
|
|
9
10
|
const Z_UP_TO_Y_UP_MATRIX = new Matrix4([1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
|
|
10
11
|
const scratchVector = new Vector3();
|
|
11
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Converts content of an I3S node to *.b3dm's file content
|
|
15
|
+
*/
|
|
12
16
|
export default class B3dmConverter {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
// @ts-expect-error
|
|
18
|
+
rtcCenter: Float32Array;
|
|
19
|
+
i3sTile: any;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The starter of content conversion
|
|
23
|
+
* @param i3sTile - Tile3D instance for I3S node
|
|
24
|
+
* @returns - encoded content
|
|
25
|
+
*/
|
|
26
|
+
async convert(
|
|
27
|
+
i3sAttributesData: I3SAttributesData,
|
|
28
|
+
featureAttributes: any = null
|
|
29
|
+
): Promise<ArrayBuffer> {
|
|
30
|
+
const gltf = await this.buildGltf(i3sAttributesData, featureAttributes);
|
|
16
31
|
const b3dm = encodeSync(
|
|
17
32
|
{
|
|
18
33
|
gltfEncoded: new Uint8Array(gltf),
|
|
19
34
|
type: 'b3dm',
|
|
20
|
-
featuresLength: this._getFeaturesLength(
|
|
21
|
-
batchTable:
|
|
35
|
+
featuresLength: this._getFeaturesLength(featureAttributes),
|
|
36
|
+
batchTable: featureAttributes
|
|
22
37
|
},
|
|
23
38
|
Tile3DWriter
|
|
24
39
|
);
|
|
25
40
|
return b3dm;
|
|
26
41
|
}
|
|
27
42
|
|
|
28
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Build and encode gltf
|
|
45
|
+
* @param i3sTile - Tile3D instance for I3S node
|
|
46
|
+
* @returns - encoded glb content
|
|
47
|
+
*/
|
|
48
|
+
async buildGltf(
|
|
49
|
+
i3sAttributesData: I3SAttributesData,
|
|
50
|
+
featureAttributes: any
|
|
51
|
+
): Promise<ArrayBuffer> {
|
|
52
|
+
const {tileContent, textureFormat} = i3sAttributesData;
|
|
29
53
|
const {
|
|
30
54
|
material,
|
|
31
55
|
attributes,
|
|
32
56
|
indices: originalIndices,
|
|
33
57
|
cartesianOrigin,
|
|
34
|
-
cartographicOrigin
|
|
35
|
-
|
|
58
|
+
cartographicOrigin,
|
|
59
|
+
modelMatrix
|
|
60
|
+
} = tileContent;
|
|
36
61
|
const gltfBuilder = new GLTFScenegraph();
|
|
37
62
|
|
|
38
|
-
const textureIndex = await this._addI3sTextureToGltf(
|
|
63
|
+
const textureIndex = await this._addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder);
|
|
39
64
|
const pbrMaterialInfo = this._convertI3sMaterialToGltfMaterial(material, textureIndex);
|
|
40
65
|
const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
|
|
41
66
|
|
|
@@ -52,8 +77,10 @@ export default class B3dmConverter {
|
|
|
52
77
|
attributes.positions.value = this._normalizePositions(
|
|
53
78
|
positionsValue,
|
|
54
79
|
cartesianOrigin,
|
|
55
|
-
cartographicOrigin
|
|
80
|
+
cartographicOrigin,
|
|
81
|
+
modelMatrix
|
|
56
82
|
);
|
|
83
|
+
this._createBatchIds(tileContent, featureAttributes);
|
|
57
84
|
if (attributes.normals && !this._checkNormals(attributes.normals.value)) {
|
|
58
85
|
delete attributes.normals;
|
|
59
86
|
}
|
|
@@ -62,7 +89,8 @@ export default class B3dmConverter {
|
|
|
62
89
|
const meshIndex = gltfBuilder.addMesh({
|
|
63
90
|
attributes,
|
|
64
91
|
indices,
|
|
65
|
-
material: materialIndex
|
|
92
|
+
material: materialIndex,
|
|
93
|
+
mode: 4
|
|
66
94
|
});
|
|
67
95
|
const transformMatrix = this._generateTransformMatrix(cartesianOrigin);
|
|
68
96
|
const nodeIndex = gltfBuilder.addNode({meshIndex, matrix: transformMatrix});
|
|
@@ -82,11 +110,8 @@ export default class B3dmConverter {
|
|
|
82
110
|
* @param {GLTFScenegraph} gltfBuilder - gltfScenegraph instance to construct GLTF
|
|
83
111
|
* @returns {Promise<number | null>} - GLTF texture index
|
|
84
112
|
*/
|
|
85
|
-
async _addI3sTextureToGltf(
|
|
86
|
-
const {
|
|
87
|
-
content: {texture, material, attributes},
|
|
88
|
-
header: {textureFormat}
|
|
89
|
-
} = i3sTile;
|
|
113
|
+
async _addI3sTextureToGltf(tileContent, textureFormat, gltfBuilder) {
|
|
114
|
+
const {texture, material, attributes} = tileContent;
|
|
90
115
|
let textureIndex = null;
|
|
91
116
|
let selectedTexture = texture;
|
|
92
117
|
if (!texture && material) {
|
|
@@ -97,8 +122,7 @@ export default class B3dmConverter {
|
|
|
97
122
|
}
|
|
98
123
|
if (selectedTexture) {
|
|
99
124
|
const mimeType = this._deduceMimeTypeFromFormat(textureFormat);
|
|
100
|
-
const
|
|
101
|
-
const imageIndex = gltfBuilder.addImage(imageBuffer, mimeType);
|
|
125
|
+
const imageIndex = gltfBuilder.addImage(selectedTexture, mimeType);
|
|
102
126
|
textureIndex = gltfBuilder.addTexture({imageIndex});
|
|
103
127
|
delete attributes.colors;
|
|
104
128
|
}
|
|
@@ -109,14 +133,18 @@ export default class B3dmConverter {
|
|
|
109
133
|
* Generate a positions array which is correct for 3DTiles/GLTF format
|
|
110
134
|
* @param {Float64Array} positionsValue - the input geometry positions array
|
|
111
135
|
* @param {number[]} cartesianOrigin - the tile center in the cartesian coordinate system
|
|
136
|
+
* @param {number[]} cartographicOrigin - the tile center in the cartographic coordinate system
|
|
137
|
+
* @param {number[]} modelMatrix - the model matrix of geometry
|
|
112
138
|
* @returns {Float32Array} - the output geometry positions array
|
|
113
139
|
*/
|
|
114
|
-
_normalizePositions(positionsValue, cartesianOrigin, cartographicOrigin) {
|
|
140
|
+
_normalizePositions(positionsValue, cartesianOrigin, cartographicOrigin, modelMatrix) {
|
|
115
141
|
const newPositionsValue = new Float32Array(positionsValue.length);
|
|
116
142
|
for (let index = 0; index < positionsValue.length; index += 3) {
|
|
117
143
|
const vertex = positionsValue.subarray(index, index + 3);
|
|
118
144
|
const cartesianOriginVector = new Vector3(cartesianOrigin);
|
|
119
|
-
let vertexVector = new Vector3(Array.from(vertex))
|
|
145
|
+
let vertexVector = new Vector3(Array.from(vertex))
|
|
146
|
+
.transform(modelMatrix)
|
|
147
|
+
.add(cartographicOrigin);
|
|
120
148
|
Ellipsoid.WGS84.cartographicToCartesian(vertexVector, scratchVector);
|
|
121
149
|
vertexVector = scratchVector.subtract(cartesianOriginVector);
|
|
122
150
|
newPositionsValue.set(vertexVector, index);
|
|
@@ -139,25 +167,28 @@ export default class B3dmConverter {
|
|
|
139
167
|
}
|
|
140
168
|
|
|
141
169
|
/**
|
|
142
|
-
*
|
|
143
|
-
* @param {
|
|
144
|
-
* @returns {
|
|
170
|
+
* Create _BATCHID attribute
|
|
171
|
+
* @param {Object} i3sContent - the source object
|
|
172
|
+
* @returns {void}
|
|
145
173
|
*/
|
|
146
|
-
|
|
147
|
-
const
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
for (let index = 0; index < faceRanges.length / 2; index++) {
|
|
153
|
-
const fromIndex = faceRanges[rangeIndex] * 3;
|
|
154
|
-
const untilPosition = (faceRanges[rangeIndex + 1] + 1) * 3;
|
|
174
|
+
_createBatchIds(i3sContent, featureAttributes) {
|
|
175
|
+
const {featureIds} = i3sContent;
|
|
176
|
+
const {OBJECTID: objectIds} = featureAttributes || {};
|
|
177
|
+
if (!featureIds || !objectIds) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
155
180
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
181
|
+
for (let i = 0; i < featureIds.length; i++) {
|
|
182
|
+
const featureId = featureIds[i];
|
|
183
|
+
const batchId = objectIds.indexOf(featureId);
|
|
184
|
+
featureIds[i] = batchId;
|
|
159
185
|
}
|
|
160
|
-
|
|
186
|
+
|
|
187
|
+
i3sContent.attributes._BATCHID = {
|
|
188
|
+
size: 1,
|
|
189
|
+
byteOffset: 0,
|
|
190
|
+
value: featureIds
|
|
191
|
+
};
|
|
161
192
|
}
|
|
162
193
|
|
|
163
194
|
/**
|
|
@@ -187,6 +218,8 @@ export default class B3dmConverter {
|
|
|
187
218
|
return 'image/jpeg';
|
|
188
219
|
case 'png':
|
|
189
220
|
return 'image/png';
|
|
221
|
+
case 'ktx2':
|
|
222
|
+
return 'image/ktx2';
|
|
190
223
|
default:
|
|
191
224
|
console.warn(`Unexpected texture format in I3S: ${format}`); // eslint-disable-line no-console, no-undef
|
|
192
225
|
return 'image/jpeg';
|
package/src/3d-tiles-converter/helpers/{i3s-obb-to-3d-tiles-obb.js → i3s-obb-to-3d-tiles-obb.ts}
RENAMED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import {Vector3} from '@math.gl/core';
|
|
2
2
|
import {Ellipsoid} from '@math.gl/geospatial';
|
|
3
3
|
import {OrientedBoundingBox} from '@math.gl/culling';
|
|
4
|
+
// @ts-expect-error
|
|
5
|
+
import {GeoidHeightModel} from '@loaders.gl/tile-converter/lib/geoid-height-model';
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Convert quaternion-based OBB to half-axes-based OBB
|
|
9
|
+
* @param i3SObb quaternion based OBB
|
|
10
|
+
* @param geoidHeightModel the Earth Gravity Model instance
|
|
11
|
+
* @returns number[12] 3DTiles OBB https://github.com/CesiumGS/3d-tiles/tree/master/specification#box
|
|
12
|
+
*/
|
|
13
|
+
export function i3sObbTo3dTilesObb(
|
|
14
|
+
i3SObb: {
|
|
15
|
+
center: number[];
|
|
16
|
+
halfSize: number[];
|
|
17
|
+
quaternion: number[];
|
|
18
|
+
},
|
|
19
|
+
geoidHeightModel: GeoidHeightModel
|
|
20
|
+
): number[] {
|
|
6
21
|
const tiles3DCenter = [
|
|
7
22
|
i3SObb.center[0],
|
|
8
23
|
i3SObb.center[1],
|