@loaders.gl/tile-converter 3.4.6 → 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.js +2 -2
- package/dist/3d-tiles-attributes-worker.js.map +3 -3
- package/dist/3d-tiles-converter/3d-tiles-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/3d-tiles-converter.js +4 -3
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts +0 -8
- package/dist/3d-tiles-converter/helpers/b3dm-converter.d.ts.map +1 -1
- package/dist/3d-tiles-converter/helpers/b3dm-converter.js +2 -15
- package/dist/converter.min.js +75 -76
- package/dist/deps-installer/deps-installer.js +4 -4
- package/dist/dist.min.js +2101 -2120
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/es5/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js +2 -10
- package/dist/es5/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/es5/deps-installer/deps-installer.js +4 -4
- package/dist/es5/deps-installer/deps-installer.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/es5/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +49 -30
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +46 -16
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- 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-index-document.js +74 -45
- package/dist/es5/i3s-converter/helpers/node-index-document.js.map +1 -1
- 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 +545 -523
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/i3s-converter/types.js +16 -0
- package/dist/es5/i3s-converter/types.js.map +1 -1
- package/dist/es5/i3s-server/README.md +19 -0
- package/dist/es5/i3s-server/app.js +10 -1
- package/dist/es5/i3s-server/app.js.map +1 -1
- 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/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/lib/utils/file-utils.js +1 -1
- package/dist/es5/lib/utils/file-utils.js.map +1 -1
- 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.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js +0 -3
- package/dist/esm/3d-tiles-converter/3d-tiles-converter.js.map +1 -1
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js +2 -8
- package/dist/esm/3d-tiles-converter/helpers/b3dm-converter.js.map +1 -1
- package/dist/esm/deps-installer/deps-installer.js +4 -4
- package/dist/esm/deps-installer/deps-installer.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +4 -4
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js +6 -7
- package/dist/esm/i3s-converter/helpers/coordinate-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +37 -18
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +50 -16
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- 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/dist/esm/i3s-converter/helpers/node-index-document.js +14 -1
- package/dist/esm/i3s-converter/helpers/node-index-document.js.map +1 -1
- 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 +134 -127
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/i3s-converter/types.js +10 -1
- package/dist/esm/i3s-converter/types.js.map +1 -1
- package/dist/esm/i3s-server/README.md +19 -0
- package/dist/esm/i3s-server/app.js +11 -1
- package/dist/esm/i3s-server/app.js.map +1 -1
- 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/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/lib/utils/file-utils.js +1 -1
- package/dist/esm/lib/utils/file-utils.js.map +1 -1
- 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.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/i3s-attributes-worker.d.ts +10 -2
- package/dist/i3s-attributes-worker.d.ts.map +1 -1
- package/dist/i3s-attributes-worker.js +2 -2
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +4 -2
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +4 -7
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts +3 -4
- package/dist/i3s-converter/helpers/coordinate-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/coordinate-converter.js +8 -9
- package/dist/i3s-converter/helpers/geometry-converter.d.ts +9 -4
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +84 -54
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts +22 -3
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +62 -22
- 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-index-document.d.ts +8 -0
- package/dist/i3s-converter/helpers/node-index-document.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/node-index-document.js +20 -2
- 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 +40 -40
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +150 -125
- package/dist/i3s-converter/types.d.ts +18 -0
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/i3s-converter/types.js +15 -0
- package/dist/i3s-server/app.d.ts.map +1 -1
- package/dist/i3s-server/app.js +9 -1
- 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/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/lib/utils/file-utils.d.ts.map +1 -1
- package/dist/lib/utils/file-utils.js +2 -1
- 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 +3 -2
- package/dist/lib/utils/lod-conversion-utils.d.ts.map +1 -1
- package/dist/lib/utils/lod-conversion-utils.js +1 -1
- package/package.json +15 -16
- package/src/3d-tiles-converter/3d-tiles-converter.ts +9 -8
- package/src/3d-tiles-converter/helpers/b3dm-converter.ts +2 -16
- package/src/deps-installer/deps-installer.ts +4 -4
- package/src/i3s-attributes-worker.ts +11 -2
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +15 -19
- package/src/i3s-converter/helpers/coordinate-converter.ts +11 -10
- package/src/i3s-converter/helpers/geometry-converter.ts +154 -95
- package/src/i3s-converter/helpers/gltf-attributes.ts +85 -25
- package/src/i3s-converter/helpers/load-3d-tiles.ts +68 -0
- package/src/i3s-converter/helpers/node-index-document.ts +22 -2
- 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 +229 -178
- package/src/i3s-converter/types.ts +20 -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/lib/utils/file-utils.ts +2 -1
- package/src/lib/utils/geometry-utils.ts +14 -0
- package/src/lib/utils/lod-conversion-utils.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinate-converter.js","names":["_core","require","_geospatial","_culling","createBoundingVolumes","tile","geoidHeightModel","radius","halfSize","quaternion","boundingVolume","cartographicCenter","Ellipsoid","WGS84","cartesianToCartographic","center","Vector3","getHeight","OrientedBoundingBox","len","Quaternion","fromMatrix3","Matrix3","normalize","mbs","obb","createBoundingVolumesFromGeometry","cartesianPositions","positionVectors","convertPositionsToVectors","geometryObb","makeOrientedBoundingBoxFromPoints","geometryMbs","makeBoundingSphereFromPoints","mbsCenter","obbCenter","positions","result","i","length","positionVector","push","convertBoundingVolumeToI3SFullExtent","sphere","BoundingSphere","getBoundingSphere","vertexMax","vertexMin","xmin","Math","min","xmax","max","ymin","ymax","zmin","zmax","createObbFromMbs","halfAxex"],"sources":["../../../../src/i3s-converter/helpers/coordinate-converter.ts"],"sourcesContent":["import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';\n\nimport {Matrix3, Quaternion, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {\n OrientedBoundingBox,\n makeOrientedBoundingBoxFromPoints,\n makeBoundingSphereFromPoints,\n BoundingSphere\n} from '@math.gl/culling';\nimport {Tile3D} from '@loaders.gl/tiles';\nimport {Geoid} from '@math.gl/geoid';\n\n/**\n * Create bounding volumes object from tile and geoid height model.\n * @param tile\n * @param geoidHeightModel\n * @returns - Bounding volumes object\n */\nexport function createBoundingVolumes(tile: Tile3D, geoidHeightModel: Geoid): BoundingVolumes {\n let radius;\n let halfSize;\n let quaternion;\n\n const boundingVolume = tile.boundingVolume;\n const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(\n boundingVolume.center,\n new Vector3()\n );\n cartographicCenter[2] =\n cartographicCenter[2] -\n geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);\n if (boundingVolume instanceof OrientedBoundingBox) {\n halfSize = boundingVolume.halfSize;\n radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();\n quaternion = boundingVolume.quaternion;\n } else {\n radius = tile.boundingVolume.radius;\n halfSize = [radius, radius, radius];\n quaternion = new Quaternion()\n .fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))\n .normalize();\n }\n\n return {\n mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],\n obb: {\n center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],\n halfSize,\n quaternion\n }\n };\n}\n\n/**\n * Generates bounding volumes from geometry positions\n * @param cartesianPositions\n * @param geoidHeightModel\n */\nexport function createBoundingVolumesFromGeometry(\n cartesianPositions: Float32Array,\n geoidHeightModel: Geoid\n): {mbs: Mbs; obb: Obb} {\n const positionVectors = convertPositionsToVectors(cartesianPositions);\n\n const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);\n const geometryMbs = makeBoundingSphereFromPoints(positionVectors);\n\n let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());\n let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());\n\n mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);\n obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);\n\n return {\n mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],\n obb: {\n center: obbCenter,\n halfSize: geometryObb.halfSize,\n quaternion: geometryObb.quaternion\n }\n };\n}\n\n/**\n * Create array of posisitons where each vertex is vector\n * @param {array} positions\n * @returns {Vector3[]}\n */\nexport function convertPositionsToVectors(positions: Float32Array): Vector3[] {\n const result: Vector3[] = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n // TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.\n // modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors\n const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);\n result.push(positionVector);\n }\n\n return result;\n}\n\n/**\n * Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md\n * @param\n * @param boundingVolume\n * @returns - fullExtent object\n */\nexport function convertBoundingVolumeToI3SFullExtent(\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): FullExtent {\n let sphere: BoundingSphere;\n if (boundingVolume instanceof BoundingSphere) {\n sphere = boundingVolume;\n } else {\n sphere = boundingVolume.getBoundingSphere();\n }\n const center: Vector3 = sphere.center;\n const radius: number = sphere.radius;\n const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),\n new Vector3()\n );\n const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),\n new Vector3()\n );\n\n // Converter sometimes returns min values that are bigger then max,\n // so we should check and take bigger value from max and smaller for nim\n return {\n xmin: Math.min(vertexMin[0], vertexMax[0]),\n xmax: Math.max(vertexMin[0], vertexMax[0]),\n ymin: Math.min(vertexMin[1], vertexMax[1]),\n ymax: Math.max(vertexMin[1], vertexMax[1]),\n zmin: Math.min(vertexMin[2], vertexMax[2]),\n zmax: Math.max(vertexMin[2], vertexMax[2])\n };\n}\n\n/**\n * Creates oriented boundinb box from mbs.\n * @param mbs - Minimum Bounding Sphere\n * @returns - Oriented BOunding Box\n */\nexport function createObbFromMbs(mbs: Mbs): Obb {\n const radius = mbs[3];\n const center = new Vector3(mbs[0], mbs[1], mbs[2]);\n const halfAxex = new Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);\n return new OrientedBoundingBox(center, halfAxex);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordinate-converter.js","names":["_core","require","_geospatial","_culling","createBoundingVolumes","sourceBoundingVolume","geoidHeightModel","radius","halfSize","quaternion","cartographicCenter","Ellipsoid","WGS84","cartesianToCartographic","center","Vector3","getHeight","OrientedBoundingBox","len","Quaternion","fromMatrix3","Matrix3","normalize","mbs","obb","createBoundingVolumesFromGeometry","cartesianPositions","positionVectors","convertPositionsToVectors","geometryObb","makeOrientedBoundingBoxFromPoints","geometryMbs","makeBoundingSphereFromPoints","mbsCenter","obbCenter","positions","result","i","length","positionVector","push","convertBoundingVolumeToI3SFullExtent","boundingVolume","sphere","BoundingSphere","getBoundingSphere","vertexMax","vertexMin","xmin","Math","min","xmax","max","ymin","ymax","zmin","zmax","createObbFromMbs","halfAxex"],"sources":["../../../../src/i3s-converter/helpers/coordinate-converter.ts"],"sourcesContent":["import type {BoundingVolumes, FullExtent, Mbs, Obb} from '@loaders.gl/i3s';\n\nimport {Matrix3, Quaternion, Vector3} from '@math.gl/core';\nimport {Ellipsoid} from '@math.gl/geospatial';\nimport {\n OrientedBoundingBox,\n makeOrientedBoundingBoxFromPoints,\n makeBoundingSphereFromPoints,\n BoundingSphere\n} from '@math.gl/culling';\nimport {Geoid} from '@math.gl/geoid';\n\n/**\n * Create bounding volumes object from tile and geoid height model.\n * @param sourceBoundingVolume - initialized bounding volume of the source tile\n * @param geoidHeightModel - instance of Geoid class that converts elevation from geoidal to ellipsoidal and back\n * @returns - Bounding volumes object\n */\nexport function createBoundingVolumes(\n sourceBoundingVolume: OrientedBoundingBox | BoundingSphere,\n geoidHeightModel: Geoid\n): BoundingVolumes {\n let radius;\n let halfSize;\n let quaternion;\n\n const cartographicCenter = Ellipsoid.WGS84.cartesianToCartographic(\n sourceBoundingVolume.center,\n new Vector3()\n );\n cartographicCenter[2] =\n cartographicCenter[2] -\n geoidHeightModel.getHeight(cartographicCenter[1], cartographicCenter[0]);\n if (sourceBoundingVolume instanceof OrientedBoundingBox) {\n halfSize = sourceBoundingVolume.halfSize;\n radius = new Vector3(halfSize[0], halfSize[1], halfSize[2]).len();\n quaternion = sourceBoundingVolume.quaternion;\n } else {\n radius = sourceBoundingVolume.radius;\n halfSize = [radius, radius, radius];\n quaternion = new Quaternion()\n .fromMatrix3(new Matrix3([halfSize[0], 0, 0, 0, halfSize[1], 0, 0, 0, halfSize[2]]))\n .normalize();\n }\n\n return {\n mbs: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2], radius],\n obb: {\n center: [cartographicCenter[0], cartographicCenter[1], cartographicCenter[2]],\n halfSize,\n quaternion\n }\n };\n}\n\n/**\n * Generates bounding volumes from geometry positions\n * @param cartesianPositions\n * @param geoidHeightModel\n */\nexport function createBoundingVolumesFromGeometry(\n cartesianPositions: Float32Array,\n geoidHeightModel: Geoid\n): {mbs: Mbs; obb: Obb} {\n const positionVectors = convertPositionsToVectors(cartesianPositions);\n\n const geometryObb = makeOrientedBoundingBoxFromPoints(positionVectors);\n const geometryMbs = makeBoundingSphereFromPoints(positionVectors);\n\n let mbsCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryMbs.center, new Vector3());\n let obbCenter = Ellipsoid.WGS84.cartesianToCartographic(geometryObb.center, new Vector3());\n\n mbsCenter[2] = mbsCenter[2] - geoidHeightModel.getHeight(mbsCenter[1], mbsCenter[0]);\n obbCenter[2] = obbCenter[2] - geoidHeightModel.getHeight(obbCenter[1], obbCenter[0]);\n\n return {\n mbs: [mbsCenter[0], mbsCenter[1], mbsCenter[2], geometryMbs.radius],\n obb: {\n center: obbCenter,\n halfSize: geometryObb.halfSize,\n quaternion: geometryObb.quaternion\n }\n };\n}\n\n/**\n * Create array of posisitons where each vertex is vector\n * @param {array} positions\n * @returns {Vector3[]}\n */\nexport function convertPositionsToVectors(positions: Float32Array): Vector3[] {\n const result: Vector3[] = [];\n\n for (let i = 0; i < positions.length; i += 3) {\n // TODO: (perf) new Vector3 is not optimal but required in `makeOrientedBoundingBoxFromPoints`.\n // modify `makeOrientedBoundingBoxFromPoints` to use scratch vectors\n const positionVector = new Vector3([positions[i], positions[i + 1], positions[i + 2]]);\n result.push(positionVector);\n }\n\n return result;\n}\n\n/**\n * Convert common coordinate to fullExtent https://github.com/Esri/i3s-spec/blob/master/docs/1.8/fullExtent.cmn.md\n * @param\n * @param boundingVolume\n * @returns - fullExtent object\n */\nexport function convertBoundingVolumeToI3SFullExtent(\n boundingVolume: OrientedBoundingBox | BoundingSphere\n): FullExtent {\n let sphere: BoundingSphere;\n if (boundingVolume instanceof BoundingSphere) {\n sphere = boundingVolume;\n } else {\n sphere = boundingVolume.getBoundingSphere();\n }\n const center: Vector3 = sphere.center;\n const radius: number = sphere.radius;\n const vertexMax = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] + radius, center[1] + radius, center[2] + radius),\n new Vector3()\n );\n const vertexMin = Ellipsoid.WGS84.cartesianToCartographic(\n new Vector3(center[0] - radius, center[1] - radius, center[2] - radius),\n new Vector3()\n );\n\n // Converter sometimes returns min values that are bigger then max,\n // so we should check and take bigger value from max and smaller for nim\n return {\n xmin: Math.min(vertexMin[0], vertexMax[0]),\n xmax: Math.max(vertexMin[0], vertexMax[0]),\n ymin: Math.min(vertexMin[1], vertexMax[1]),\n ymax: Math.max(vertexMin[1], vertexMax[1]),\n zmin: Math.min(vertexMin[2], vertexMax[2]),\n zmax: Math.max(vertexMin[2], vertexMax[2])\n };\n}\n\n/**\n * Creates oriented boundinb box from mbs.\n * @param mbs - Minimum Bounding Sphere\n * @returns - Oriented BOunding Box\n */\nexport function createObbFromMbs(mbs: Mbs): Obb {\n const radius = mbs[3];\n const center = new Vector3(mbs[0], mbs[1], mbs[2]);\n const halfAxex = new Matrix3([radius, 0, 0, 0, radius, 0, 0, 0, radius]);\n return new OrientedBoundingBox(center, halfAxex);\n}\n"],"mappings":";;;;;;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAcO,SAASG,qBAAqBA,CACnCC,oBAA0D,EAC1DC,gBAAuB,EACN;EACjB,IAAIC,MAAM;EACV,IAAIC,QAAQ;EACZ,IAAIC,UAAU;EAEd,IAAMC,kBAAkB,GAAGC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAChER,oBAAoB,CAACS,MAAM,EAC3B,IAAIC,aAAO,CAAC,CACd,CAAC;EACDL,kBAAkB,CAAC,CAAC,CAAC,GACnBA,kBAAkB,CAAC,CAAC,CAAC,GACrBJ,gBAAgB,CAACU,SAAS,CAACN,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,CAAC;EAC1E,IAAIL,oBAAoB,YAAYY,4BAAmB,EAAE;IACvDT,QAAQ,GAAGH,oBAAoB,CAACG,QAAQ;IACxCD,MAAM,GAAG,IAAIQ,aAAO,CAACP,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACU,GAAG,CAAC,CAAC;IACjET,UAAU,GAAGJ,oBAAoB,CAACI,UAAU;EAC9C,CAAC,MAAM;IACLF,MAAM,GAAGF,oBAAoB,CAACE,MAAM;IACpCC,QAAQ,GAAG,CAACD,MAAM,EAAEA,MAAM,EAAEA,MAAM,CAAC;IACnCE,UAAU,GAAG,IAAIU,gBAAU,CAAC,CAAC,CAC1BC,WAAW,CAAC,IAAIC,aAAO,CAAC,CAACb,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnFc,SAAS,CAAC,CAAC;EAChB;EAEA,OAAO;IACLC,GAAG,EAAE,CAACb,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEH,MAAM,CAAC;IAClFiB,GAAG,EAAE;MACHV,MAAM,EAAE,CAACJ,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,EAAEA,kBAAkB,CAAC,CAAC,CAAC,CAAC;MAC7EF,QAAQ,EAARA,QAAQ;MACRC,UAAU,EAAVA;IACF;EACF,CAAC;AACH;AAOO,SAASgB,iCAAiCA,CAC/CC,kBAAgC,EAChCpB,gBAAuB,EACD;EACtB,IAAMqB,eAAe,GAAGC,yBAAyB,CAACF,kBAAkB,CAAC;EAErE,IAAMG,WAAW,GAAG,IAAAC,0CAAiC,EAACH,eAAe,CAAC;EACtE,IAAMI,WAAW,GAAG,IAAAC,qCAA4B,EAACL,eAAe,CAAC;EAEjE,IAAIM,SAAS,GAAGtB,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACkB,WAAW,CAACjB,MAAM,EAAE,IAAIC,aAAO,CAAC,CAAC,CAAC;EAC1F,IAAImB,SAAS,GAAGvB,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CAACgB,WAAW,CAACf,MAAM,EAAE,IAAIC,aAAO,CAAC,CAAC,CAAC;EAE1FkB,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAG3B,gBAAgB,CAACU,SAAS,CAACiB,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC;EACpFC,SAAS,CAAC,CAAC,CAAC,GAAGA,SAAS,CAAC,CAAC,CAAC,GAAG5B,gBAAgB,CAACU,SAAS,CAACkB,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC;EAEpF,OAAO;IACLX,GAAG,EAAE,CAACU,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEF,WAAW,CAACxB,MAAM,CAAC;IACnEiB,GAAG,EAAE;MACHV,MAAM,EAAEoB,SAAS;MACjB1B,QAAQ,EAAEqB,WAAW,CAACrB,QAAQ;MAC9BC,UAAU,EAAEoB,WAAW,CAACpB;IAC1B;EACF,CAAC;AACH;AAOO,SAASmB,yBAAyBA,CAACO,SAAuB,EAAa;EAC5E,IAAMC,MAAiB,GAAG,EAAE;EAE5B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,SAAS,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IAG5C,IAAME,cAAc,GAAG,IAAIxB,aAAO,CAAC,CAACoB,SAAS,CAACE,CAAC,CAAC,EAAEF,SAAS,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,SAAS,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtFD,MAAM,CAACI,IAAI,CAACD,cAAc,CAAC;EAC7B;EAEA,OAAOH,MAAM;AACf;AAQO,SAASK,oCAAoCA,CAClDC,cAAoD,EACxC;EACZ,IAAIC,MAAsB;EAC1B,IAAID,cAAc,YAAYE,uBAAc,EAAE;IAC5CD,MAAM,GAAGD,cAAc;EACzB,CAAC,MAAM;IACLC,MAAM,GAAGD,cAAc,CAACG,iBAAiB,CAAC,CAAC;EAC7C;EACA,IAAM/B,MAAe,GAAG6B,MAAM,CAAC7B,MAAM;EACrC,IAAMP,MAAc,GAAGoC,MAAM,CAACpC,MAAM;EACpC,IAAMuC,SAAS,GAAGnC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CACvD,IAAIE,aAAO,CAACD,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,EAAEO,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,EAAEO,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,CAAC,EACvE,IAAIQ,aAAO,CAAC,CACd,CAAC;EACD,IAAMgC,SAAS,GAAGpC,qBAAS,CAACC,KAAK,CAACC,uBAAuB,CACvD,IAAIE,aAAO,CAACD,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,EAAEO,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,EAAEO,MAAM,CAAC,CAAC,CAAC,GAAGP,MAAM,CAAC,EACvE,IAAIQ,aAAO,CAAC,CACd,CAAC;EAID,OAAO;IACLiC,IAAI,EAAEC,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CK,IAAI,EAAEF,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CO,IAAI,EAAEJ,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CQ,IAAI,EAAEL,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CS,IAAI,EAAEN,IAAI,CAACC,GAAG,CAACH,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1CU,IAAI,EAAEP,IAAI,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC,CAAC,CAAC;EAC3C,CAAC;AACH;AAOO,SAASW,gBAAgBA,CAAClC,GAAQ,EAAO;EAC9C,IAAMhB,MAAM,GAAGgB,GAAG,CAAC,CAAC,CAAC;EACrB,IAAMT,MAAM,GAAG,IAAIC,aAAO,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;EAClD,IAAMmC,QAAQ,GAAG,IAAIrC,aAAO,CAAC,CAACd,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,MAAM,CAAC,CAAC;EACxE,OAAO,IAAIU,4BAAmB,CAACH,MAAM,EAAE4C,QAAQ,CAAC;AAClD"}
|
|
@@ -24,6 +24,7 @@ var _gltfAttributes = require("./gltf-attributes");
|
|
|
24
24
|
var _batchIdsExtensions = require("./batch-ids-extensions");
|
|
25
25
|
var _featureAttributes = require("./feature-attributes");
|
|
26
26
|
var _math = require("@loaders.gl/math");
|
|
27
|
+
var _geometryUtils = require("../../lib/utils/geometry-utils");
|
|
27
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); }
|
|
28
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; }
|
|
29
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; }
|
|
@@ -44,11 +45,11 @@ var BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES = ['CUSTOM_ATTRIBUTE_2', '_BATCHID', 'BA
|
|
|
44
45
|
var EXT_FEATURE_METADATA = 'EXT_feature_metadata';
|
|
45
46
|
var EXT_MESH_FEATURES = 'EXT_mesh_features';
|
|
46
47
|
var scratchVector = new _core.Vector3();
|
|
47
|
-
function convertB3dmToI3sGeometry(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x10) {
|
|
48
|
+
function convertB3dmToI3sGeometry(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9, _x10, _x11, _x12) {
|
|
48
49
|
return _convertB3dmToI3sGeometry.apply(this, arguments);
|
|
49
50
|
}
|
|
50
51
|
function _convertB3dmToI3sGeometry() {
|
|
51
|
-
_convertB3dmToI3sGeometry = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileContent, addNodeToNodePage, propertyTable, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, shouldMergeMaterials, geoidHeightModel, workerSource) {
|
|
52
|
+
_convertB3dmToI3sGeometry = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tileContent, tileTransform, tileBoundingVolume, addNodeToNodePage, propertyTable, featuresHashArray, attributeStorageInfo, draco, generateBoundingVolumes, shouldMergeMaterials, geoidHeightModel, workerSource) {
|
|
52
53
|
var _tileContent$gltf4;
|
|
53
54
|
var useCartesianPositions, materialAndTextureList, dataForAttributesConversion, convertedAttributesMap, result, _iterator6, _step6, materialAndTexture, originarMaterialId, convertedAttributes, material, texture, nodeId;
|
|
54
55
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -59,7 +60,7 @@ function _convertB3dmToI3sGeometry() {
|
|
|
59
60
|
return convertMaterials((_tileContent$gltf4 = tileContent.gltf) === null || _tileContent$gltf4 === void 0 ? void 0 : _tileContent$gltf4.materials, shouldMergeMaterials);
|
|
60
61
|
case 3:
|
|
61
62
|
materialAndTextureList = _context.sent;
|
|
62
|
-
dataForAttributesConversion = (0, _gltfAttributes.prepareDataForAttributesConversion)(tileContent);
|
|
63
|
+
dataForAttributesConversion = (0, _gltfAttributes.prepareDataForAttributesConversion)(tileContent, tileTransform, tileBoundingVolume);
|
|
63
64
|
_context.next = 7;
|
|
64
65
|
return convertAttributes(dataForAttributesConversion, materialAndTextureList, useCartesianPositions);
|
|
65
66
|
case 7:
|
|
@@ -166,7 +167,7 @@ function _generateBoundingVolumesFromGeometry(convertedAttributesMap, geoidHeigh
|
|
|
166
167
|
_iterator.f();
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
|
-
function _makeNodeResources(
|
|
170
|
+
function _makeNodeResources(_x13) {
|
|
170
171
|
return _makeNodeResources2.apply(this, arguments);
|
|
171
172
|
}
|
|
172
173
|
function _makeNodeResources2() {
|
|
@@ -221,7 +222,7 @@ function _makeNodeResources2() {
|
|
|
221
222
|
}));
|
|
222
223
|
return _makeNodeResources2.apply(this, arguments);
|
|
223
224
|
}
|
|
224
|
-
function convertAttributes(
|
|
225
|
+
function convertAttributes(_x14, _x15, _x16) {
|
|
225
226
|
return _convertAttributes.apply(this, arguments);
|
|
226
227
|
}
|
|
227
228
|
function _convertAttributes() {
|
|
@@ -376,21 +377,22 @@ function convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, att
|
|
|
376
377
|
var materialUvRegion;
|
|
377
378
|
if (primitive.material) {
|
|
378
379
|
var _outputAttributes, _outputAttributes$mer;
|
|
379
|
-
outputAttributes = attributesMap.get(primitive.material.
|
|
380
|
+
outputAttributes = attributesMap.get(primitive.material.id);
|
|
380
381
|
materialUvRegion = (_outputAttributes = outputAttributes) === null || _outputAttributes === void 0 ? void 0 : (_outputAttributes$mer = _outputAttributes.mergedMaterials.find(function (_ref2) {
|
|
381
382
|
var _primitive$material;
|
|
382
383
|
var originalMaterialId = _ref2.originalMaterialId;
|
|
383
|
-
return originalMaterialId === ((_primitive$material = primitive.material) === null || _primitive$material === void 0 ? void 0 : _primitive$material.
|
|
384
|
+
return originalMaterialId === ((_primitive$material = primitive.material) === null || _primitive$material === void 0 ? void 0 : _primitive$material.id);
|
|
384
385
|
})) === null || _outputAttributes$mer === void 0 ? void 0 : _outputAttributes$mer.uvRegion;
|
|
385
386
|
} else if (attributesMap.has('default')) {
|
|
386
387
|
outputAttributes = attributesMap.get('default');
|
|
387
388
|
}
|
|
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));
|
|
389
391
|
var attributes = primitive.attributes;
|
|
390
392
|
if (!outputAttributes) {
|
|
391
393
|
return "continue";
|
|
392
394
|
}
|
|
393
|
-
var indices =
|
|
395
|
+
var indices = normalizeIndices(primitive);
|
|
394
396
|
outputAttributes.positions = (0, _loaderUtils.concatenateTypedArrays)(outputAttributes.positions, transformVertexArray({
|
|
395
397
|
vertices: attributes.POSITION.value,
|
|
396
398
|
cartographicOrigin: cartographicOrigin,
|
|
@@ -427,9 +429,13 @@ function convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, att
|
|
|
427
429
|
_iterator3.f();
|
|
428
430
|
}
|
|
429
431
|
}
|
|
430
|
-
function
|
|
432
|
+
function normalizeIndices(primitive) {
|
|
431
433
|
var _primitive$indices;
|
|
432
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
|
+
}
|
|
433
439
|
if (indices && primitive.mode === _math.GL.TRIANGLE_STRIP) {
|
|
434
440
|
var TypedArrayConstructor = indices.constructor;
|
|
435
441
|
var newIndices = new TypedArrayConstructor((indices.length - 2) * 3);
|
|
@@ -604,7 +610,7 @@ function _convertMaterials() {
|
|
|
604
610
|
}));
|
|
605
611
|
return _convertMaterials.apply(this, arguments);
|
|
606
612
|
}
|
|
607
|
-
function mergeAllMaterials(
|
|
613
|
+
function mergeAllMaterials(_x17) {
|
|
608
614
|
return _mergeAllMaterials.apply(this, arguments);
|
|
609
615
|
}
|
|
610
616
|
function _mergeAllMaterials() {
|
|
@@ -643,12 +649,12 @@ function _mergeAllMaterials() {
|
|
|
643
649
|
break;
|
|
644
650
|
case 15:
|
|
645
651
|
if (newMaterial.texture && mergedIndices.length) {
|
|
646
|
-
newWidth = (_newMaterial$mergedMa = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa === void 0 ? void 0 : _newMaterial$mergedMa.reduce(function (accum,
|
|
647
|
-
var textureSize =
|
|
652
|
+
newWidth = (_newMaterial$mergedMa = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa === void 0 ? void 0 : _newMaterial$mergedMa.reduce(function (accum, _ref5) {
|
|
653
|
+
var textureSize = _ref5.textureSize;
|
|
648
654
|
return accum + ((textureSize === null || textureSize === void 0 ? void 0 : textureSize.width) || 0);
|
|
649
655
|
}, 0);
|
|
650
|
-
newHeight = (_newMaterial$mergedMa2 = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa2 === void 0 ? void 0 : _newMaterial$mergedMa2.reduce(function (accum,
|
|
651
|
-
var textureSize =
|
|
656
|
+
newHeight = (_newMaterial$mergedMa2 = newMaterial.mergedMaterials) === null || _newMaterial$mergedMa2 === void 0 ? void 0 : _newMaterial$mergedMa2.reduce(function (accum, _ref6) {
|
|
657
|
+
var textureSize = _ref6.textureSize;
|
|
652
658
|
return Math.max(accum, (textureSize === null || textureSize === void 0 ? void 0 : textureSize.height) || 0);
|
|
653
659
|
}, 0);
|
|
654
660
|
currentX = -1;
|
|
@@ -702,7 +708,7 @@ function _mergeAllMaterials() {
|
|
|
702
708
|
}));
|
|
703
709
|
return _mergeAllMaterials.apply(this, arguments);
|
|
704
710
|
}
|
|
705
|
-
function mergeMaterials(
|
|
711
|
+
function mergeMaterials(_x18, _x19) {
|
|
706
712
|
return _mergeMaterials.apply(this, arguments);
|
|
707
713
|
}
|
|
708
714
|
function _mergeMaterials() {
|
|
@@ -781,10 +787,9 @@ function convertMaterial(sourceMaterial) {
|
|
|
781
787
|
textureSetDefinitionId: 0
|
|
782
788
|
};
|
|
783
789
|
}
|
|
784
|
-
|
|
785
|
-
sourceMaterial.uniqueId = uniqueId;
|
|
790
|
+
sourceMaterial.id = Number.isFinite(sourceMaterial.id) ? sourceMaterial.id : (0, _uuid.v4)();
|
|
786
791
|
var mergedMaterials = [{
|
|
787
|
-
originalMaterialId:
|
|
792
|
+
originalMaterialId: sourceMaterial.id
|
|
788
793
|
}];
|
|
789
794
|
if (!texture) {
|
|
790
795
|
var _sourceMaterial$pbrMe4;
|
|
@@ -892,21 +897,24 @@ function extractSharedResourcesMaterialInfo(baseColorFactor) {
|
|
|
892
897
|
};
|
|
893
898
|
}
|
|
894
899
|
function extractSharedResourcesTextureInfo(texture, nodeId) {
|
|
895
|
-
var _texture$source, _texture$source2, _texture$source3;
|
|
900
|
+
var _texture$source, _texture$source2, _texture$source3, _texture$source4;
|
|
896
901
|
return {
|
|
897
902
|
encoding: texture !== null && texture !== void 0 && (_texture$source = texture.source) !== null && _texture$source !== void 0 && _texture$source.mimeType ? [texture.source.mimeType] : undefined,
|
|
898
903
|
images: [{
|
|
899
904
|
id: generateImageId(texture, nodeId),
|
|
900
905
|
size: (_texture$source2 = texture.source) === null || _texture$source2 === void 0 ? void 0 : _texture$source2.image.width,
|
|
901
|
-
length:
|
|
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
|
|
902
907
|
}]
|
|
903
908
|
};
|
|
904
909
|
}
|
|
905
910
|
function generateImageId(texture, nodeId) {
|
|
906
|
-
var _texture$
|
|
907
|
-
var
|
|
908
|
-
width =
|
|
909
|
-
height =
|
|
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
|
+
}
|
|
910
918
|
var levelCountOfTexture = 1;
|
|
911
919
|
var indexOfLevel = 0;
|
|
912
920
|
var indexOfTextureInStore = nodeId + 1;
|
|
@@ -1027,7 +1035,7 @@ function generateBigUint64Array(featureIds) {
|
|
|
1027
1035
|
}
|
|
1028
1036
|
return typedFeatureIds;
|
|
1029
1037
|
}
|
|
1030
|
-
function generateCompressedGeometry(
|
|
1038
|
+
function generateCompressedGeometry(_x20, _x21, _x22, _x23) {
|
|
1031
1039
|
return _generateCompressedGeometry.apply(this, arguments);
|
|
1032
1040
|
}
|
|
1033
1041
|
function _generateCompressedGeometry() {
|
|
@@ -1097,6 +1105,9 @@ function generateFeatureIndexAttribute(featureIndex, faceRange) {
|
|
|
1097
1105
|
return orderedFeatureIndices;
|
|
1098
1106
|
}
|
|
1099
1107
|
function getPropertyTable(tileContent) {
|
|
1108
|
+
if (!tileContent) {
|
|
1109
|
+
return null;
|
|
1110
|
+
}
|
|
1100
1111
|
var batchTableJson = tileContent === null || tileContent === void 0 ? void 0 : tileContent.batchTableJson;
|
|
1101
1112
|
if (batchTableJson) {
|
|
1102
1113
|
return batchTableJson;
|
|
@@ -1151,10 +1162,6 @@ function getPropertyTableExtension(tileContent) {
|
|
|
1151
1162
|
};
|
|
1152
1163
|
}
|
|
1153
1164
|
function getPropertyTableFromExtFeatureMetadata(extension) {
|
|
1154
|
-
if (extension !== null && extension !== void 0 && extension.featureTextures) {
|
|
1155
|
-
console.warn('The I3S converter does not yet support the EXT_feature_metadata feature textures');
|
|
1156
|
-
return null;
|
|
1157
|
-
}
|
|
1158
1165
|
if (extension !== null && extension !== void 0 && extension.featureTables) {
|
|
1159
1166
|
var _Object$keys;
|
|
1160
1167
|
var firstFeatureTableName = (_Object$keys = Object.keys(extension.featureTables)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0];
|
|
@@ -1167,7 +1174,19 @@ function getPropertyTableFromExtFeatureMetadata(extension) {
|
|
|
1167
1174
|
return propertyTable;
|
|
1168
1175
|
}
|
|
1169
1176
|
}
|
|
1170
|
-
|
|
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.");
|
|
1171
1190
|
return null;
|
|
1172
1191
|
}
|
|
1173
1192
|
//# sourceMappingURL=geometry-converter.js.map
|