@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,1192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.convertAttributes = convertAttributes;
|
|
9
|
+
exports.default = convertB3dmToI3sGeometry;
|
|
10
|
+
exports.getPropertyTable = getPropertyTable;
|
|
11
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
+
var _core = require("@math.gl/core");
|
|
15
|
+
var _geospatial = require("@math.gl/geospatial");
|
|
16
|
+
var _draco = require("@loaders.gl/draco");
|
|
17
|
+
var _core2 = require("@loaders.gl/core");
|
|
18
|
+
var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
19
|
+
var _md = _interopRequireDefault(require("md5"));
|
|
20
|
+
var _uuid = require("uuid");
|
|
21
|
+
var _geometryAttributes = require("./geometry-attributes");
|
|
22
|
+
var _coordinateConverter = require("./coordinate-converter");
|
|
23
|
+
var _gltfAttributes = require("./gltf-attributes");
|
|
24
|
+
var _batchIdsExtensions = require("./batch-ids-extensions");
|
|
25
|
+
var _featureAttributes = require("./feature-attributes");
|
|
26
|
+
var _math = require("@loaders.gl/math");
|
|
27
|
+
var _geometryUtils = require("../../lib/utils/geometry-utils");
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
30
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
31
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
32
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
33
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
34
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
35
|
+
var DEFAULT_ROUGHNESS_FACTOR = 1;
|
|
36
|
+
var DEFAULT_METALLIC_FACTOR = 1;
|
|
37
|
+
var VALUES_PER_VERTEX = 3;
|
|
38
|
+
var VALUES_PER_TEX_COORD = 2;
|
|
39
|
+
var VALUES_PER_COLOR_ELEMENT = 4;
|
|
40
|
+
var STRING_TYPE = 'string';
|
|
41
|
+
var SHORT_INT_TYPE = 'Int32';
|
|
42
|
+
var DOUBLE_TYPE = 'Float64';
|
|
43
|
+
var OBJECT_ID_TYPE = 'Oid32';
|
|
44
|
+
var BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES = ['CUSTOM_ATTRIBUTE_2', '_BATCHID', 'BATCHID'];
|
|
45
|
+
var EXT_FEATURE_METADATA = 'EXT_feature_metadata';
|
|
46
|
+
var EXT_MESH_FEATURES = 'EXT_mesh_features';
|
|
47
|
+
var scratchVector = new _core.Vector3();
|
|
48
|
+
function convertB3dmToI3sGeometry(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x10, _x11, _x12) {
|
|
49
|
+
return _convertB3dmToI3sGeometry.apply(this, arguments);
|
|
50
|
+
}
|
|
51
|
+
function _convertB3dmToI3sGeometry() {
|
|
52
|
+
_convertB3dmToI3sGeometry = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileContent, tileTransform, tileBoundingVolume, addNodeToNodePage, propertyTable, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, shouldMergeMaterials, geoidHeightModel, workerSource) {
|
|
53
|
+
var _tileContent$gltf4;
|
|
54
|
+
var useCartesianPositions, materialAndTextureList, dataForAttributesConversion, convertedAttributesMap, result, _iterator6, _step6, materialAndTexture, originarMaterialId, convertedAttributes, material, texture, nodeId;
|
|
55
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
56
|
+
while (1) switch (_context.prev = _context.next) {
|
|
57
|
+
case 0:
|
|
58
|
+
useCartesianPositions = generateBoundingVolumes;
|
|
59
|
+
_context.next = 3;
|
|
60
|
+
return convertMaterials((_tileContent$gltf4 = tileContent.gltf) === null || _tileContent$gltf4 === void 0 ? void 0 : _tileContent$gltf4.materials, shouldMergeMaterials);
|
|
61
|
+
case 3:
|
|
62
|
+
materialAndTextureList = _context.sent;
|
|
63
|
+
dataForAttributesConversion = (0, _gltfAttributes.prepareDataForAttributesConversion)(tileContent, tileTransform, tileBoundingVolume);
|
|
64
|
+
_context.next = 7;
|
|
65
|
+
return convertAttributes(dataForAttributesConversion, materialAndTextureList, useCartesianPositions);
|
|
66
|
+
case 7:
|
|
67
|
+
convertedAttributesMap = _context.sent;
|
|
68
|
+
if (generateBoundingVolumes) {
|
|
69
|
+
_generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeightModel);
|
|
70
|
+
}
|
|
71
|
+
result = [];
|
|
72
|
+
_iterator6 = _createForOfIteratorHelper(materialAndTextureList);
|
|
73
|
+
_context.prev = 11;
|
|
74
|
+
_iterator6.s();
|
|
75
|
+
case 13:
|
|
76
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
77
|
+
_context.next = 32;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
materialAndTexture = _step6.value;
|
|
81
|
+
originarMaterialId = materialAndTexture.mergedMaterials[0].originalMaterialId;
|
|
82
|
+
if (convertedAttributesMap.has(originarMaterialId)) {
|
|
83
|
+
_context.next = 18;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
return _context.abrupt("continue", 30);
|
|
87
|
+
case 18:
|
|
88
|
+
convertedAttributes = convertedAttributesMap.get(originarMaterialId);
|
|
89
|
+
if (convertedAttributes) {
|
|
90
|
+
_context.next = 21;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
return _context.abrupt("continue", 30);
|
|
94
|
+
case 21:
|
|
95
|
+
material = materialAndTexture.material, texture = materialAndTexture.texture;
|
|
96
|
+
_context.next = 24;
|
|
97
|
+
return addNodeToNodePage();
|
|
98
|
+
case 24:
|
|
99
|
+
nodeId = _context.sent;
|
|
100
|
+
_context.t0 = result;
|
|
101
|
+
_context.next = 28;
|
|
102
|
+
return _makeNodeResources({
|
|
103
|
+
convertedAttributes: convertedAttributes,
|
|
104
|
+
material: material,
|
|
105
|
+
texture: texture,
|
|
106
|
+
tileContent: tileContent,
|
|
107
|
+
nodeId: nodeId,
|
|
108
|
+
featuresHashArray: featuresHashArray,
|
|
109
|
+
propertyTable: propertyTable,
|
|
110
|
+
attributeStorageInfo: attributeStorageInfo,
|
|
111
|
+
draco: draco,
|
|
112
|
+
workerSource: workerSource
|
|
113
|
+
});
|
|
114
|
+
case 28:
|
|
115
|
+
_context.t1 = _context.sent;
|
|
116
|
+
_context.t0.push.call(_context.t0, _context.t1);
|
|
117
|
+
case 30:
|
|
118
|
+
_context.next = 13;
|
|
119
|
+
break;
|
|
120
|
+
case 32:
|
|
121
|
+
_context.next = 37;
|
|
122
|
+
break;
|
|
123
|
+
case 34:
|
|
124
|
+
_context.prev = 34;
|
|
125
|
+
_context.t2 = _context["catch"](11);
|
|
126
|
+
_iterator6.e(_context.t2);
|
|
127
|
+
case 37:
|
|
128
|
+
_context.prev = 37;
|
|
129
|
+
_iterator6.f();
|
|
130
|
+
return _context.finish(37);
|
|
131
|
+
case 40:
|
|
132
|
+
if (result.length) {
|
|
133
|
+
_context.next = 42;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return _context.abrupt("return", null);
|
|
137
|
+
case 42:
|
|
138
|
+
return _context.abrupt("return", result);
|
|
139
|
+
case 43:
|
|
140
|
+
case "end":
|
|
141
|
+
return _context.stop();
|
|
142
|
+
}
|
|
143
|
+
}, _callee, null, [[11, 34, 37, 40]]);
|
|
144
|
+
}));
|
|
145
|
+
return _convertB3dmToI3sGeometry.apply(this, arguments);
|
|
146
|
+
}
|
|
147
|
+
function _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeightModel) {
|
|
148
|
+
var _iterator = _createForOfIteratorHelper(convertedAttributesMap.values()),
|
|
149
|
+
_step;
|
|
150
|
+
try {
|
|
151
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
152
|
+
var attributes = _step.value;
|
|
153
|
+
var boundingVolumes = (0, _coordinateConverter.createBoundingVolumesFromGeometry)(attributes.positions, geoidHeightModel);
|
|
154
|
+
attributes.boundingVolumes = boundingVolumes;
|
|
155
|
+
var cartographicOrigin = boundingVolumes.obb.center;
|
|
156
|
+
for (var index = 0; index < attributes.positions.length; index += VALUES_PER_VERTEX) {
|
|
157
|
+
var vertex = attributes.positions.subarray(index, index + VALUES_PER_VERTEX);
|
|
158
|
+
_geospatial.Ellipsoid.WGS84.cartesianToCartographic(Array.from(vertex), scratchVector);
|
|
159
|
+
scratchVector[2] = scratchVector[2] - geoidHeightModel.getHeight(scratchVector[1], scratchVector[0]);
|
|
160
|
+
scratchVector = scratchVector.subtract(cartographicOrigin);
|
|
161
|
+
attributes.positions.set(scratchVector, index);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
} catch (err) {
|
|
165
|
+
_iterator.e(err);
|
|
166
|
+
} finally {
|
|
167
|
+
_iterator.f();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function _makeNodeResources(_x13) {
|
|
171
|
+
return _makeNodeResources2.apply(this, arguments);
|
|
172
|
+
}
|
|
173
|
+
function _makeNodeResources2() {
|
|
174
|
+
_makeNodeResources2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(_ref) {
|
|
175
|
+
var _tileContent$gltf5;
|
|
176
|
+
var convertedAttributes, material, texture, tileContent, nodeId, featuresHashArray, propertyTable, attributeStorageInfo, draco, workerSource, boundingVolumes, vertexCount, _generateAttributes, faceRange, featureIds, positions, normals, colors, uvRegions, texCoords, featureCount, header, typedFeatureIds, fileBuffer, compressedGeometry, attributes;
|
|
177
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
178
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
179
|
+
case 0:
|
|
180
|
+
convertedAttributes = _ref.convertedAttributes, material = _ref.material, texture = _ref.texture, tileContent = _ref.tileContent, nodeId = _ref.nodeId, featuresHashArray = _ref.featuresHashArray, propertyTable = _ref.propertyTable, attributeStorageInfo = _ref.attributeStorageInfo, draco = _ref.draco, workerSource = _ref.workerSource;
|
|
181
|
+
boundingVolumes = convertedAttributes.boundingVolumes;
|
|
182
|
+
vertexCount = convertedAttributes.positions.length / VALUES_PER_VERTEX;
|
|
183
|
+
_generateAttributes = (0, _geometryAttributes.generateAttributes)(convertedAttributes), faceRange = _generateAttributes.faceRange, featureIds = _generateAttributes.featureIds, positions = _generateAttributes.positions, normals = _generateAttributes.normals, colors = _generateAttributes.colors, uvRegions = _generateAttributes.uvRegions, texCoords = _generateAttributes.texCoords, featureCount = _generateAttributes.featureCount;
|
|
184
|
+
if (tileContent.batchTableJson) {
|
|
185
|
+
makeFeatureIdsUnique(featureIds, convertedAttributes.featureIndices, featuresHashArray, tileContent.batchTableJson);
|
|
186
|
+
}
|
|
187
|
+
header = new Uint32Array(2);
|
|
188
|
+
typedFeatureIds = generateBigUint64Array(featureIds);
|
|
189
|
+
header.set([vertexCount, featureCount], 0);
|
|
190
|
+
fileBuffer = new Uint8Array((0, _loaderUtils.concatenateArrayBuffers)(header.buffer, positions.buffer, normals.buffer, texture ? texCoords.buffer : new ArrayBuffer(0), colors.buffer, uvRegions, typedFeatureIds.buffer, faceRange.buffer));
|
|
191
|
+
compressedGeometry = draco ? generateCompressedGeometry(vertexCount, convertedAttributes, {
|
|
192
|
+
positions: positions,
|
|
193
|
+
normals: normals,
|
|
194
|
+
texCoords: texture ? texCoords : new Float32Array(0),
|
|
195
|
+
colors: colors,
|
|
196
|
+
uvRegions: uvRegions,
|
|
197
|
+
featureIds: featureIds,
|
|
198
|
+
faceRange: faceRange
|
|
199
|
+
}, workerSource.draco) : null;
|
|
200
|
+
attributes = [];
|
|
201
|
+
if (attributeStorageInfo && propertyTable) {
|
|
202
|
+
attributes = convertPropertyTableToAttributeBuffers(featureIds, propertyTable, attributeStorageInfo);
|
|
203
|
+
}
|
|
204
|
+
return _context2.abrupt("return", {
|
|
205
|
+
nodeId: nodeId,
|
|
206
|
+
geometry: fileBuffer,
|
|
207
|
+
compressedGeometry: compressedGeometry,
|
|
208
|
+
texture: texture,
|
|
209
|
+
hasUvRegions: Boolean(uvRegions.length),
|
|
210
|
+
sharedResources: getSharedResources(((_tileContent$gltf5 = tileContent.gltf) === null || _tileContent$gltf5 === void 0 ? void 0 : _tileContent$gltf5.materials) || [], nodeId),
|
|
211
|
+
meshMaterial: material,
|
|
212
|
+
vertexCount: vertexCount,
|
|
213
|
+
attributes: attributes,
|
|
214
|
+
featureCount: featureCount,
|
|
215
|
+
boundingVolumes: boundingVolumes
|
|
216
|
+
});
|
|
217
|
+
case 13:
|
|
218
|
+
case "end":
|
|
219
|
+
return _context2.stop();
|
|
220
|
+
}
|
|
221
|
+
}, _callee2);
|
|
222
|
+
}));
|
|
223
|
+
return _makeNodeResources2.apply(this, arguments);
|
|
224
|
+
}
|
|
225
|
+
function convertAttributes(_x14, _x15, _x16) {
|
|
226
|
+
return _convertAttributes.apply(this, arguments);
|
|
227
|
+
}
|
|
228
|
+
function _convertAttributes() {
|
|
229
|
+
_convertAttributes = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(attributesData, materialAndTextureList, useCartesianPositions) {
|
|
230
|
+
var nodes, images, cartographicOrigin, cartesianModelMatrix, attributesMap, _iterator7, _step7, materialAndTexture, attributes, _iterator9, _step9, mergedMaterial, _iterator8, _step8, attrKey, _attributes;
|
|
231
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
232
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
233
|
+
case 0:
|
|
234
|
+
nodes = attributesData.nodes, images = attributesData.images, cartographicOrigin = attributesData.cartographicOrigin, cartesianModelMatrix = attributesData.cartesianModelMatrix;
|
|
235
|
+
attributesMap = new Map();
|
|
236
|
+
_iterator7 = _createForOfIteratorHelper(materialAndTextureList);
|
|
237
|
+
try {
|
|
238
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
239
|
+
materialAndTexture = _step7.value;
|
|
240
|
+
attributes = {
|
|
241
|
+
positions: new Float32Array(0),
|
|
242
|
+
normals: new Float32Array(0),
|
|
243
|
+
texCoords: new Float32Array(0),
|
|
244
|
+
colors: new Uint8Array(0),
|
|
245
|
+
uvRegions: new Uint16Array(0),
|
|
246
|
+
featureIndicesGroups: [],
|
|
247
|
+
featureIndices: [],
|
|
248
|
+
boundingVolumes: null,
|
|
249
|
+
mergedMaterials: materialAndTexture.mergedMaterials
|
|
250
|
+
};
|
|
251
|
+
_iterator9 = _createForOfIteratorHelper(materialAndTexture.mergedMaterials);
|
|
252
|
+
try {
|
|
253
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
254
|
+
mergedMaterial = _step9.value;
|
|
255
|
+
attributesMap.set(mergedMaterial.originalMaterialId, attributes);
|
|
256
|
+
}
|
|
257
|
+
} catch (err) {
|
|
258
|
+
_iterator9.e(err);
|
|
259
|
+
} finally {
|
|
260
|
+
_iterator9.f();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
} catch (err) {
|
|
264
|
+
_iterator7.e(err);
|
|
265
|
+
} finally {
|
|
266
|
+
_iterator7.f();
|
|
267
|
+
}
|
|
268
|
+
convertNodes(nodes, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions);
|
|
269
|
+
_iterator8 = _createForOfIteratorHelper(attributesMap.keys());
|
|
270
|
+
_context3.prev = 6;
|
|
271
|
+
_iterator8.s();
|
|
272
|
+
case 8:
|
|
273
|
+
if ((_step8 = _iterator8.n()).done) {
|
|
274
|
+
_context3.next = 19;
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
attrKey = _step8.value;
|
|
278
|
+
_attributes = attributesMap.get(attrKey);
|
|
279
|
+
if (_attributes) {
|
|
280
|
+
_context3.next = 13;
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
return _context3.abrupt("continue", 17);
|
|
284
|
+
case 13:
|
|
285
|
+
if (!(_attributes.positions.length === 0)) {
|
|
286
|
+
_context3.next = 16;
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
attributesMap.delete(attrKey);
|
|
290
|
+
return _context3.abrupt("continue", 17);
|
|
291
|
+
case 16:
|
|
292
|
+
if (_attributes.featureIndicesGroups) {
|
|
293
|
+
_attributes.featureIndices = _attributes.featureIndicesGroups.reduce(function (acc, value) {
|
|
294
|
+
return acc.concat(value);
|
|
295
|
+
});
|
|
296
|
+
delete _attributes.featureIndicesGroups;
|
|
297
|
+
}
|
|
298
|
+
case 17:
|
|
299
|
+
_context3.next = 8;
|
|
300
|
+
break;
|
|
301
|
+
case 19:
|
|
302
|
+
_context3.next = 24;
|
|
303
|
+
break;
|
|
304
|
+
case 21:
|
|
305
|
+
_context3.prev = 21;
|
|
306
|
+
_context3.t0 = _context3["catch"](6);
|
|
307
|
+
_iterator8.e(_context3.t0);
|
|
308
|
+
case 24:
|
|
309
|
+
_context3.prev = 24;
|
|
310
|
+
_iterator8.f();
|
|
311
|
+
return _context3.finish(24);
|
|
312
|
+
case 27:
|
|
313
|
+
return _context3.abrupt("return", attributesMap);
|
|
314
|
+
case 28:
|
|
315
|
+
case "end":
|
|
316
|
+
return _context3.stop();
|
|
317
|
+
}
|
|
318
|
+
}, _callee3, null, [[6, 21, 24, 27]]);
|
|
319
|
+
}));
|
|
320
|
+
return _convertAttributes.apply(this, arguments);
|
|
321
|
+
}
|
|
322
|
+
function convertNodes(nodes, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions) {
|
|
323
|
+
var matrix = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new _core.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
324
|
+
if (nodes) {
|
|
325
|
+
var _iterator2 = _createForOfIteratorHelper(nodes),
|
|
326
|
+
_step2;
|
|
327
|
+
try {
|
|
328
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
329
|
+
var node = _step2.value;
|
|
330
|
+
convertNode(node, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix);
|
|
331
|
+
}
|
|
332
|
+
} catch (err) {
|
|
333
|
+
_iterator2.e(err);
|
|
334
|
+
} finally {
|
|
335
|
+
_iterator2.f();
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
function getCompositeTransformationMatrix(node, matrix) {
|
|
340
|
+
var transformationMatrix = matrix;
|
|
341
|
+
var nodeMatrix = node.matrix,
|
|
342
|
+
rotation = node.rotation,
|
|
343
|
+
scale = node.scale,
|
|
344
|
+
translation = node.translation;
|
|
345
|
+
if (nodeMatrix) {
|
|
346
|
+
transformationMatrix = matrix.multiplyRight(nodeMatrix);
|
|
347
|
+
}
|
|
348
|
+
if (translation) {
|
|
349
|
+
transformationMatrix = transformationMatrix.translate(translation);
|
|
350
|
+
}
|
|
351
|
+
if (rotation) {
|
|
352
|
+
transformationMatrix = transformationMatrix.rotateXYZ(rotation);
|
|
353
|
+
}
|
|
354
|
+
if (scale) {
|
|
355
|
+
transformationMatrix = transformationMatrix.scale(scale);
|
|
356
|
+
}
|
|
357
|
+
return transformationMatrix;
|
|
358
|
+
}
|
|
359
|
+
function convertNode(node, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions) {
|
|
360
|
+
var matrix = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new _core.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
361
|
+
var transformationMatrix = getCompositeTransformationMatrix(node, matrix);
|
|
362
|
+
var mesh = node.mesh;
|
|
363
|
+
if (mesh) {
|
|
364
|
+
convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
|
|
365
|
+
}
|
|
366
|
+
convertNodes(node.children || [], images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
|
|
367
|
+
}
|
|
368
|
+
function convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap) {
|
|
369
|
+
var useCartesianPositions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
370
|
+
var matrix = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : new _core.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
|
|
371
|
+
var _iterator3 = _createForOfIteratorHelper(mesh.primitives),
|
|
372
|
+
_step3;
|
|
373
|
+
try {
|
|
374
|
+
var _loop = function _loop() {
|
|
375
|
+
var primitive = _step3.value;
|
|
376
|
+
var outputAttributes = null;
|
|
377
|
+
var materialUvRegion;
|
|
378
|
+
if (primitive.material) {
|
|
379
|
+
var _outputAttributes, _outputAttributes$mer;
|
|
380
|
+
outputAttributes = attributesMap.get(primitive.material.id);
|
|
381
|
+
materialUvRegion = (_outputAttributes = outputAttributes) === null || _outputAttributes === void 0 ? void 0 : (_outputAttributes$mer = _outputAttributes.mergedMaterials.find(function (_ref2) {
|
|
382
|
+
var _primitive$material;
|
|
383
|
+
var originalMaterialId = _ref2.originalMaterialId;
|
|
384
|
+
return originalMaterialId === ((_primitive$material = primitive.material) === null || _primitive$material === void 0 ? void 0 : _primitive$material.id);
|
|
385
|
+
})) === null || _outputAttributes$mer === void 0 ? void 0 : _outputAttributes$mer.uvRegion;
|
|
386
|
+
} else if (attributesMap.has('default')) {
|
|
387
|
+
outputAttributes = attributesMap.get('default');
|
|
388
|
+
}
|
|
389
|
+
(0, _core2.assert)(outputAttributes !== null, 'Primitive - material mapping failed');
|
|
390
|
+
(0, _core2.assert)(primitive.mode === undefined || primitive.mode === _math.GL.TRIANGLES || primitive.mode === _math.GL.TRIANGLE_STRIP, "Primitive - unsupported mode ".concat(primitive.mode));
|
|
391
|
+
var attributes = primitive.attributes;
|
|
392
|
+
if (!outputAttributes) {
|
|
393
|
+
return "continue";
|
|
394
|
+
}
|
|
395
|
+
var indices = normalizeIndices(primitive);
|
|
396
|
+
outputAttributes.positions = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.positions, transformVertexArray({
|
|
397
|
+
vertices: attributes.POSITION.value,
|
|
398
|
+
cartographicOrigin: cartographicOrigin,
|
|
399
|
+
cartesianModelMatrix: cartesianModelMatrix,
|
|
400
|
+
nodeMatrix: matrix,
|
|
401
|
+
indices: indices,
|
|
402
|
+
attributeSpecificTransformation: transformVertexPositions,
|
|
403
|
+
useCartesianPositions: useCartesianPositions
|
|
404
|
+
}));
|
|
405
|
+
outputAttributes.normals = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.normals, transformVertexArray({
|
|
406
|
+
vertices: attributes.NORMAL && attributes.NORMAL.value,
|
|
407
|
+
cartographicOrigin: cartographicOrigin,
|
|
408
|
+
cartesianModelMatrix: cartesianModelMatrix,
|
|
409
|
+
nodeMatrix: matrix,
|
|
410
|
+
indices: indices,
|
|
411
|
+
attributeSpecificTransformation: transformVertexNormals,
|
|
412
|
+
useCartesianPositions: false
|
|
413
|
+
}));
|
|
414
|
+
outputAttributes.texCoords = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, indices));
|
|
415
|
+
outputAttributes.colors = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.colors, flattenColors(attributes.COLOR_0, indices));
|
|
416
|
+
if (materialUvRegion) {
|
|
417
|
+
outputAttributes.uvRegions = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.uvRegions, createUvRegion(materialUvRegion, indices));
|
|
418
|
+
}
|
|
419
|
+
outputAttributes.featureIndicesGroups = outputAttributes.featureIndicesGroups || [];
|
|
420
|
+
outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIds(attributes, primitive, images), indices));
|
|
421
|
+
};
|
|
422
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
423
|
+
var _ret = _loop();
|
|
424
|
+
if (_ret === "continue") continue;
|
|
425
|
+
}
|
|
426
|
+
} catch (err) {
|
|
427
|
+
_iterator3.e(err);
|
|
428
|
+
} finally {
|
|
429
|
+
_iterator3.f();
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
function normalizeIndices(primitive) {
|
|
433
|
+
var _primitive$indices;
|
|
434
|
+
var indices = (_primitive$indices = primitive.indices) === null || _primitive$indices === void 0 ? void 0 : _primitive$indices.value;
|
|
435
|
+
if (!indices) {
|
|
436
|
+
var positions = primitive.attributes.POSITION.value;
|
|
437
|
+
return (0, _geometryUtils.generateSyntheticIndices)(positions.length / VALUES_PER_VERTEX);
|
|
438
|
+
}
|
|
439
|
+
if (indices && primitive.mode === _math.GL.TRIANGLE_STRIP) {
|
|
440
|
+
var TypedArrayConstructor = indices.constructor;
|
|
441
|
+
var newIndices = new TypedArrayConstructor((indices.length - 2) * 3);
|
|
442
|
+
var triangleIndex = 0;
|
|
443
|
+
var currentTriangle = indices.slice(0, 3);
|
|
444
|
+
newIndices.set(currentTriangle, 0);
|
|
445
|
+
for (var i = 1; i + 2 < indices.length; i++) {
|
|
446
|
+
triangleIndex += 3;
|
|
447
|
+
currentTriangle = indices.slice(i, i + 3);
|
|
448
|
+
if (i % 2 === 0) {
|
|
449
|
+
newIndices.set(currentTriangle, triangleIndex);
|
|
450
|
+
} else {
|
|
451
|
+
newIndices.set(currentTriangle.reverse(), triangleIndex);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
indices = newIndices;
|
|
455
|
+
}
|
|
456
|
+
return indices;
|
|
457
|
+
}
|
|
458
|
+
function transformVertexArray(args) {
|
|
459
|
+
var vertices = args.vertices,
|
|
460
|
+
indices = args.indices,
|
|
461
|
+
attributeSpecificTransformation = args.attributeSpecificTransformation;
|
|
462
|
+
var newVertices = new Float32Array(indices.length * VALUES_PER_VERTEX);
|
|
463
|
+
if (!vertices) {
|
|
464
|
+
return newVertices;
|
|
465
|
+
}
|
|
466
|
+
for (var i = 0; i < indices.length; i++) {
|
|
467
|
+
var coordIndex = indices[i] * VALUES_PER_VERTEX;
|
|
468
|
+
var vertex = vertices.subarray(coordIndex, coordIndex + VALUES_PER_VERTEX);
|
|
469
|
+
var vertexVector = new _core.Vector3(Array.from(vertex));
|
|
470
|
+
vertexVector = attributeSpecificTransformation(vertexVector, args);
|
|
471
|
+
newVertices[i * VALUES_PER_VERTEX] = vertexVector.x;
|
|
472
|
+
newVertices[i * VALUES_PER_VERTEX + 1] = vertexVector.y;
|
|
473
|
+
newVertices[i * VALUES_PER_VERTEX + 2] = vertexVector.z;
|
|
474
|
+
}
|
|
475
|
+
return newVertices;
|
|
476
|
+
}
|
|
477
|
+
function transformVertexPositions(vertexVector, calleeArgs) {
|
|
478
|
+
var cartesianModelMatrix = calleeArgs.cartesianModelMatrix,
|
|
479
|
+
cartographicOrigin = calleeArgs.cartographicOrigin,
|
|
480
|
+
nodeMatrix = calleeArgs.nodeMatrix,
|
|
481
|
+
useCartesianPositions = calleeArgs.useCartesianPositions;
|
|
482
|
+
if (nodeMatrix) {
|
|
483
|
+
vertexVector = vertexVector.transform(nodeMatrix);
|
|
484
|
+
}
|
|
485
|
+
vertexVector = vertexVector.transform(cartesianModelMatrix);
|
|
486
|
+
if (useCartesianPositions) {
|
|
487
|
+
return vertexVector;
|
|
488
|
+
}
|
|
489
|
+
_geospatial.Ellipsoid.WGS84.cartesianToCartographic([vertexVector[0], vertexVector[1], vertexVector[2]], vertexVector);
|
|
490
|
+
vertexVector = vertexVector.subtract(cartographicOrigin);
|
|
491
|
+
return vertexVector;
|
|
492
|
+
}
|
|
493
|
+
function transformVertexNormals(vertexVector, calleeArgs) {
|
|
494
|
+
var cartesianModelMatrix = calleeArgs.cartesianModelMatrix,
|
|
495
|
+
nodeMatrix = calleeArgs.nodeMatrix;
|
|
496
|
+
if (nodeMatrix) {
|
|
497
|
+
vertexVector = vertexVector.transformAsVector(nodeMatrix);
|
|
498
|
+
}
|
|
499
|
+
vertexVector = vertexVector.transformAsVector(cartesianModelMatrix);
|
|
500
|
+
return vertexVector;
|
|
501
|
+
}
|
|
502
|
+
function flattenTexCoords(texCoords, indices) {
|
|
503
|
+
var newTexCoords = new Float32Array(indices.length * VALUES_PER_TEX_COORD);
|
|
504
|
+
if (!texCoords) {
|
|
505
|
+
newTexCoords.fill(1);
|
|
506
|
+
return newTexCoords;
|
|
507
|
+
}
|
|
508
|
+
for (var i = 0; i < indices.length; i++) {
|
|
509
|
+
var coordIndex = indices[i] * VALUES_PER_TEX_COORD;
|
|
510
|
+
var texCoord = texCoords.subarray(coordIndex, coordIndex + VALUES_PER_TEX_COORD);
|
|
511
|
+
newTexCoords[i * VALUES_PER_TEX_COORD] = texCoord[0];
|
|
512
|
+
newTexCoords[i * VALUES_PER_TEX_COORD + 1] = texCoord[1];
|
|
513
|
+
}
|
|
514
|
+
return newTexCoords;
|
|
515
|
+
}
|
|
516
|
+
function flattenColors(colorsAttribute, indices) {
|
|
517
|
+
var components = (colorsAttribute === null || colorsAttribute === void 0 ? void 0 : colorsAttribute.components) || VALUES_PER_COLOR_ELEMENT;
|
|
518
|
+
var newColors = new Uint8Array(indices.length * components);
|
|
519
|
+
if (!colorsAttribute) {
|
|
520
|
+
newColors.fill(255);
|
|
521
|
+
return newColors;
|
|
522
|
+
}
|
|
523
|
+
var colors = colorsAttribute.value;
|
|
524
|
+
for (var i = 0; i < indices.length; i++) {
|
|
525
|
+
var colorIndex = indices[i] * components;
|
|
526
|
+
var color = colors.subarray(colorIndex, colorIndex + components);
|
|
527
|
+
var colorUint8 = new Uint8Array(components);
|
|
528
|
+
for (var j = 0; j < color.length; j++) {
|
|
529
|
+
colorUint8[j] = color[j] * 255;
|
|
530
|
+
}
|
|
531
|
+
newColors.set(colorUint8, i * components);
|
|
532
|
+
}
|
|
533
|
+
return newColors;
|
|
534
|
+
}
|
|
535
|
+
function createUvRegion(materialUvRegion, indices) {
|
|
536
|
+
var result = new Uint16Array(indices.length * 4);
|
|
537
|
+
for (var i = 0; i < result.length; i += 4) {
|
|
538
|
+
result.set(materialUvRegion, i);
|
|
539
|
+
}
|
|
540
|
+
return result;
|
|
541
|
+
}
|
|
542
|
+
function flattenBatchIds(batchedIds, indices) {
|
|
543
|
+
if (!batchedIds.length || !indices.length) {
|
|
544
|
+
return [];
|
|
545
|
+
}
|
|
546
|
+
var newBatchIds = [];
|
|
547
|
+
for (var i = 0; i < indices.length; i++) {
|
|
548
|
+
var coordIndex = indices[i];
|
|
549
|
+
newBatchIds.push(batchedIds[coordIndex]);
|
|
550
|
+
}
|
|
551
|
+
return newBatchIds;
|
|
552
|
+
}
|
|
553
|
+
function getBatchIds(attributes, primitive, images) {
|
|
554
|
+
var batchIds = (0, _batchIdsExtensions.handleBatchIdsExtensions)(attributes, primitive, images);
|
|
555
|
+
if (batchIds.length) {
|
|
556
|
+
return batchIds;
|
|
557
|
+
}
|
|
558
|
+
for (var index = 0; index < BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES.length; index++) {
|
|
559
|
+
var possibleBatchIdAttributeName = BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES[index];
|
|
560
|
+
if (attributes[possibleBatchIdAttributeName] && attributes[possibleBatchIdAttributeName].value) {
|
|
561
|
+
return attributes[possibleBatchIdAttributeName].value;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
return [];
|
|
565
|
+
}
|
|
566
|
+
function convertMaterials() {
|
|
567
|
+
return _convertMaterials.apply(this, arguments);
|
|
568
|
+
}
|
|
569
|
+
function _convertMaterials() {
|
|
570
|
+
_convertMaterials = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
|
|
571
|
+
var sourceMaterials,
|
|
572
|
+
shouldMergeMaterials,
|
|
573
|
+
materials,
|
|
574
|
+
_iterator10,
|
|
575
|
+
_step10,
|
|
576
|
+
sourceMaterial,
|
|
577
|
+
_args4 = arguments;
|
|
578
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
579
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
580
|
+
case 0:
|
|
581
|
+
sourceMaterials = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : [];
|
|
582
|
+
shouldMergeMaterials = _args4.length > 1 ? _args4[1] : undefined;
|
|
583
|
+
materials = [];
|
|
584
|
+
_iterator10 = _createForOfIteratorHelper(sourceMaterials);
|
|
585
|
+
try {
|
|
586
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
587
|
+
sourceMaterial = _step10.value;
|
|
588
|
+
materials.push(convertMaterial(sourceMaterial));
|
|
589
|
+
}
|
|
590
|
+
} catch (err) {
|
|
591
|
+
_iterator10.e(err);
|
|
592
|
+
} finally {
|
|
593
|
+
_iterator10.f();
|
|
594
|
+
}
|
|
595
|
+
if (!shouldMergeMaterials) {
|
|
596
|
+
_context4.next = 9;
|
|
597
|
+
break;
|
|
598
|
+
}
|
|
599
|
+
_context4.next = 8;
|
|
600
|
+
return mergeAllMaterials(materials);
|
|
601
|
+
case 8:
|
|
602
|
+
materials = _context4.sent;
|
|
603
|
+
case 9:
|
|
604
|
+
return _context4.abrupt("return", materials);
|
|
605
|
+
case 10:
|
|
606
|
+
case "end":
|
|
607
|
+
return _context4.stop();
|
|
608
|
+
}
|
|
609
|
+
}, _callee4);
|
|
610
|
+
}));
|
|
611
|
+
return _convertMaterials.apply(this, arguments);
|
|
612
|
+
}
|
|
613
|
+
function mergeAllMaterials(_x17) {
|
|
614
|
+
return _mergeAllMaterials.apply(this, arguments);
|
|
615
|
+
}
|
|
616
|
+
function _mergeAllMaterials() {
|
|
617
|
+
_mergeAllMaterials = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee5(materials) {
|
|
618
|
+
var result, newMaterial, mergedIndices, i, material, _newMaterial$mergedMa, _newMaterial$mergedMa2, newWidth, newHeight, currentX, _iterator11, _step11, aTextureMetadata, newX, _iterator12, _step12, index;
|
|
619
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
620
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
621
|
+
case 0:
|
|
622
|
+
result = [];
|
|
623
|
+
case 1:
|
|
624
|
+
if (!(materials.length > 0)) {
|
|
625
|
+
_context5.next = 21;
|
|
626
|
+
break;
|
|
627
|
+
}
|
|
628
|
+
newMaterial = materials.splice(0, 1)[0];
|
|
629
|
+
mergedIndices = [];
|
|
630
|
+
i = 0;
|
|
631
|
+
case 5:
|
|
632
|
+
if (!(i < materials.length)) {
|
|
633
|
+
_context5.next = 15;
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
636
|
+
material = materials[i];
|
|
637
|
+
if (!(newMaterial.texture && material.texture || !newMaterial.texture && !material.texture)) {
|
|
638
|
+
_context5.next = 12;
|
|
639
|
+
break;
|
|
640
|
+
}
|
|
641
|
+
_context5.next = 10;
|
|
642
|
+
return mergeMaterials(newMaterial, material);
|
|
643
|
+
case 10:
|
|
644
|
+
newMaterial = _context5.sent;
|
|
645
|
+
mergedIndices.push(i);
|
|
646
|
+
case 12:
|
|
647
|
+
i++;
|
|
648
|
+
_context5.next = 5;
|
|
649
|
+
break;
|
|
650
|
+
case 15:
|
|
651
|
+
if (newMaterial.texture && mergedIndices.length) {
|
|
652
|
+
newWidth = (_newMaterial$mergedMa = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa === void 0 ? void 0 : _newMaterial$mergedMa.reduce(function (accum, _ref5) {
|
|
653
|
+
var textureSize = _ref5.textureSize;
|
|
654
|
+
return accum + ((textureSize === null || textureSize === void 0 ? void 0 : textureSize.width) || 0);
|
|
655
|
+
}, 0);
|
|
656
|
+
newHeight = (_newMaterial$mergedMa2 = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa2 === void 0 ? void 0 : _newMaterial$mergedMa2.reduce(function (accum, _ref6) {
|
|
657
|
+
var textureSize = _ref6.textureSize;
|
|
658
|
+
return Math.max(accum, (textureSize === null || textureSize === void 0 ? void 0 : textureSize.height) || 0);
|
|
659
|
+
}, 0);
|
|
660
|
+
currentX = -1;
|
|
661
|
+
_iterator11 = _createForOfIteratorHelper(newMaterial.mergedMaterials);
|
|
662
|
+
try {
|
|
663
|
+
for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
|
|
664
|
+
aTextureMetadata = _step11.value;
|
|
665
|
+
if (aTextureMetadata.textureSize) {
|
|
666
|
+
newX = currentX + 1 + aTextureMetadata.textureSize.width / newWidth * Math.pow(2, Uint16Array.BYTES_PER_ELEMENT * 8) - 1;
|
|
667
|
+
aTextureMetadata.uvRegion = new Uint16Array([currentX + 1, 0, newX, aTextureMetadata.textureSize.height / newHeight * Math.pow(2, Uint16Array.BYTES_PER_ELEMENT * 8) - 1]);
|
|
668
|
+
currentX = newX;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
} catch (err) {
|
|
672
|
+
_iterator11.e(err);
|
|
673
|
+
} finally {
|
|
674
|
+
_iterator11.f();
|
|
675
|
+
}
|
|
676
|
+
newMaterial.texture.image.width = newWidth;
|
|
677
|
+
newMaterial.texture.image.height = newHeight;
|
|
678
|
+
}
|
|
679
|
+
_iterator12 = _createForOfIteratorHelper(mergedIndices.reverse());
|
|
680
|
+
try {
|
|
681
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
682
|
+
index = _step12.value;
|
|
683
|
+
materials.splice(index, 1);
|
|
684
|
+
}
|
|
685
|
+
} catch (err) {
|
|
686
|
+
_iterator12.e(err);
|
|
687
|
+
} finally {
|
|
688
|
+
_iterator12.f();
|
|
689
|
+
}
|
|
690
|
+
result.push(newMaterial);
|
|
691
|
+
_context5.next = 1;
|
|
692
|
+
break;
|
|
693
|
+
case 21:
|
|
694
|
+
if (!result.length) {
|
|
695
|
+
result.push({
|
|
696
|
+
material: getDefaultMaterial(),
|
|
697
|
+
mergedMaterials: [{
|
|
698
|
+
originalMaterialId: 'default'
|
|
699
|
+
}]
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
return _context5.abrupt("return", result);
|
|
703
|
+
case 23:
|
|
704
|
+
case "end":
|
|
705
|
+
return _context5.stop();
|
|
706
|
+
}
|
|
707
|
+
}, _callee5);
|
|
708
|
+
}));
|
|
709
|
+
return _mergeAllMaterials.apply(this, arguments);
|
|
710
|
+
}
|
|
711
|
+
function mergeMaterials(_x18, _x19) {
|
|
712
|
+
return _mergeMaterials.apply(this, arguments);
|
|
713
|
+
}
|
|
714
|
+
function _mergeMaterials() {
|
|
715
|
+
_mergeMaterials = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee6(material1, material2) {
|
|
716
|
+
var _material1$texture, _material2$texture;
|
|
717
|
+
var buffer1, buffer2, _yield$import, joinImages, sharpData;
|
|
718
|
+
return _regenerator.default.wrap(function _callee6$(_context6) {
|
|
719
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
720
|
+
case 0:
|
|
721
|
+
if (!((_material1$texture = material1.texture) !== null && _material1$texture !== void 0 && _material1$texture.bufferView && (_material2$texture = material2.texture) !== null && _material2$texture !== void 0 && _material2$texture.bufferView && material1.mergedMaterials && material2.mergedMaterials)) {
|
|
722
|
+
_context6.next = 21;
|
|
723
|
+
break;
|
|
724
|
+
}
|
|
725
|
+
buffer1 = Buffer.from(material1.texture.bufferView.data);
|
|
726
|
+
buffer2 = Buffer.from(material2.texture.bufferView.data);
|
|
727
|
+
_context6.prev = 3;
|
|
728
|
+
_context6.next = 6;
|
|
729
|
+
return Promise.resolve().then(function () {
|
|
730
|
+
return _interopRequireWildcard(require('join-images'));
|
|
731
|
+
});
|
|
732
|
+
case 6:
|
|
733
|
+
_yield$import = _context6.sent;
|
|
734
|
+
joinImages = _yield$import.joinImages;
|
|
735
|
+
_context6.next = 10;
|
|
736
|
+
return joinImages([buffer1, buffer2], {
|
|
737
|
+
direction: 'horizontal'
|
|
738
|
+
});
|
|
739
|
+
case 10:
|
|
740
|
+
sharpData = _context6.sent;
|
|
741
|
+
_context6.next = 13;
|
|
742
|
+
return sharpData.toFormat(material1.texture.mimeType === 'image/png' ? 'png' : 'jpeg').toBuffer();
|
|
743
|
+
case 13:
|
|
744
|
+
material1.texture.bufferView.data = _context6.sent;
|
|
745
|
+
_context6.next = 20;
|
|
746
|
+
break;
|
|
747
|
+
case 16:
|
|
748
|
+
_context6.prev = 16;
|
|
749
|
+
_context6.t0 = _context6["catch"](3);
|
|
750
|
+
console.log('Join images into a texture atlas has failed. Consider usage `--split-nodes` option. (See documentation https://loaders.gl/modules/tile-converter/docs/cli-reference/tile-converter)');
|
|
751
|
+
throw _context6.t0;
|
|
752
|
+
case 20:
|
|
753
|
+
material1.material.pbrMetallicRoughness.baseColorTexture.textureSetDefinitionId = 1;
|
|
754
|
+
case 21:
|
|
755
|
+
material1.mergedMaterials = material1.mergedMaterials.concat(material2.mergedMaterials);
|
|
756
|
+
return _context6.abrupt("return", material1);
|
|
757
|
+
case 23:
|
|
758
|
+
case "end":
|
|
759
|
+
return _context6.stop();
|
|
760
|
+
}
|
|
761
|
+
}, _callee6, null, [[3, 16]]);
|
|
762
|
+
}));
|
|
763
|
+
return _mergeMaterials.apply(this, arguments);
|
|
764
|
+
}
|
|
765
|
+
function convertMaterial(sourceMaterial) {
|
|
766
|
+
var _sourceMaterial$emiss, _sourceMaterial$pbrMe, _sourceMaterial$pbrMe2, _sourceMaterial$pbrMe3;
|
|
767
|
+
var material = {
|
|
768
|
+
doubleSided: sourceMaterial.doubleSided,
|
|
769
|
+
emissiveFactor: (_sourceMaterial$emiss = sourceMaterial.emissiveFactor) === null || _sourceMaterial$emiss === void 0 ? void 0 : _sourceMaterial$emiss.map(function (c) {
|
|
770
|
+
return Math.round(c * 255);
|
|
771
|
+
}),
|
|
772
|
+
alphaMode: convertAlphaMode(sourceMaterial.alphaMode),
|
|
773
|
+
pbrMetallicRoughness: {
|
|
774
|
+
roughnessFactor: (sourceMaterial === null || sourceMaterial === void 0 ? void 0 : (_sourceMaterial$pbrMe = sourceMaterial.pbrMetallicRoughness) === null || _sourceMaterial$pbrMe === void 0 ? void 0 : _sourceMaterial$pbrMe.roughnessFactor) || DEFAULT_ROUGHNESS_FACTOR,
|
|
775
|
+
metallicFactor: (sourceMaterial === null || sourceMaterial === void 0 ? void 0 : (_sourceMaterial$pbrMe2 = sourceMaterial.pbrMetallicRoughness) === null || _sourceMaterial$pbrMe2 === void 0 ? void 0 : _sourceMaterial$pbrMe2.metallicFactor) || DEFAULT_METALLIC_FACTOR
|
|
776
|
+
}
|
|
777
|
+
};
|
|
778
|
+
var texture;
|
|
779
|
+
if (sourceMaterial !== null && sourceMaterial !== void 0 && (_sourceMaterial$pbrMe3 = sourceMaterial.pbrMetallicRoughness) !== null && _sourceMaterial$pbrMe3 !== void 0 && _sourceMaterial$pbrMe3.baseColorTexture) {
|
|
780
|
+
texture = sourceMaterial.pbrMetallicRoughness.baseColorTexture.texture.source;
|
|
781
|
+
material.pbrMetallicRoughness.baseColorTexture = {
|
|
782
|
+
textureSetDefinitionId: 0
|
|
783
|
+
};
|
|
784
|
+
} else if (sourceMaterial.emissiveTexture) {
|
|
785
|
+
texture = sourceMaterial.emissiveTexture.texture.source;
|
|
786
|
+
material.pbrMetallicRoughness.baseColorTexture = {
|
|
787
|
+
textureSetDefinitionId: 0
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
sourceMaterial.id = Number.isFinite(sourceMaterial.id) ? sourceMaterial.id : (0, _uuid.v4)();
|
|
791
|
+
var mergedMaterials = [{
|
|
792
|
+
originalMaterialId: sourceMaterial.id
|
|
793
|
+
}];
|
|
794
|
+
if (!texture) {
|
|
795
|
+
var _sourceMaterial$pbrMe4;
|
|
796
|
+
var baseColorFactor = sourceMaterial === null || sourceMaterial === void 0 ? void 0 : (_sourceMaterial$pbrMe4 = sourceMaterial.pbrMetallicRoughness) === null || _sourceMaterial$pbrMe4 === void 0 ? void 0 : _sourceMaterial$pbrMe4.baseColorFactor;
|
|
797
|
+
material.pbrMetallicRoughness.baseColorFactor = baseColorFactor && baseColorFactor.map(function (c) {
|
|
798
|
+
return Math.round(c * 255);
|
|
799
|
+
}) || undefined;
|
|
800
|
+
} else {
|
|
801
|
+
mergedMaterials[0].textureSize = {
|
|
802
|
+
width: texture.image.width,
|
|
803
|
+
height: texture.image.height
|
|
804
|
+
};
|
|
805
|
+
}
|
|
806
|
+
return {
|
|
807
|
+
material: material,
|
|
808
|
+
texture: texture,
|
|
809
|
+
mergedMaterials: mergedMaterials
|
|
810
|
+
};
|
|
811
|
+
}
|
|
812
|
+
function convertAlphaMode(gltfAlphaMode) {
|
|
813
|
+
switch (gltfAlphaMode) {
|
|
814
|
+
case 'OPAQUE':
|
|
815
|
+
return 'opaque';
|
|
816
|
+
case 'MASK':
|
|
817
|
+
return 'mask';
|
|
818
|
+
case 'BLEND':
|
|
819
|
+
return 'blend';
|
|
820
|
+
default:
|
|
821
|
+
return 'opaque';
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
function getDefaultMaterial() {
|
|
825
|
+
return {
|
|
826
|
+
alphaMode: 'opaque',
|
|
827
|
+
pbrMetallicRoughness: {
|
|
828
|
+
metallicFactor: 1,
|
|
829
|
+
roughnessFactor: 1
|
|
830
|
+
}
|
|
831
|
+
};
|
|
832
|
+
}
|
|
833
|
+
function getSharedResources(gltfMaterials, nodeId) {
|
|
834
|
+
var i3sResources = {};
|
|
835
|
+
if (!gltfMaterials || !gltfMaterials.length) {
|
|
836
|
+
return i3sResources;
|
|
837
|
+
}
|
|
838
|
+
i3sResources.materialDefinitionInfos = [];
|
|
839
|
+
var _iterator4 = _createForOfIteratorHelper(gltfMaterials),
|
|
840
|
+
_step4;
|
|
841
|
+
try {
|
|
842
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
843
|
+
var gltfMaterial = _step4.value;
|
|
844
|
+
var _convertGLTFMaterialT = convertGLTFMaterialToI3sSharedResources(gltfMaterial, nodeId),
|
|
845
|
+
materialDefinitionInfo = _convertGLTFMaterialT.materialDefinitionInfo,
|
|
846
|
+
textureDefinitionInfo = _convertGLTFMaterialT.textureDefinitionInfo;
|
|
847
|
+
i3sResources.materialDefinitionInfos.push(materialDefinitionInfo);
|
|
848
|
+
if (textureDefinitionInfo) {
|
|
849
|
+
i3sResources.textureDefinitionInfos = i3sResources.textureDefinitionInfos || [];
|
|
850
|
+
i3sResources.textureDefinitionInfos.push(textureDefinitionInfo);
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
} catch (err) {
|
|
854
|
+
_iterator4.e(err);
|
|
855
|
+
} finally {
|
|
856
|
+
_iterator4.f();
|
|
857
|
+
}
|
|
858
|
+
return i3sResources;
|
|
859
|
+
}
|
|
860
|
+
function convertGLTFMaterialToI3sSharedResources(gltfMaterial, nodeId) {
|
|
861
|
+
var _gltfMaterial$pbrMeta;
|
|
862
|
+
var texture = (gltfMaterial === null || gltfMaterial === void 0 ? void 0 : (_gltfMaterial$pbrMeta = gltfMaterial.pbrMetallicRoughness) === null || _gltfMaterial$pbrMeta === void 0 ? void 0 : _gltfMaterial$pbrMeta.baseColorTexture) || gltfMaterial.emissiveTexture;
|
|
863
|
+
var textureDefinitionInfo = null;
|
|
864
|
+
if (texture) {
|
|
865
|
+
textureDefinitionInfo = extractSharedResourcesTextureInfo(texture.texture, nodeId);
|
|
866
|
+
}
|
|
867
|
+
var _ref3 = (gltfMaterial === null || gltfMaterial === void 0 ? void 0 : gltfMaterial.pbrMetallicRoughness) || {},
|
|
868
|
+
baseColorFactor = _ref3.baseColorFactor,
|
|
869
|
+
metallicFactor = _ref3.metallicFactor;
|
|
870
|
+
var colorFactor = baseColorFactor;
|
|
871
|
+
if ((!baseColorFactor || baseColorFactor[3] === 0) && gltfMaterial.emissiveFactor) {
|
|
872
|
+
colorFactor = gltfMaterial.emissiveFactor;
|
|
873
|
+
colorFactor[3] = colorFactor[3] || 1;
|
|
874
|
+
}
|
|
875
|
+
return {
|
|
876
|
+
materialDefinitionInfo: extractSharedResourcesMaterialInfo(colorFactor || [1, 1, 1, 1], metallicFactor),
|
|
877
|
+
textureDefinitionInfo: textureDefinitionInfo
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
function extractSharedResourcesMaterialInfo(baseColorFactor) {
|
|
881
|
+
var metallicFactor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
882
|
+
var matDielectricColorComponent = 0.04 / 255;
|
|
883
|
+
var black = new _core.Vector4(0, 0, 0, 1);
|
|
884
|
+
var unitVector = new _core.Vector4(1, 1, 1, 1);
|
|
885
|
+
var dielectricSpecular = new _core.Vector4(matDielectricColorComponent, matDielectricColorComponent, matDielectricColorComponent, 0);
|
|
886
|
+
var baseColorVector = new _core.Vector4(baseColorFactor);
|
|
887
|
+
var firstOperand = unitVector.subtract(dielectricSpecular).multiply(baseColorVector);
|
|
888
|
+
var diffuse = firstOperand.lerp(firstOperand, black, metallicFactor);
|
|
889
|
+
dielectricSpecular[3] = 1;
|
|
890
|
+
var specular = dielectricSpecular.lerp(dielectricSpecular, baseColorVector, metallicFactor);
|
|
891
|
+
return {
|
|
892
|
+
params: {
|
|
893
|
+
diffuse: diffuse.toArray(),
|
|
894
|
+
specular: specular.toArray(),
|
|
895
|
+
renderMode: 'solid'
|
|
896
|
+
}
|
|
897
|
+
};
|
|
898
|
+
}
|
|
899
|
+
function extractSharedResourcesTextureInfo(texture, nodeId) {
|
|
900
|
+
var _texture$source, _texture$source2, _texture$source3, _texture$source4;
|
|
901
|
+
return {
|
|
902
|
+
encoding: texture !== null && texture !== void 0 && (_texture$source = texture.source) !== null && _texture$source !== void 0 && _texture$source.mimeType ? [texture.source.mimeType] : undefined,
|
|
903
|
+
images: [{
|
|
904
|
+
id: generateImageId(texture, nodeId),
|
|
905
|
+
size: (_texture$source2 = texture.source) === null || _texture$source2 === void 0 ? void 0 : _texture$source2.image.width,
|
|
906
|
+
length: (_texture$source3 = texture.source) !== null && _texture$source3 !== void 0 && _texture$source3.image.data.length ? [(_texture$source4 = texture.source) === null || _texture$source4 === void 0 ? void 0 : _texture$source4.image.data.length] : undefined
|
|
907
|
+
}]
|
|
908
|
+
};
|
|
909
|
+
}
|
|
910
|
+
function generateImageId(texture, nodeId) {
|
|
911
|
+
var _texture$source5;
|
|
912
|
+
var _ref4 = ((_texture$source5 = texture.source) === null || _texture$source5 === void 0 ? void 0 : _texture$source5.image) || {},
|
|
913
|
+
width = _ref4.width,
|
|
914
|
+
height = _ref4.height;
|
|
915
|
+
if (!width || !height) {
|
|
916
|
+
return '';
|
|
917
|
+
}
|
|
918
|
+
var levelCountOfTexture = 1;
|
|
919
|
+
var indexOfLevel = 0;
|
|
920
|
+
var indexOfTextureInStore = nodeId + 1;
|
|
921
|
+
var zerosCount = 32 - indexOfTextureInStore.toString(2).length;
|
|
922
|
+
var rightHalf = '0'.repeat(zerosCount).concat(indexOfTextureInStore.toString(2));
|
|
923
|
+
var shiftedLevelCountOfTexture = levelCountOfTexture << 28;
|
|
924
|
+
var shiftedIndexOfLevel = indexOfLevel << 24;
|
|
925
|
+
var shiftedWidth = width - 1 << 12;
|
|
926
|
+
var shiftedHeight = height - 1 << 0;
|
|
927
|
+
var leftHalf = shiftedLevelCountOfTexture + shiftedIndexOfLevel + shiftedWidth + shiftedHeight;
|
|
928
|
+
var imageId = BigInt("0b".concat(leftHalf.toString(2)).concat(rightHalf));
|
|
929
|
+
return imageId.toString();
|
|
930
|
+
}
|
|
931
|
+
function makeFeatureIdsUnique(featureIds, featureIndices, featuresHashArray, batchTable) {
|
|
932
|
+
var replaceMap = getFeaturesReplaceMap(featureIds, batchTable, featuresHashArray);
|
|
933
|
+
replaceIndicesByUnique(featureIndices, replaceMap);
|
|
934
|
+
replaceIndicesByUnique(featureIds, replaceMap);
|
|
935
|
+
}
|
|
936
|
+
function getFeaturesReplaceMap(featureIds, batchTable, featuresHashArray) {
|
|
937
|
+
var featureMap = {};
|
|
938
|
+
for (var index = 0; index < featureIds.length; index++) {
|
|
939
|
+
var oldFeatureId = featureIds[index];
|
|
940
|
+
var uniqueFeatureId = getOrCreateUniqueFeatureId(index, batchTable, featuresHashArray);
|
|
941
|
+
featureMap[oldFeatureId.toString()] = uniqueFeatureId;
|
|
942
|
+
}
|
|
943
|
+
return featureMap;
|
|
944
|
+
}
|
|
945
|
+
function generateStringFromBatchTableByIndex(batchTable, index) {
|
|
946
|
+
var str = '';
|
|
947
|
+
for (var _key in batchTable) {
|
|
948
|
+
str += batchTable[_key][index];
|
|
949
|
+
}
|
|
950
|
+
return str;
|
|
951
|
+
}
|
|
952
|
+
function getOrCreateUniqueFeatureId(index, batchTable, featuresHashArray) {
|
|
953
|
+
var batchTableStr = generateStringFromBatchTableByIndex(batchTable, index);
|
|
954
|
+
var hash = (0, _md.default)(batchTableStr);
|
|
955
|
+
if (featuresHashArray.includes(hash)) {
|
|
956
|
+
return featuresHashArray.indexOf(hash);
|
|
957
|
+
}
|
|
958
|
+
return featuresHashArray.push(hash) - 1;
|
|
959
|
+
}
|
|
960
|
+
function replaceIndicesByUnique(indicesArray, featureMap) {
|
|
961
|
+
for (var index = 0; index < indicesArray.length; index++) {
|
|
962
|
+
indicesArray[index] = featureMap[indicesArray[index]];
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
function convertPropertyTableToAttributeBuffers(featureIds, propertyTable, attributeStorageInfo) {
|
|
966
|
+
var attributeBuffers = [];
|
|
967
|
+
var needFlattenPropertyTable = (0, _featureAttributes.checkPropertiesLength)(featureIds, propertyTable);
|
|
968
|
+
var properties = needFlattenPropertyTable ? (0, _featureAttributes.flattenPropertyTableByFeatureIds)(featureIds, propertyTable) : propertyTable;
|
|
969
|
+
var propertyTableWithObjectIds = _objectSpread({
|
|
970
|
+
OBJECTID: featureIds
|
|
971
|
+
}, properties);
|
|
972
|
+
for (var propertyName in propertyTableWithObjectIds) {
|
|
973
|
+
var type = getAttributeType(propertyName, attributeStorageInfo);
|
|
974
|
+
var value = propertyTableWithObjectIds[propertyName];
|
|
975
|
+
var attributeBuffer = generateAttributeBuffer(type, value);
|
|
976
|
+
attributeBuffers.push(attributeBuffer);
|
|
977
|
+
}
|
|
978
|
+
return attributeBuffers;
|
|
979
|
+
}
|
|
980
|
+
function generateAttributeBuffer(type, value) {
|
|
981
|
+
var attributeBuffer;
|
|
982
|
+
switch (type) {
|
|
983
|
+
case OBJECT_ID_TYPE:
|
|
984
|
+
case SHORT_INT_TYPE:
|
|
985
|
+
attributeBuffer = generateShortIntegerAttributeBuffer(value);
|
|
986
|
+
break;
|
|
987
|
+
case DOUBLE_TYPE:
|
|
988
|
+
attributeBuffer = generateDoubleAttributeBuffer(value);
|
|
989
|
+
break;
|
|
990
|
+
case STRING_TYPE:
|
|
991
|
+
attributeBuffer = generateStringAttributeBuffer(value);
|
|
992
|
+
break;
|
|
993
|
+
default:
|
|
994
|
+
attributeBuffer = generateStringAttributeBuffer(value);
|
|
995
|
+
}
|
|
996
|
+
return attributeBuffer;
|
|
997
|
+
}
|
|
998
|
+
function getAttributeType(key, attributeStorageInfo) {
|
|
999
|
+
var attribute = attributeStorageInfo.find(function (attr) {
|
|
1000
|
+
return attr.name === key;
|
|
1001
|
+
});
|
|
1002
|
+
return attribute.attributeValues.valueType;
|
|
1003
|
+
}
|
|
1004
|
+
function generateShortIntegerAttributeBuffer(featureIds) {
|
|
1005
|
+
var count = new Uint32Array([featureIds.length]);
|
|
1006
|
+
var valuesArray = new Uint32Array(featureIds);
|
|
1007
|
+
return (0, _loaderUtils.concatenateArrayBuffers)(count.buffer, valuesArray.buffer);
|
|
1008
|
+
}
|
|
1009
|
+
function generateDoubleAttributeBuffer(featureIds) {
|
|
1010
|
+
var count = new Uint32Array([featureIds.length]);
|
|
1011
|
+
var padding = new Uint8Array(4);
|
|
1012
|
+
var valuesArray = new Float64Array(featureIds);
|
|
1013
|
+
return (0, _loaderUtils.concatenateArrayBuffers)(count.buffer, padding.buffer, valuesArray.buffer);
|
|
1014
|
+
}
|
|
1015
|
+
function generateStringAttributeBuffer(batchAttributes) {
|
|
1016
|
+
var stringCountArray = new Uint32Array([batchAttributes.length]);
|
|
1017
|
+
var totalNumberOfBytes = 0;
|
|
1018
|
+
var stringSizesArray = new Uint32Array(batchAttributes.length);
|
|
1019
|
+
var stringBufferArray = [];
|
|
1020
|
+
for (var index = 0; index < batchAttributes.length; index++) {
|
|
1021
|
+
var currentString = "".concat(String(batchAttributes[index]), "\0");
|
|
1022
|
+
var currentStringBuffer = Buffer.from(currentString);
|
|
1023
|
+
var currentStringSize = currentStringBuffer.length;
|
|
1024
|
+
totalNumberOfBytes += currentStringSize;
|
|
1025
|
+
stringSizesArray[index] = currentStringSize;
|
|
1026
|
+
stringBufferArray.push(currentStringBuffer);
|
|
1027
|
+
}
|
|
1028
|
+
var totalBytes = new Uint32Array([totalNumberOfBytes]);
|
|
1029
|
+
return _loaderUtils.concatenateArrayBuffers.apply(void 0, [stringCountArray.buffer, totalBytes.buffer, stringSizesArray.buffer].concat(stringBufferArray));
|
|
1030
|
+
}
|
|
1031
|
+
function generateBigUint64Array(featureIds) {
|
|
1032
|
+
var typedFeatureIds = new BigUint64Array(featureIds.length);
|
|
1033
|
+
for (var index = 0; index < featureIds.length; index++) {
|
|
1034
|
+
typedFeatureIds[index] = BigInt(featureIds[index]);
|
|
1035
|
+
}
|
|
1036
|
+
return typedFeatureIds;
|
|
1037
|
+
}
|
|
1038
|
+
function generateCompressedGeometry(_x20, _x21, _x22, _x23) {
|
|
1039
|
+
return _generateCompressedGeometry.apply(this, arguments);
|
|
1040
|
+
}
|
|
1041
|
+
function _generateCompressedGeometry() {
|
|
1042
|
+
_generateCompressedGeometry = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee7(vertexCount, convertedAttributes, attributes, dracoWorkerSoure) {
|
|
1043
|
+
var positions, normals, texCoords, colors, uvRegions, featureIds, faceRange, indices, index, featureIndices, featureIndex, compressedAttributes, attributesMetadata;
|
|
1044
|
+
return _regenerator.default.wrap(function _callee7$(_context7) {
|
|
1045
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
1046
|
+
case 0:
|
|
1047
|
+
positions = attributes.positions, normals = attributes.normals, texCoords = attributes.texCoords, colors = attributes.colors, uvRegions = attributes.uvRegions, featureIds = attributes.featureIds, faceRange = attributes.faceRange;
|
|
1048
|
+
indices = new Uint32Array(vertexCount);
|
|
1049
|
+
for (index = 0; index < indices.length; index++) {
|
|
1050
|
+
indices.set([index], index);
|
|
1051
|
+
}
|
|
1052
|
+
featureIndices = new Uint32Array(convertedAttributes.featureIndices.length ? convertedAttributes.featureIndices : vertexCount);
|
|
1053
|
+
featureIndex = generateFeatureIndexAttribute(featureIndices, faceRange);
|
|
1054
|
+
compressedAttributes = {
|
|
1055
|
+
positions: positions,
|
|
1056
|
+
normals: normals,
|
|
1057
|
+
colors: colors,
|
|
1058
|
+
'feature-index': featureIndex
|
|
1059
|
+
};
|
|
1060
|
+
if (texCoords.length) {
|
|
1061
|
+
compressedAttributes.texCoords = texCoords;
|
|
1062
|
+
}
|
|
1063
|
+
attributesMetadata = {
|
|
1064
|
+
'feature-index': {
|
|
1065
|
+
'i3s-attribute-type': 'feature-index',
|
|
1066
|
+
'i3s-feature-ids': new Int32Array(featureIds)
|
|
1067
|
+
}
|
|
1068
|
+
};
|
|
1069
|
+
if (uvRegions.length) {
|
|
1070
|
+
compressedAttributes['uv-region'] = uvRegions;
|
|
1071
|
+
attributesMetadata['uv-region'] = {
|
|
1072
|
+
'i3s-attribute-type': 'uv-region'
|
|
1073
|
+
};
|
|
1074
|
+
}
|
|
1075
|
+
return _context7.abrupt("return", (0, _core2.encode)({
|
|
1076
|
+
attributes: compressedAttributes,
|
|
1077
|
+
indices: indices
|
|
1078
|
+
}, _draco.DracoWriterWorker, _objectSpread(_objectSpread({}, _draco.DracoWriterWorker.options), {}, {
|
|
1079
|
+
source: dracoWorkerSoure,
|
|
1080
|
+
reuseWorkers: true,
|
|
1081
|
+
_nodeWorkers: true,
|
|
1082
|
+
draco: {
|
|
1083
|
+
method: 'MESH_SEQUENTIAL_ENCODING',
|
|
1084
|
+
attributesMetadata: attributesMetadata
|
|
1085
|
+
}
|
|
1086
|
+
})));
|
|
1087
|
+
case 10:
|
|
1088
|
+
case "end":
|
|
1089
|
+
return _context7.stop();
|
|
1090
|
+
}
|
|
1091
|
+
}, _callee7);
|
|
1092
|
+
}));
|
|
1093
|
+
return _generateCompressedGeometry.apply(this, arguments);
|
|
1094
|
+
}
|
|
1095
|
+
function generateFeatureIndexAttribute(featureIndex, faceRange) {
|
|
1096
|
+
var orderedFeatureIndices = new Uint32Array(featureIndex.length);
|
|
1097
|
+
var fillIndex = 0;
|
|
1098
|
+
var startIndex = 0;
|
|
1099
|
+
for (var index = 1; index < faceRange.length; index += 2) {
|
|
1100
|
+
var endIndex = (faceRange[index] + 1) * VALUES_PER_VERTEX;
|
|
1101
|
+
orderedFeatureIndices.fill(fillIndex, startIndex, endIndex);
|
|
1102
|
+
fillIndex++;
|
|
1103
|
+
startIndex = endIndex + 1;
|
|
1104
|
+
}
|
|
1105
|
+
return orderedFeatureIndices;
|
|
1106
|
+
}
|
|
1107
|
+
function getPropertyTable(tileContent) {
|
|
1108
|
+
if (!tileContent) {
|
|
1109
|
+
return null;
|
|
1110
|
+
}
|
|
1111
|
+
var batchTableJson = tileContent === null || tileContent === void 0 ? void 0 : tileContent.batchTableJson;
|
|
1112
|
+
if (batchTableJson) {
|
|
1113
|
+
return batchTableJson;
|
|
1114
|
+
}
|
|
1115
|
+
var _getPropertyTableExte = getPropertyTableExtension(tileContent),
|
|
1116
|
+
extensionName = _getPropertyTableExte.extensionName,
|
|
1117
|
+
extension = _getPropertyTableExte.extension;
|
|
1118
|
+
switch (extensionName) {
|
|
1119
|
+
case EXT_MESH_FEATURES:
|
|
1120
|
+
{
|
|
1121
|
+
console.warn('The I3S converter does not yet support the EXT_mesh_features extension');
|
|
1122
|
+
return null;
|
|
1123
|
+
}
|
|
1124
|
+
case EXT_FEATURE_METADATA:
|
|
1125
|
+
{
|
|
1126
|
+
return getPropertyTableFromExtFeatureMetadata(extension);
|
|
1127
|
+
}
|
|
1128
|
+
default:
|
|
1129
|
+
return null;
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
function getPropertyTableExtension(tileContent) {
|
|
1133
|
+
var _tileContent$gltf, _tileContent$gltf2, _tileContent$gltf2$ex, _tileContent$gltf3;
|
|
1134
|
+
var extensionsWithPropertyTables = [EXT_FEATURE_METADATA, EXT_MESH_FEATURES];
|
|
1135
|
+
var extensionsUsed = tileContent === null || tileContent === void 0 ? void 0 : (_tileContent$gltf = tileContent.gltf) === null || _tileContent$gltf === void 0 ? void 0 : _tileContent$gltf.extensionsUsed;
|
|
1136
|
+
if (!extensionsUsed) {
|
|
1137
|
+
return {
|
|
1138
|
+
extensionName: null,
|
|
1139
|
+
extension: null
|
|
1140
|
+
};
|
|
1141
|
+
}
|
|
1142
|
+
var extensionName = '';
|
|
1143
|
+
var _iterator5 = _createForOfIteratorHelper((tileContent === null || tileContent === void 0 ? void 0 : (_tileContent$gltf3 = tileContent.gltf) === null || _tileContent$gltf3 === void 0 ? void 0 : _tileContent$gltf3.extensionsUsed) || []),
|
|
1144
|
+
_step5;
|
|
1145
|
+
try {
|
|
1146
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
1147
|
+
var extensionItem = _step5.value;
|
|
1148
|
+
if (extensionsWithPropertyTables.includes(extensionItem)) {
|
|
1149
|
+
extensionName = extensionItem;
|
|
1150
|
+
break;
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
} catch (err) {
|
|
1154
|
+
_iterator5.e(err);
|
|
1155
|
+
} finally {
|
|
1156
|
+
_iterator5.f();
|
|
1157
|
+
}
|
|
1158
|
+
var extension = tileContent === null || tileContent === void 0 ? void 0 : (_tileContent$gltf2 = tileContent.gltf) === null || _tileContent$gltf2 === void 0 ? void 0 : (_tileContent$gltf2$ex = _tileContent$gltf2.extensions) === null || _tileContent$gltf2$ex === void 0 ? void 0 : _tileContent$gltf2$ex[extensionName];
|
|
1159
|
+
return {
|
|
1160
|
+
extensionName: extensionName,
|
|
1161
|
+
extension: extension
|
|
1162
|
+
};
|
|
1163
|
+
}
|
|
1164
|
+
function getPropertyTableFromExtFeatureMetadata(extension) {
|
|
1165
|
+
if (extension !== null && extension !== void 0 && extension.featureTables) {
|
|
1166
|
+
var _Object$keys;
|
|
1167
|
+
var firstFeatureTableName = (_Object$keys = Object.keys(extension.featureTables)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0];
|
|
1168
|
+
if (firstFeatureTableName) {
|
|
1169
|
+
var featureTable = extension === null || extension === void 0 ? void 0 : extension.featureTables[firstFeatureTableName];
|
|
1170
|
+
var propertyTable = {};
|
|
1171
|
+
for (var propertyName in featureTable.properties) {
|
|
1172
|
+
propertyTable[propertyName] = featureTable.properties[propertyName].data;
|
|
1173
|
+
}
|
|
1174
|
+
return propertyTable;
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
if (extension !== null && extension !== void 0 && extension.featureTextures) {
|
|
1178
|
+
var _Object$keys2;
|
|
1179
|
+
var firstTextureName = (_Object$keys2 = Object.keys(extension.featureTextures)) === null || _Object$keys2 === void 0 ? void 0 : _Object$keys2[0];
|
|
1180
|
+
if (firstTextureName) {
|
|
1181
|
+
var _featureTable = extension === null || extension === void 0 ? void 0 : extension.featureTextures[firstTextureName];
|
|
1182
|
+
var _propertyTable = {};
|
|
1183
|
+
for (var _propertyName in _featureTable.properties) {
|
|
1184
|
+
_propertyTable[_propertyName] = _featureTable.properties[_propertyName].data;
|
|
1185
|
+
}
|
|
1186
|
+
return _propertyTable;
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
console.warn("The I3S converter couldn't handle EXT_feature_metadata extension: There is neither featureTables, no featureTextures in the extension.");
|
|
1190
|
+
return null;
|
|
1191
|
+
}
|
|
1192
|
+
//# sourceMappingURL=geometry-converter.js.map
|