@loaders.gl/tile-converter 4.0.0-alpha.9 → 4.0.0-beta.1
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/i3s-server.js +4 -0
- package/bin/slpk-extractor.js +4 -0
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts +5 -5
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +10 -5
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/load-i3s.d.ts +10 -0
- package/dist/3d-tiles-converter/helpers/load-i3s.d.ts.map +1 -0
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts +2 -1
- package/dist/3d-tiles-converter/helpers/texture-atlas.d.ts.map +1 -1
- package/dist/converter.min.js +172 -103
- package/dist/deps-installer/deps-installer.d.ts +3 -2
- package/dist/deps-installer/deps-installer.d.ts.map +1 -1
- package/dist/dist.min.js +32715 -32567
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +97 -117
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +24 -22
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/load-i3s.js +63 -0
- package/dist/es5/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
- package/dist/es5/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/es5/converter-cli.js +25 -65
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +113 -39
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +45 -15
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/feature-attributes.js +8 -18
- package/dist/es5/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js +83 -43
- package/dist/es5/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +100 -102
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js +70 -4
- package/dist/es5/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/node-index-document.js +3 -2
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js +47 -12
- package/dist/es5/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +187 -174
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +11 -11
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/README.md +46 -2
- package/dist/es5/i3s-server/app.js +23 -15
- package/dist/es5/i3s-server/app.js.map +1 -1
- package/dist/es5/i3s-server/bin/www.js +33 -0
- package/dist/es5/i3s-server/bin/www.js.map +1 -0
- package/dist/es5/i3s-server/controllers/index-controller.js +23 -22
- package/dist/es5/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/es5/i3s-server/controllers/slpk-controller.js +35 -38
- package/dist/es5/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/es5/i3s-server/routes/index.js +2 -2
- package/dist/es5/i3s-server/routes/index.js.map +1 -1
- package/dist/es5/i3s-server/routes/slpk-router.js +14 -13
- package/dist/es5/i3s-server/routes/slpk-router.js.map +1 -1
- package/dist/es5/i3s-server/utils/create-scene-server.js +7 -4
- package/dist/es5/i3s-server/utils/create-scene-server.js.map +1 -1
- package/dist/es5/i3s-server/utils/server-utils.js +49 -0
- package/dist/es5/i3s-server/utils/server-utils.js.map +1 -0
- package/dist/es5/lib/utils/cli-utils.js +57 -0
- package/dist/es5/lib/utils/cli-utils.js.map +1 -0
- package/dist/es5/lib/utils/compress-util.js +1 -1
- package/dist/es5/lib/utils/compress-util.js.map +1 -1
- package/dist/es5/lib/utils/lod-conversion-utils.js +10 -4
- package/dist/es5/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/es5/pgm-loader.js +11 -3
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/es5/slpk-extractor/slpk-extractor.js +171 -0
- package/dist/es5/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/es5/slpk-extractor-cli.js +117 -0
- package/dist/es5/slpk-extractor-cli.js.map +1 -0
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +51 -58
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +12 -11
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/load-i3s.js +32 -0
- package/dist/esm/3d-tiles-converter/helpers/load-i3s.js.map +1 -0
- package/dist/esm/3d-tiles-converter/helpers/texture-atlas.js.map +1 -1
- package/dist/esm/converter-cli.js +8 -48
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +38 -12
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +28 -11
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/feature-attributes.js +10 -8
- package/dist/esm/i3s-converter/helpers/feature-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js +77 -34
- package/dist/esm/i3s-converter/helpers/geometry-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +60 -61
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js +33 -4
- package/dist/esm/i3s-converter/helpers/load-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js +2 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js +37 -12
- package/dist/esm/i3s-converter/helpers/preprocess-3d-tiles.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +101 -73
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +9 -9
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/README.md +46 -2
- package/dist/esm/i3s-server/app.js +13 -11
- package/dist/esm/i3s-server/app.js.map +1 -1
- package/dist/esm/i3s-server/bin/i3s-server.min.js +516 -0
- package/dist/esm/i3s-server/bin/www.js +30 -0
- package/dist/esm/i3s-server/bin/www.js.map +1 -0
- package/dist/esm/i3s-server/controllers/index-controller.js +4 -7
- package/dist/esm/i3s-server/controllers/index-controller.js.map +1 -1
- package/dist/esm/i3s-server/controllers/slpk-controller.js +9 -26
- package/dist/esm/i3s-server/controllers/slpk-controller.js.map +1 -1
- package/dist/esm/i3s-server/routes/index.js +1 -1
- package/dist/esm/i3s-server/routes/index.js.map +1 -1
- package/dist/esm/i3s-server/routes/slpk-router.js +5 -11
- package/dist/esm/i3s-server/routes/slpk-router.js.map +1 -1
- package/dist/esm/i3s-server/utils/create-scene-server.js +2 -5
- package/dist/esm/i3s-server/utils/create-scene-server.js.map +1 -1
- package/dist/esm/i3s-server/utils/server-utils.js +40 -0
- package/dist/esm/i3s-server/utils/server-utils.js.map +1 -0
- package/dist/esm/lib/utils/cli-utils.js +47 -0
- package/dist/esm/lib/utils/cli-utils.js.map +1 -0
- package/dist/esm/lib/utils/compress-util.js +1 -1
- package/dist/esm/lib/utils/compress-util.js.map +1 -1
- package/dist/esm/lib/utils/lod-conversion-utils.js +6 -4
- package/dist/esm/lib/utils/lod-conversion-utils.js.map +1 -1
- package/dist/esm/pgm-loader.js +7 -4
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/esm/slpk-extractor/slpk-extractor.js +63 -0
- package/dist/esm/slpk-extractor/slpk-extractor.js.map +1 -0
- package/dist/esm/slpk-extractor-cli.js +74 -0
- package/dist/esm/slpk-extractor-cli.js.map +1 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +15 -2
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +1 -2
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/feature-attributes.d.ts +8 -8
- package/dist/i3s-converter/helpers/feature-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -9
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +3 -3
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts +15 -0
- package/dist/i3s-converter/helpers/load-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts +4 -5
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.d.ts +3 -2
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/types.d.ts +48 -7
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-server/app.d.ts +1 -2
- package/dist/i3s-server/app.d.ts.map +1 -1
- package/dist/i3s-server/bin/www.d.ts +3 -0
- package/dist/i3s-server/bin/www.d.ts.map +1 -0
- package/dist/i3s-server/controllers/index-controller.d.ts +6 -1
- package/dist/i3s-server/controllers/index-controller.d.ts.map +1 -1
- package/dist/i3s-server/controllers/slpk-controller.d.ts +13 -2
- package/dist/i3s-server/controllers/slpk-controller.d.ts.map +1 -1
- package/dist/i3s-server/routes/index.d.ts +1 -2
- package/dist/i3s-server/routes/index.d.ts.map +1 -1
- package/dist/i3s-server/routes/slpk-router.d.ts +2 -2
- package/dist/i3s-server/routes/slpk-router.d.ts.map +1 -1
- package/dist/i3s-server/utils/create-scene-server.d.ts +11 -5
- package/dist/i3s-server/utils/create-scene-server.d.ts.map +1 -1
- package/dist/i3s-server/utils/server-utils.d.ts +24 -0
- package/dist/i3s-server/utils/server-utils.d.ts.map +1 -0
- package/dist/lib/utils/cli-utils.d.ts +34 -0
- package/dist/lib/utils/cli-utils.d.ts.map +1 -0
- package/dist/lib/utils/lod-conversion-utils.d.ts +2 -2
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
- package/dist/pgm-loader.d.ts +9 -2
- package/dist/pgm-loader.d.ts.map +1 -1
- package/dist/slpk-extractor/slpk-extractor.d.ts +23 -0
- package/dist/slpk-extractor/slpk-extractor.d.ts.map +1 -0
- package/dist/slpk-extractor-cli.d.ts +17 -0
- package/dist/slpk-extractor-cli.d.ts.map +1 -0
- package/dist/slpk-extractor.min.js +189 -0
- package/package.json +27 -21
- package/src/3d-tiles-converter/3d-tiles-converter.ts +65 -69
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +23 -19
- package/src/3d-tiles-converter/helpers/load-i3s.ts +52 -0
- package/src/3d-tiles-converter/helpers/texture-atlas.ts +6 -2
- package/src/converter-cli.ts +16 -74
- package/src/deps-installer/deps-installer.ts +56 -11
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +77 -32
- package/src/i3s-converter/helpers/coordinate-converter.ts +1 -2
- package/src/i3s-converter/helpers/feature-attributes.ts +23 -18
- package/src/i3s-converter/helpers/geometry-attributes.ts +81 -44
- package/src/i3s-converter/helpers/geometry-converter.ts +149 -126
- package/src/i3s-converter/helpers/gltf-attributes.ts +9 -10
- package/src/i3s-converter/helpers/load-3d-tiles.ts +61 -5
- package/src/i3s-converter/helpers/node-index-document.ts +5 -1
- package/src/i3s-converter/helpers/preprocess-3d-tiles.ts +70 -21
- package/src/i3s-converter/i3s-converter.ts +145 -73
- package/src/i3s-converter/types.ts +49 -7
- package/src/i3s-server/README.md +46 -2
- package/src/i3s-server/{app.js → app.ts} +11 -9
- package/src/i3s-server/bin/www.ts +38 -0
- package/src/i3s-server/controllers/{index-controller.js → index-controller.ts} +10 -9
- package/src/i3s-server/controllers/slpk-controller.ts +32 -0
- package/src/i3s-server/routes/{index.js → index.ts} +2 -1
- package/src/i3s-server/routes/{slpk-router.js → slpk-router.ts} +5 -10
- package/src/i3s-server/utils/create-scene-server.ts +20 -0
- package/src/i3s-server/utils/server-utils.ts +70 -0
- package/src/lib/utils/cli-utils.ts +78 -0
- package/src/lib/utils/compress-util.ts +1 -1
- package/src/lib/utils/lod-conversion-utils.ts +10 -6
- package/src/pgm-loader.ts +15 -7
- package/src/slpk-extractor/slpk-extractor.ts +101 -0
- package/src/slpk-extractor-cli.ts +128 -0
- package/dist/3d-tiles-attributes-worker.d.ts +0 -28
- package/dist/3d-tiles-attributes-worker.d.ts.map +0 -1
- package/dist/3d-tiles-attributes-worker.js +0 -3
- package/dist/3d-tiles-attributes-worker.js.map +0 -7
- package/dist/3d-tiles-converter/3d-tiles-converter.js +0 -288
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +0 -269
- package/dist/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.js +0 -23
- package/dist/3d-tiles-converter/helpers/texture-atlas.js +0 -52
- package/dist/3d-tiles-converter/json-templates/tileset.js +0 -43
- package/dist/bundle.js +0 -5
- package/dist/constants.js +0 -4
- package/dist/converter-cli.js +0 -280
- package/dist/deps-installer/deps-installer.js +0 -63
- package/dist/es5/3d-tiles-attributes-worker.js +0 -25
- package/dist/es5/3d-tiles-attributes-worker.js.map +0 -1
- package/dist/es5/i3s-attributes-worker.js +0 -25
- package/dist/es5/i3s-attributes-worker.js.map +0 -1
- package/dist/es5/i3s-server/bin/www +0 -102
- package/dist/es5/workers/3d-tiles-attributes-worker.js +0 -28
- package/dist/es5/workers/3d-tiles-attributes-worker.js.map +0 -1
- package/dist/es5/workers/i3s-attributes-worker.js +0 -30
- package/dist/es5/workers/i3s-attributes-worker.js.map +0 -1
- package/dist/esm/3d-tiles-attributes-worker.js +0 -16
- package/dist/esm/3d-tiles-attributes-worker.js.map +0 -1
- package/dist/esm/i3s-attributes-worker.js +0 -16
- package/dist/esm/i3s-attributes-worker.js.map +0 -1
- package/dist/esm/i3s-server/bin/www +0 -102
- package/dist/esm/workers/3d-tiles-attributes-worker.js +0 -8
- package/dist/esm/workers/3d-tiles-attributes-worker.js.map +0 -1
- package/dist/esm/workers/i3s-attributes-worker.js +0 -7
- package/dist/esm/workers/i3s-attributes-worker.js.map +0 -1
- package/dist/i3s-attributes-worker.d.ts +0 -45
- package/dist/i3s-attributes-worker.d.ts.map +0 -1
- package/dist/i3s-attributes-worker.js +0 -9
- package/dist/i3s-attributes-worker.js.map +0 -7
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +0 -138
- package/dist/i3s-converter/helpers/coordinate-converter.js +0 -123
- package/dist/i3s-converter/helpers/create-scene-server-path.js +0 -28
- package/dist/i3s-converter/helpers/feature-attributes.js +0 -216
- package/dist/i3s-converter/helpers/geometry-attributes.js +0 -202
- package/dist/i3s-converter/helpers/geometry-converter.js +0 -1225
- package/dist/i3s-converter/helpers/gltf-attributes.js +0 -128
- package/dist/i3s-converter/helpers/load-3d-tiles.js +0 -53
- package/dist/i3s-converter/helpers/node-debug.js +0 -120
- package/dist/i3s-converter/helpers/node-index-document.js +0 -268
- package/dist/i3s-converter/helpers/node-pages.js +0 -316
- package/dist/i3s-converter/helpers/preprocess-3d-tiles.js +0 -76
- package/dist/i3s-converter/helpers/tileset-traversal.js +0 -29
- package/dist/i3s-converter/i3s-converter.js +0 -911
- package/dist/i3s-converter/json-templates/geometry-definitions.js +0 -87
- package/dist/i3s-converter/json-templates/layers.js +0 -139
- package/dist/i3s-converter/json-templates/metadata.js +0 -25
- package/dist/i3s-converter/json-templates/node.js +0 -89
- package/dist/i3s-converter/json-templates/scene-server.js +0 -31
- package/dist/i3s-converter/json-templates/shared-resources.js +0 -129
- package/dist/i3s-converter/json-templates/store.js +0 -103
- package/dist/i3s-converter/types.js +0 -17
- package/dist/i3s-server/app.js +0 -22
- package/dist/i3s-server/controllers/index-controller.js +0 -23
- package/dist/i3s-server/controllers/slpk-controller.js +0 -32
- package/dist/i3s-server/routes/index.js +0 -16
- package/dist/i3s-server/routes/slpk-router.js +0 -33
- package/dist/i3s-server/utils/create-scene-server.js +0 -14
- package/dist/index.js +0 -10
- package/dist/lib/utils/compress-util.js +0 -257
- package/dist/lib/utils/file-utils.js +0 -139
- package/dist/lib/utils/geometry-utils.js +0 -18
- package/dist/lib/utils/lod-conversion-utils.js +0 -76
- package/dist/lib/utils/queue.js +0 -18
- package/dist/lib/utils/statistic-utills.js +0 -64
- package/dist/lib/utils/write-queue.js +0 -80
- package/dist/pgm-loader.js +0 -24
- package/dist/workers/3d-tiles-attributes-worker.d.ts +0 -2
- package/dist/workers/3d-tiles-attributes-worker.d.ts.map +0 -1
- package/dist/workers/3d-tiles-attributes-worker.js +0 -9
- package/dist/workers/i3s-attributes-worker.d.ts +0 -2
- package/dist/workers/i3s-attributes-worker.d.ts.map +0 -1
- package/dist/workers/i3s-attributes-worker.js +0 -5
- package/src/3d-tiles-attributes-worker.ts +0 -43
- package/src/i3s-attributes-worker.ts +0 -59
- package/src/i3s-server/bin/www +0 -102
- package/src/i3s-server/controllers/slpk-controller.js +0 -38
- package/src/i3s-server/utils/create-scene-server.js +0 -15
- package/src/workers/3d-tiles-attributes-worker.ts +0 -6
- package/src/workers/i3s-attributes-worker.ts +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tile-converter",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-beta.1",
|
|
4
4
|
"description": "Converter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"sideEffects": false,
|
|
22
22
|
"bin": {
|
|
23
23
|
"tile-converter": "./bin/converter.js",
|
|
24
|
-
"
|
|
24
|
+
"slpk-extractor": "./bin/slpk-extractor.js",
|
|
25
|
+
"i3s-server": "./bin/i3s-server.js"
|
|
25
26
|
},
|
|
26
27
|
"files": [
|
|
27
28
|
"src",
|
|
@@ -37,25 +38,25 @@
|
|
|
37
38
|
"join-images": false
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-
|
|
41
|
+
"pre-build": "npm run build-bundle && npm run build-converter-bundle && npm run build-slpk-extractor-bundle && npm run build-i3s-server-bundle",
|
|
41
42
|
"build-bundle": "esbuild ./src/index.ts --bundle --outfile=dist/dist.min.js --platform=node --external:join-images",
|
|
42
43
|
"build-converter-bundle": "esbuild src/converter-cli.ts --outfile=dist/converter.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\"",
|
|
43
|
-
"build-
|
|
44
|
-
"build-
|
|
44
|
+
"build-slpk-extractor-bundle": "esbuild src/slpk-extractor-cli.ts --outfile=dist/slpk-extractor.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\"",
|
|
45
|
+
"build-i3s-server-bundle": "esbuild src/i3s-server/bin/www.ts --outfile=dist/esm/i3s-server/bin/i3s-server.min.js --platform=node --target=esnext,node14 --external:join-images --minify --bundle --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
45
46
|
},
|
|
46
47
|
"dependencies": {
|
|
47
|
-
"@loaders.gl/3d-tiles": "4.0.0-
|
|
48
|
-
"@loaders.gl/crypto": "4.0.0-
|
|
49
|
-
"@loaders.gl/draco": "4.0.0-
|
|
50
|
-
"@loaders.gl/gltf": "4.0.0-
|
|
51
|
-
"@loaders.gl/i3s": "4.0.0-
|
|
52
|
-
"@loaders.gl/images": "4.0.0-
|
|
53
|
-
"@loaders.gl/loader-utils": "4.0.0-
|
|
54
|
-
"@loaders.gl/polyfills": "4.0.0-
|
|
55
|
-
"@loaders.gl/textures": "4.0.0-
|
|
56
|
-
"@loaders.gl/tiles": "4.0.0-
|
|
57
|
-
"@loaders.gl/worker-utils": "4.0.0-
|
|
58
|
-
"@loaders.gl/zip": "4.0.0-
|
|
48
|
+
"@loaders.gl/3d-tiles": "4.0.0-beta.1",
|
|
49
|
+
"@loaders.gl/crypto": "4.0.0-beta.1",
|
|
50
|
+
"@loaders.gl/draco": "4.0.0-beta.1",
|
|
51
|
+
"@loaders.gl/gltf": "4.0.0-beta.1",
|
|
52
|
+
"@loaders.gl/i3s": "4.0.0-beta.1",
|
|
53
|
+
"@loaders.gl/images": "4.0.0-beta.1",
|
|
54
|
+
"@loaders.gl/loader-utils": "4.0.0-beta.1",
|
|
55
|
+
"@loaders.gl/polyfills": "4.0.0-beta.1",
|
|
56
|
+
"@loaders.gl/textures": "4.0.0-beta.1",
|
|
57
|
+
"@loaders.gl/tiles": "4.0.0-beta.1",
|
|
58
|
+
"@loaders.gl/worker-utils": "4.0.0-beta.1",
|
|
59
|
+
"@loaders.gl/zip": "4.0.0-beta.1",
|
|
59
60
|
"@math.gl/core": "^3.5.1",
|
|
60
61
|
"@math.gl/culling": "^3.5.1",
|
|
61
62
|
"@math.gl/geoid": "^3.5.1",
|
|
@@ -63,13 +64,14 @@
|
|
|
63
64
|
"archiver": "^5.0.0",
|
|
64
65
|
"cors": "^2.8.5",
|
|
65
66
|
"crypt": "^0.0.2",
|
|
66
|
-
"debug": "~
|
|
67
|
-
"express": "~4.
|
|
67
|
+
"debug": "~4.3.4",
|
|
68
|
+
"express": "~4.18.2",
|
|
69
|
+
"inquirer": "^8.0.0",
|
|
68
70
|
"json-map-transform": "^1.2.6",
|
|
69
71
|
"jszip": "^3.5.0",
|
|
70
72
|
"md5": "^2.3.0",
|
|
71
73
|
"morgan": "~1.9.1",
|
|
72
|
-
"uuid": "^
|
|
74
|
+
"uuid": "^9.0.0"
|
|
73
75
|
},
|
|
74
76
|
"peerDependencies": {
|
|
75
77
|
"@loaders.gl/core": "^4.0.0-alpha.8"
|
|
@@ -78,5 +80,9 @@
|
|
|
78
80
|
"join-images": "^1.1.3",
|
|
79
81
|
"sharp": "^0.31.3"
|
|
80
82
|
},
|
|
81
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "35c625e67132b0784e597d9ddabae8aefea29ff2",
|
|
84
|
+
"devDependencies": {
|
|
85
|
+
"@types/express": "^4.17.17",
|
|
86
|
+
"@types/node": "^20.4.2"
|
|
87
|
+
}
|
|
82
88
|
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
AttributeStorageInfo,
|
|
3
|
+
FeatureAttribute,
|
|
4
|
+
NodeReference,
|
|
5
|
+
I3STilesetHeader
|
|
6
|
+
} from '@loaders.gl/i3s';
|
|
2
7
|
import type {Tiles3DTileJSON} from '@loaders.gl/3d-tiles';
|
|
3
8
|
|
|
4
9
|
import {join} from 'path';
|
|
5
10
|
import process from 'process';
|
|
6
11
|
import transform from 'json-map-transform';
|
|
7
|
-
import {
|
|
12
|
+
import {load, isBrowser} from '@loaders.gl/core';
|
|
8
13
|
import {I3SLoader, I3SAttributeLoader, COORDINATE_SYSTEM} from '@loaders.gl/i3s';
|
|
9
|
-
import {Tileset3D, Tile3D} from '@loaders.gl/tiles';
|
|
10
14
|
import {Geoid} from '@math.gl/geoid';
|
|
11
15
|
|
|
12
16
|
import {PGMLoader} from '../pgm-loader';
|
|
@@ -16,13 +20,12 @@ import {writeFile, removeDir} from '../lib/utils/file-utils';
|
|
|
16
20
|
import {calculateFilesSize, timeConverter} from '../lib/utils/statistic-utills';
|
|
17
21
|
import {TILESET as tilesetTemplate} from './json-templates/tileset';
|
|
18
22
|
import {createObbFromMbs} from '../i3s-converter/helpers/coordinate-converter';
|
|
19
|
-
import {
|
|
20
|
-
I3SAttributesData,
|
|
21
|
-
Tile3dAttributesWorker,
|
|
22
|
-
transform3DTilesAttributesOnWorker
|
|
23
|
-
} from '../3d-tiles-attributes-worker';
|
|
24
|
-
import {getWorkerURL, WorkerFarm} from '@loaders.gl/worker-utils';
|
|
23
|
+
import {WorkerFarm} from '@loaders.gl/worker-utils';
|
|
25
24
|
import {BROWSER_ERROR_MESSAGE} from '../constants';
|
|
25
|
+
import B3dmConverter, {I3SAttributesData} from './helpers/b3dm-converter';
|
|
26
|
+
import {I3STileHeader} from '@loaders.gl/i3s/src/types';
|
|
27
|
+
import {loadI3SContent} from './helpers/load-i3s';
|
|
28
|
+
import {I3SLoaderOptions} from '@loaders.gl/i3s/src/i3s-loader';
|
|
26
29
|
|
|
27
30
|
const I3S = 'I3S';
|
|
28
31
|
|
|
@@ -35,9 +38,18 @@ export default class Tiles3DConverter {
|
|
|
35
38
|
vertexCounter: number;
|
|
36
39
|
conversionStartTime: [number, number];
|
|
37
40
|
geoidHeightModel: Geoid | null;
|
|
38
|
-
sourceTileset:
|
|
39
|
-
attributeStorageInfo
|
|
41
|
+
sourceTileset: I3STilesetHeader | null;
|
|
42
|
+
attributeStorageInfo?: AttributeStorageInfo[] | null;
|
|
40
43
|
workerSource: {[key: string]: string} = {};
|
|
44
|
+
loaderOptions: I3SLoaderOptions = {
|
|
45
|
+
_nodeWorkers: true,
|
|
46
|
+
reuseWorkers: true,
|
|
47
|
+
i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false},
|
|
48
|
+
// We need to load local fs workers because nodejs can't load workers from the Internet
|
|
49
|
+
'i3s-content': {
|
|
50
|
+
workerUrl: './modules/i3s/dist/i3s-content-worker-node.js'
|
|
51
|
+
}
|
|
52
|
+
};
|
|
41
53
|
|
|
42
54
|
constructor() {
|
|
43
55
|
this.options = {};
|
|
@@ -78,30 +90,19 @@ export default class Tiles3DConverter {
|
|
|
78
90
|
this.geoidHeightModel = await load(egmFilePath, PGMLoader);
|
|
79
91
|
console.log('Loading egm file completed!'); // eslint-disable-line
|
|
80
92
|
|
|
81
|
-
await this.
|
|
82
|
-
|
|
83
|
-
const sourceTilesetJson = await load(inputUrl, I3SLoader, {});
|
|
93
|
+
this.sourceTileset = await load(inputUrl, I3SLoader, this.loaderOptions);
|
|
84
94
|
|
|
85
|
-
this.sourceTileset
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
reuseWorkers: true,
|
|
89
|
-
i3s: {coordinateSystem: COORDINATE_SYSTEM.LNGLAT_OFFSETS, decodeTextures: false}
|
|
90
|
-
// TODO should no longer be needed with new workers
|
|
91
|
-
// 'i3s-content-nodejs': {
|
|
92
|
-
// workerUrl: './modules/i3s/dist/i3s-content-nodejs-worker.js'
|
|
93
|
-
// }
|
|
94
|
-
}
|
|
95
|
-
});
|
|
95
|
+
if (!this.sourceTileset) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
96
98
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
rootNode.header.obb = createObbFromMbs(rootNode.header.mbs);
|
|
99
|
+
const rootNode = this.sourceTileset?.root;
|
|
100
|
+
if (!rootNode.obb) {
|
|
101
|
+
rootNode.obb = createObbFromMbs(rootNode.mbs);
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
this.tilesetPath = join(`${outputPath}`, `${tilesetName}`);
|
|
104
|
-
this.attributeStorageInfo =
|
|
105
|
+
this.attributeStorageInfo = this.sourceTileset.attributeStorageInfo;
|
|
105
106
|
// Removing the tilesetPath needed to exclude erroneous files after conversion
|
|
106
107
|
try {
|
|
107
108
|
await removeDir(this.tilesetPath);
|
|
@@ -111,7 +112,7 @@ export default class Tiles3DConverter {
|
|
|
111
112
|
|
|
112
113
|
const rootTile: Tiles3DTileJSON = {
|
|
113
114
|
boundingVolume: {
|
|
114
|
-
box: i3sObbTo3dTilesObb(rootNode.
|
|
115
|
+
box: i3sObbTo3dTilesObb(rootNode.obb, this.geoidHeightModel)
|
|
115
116
|
},
|
|
116
117
|
geometricError: convertScreenThresholdToGeometricError(rootNode),
|
|
117
118
|
children: []
|
|
@@ -137,28 +138,33 @@ export default class Tiles3DConverter {
|
|
|
137
138
|
* @param childNodeInfo child node to convert
|
|
138
139
|
*/
|
|
139
140
|
private async convertChildNode(
|
|
140
|
-
parentSourceNode:
|
|
141
|
+
parentSourceNode: I3STileHeader,
|
|
141
142
|
parentNode: Tiles3DTileJSON,
|
|
142
143
|
level: number,
|
|
143
144
|
childNodeInfo: NodeReference
|
|
144
145
|
): Promise<void> {
|
|
145
146
|
const sourceChild = await this._loadChildNode(parentSourceNode, childNodeInfo);
|
|
146
|
-
parentSourceNode.children.push(sourceChild);
|
|
147
147
|
if (sourceChild.contentUrl) {
|
|
148
|
-
await this.sourceTileset
|
|
149
|
-
|
|
148
|
+
const content = await loadI3SContent(this.sourceTileset, sourceChild, this.loaderOptions);
|
|
149
|
+
|
|
150
|
+
if (!content) {
|
|
151
|
+
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this.vertexCounter += content?.vertexCount || 0;
|
|
150
156
|
|
|
151
157
|
let featureAttributes: FeatureAttribute | null = null;
|
|
152
158
|
if (this.attributeStorageInfo) {
|
|
153
159
|
featureAttributes = await this._loadChildAttributes(sourceChild, this.attributeStorageInfo);
|
|
154
160
|
}
|
|
155
161
|
|
|
156
|
-
if (!sourceChild.
|
|
157
|
-
sourceChild.
|
|
162
|
+
if (!sourceChild.obb) {
|
|
163
|
+
sourceChild.obb = createObbFromMbs(sourceChild.mbs);
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
const boundingVolume = {
|
|
161
|
-
box: i3sObbTo3dTilesObb(sourceChild.
|
|
167
|
+
box: i3sObbTo3dTilesObb(sourceChild.obb, this.geoidHeightModel)
|
|
162
168
|
};
|
|
163
169
|
const child: Tiles3DTileJSON = {
|
|
164
170
|
boundingVolume,
|
|
@@ -167,14 +173,13 @@ export default class Tiles3DConverter {
|
|
|
167
173
|
};
|
|
168
174
|
|
|
169
175
|
const i3sAttributesData: I3SAttributesData = {
|
|
170
|
-
tileContent:
|
|
171
|
-
|
|
176
|
+
tileContent: content,
|
|
177
|
+
box: boundingVolume.box,
|
|
178
|
+
textureFormat: sourceChild.textureFormat
|
|
172
179
|
};
|
|
173
180
|
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
featureAttributes
|
|
177
|
-
});
|
|
181
|
+
const b3dmConverter = new B3dmConverter();
|
|
182
|
+
const b3dm = await b3dmConverter.convert(i3sAttributesData, featureAttributes);
|
|
178
183
|
|
|
179
184
|
child.content = {
|
|
180
185
|
uri: `${sourceChild.id}.b3dm`,
|
|
@@ -183,7 +188,6 @@ export default class Tiles3DConverter {
|
|
|
183
188
|
await writeFile(this.tilesetPath, new Uint8Array(b3dm), `${sourceChild.id}.b3dm`);
|
|
184
189
|
parentNode.children.push(child);
|
|
185
190
|
|
|
186
|
-
sourceChild.unloadContent();
|
|
187
191
|
await this._addChildren(sourceChild, child, level + 1);
|
|
188
192
|
} else {
|
|
189
193
|
await this._addChildren(sourceChild, parentNode, level + 1);
|
|
@@ -197,7 +201,7 @@ export default class Tiles3DConverter {
|
|
|
197
201
|
* @param level a current level of a tree depth
|
|
198
202
|
*/
|
|
199
203
|
private async _addChildren(
|
|
200
|
-
parentSourceNode:
|
|
204
|
+
parentSourceNode: I3STileHeader,
|
|
201
205
|
parentNode: Tiles3DTileJSON,
|
|
202
206
|
level: number
|
|
203
207
|
): Promise<void> {
|
|
@@ -205,7 +209,7 @@ export default class Tiles3DConverter {
|
|
|
205
209
|
return;
|
|
206
210
|
}
|
|
207
211
|
const promises: Promise<void>[] = [];
|
|
208
|
-
for (const childNodeInfo of parentSourceNode.
|
|
212
|
+
for (const childNodeInfo of parentSourceNode.children || []) {
|
|
209
213
|
promises.push(this.convertChildNode(parentSourceNode, parentNode, level, childNodeInfo));
|
|
210
214
|
}
|
|
211
215
|
await Promise.all(promises);
|
|
@@ -217,29 +221,31 @@ export default class Tiles3DConverter {
|
|
|
217
221
|
* @param childNodeInfo child information from 3DNodeIndexDocument
|
|
218
222
|
* (https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md)
|
|
219
223
|
*/
|
|
220
|
-
private async _loadChildNode(
|
|
224
|
+
private async _loadChildNode(
|
|
225
|
+
parentNode: I3STileHeader,
|
|
226
|
+
childNodeInfo: NodeReference
|
|
227
|
+
): Promise<I3STileHeader> {
|
|
221
228
|
let header;
|
|
222
|
-
if (this.sourceTileset
|
|
229
|
+
if (this.sourceTileset?.nodePagesTile) {
|
|
223
230
|
console.log(`Node conversion: ${childNodeInfo.id}`); // eslint-disable-line no-console,no-undef
|
|
224
|
-
header = await this.sourceTileset
|
|
225
|
-
childNodeInfo.id
|
|
231
|
+
header = await this.sourceTileset.nodePagesTile.formTileFromNodePages(
|
|
232
|
+
parseInt(childNodeInfo.id)
|
|
226
233
|
);
|
|
227
234
|
} else {
|
|
228
|
-
const {loader} = this.sourceTileset!;
|
|
229
235
|
const nodeUrl = this._relativeUrlToFullUrl(parentNode.url, childNodeInfo.href!);
|
|
230
236
|
// load metadata
|
|
231
237
|
const options = {
|
|
232
238
|
i3s: {
|
|
233
|
-
...this.
|
|
239
|
+
...this.loaderOptions,
|
|
234
240
|
isTileHeader: true,
|
|
235
241
|
loadContent: false
|
|
236
242
|
}
|
|
237
243
|
};
|
|
238
244
|
|
|
239
245
|
console.log(`Node conversion: ${nodeUrl}`); // eslint-disable-line no-console,no-undef
|
|
240
|
-
header = await load(nodeUrl,
|
|
246
|
+
header = await load(nodeUrl, I3SLoader, options);
|
|
241
247
|
}
|
|
242
|
-
return
|
|
248
|
+
return header;
|
|
243
249
|
}
|
|
244
250
|
|
|
245
251
|
/**
|
|
@@ -247,7 +253,7 @@ export default class Tiles3DConverter {
|
|
|
247
253
|
* @param baseUrl the base url. A resulting url will be related from this url
|
|
248
254
|
* @param relativeUrl a realtive url of a resource
|
|
249
255
|
*/
|
|
250
|
-
private _relativeUrlToFullUrl(baseUrl: string, relativeUrl: string): string {
|
|
256
|
+
private _relativeUrlToFullUrl(baseUrl: string = '', relativeUrl: string): string {
|
|
251
257
|
let resultArray = baseUrl.split('/');
|
|
252
258
|
const relativeUrlArray = relativeUrl.split('/');
|
|
253
259
|
for (const folder of relativeUrlArray) {
|
|
@@ -271,11 +277,11 @@ export default class Tiles3DConverter {
|
|
|
271
277
|
* @returns Promise of attributes object.
|
|
272
278
|
*/
|
|
273
279
|
private async _loadChildAttributes(
|
|
274
|
-
sourceChild:
|
|
275
|
-
attributeStorageInfo: AttributeStorageInfo
|
|
280
|
+
sourceChild: I3STileHeader,
|
|
281
|
+
attributeStorageInfo: AttributeStorageInfo[]
|
|
276
282
|
): Promise<FeatureAttribute> {
|
|
277
283
|
const promises: any[] = [];
|
|
278
|
-
const {attributeUrls} = sourceChild
|
|
284
|
+
const {attributeUrls = []} = sourceChild;
|
|
279
285
|
|
|
280
286
|
for (let index = 0; index < attributeUrls.length; index++) {
|
|
281
287
|
const inputUrl = attributeUrls[index];
|
|
@@ -342,14 +348,4 @@ export default class Tiles3DConverter {
|
|
|
342
348
|
console.log(`File(s) size: `, filesSize, ' bytes'); // eslint-disable-line
|
|
343
349
|
console.log(`------------------------------------------------`); // eslint-disable-line
|
|
344
350
|
}
|
|
345
|
-
|
|
346
|
-
private async loadWorkers(): Promise<void> {
|
|
347
|
-
console.log(`Loading workers source...`); // eslint-disable-line no-undef, no-console
|
|
348
|
-
const tile3dAttributesWorkerUrl = getWorkerURL(Tile3dAttributesWorker, {...getLoaderOptions()});
|
|
349
|
-
const sourceResponse = await fetchFile(tile3dAttributesWorkerUrl);
|
|
350
|
-
const source = await sourceResponse.text();
|
|
351
|
-
|
|
352
|
-
this.workerSource.tile3dWorkerSource = source;
|
|
353
|
-
console.log(`Loading workers source completed!`); // eslint-disable-line no-undef, no-console
|
|
354
|
-
}
|
|
355
351
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type {I3STileContent} from '@loaders.gl/i3s';
|
|
3
2
|
import {encodeSync} from '@loaders.gl/core';
|
|
4
3
|
import {GLTFScenegraph, GLTFWriter} from '@loaders.gl/gltf';
|
|
5
4
|
import {Tile3DWriter} from '@loaders.gl/3d-tiles';
|
|
@@ -11,6 +10,12 @@ import {generateSyntheticIndices} from '../../lib/utils/geometry-utils';
|
|
|
11
10
|
const Z_UP_TO_Y_UP_MATRIX = new Matrix4([1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
|
|
12
11
|
const scratchVector = new Vector3();
|
|
13
12
|
|
|
13
|
+
export type I3SAttributesData = {
|
|
14
|
+
tileContent: I3STileContent;
|
|
15
|
+
box: number[];
|
|
16
|
+
textureFormat: string;
|
|
17
|
+
};
|
|
18
|
+
|
|
14
19
|
/**
|
|
15
20
|
* Converts content of an I3S node to *.b3dm's file content
|
|
16
21
|
*/
|
|
@@ -28,7 +33,7 @@ export default class B3dmConverter {
|
|
|
28
33
|
i3sAttributesData: I3SAttributesData,
|
|
29
34
|
featureAttributes: any = null
|
|
30
35
|
): Promise<ArrayBuffer> {
|
|
31
|
-
const gltf = await this.
|
|
36
|
+
const gltf = await this.buildGLTF(i3sAttributesData, featureAttributes);
|
|
32
37
|
const b3dm = encodeSync(
|
|
33
38
|
{
|
|
34
39
|
gltfEncoded: new Uint8Array(gltf),
|
|
@@ -46,23 +51,16 @@ export default class B3dmConverter {
|
|
|
46
51
|
* @param i3sTile - Tile3D instance for I3S node
|
|
47
52
|
* @returns - encoded glb content
|
|
48
53
|
*/
|
|
49
|
-
async
|
|
54
|
+
async buildGLTF(
|
|
50
55
|
i3sAttributesData: I3SAttributesData,
|
|
51
56
|
featureAttributes: any
|
|
52
57
|
): Promise<ArrayBuffer> {
|
|
53
|
-
const {tileContent, textureFormat} = i3sAttributesData;
|
|
54
|
-
const {
|
|
55
|
-
material,
|
|
56
|
-
attributes,
|
|
57
|
-
indices: originalIndices,
|
|
58
|
-
cartesianOrigin,
|
|
59
|
-
cartographicOrigin,
|
|
60
|
-
modelMatrix
|
|
61
|
-
} = tileContent;
|
|
58
|
+
const {tileContent, textureFormat, box} = i3sAttributesData;
|
|
59
|
+
const {material, attributes, indices: originalIndices, modelMatrix} = tileContent;
|
|
62
60
|
const gltfBuilder = new GLTFScenegraph();
|
|
63
61
|
|
|
64
|
-
const textureIndex = await this.
|
|
65
|
-
const pbrMaterialInfo = this.
|
|
62
|
+
const textureIndex = await this._addI3sTextureToGLTF(tileContent, textureFormat, gltfBuilder);
|
|
63
|
+
const pbrMaterialInfo = this._convertI3sMaterialToGLTFMaterial(material, textureIndex);
|
|
66
64
|
const materialIndex = gltfBuilder.addMaterial(pbrMaterialInfo);
|
|
67
65
|
|
|
68
66
|
const positions = attributes.positions;
|
|
@@ -75,6 +73,12 @@ export default class B3dmConverter {
|
|
|
75
73
|
);
|
|
76
74
|
}
|
|
77
75
|
|
|
76
|
+
const cartesianOrigin = new Vector3(box);
|
|
77
|
+
const cartographicOrigin = Ellipsoid.WGS84.cartesianToCartographic(
|
|
78
|
+
cartesianOrigin,
|
|
79
|
+
new Vector3()
|
|
80
|
+
);
|
|
81
|
+
|
|
78
82
|
attributes.positions.value = this._normalizePositions(
|
|
79
83
|
positionsValue,
|
|
80
84
|
cartesianOrigin,
|
|
@@ -111,7 +115,7 @@ export default class B3dmConverter {
|
|
|
111
115
|
* @param {GLTFScenegraph} gltfBuilder - gltfScenegraph instance to construct GLTF
|
|
112
116
|
* @returns {Promise<number | null>} - GLTF texture index
|
|
113
117
|
*/
|
|
114
|
-
async
|
|
118
|
+
async _addI3sTextureToGLTF(tileContent, textureFormat, gltfBuilder) {
|
|
115
119
|
const {texture, material, attributes} = tileContent;
|
|
116
120
|
let textureIndex = null;
|
|
117
121
|
let selectedTexture = texture;
|
|
@@ -218,7 +222,7 @@ export default class B3dmConverter {
|
|
|
218
222
|
* @param {number | null} textureIndex - texture index in GLTF
|
|
219
223
|
* @returns {object} GLTF material
|
|
220
224
|
*/
|
|
221
|
-
|
|
225
|
+
_convertI3sMaterialToGLTFMaterial(material, textureIndex) {
|
|
222
226
|
const isTextureIndexExists = textureIndex !== null;
|
|
223
227
|
|
|
224
228
|
if (!material) {
|
|
@@ -244,7 +248,7 @@ export default class B3dmConverter {
|
|
|
244
248
|
}
|
|
245
249
|
|
|
246
250
|
if (textureIndex !== null) {
|
|
247
|
-
material = this.
|
|
251
|
+
material = this._setGLTFTexture(material, textureIndex);
|
|
248
252
|
}
|
|
249
253
|
|
|
250
254
|
return material;
|
|
@@ -256,7 +260,7 @@ export default class B3dmConverter {
|
|
|
256
260
|
* @param {number} textureIndex - texture index in GLTF
|
|
257
261
|
* @returns {void}
|
|
258
262
|
*/
|
|
259
|
-
|
|
263
|
+
_setGLTFTexture(materialDefinition, textureIndex) {
|
|
260
264
|
const material = {
|
|
261
265
|
...materialDefinition,
|
|
262
266
|
pbrMetallicRoughness: {...materialDefinition.pbrMetallicRoughness}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {load} from '@loaders.gl/core';
|
|
2
|
+
import {
|
|
3
|
+
I3STileContent,
|
|
4
|
+
I3STileHeader,
|
|
5
|
+
I3STilesetHeader,
|
|
6
|
+
I3SLoader,
|
|
7
|
+
I3SLoaderOptions
|
|
8
|
+
} from '@loaders.gl/i3s';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Load I3S node content
|
|
12
|
+
* @param sourceTileset - source layer JSON
|
|
13
|
+
* @param sourceTile - source I3S node metadata
|
|
14
|
+
* @param tilesetLoadOptions - load options for Tiles3DLoader
|
|
15
|
+
* @returns - 3DTiles tile content or null
|
|
16
|
+
*/
|
|
17
|
+
export const loadI3SContent = async (
|
|
18
|
+
sourceTileset: I3STilesetHeader | null,
|
|
19
|
+
sourceTile: I3STileHeader,
|
|
20
|
+
tilesetLoadOptions: I3SLoaderOptions
|
|
21
|
+
): Promise<I3STileContent | null> => {
|
|
22
|
+
if (!sourceTileset || !sourceTile.contentUrl) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const loadOptions = {
|
|
27
|
+
...tilesetLoadOptions,
|
|
28
|
+
i3s: {
|
|
29
|
+
...tilesetLoadOptions.i3s,
|
|
30
|
+
isTileset: false,
|
|
31
|
+
isTileHeader: false,
|
|
32
|
+
_tileOptions: {
|
|
33
|
+
attributeUrls: sourceTile.attributeUrls,
|
|
34
|
+
textureUrl: sourceTile.textureUrl,
|
|
35
|
+
textureFormat: sourceTile.textureFormat,
|
|
36
|
+
textureLoaderOptions: sourceTile.textureLoaderOptions,
|
|
37
|
+
materialDefinition: sourceTile.materialDefinition,
|
|
38
|
+
isDracoGeometry: sourceTile.isDracoGeometry,
|
|
39
|
+
mbs: sourceTile.mbs
|
|
40
|
+
},
|
|
41
|
+
_tilesetOptions: {
|
|
42
|
+
store: sourceTileset.store,
|
|
43
|
+
attributeStorageInfo: sourceTileset.attributeStorageInfo,
|
|
44
|
+
fields: sourceTileset.fields
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const tileContent = await load(sourceTile.contentUrl, I3SLoader, loadOptions);
|
|
49
|
+
|
|
50
|
+
// @ts-expect-error
|
|
51
|
+
return tileContent;
|
|
52
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type {TypedArray} from '@loaders.gl/loader-utils';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Apply uvRegions to texture coordinates.
|
|
3
5
|
* Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md
|
|
@@ -5,7 +7,7 @@
|
|
|
5
7
|
* @param texCoords
|
|
6
8
|
* @param uvRegions
|
|
7
9
|
*/
|
|
8
|
-
export function convertTextureAtlas(texCoords:
|
|
10
|
+
export function convertTextureAtlas(texCoords: TypedArray, uvRegions: TypedArray): Float32Array {
|
|
9
11
|
const convertedTexCoords = new Float32Array(texCoords.length);
|
|
10
12
|
const normalisedRegions = normalizeRegions(uvRegions);
|
|
11
13
|
|
|
@@ -43,7 +45,9 @@ function fract(uv: [number, number]): [number, number] {
|
|
|
43
45
|
* Normalize uvRegions by dividing by the maximum Uint16 value
|
|
44
46
|
* @param regions
|
|
45
47
|
*/
|
|
46
|
-
function normalizeRegions(regions:
|
|
48
|
+
function normalizeRegions(regions: TypedArray): number[] {
|
|
49
|
+
// The code is for Uint16Array because it is the spec requirement
|
|
50
|
+
// https://github.com/Esri/i3s-spec/blob/master/docs/1.8/geometryUVRegion.cmn.md
|
|
47
51
|
const MAX_UINT_16_VALUE = 65535;
|
|
48
52
|
const normalizedRegions: number[] = [];
|
|
49
53
|
|