@loaders.gl/3d-tiles 3.3.0-alpha.5 → 3.3.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +924 -1372
- package/dist/es5/bundle.js +0 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/cesium-ion-loader.js +7 -26
- package/dist/es5/cesium-ion-loader.js.map +1 -1
- package/dist/es5/index.js +14 -23
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
- package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
- package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
- package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
- package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/es5/lib/constants.js +3 -1
- package/dist/es5/lib/constants.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
- package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
- package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
- package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
- package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
- package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
- package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/ion/ion.js +5 -46
- package/dist/es5/lib/ion/ion.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
- package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +17 -51
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -38
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
- package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
- package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
- package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +2 -70
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
- package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
- package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
- package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/es5/tile-3d-subtree-loader.js +0 -4
- package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
- package/dist/es5/tile-3d-writer.js +0 -6
- package/dist/es5/tile-3d-writer.js.map +1 -1
- package/dist/es5/tiles-3d-loader.js +0 -29
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/bundle.js +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/cesium-ion-loader.js +9 -7
- package/dist/esm/cesium-ion-loader.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
- package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
- package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
- package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
- package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
- package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
- package/dist/esm/lib/constants.js +3 -0
- package/dist/esm/lib/constants.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
- package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
- package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
- package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
- package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
- package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
- package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/ion/ion.js +10 -8
- package/dist/esm/lib/ion/ion.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
- package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -16
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +1 -13
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
- package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
- package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
- package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +3 -26
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
- package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
- package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
- package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
- package/dist/esm/lib/utils/version.js +2 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/esm/tile-3d-subtree-loader.js +1 -0
- package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
- package/dist/esm/tile-3d-writer.js +1 -1
- package/dist/esm/tile-3d-writer.js.map +1 -1
- package/dist/esm/tiles-3d-loader.js +1 -8
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
- package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile-composite.js","names":["MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeComposite3DTile","tile","dataView","byteOffset","options","encode3DTile","magic","COMPOSITE","tiles","byteOffsetStart","setUint32","length","i"],"sources":["../../../../src/lib/encoders/encode-3d-tile-composite.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\nexport function encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTile) {\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.COMPOSITE, tiles: [], ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset += encode3DTileHeader(tile, dataView, byteOffset);\n\n if (dataView) {\n dataView.setUint32(byteOffset, tile.tiles.length, true); // tilesLength\n }\n byteOffset += 4;\n\n for (let i = 0; i < tile.tiles.length; ++i) {\n byteOffset += encode3DTile(tile.tiles[i], dataView, byteOffset, options);\n }\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"mappings":";;AAGA,SAAQA,WAAW,QAAO,cAAc;AACxC,SAAQC,kBAAkB,EAAEC,sBAAsB,QAAO,iCAAiC;AAE1F,OAAO,SAASC,qBAAqB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,EAAEC,YAAY,EAAE;EAEvFJ,IAAI,GAAG;IAACK,KAAK,EAAET,WAAW,CAACU,SAAS;IAAEC,KAAK,EAAE,EAAE;IAAE,GAAGP;EAAI,CAAC;EAEzD,MAAMQ,eAAe,GAAGN,UAAU;EAElCA,UAAU,IAAIL,kBAAkB,CAACG,IAAI,EAAEC,QAAQ,EAAEC,UAAU,CAAC;EAE5D,IAAID,QAAQ,EAAE;IACZA,QAAQ,CAACQ,SAAS,CAACP,UAAU,EAAEF,IAAI,CAACO,KAAK,CAACG,MAAM,EAAE,IAAI,CAAC;EACzD;;EACAR,UAAU,IAAI,CAAC;EAEf,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,IAAI,CAACO,KAAK,CAACG,MAAM,EAAE,EAAEC,CAAC,EAAE;IAC1CT,UAAU,IAAIE,YAAY,CAACJ,IAAI,CAACO,KAAK,CAACI,CAAC,CAAC,EAAEV,QAAQ,EAAEC,UAAU,EAAEC,OAAO,CAAC;EAC1E;;EAGAL,sBAAsB,CAACG,QAAQ,EAAEO,eAAe,EAAEN,UAAU,GAAGM,eAAe,CAAC;EAE/E,OAAON,UAAU;AACnB"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { copyStringToDataView } from '@loaders.gl/loader-utils';
|
|
2
4
|
import { MAGIC_ARRAY } from '../constants';
|
|
3
5
|
import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
|
|
6
|
+
|
|
4
7
|
export function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {
|
|
5
8
|
const {
|
|
6
9
|
featuresLength = 1,
|
|
@@ -14,13 +17,13 @@ export function encodeInstancedModel3DTile(tile, dataView, byteOffset, options)
|
|
|
14
17
|
};
|
|
15
18
|
const featureTableJsonString = JSON.stringify(featureTableJson);
|
|
16
19
|
const featureTableJsonByteLength = featureTableJsonString.length;
|
|
20
|
+
|
|
17
21
|
tile = {
|
|
18
22
|
magic: MAGIC_ARRAY.INSTANCED_MODEL,
|
|
19
23
|
...tile
|
|
20
24
|
};
|
|
21
25
|
const byteOffsetStart = byteOffset;
|
|
22
26
|
byteOffset = encode3DTileHeader(tile, dataView, 0);
|
|
23
|
-
|
|
24
27
|
if (dataView) {
|
|
25
28
|
dataView.setUint32(12, featureTableJsonByteLength, true);
|
|
26
29
|
dataView.setUint32(16, 0, true);
|
|
@@ -32,6 +35,7 @@ export function encodeInstancedModel3DTile(tile, dataView, byteOffset, options)
|
|
|
32
35
|
byteOffset += 20;
|
|
33
36
|
byteOffset += copyStringToDataView(dataView, byteOffset, featureTableJsonString, featureTableJsonByteLength);
|
|
34
37
|
byteOffset += copyStringToDataView(dataView, byteOffset, gltfUri, gltfUriByteLength);
|
|
38
|
+
|
|
35
39
|
encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
|
|
36
40
|
return byteOffset;
|
|
37
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile-instanced-model.js","names":["copyStringToDataView","MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","encodeInstancedModel3DTile","tile","dataView","byteOffset","options","featuresLength","gltfFormat","gltfUri","gltfUriByteLength","length","featureTableJson","INSTANCES_LENGTH","POSITION","Array","fill","featureTableJsonString","JSON","stringify","featureTableJsonByteLength","magic","INSTANCED_MODEL","byteOffsetStart","setUint32"],"sources":["../../../../src/lib/encoders/encode-3d-tile-instanced-model.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {copyStringToDataView} from '@loaders.gl/loader-utils';\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\n\n// Procedurally encode the tile array buffer for testing purposes\n// eslint-disable-next-line max-statements\nexport function encodeInstancedModel3DTile(tile, dataView, byteOffset, options) {\n const {featuresLength = 1, gltfFormat = 1, gltfUri = ''} = tile;\n\n const gltfUriByteLength = gltfUri.length;\n\n const featureTableJson = {\n INSTANCES_LENGTH: featuresLength,\n POSITION: new Array(featuresLength * 3).fill(0)\n };\n const featureTableJsonString = JSON.stringify(featureTableJson);\n const featureTableJsonByteLength = featureTableJsonString.length;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.INSTANCED_MODEL, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset = encode3DTileHeader(tile, dataView, 0);\n\n if (dataView) {\n dataView.setUint32(12, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(16, 0, true); // featureTableBinaryByteLength\n dataView.setUint32(20, 0, true); // batchTableJsonByteLength\n dataView.setUint32(24, 0, true); // batchTableBinaryByteLength\n dataView.setUint32(28, gltfFormat, true); // gltfFormat\n }\n\n byteOffset += 20;\n\n byteOffset += copyStringToDataView(\n dataView,\n byteOffset,\n featureTableJsonString,\n featureTableJsonByteLength\n );\n byteOffset += copyStringToDataView(dataView, byteOffset, gltfUri, gltfUriByteLength);\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"mappings":";;AAGA,SAAQA,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,WAAW,QAAO,cAAc;AACxC,SAAQC,kBAAkB,EAAEC,sBAAsB,QAAO,iCAAiC;;AAI1F,OAAO,SAASC,0BAA0B,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,EAAE;EAC9E,MAAM;IAACC,cAAc,GAAG,CAAC;IAAEC,UAAU,GAAG,CAAC;IAAEC,OAAO,GAAG;EAAE,CAAC,GAAGN,IAAI;EAE/D,MAAMO,iBAAiB,GAAGD,OAAO,CAACE,MAAM;EAExC,MAAMC,gBAAgB,GAAG;IACvBC,gBAAgB,EAAEN,cAAc;IAChCO,QAAQ,EAAE,IAAIC,KAAK,CAACR,cAAc,GAAG,CAAC,CAAC,CAACS,IAAI,CAAC,CAAC;EAChD,CAAC;EACD,MAAMC,sBAAsB,GAAGC,IAAI,CAACC,SAAS,CAACP,gBAAgB,CAAC;EAC/D,MAAMQ,0BAA0B,GAAGH,sBAAsB,CAACN,MAAM;;EAGhER,IAAI,GAAG;IAACkB,KAAK,EAAEtB,WAAW,CAACuB,eAAe;IAAE,GAAGnB;EAAI,CAAC;EAEpD,MAAMoB,eAAe,GAAGlB,UAAU;EAElCA,UAAU,GAAGL,kBAAkB,CAACG,IAAI,EAAEC,QAAQ,EAAE,CAAC,CAAC;EAElD,IAAIA,QAAQ,EAAE;IACZA,QAAQ,CAACoB,SAAS,CAAC,EAAE,EAAEJ,0BAA0B,EAAE,IAAI,CAAC;IACxDhB,QAAQ,CAACoB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/BpB,QAAQ,CAACoB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/BpB,QAAQ,CAACoB,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;IAC/BpB,QAAQ,CAACoB,SAAS,CAAC,EAAE,EAAEhB,UAAU,EAAE,IAAI,CAAC;EAC1C;;EAEAH,UAAU,IAAI,EAAE;EAEhBA,UAAU,IAAIP,oBAAoB,CAChCM,QAAQ,EACRC,UAAU,EACVY,sBAAsB,EACtBG,0BAA0B,CAC3B;EACDf,UAAU,IAAIP,oBAAoB,CAACM,QAAQ,EAAEC,UAAU,EAAEI,OAAO,EAAEC,iBAAiB,CAAC;;EAGpFT,sBAAsB,CAACG,QAAQ,EAAEmB,eAAe,EAAElB,UAAU,GAAGkB,eAAe,CAAC;EAE/E,OAAOlB,UAAU;AACnB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { MAGIC_ARRAY } from '../constants';
|
|
2
4
|
import { encode3DTileHeader, encode3DTileByteLength } from './helpers/encode-3d-tile-header';
|
|
3
5
|
import { padStringToByteAlignment, copyStringToDataView, copyBinaryToDataView } from '@loaders.gl/loader-utils';
|
|
@@ -18,13 +20,13 @@ export function encodePointCloud3DTile(tile, dataView, byteOffset, options) {
|
|
|
18
20
|
} = tile;
|
|
19
21
|
const featureTableBinary = new ArrayBuffer(12);
|
|
20
22
|
const featureTableBinaryByteLength = featureTableBinary.byteLength;
|
|
23
|
+
|
|
21
24
|
tile = {
|
|
22
25
|
magic: MAGIC_ARRAY.POINT_CLOUD,
|
|
23
26
|
...tile
|
|
24
27
|
};
|
|
25
28
|
const byteOffsetStart = byteOffset;
|
|
26
29
|
byteOffset += encode3DTileHeader(tile, dataView, 0);
|
|
27
|
-
|
|
28
30
|
if (dataView) {
|
|
29
31
|
dataView.setUint32(byteOffset + 0, featureTableJsonByteLength, true);
|
|
30
32
|
dataView.setUint32(byteOffset + 4, featureTableBinaryByteLength, true);
|
|
@@ -35,6 +37,7 @@ export function encodePointCloud3DTile(tile, dataView, byteOffset, options) {
|
|
|
35
37
|
byteOffset += 16;
|
|
36
38
|
byteOffset += copyStringToDataView(dataView, byteOffset, featureTableJsonString, featureTableJsonByteLength);
|
|
37
39
|
byteOffset += copyBinaryToDataView(dataView, byteOffset, featureTableBinary, featureTableBinaryByteLength);
|
|
40
|
+
|
|
38
41
|
encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);
|
|
39
42
|
return byteOffset;
|
|
40
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile-point-cloud.js","names":["MAGIC_ARRAY","encode3DTileHeader","encode3DTileByteLength","padStringToByteAlignment","copyStringToDataView","copyBinaryToDataView","DEFAULT_FEATURE_TABLE_JSON","POINTS_LENGTH","POSITIONS","byteOffset","encodePointCloud3DTile","tile","dataView","options","featureTableJson","featureTableJsonString","JSON","stringify","featureTableJsonByteLength","length","featureTableBinary","ArrayBuffer","featureTableBinaryByteLength","byteLength","magic","POINT_CLOUD","byteOffsetStart","setUint32"],"sources":["../../../../src/lib/encoders/encode-3d-tile-point-cloud.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {MAGIC_ARRAY} from '../constants';\nimport {encode3DTileHeader, encode3DTileByteLength} from './helpers/encode-3d-tile-header';\nimport {\n padStringToByteAlignment,\n copyStringToDataView,\n copyBinaryToDataView\n} from '@loaders.gl/loader-utils';\n\nconst DEFAULT_FEATURE_TABLE_JSON = {\n POINTS_LENGTH: 1,\n POSITIONS: {\n byteOffset: 0\n }\n};\n\nexport function encodePointCloud3DTile(tile, dataView, byteOffset, options) {\n const {featureTableJson = DEFAULT_FEATURE_TABLE_JSON} = tile;\n\n let featureTableJsonString = JSON.stringify(featureTableJson);\n featureTableJsonString = padStringToByteAlignment(featureTableJsonString, 4);\n\n const {featureTableJsonByteLength = featureTableJsonString.length} = tile;\n\n const featureTableBinary = new ArrayBuffer(12); // Enough space to hold 3 floats\n const featureTableBinaryByteLength = featureTableBinary.byteLength;\n\n // Add default magic for this tile type\n tile = {magic: MAGIC_ARRAY.POINT_CLOUD, ...tile};\n\n const byteOffsetStart = byteOffset;\n\n byteOffset += encode3DTileHeader(tile, dataView, 0);\n\n if (dataView) {\n dataView.setUint32(byteOffset + 0, featureTableJsonByteLength, true); // featureTableJsonByteLength\n dataView.setUint32(byteOffset + 4, featureTableBinaryByteLength, true); // featureTableBinaryByteLength\n dataView.setUint32(byteOffset + 8, 0, true); // batchTableJsonByteLength\n dataView.setUint32(byteOffset + 12, 0, true); // batchTableBinaryByteLength\n }\n byteOffset += 16;\n\n byteOffset += copyStringToDataView(\n dataView,\n byteOffset,\n featureTableJsonString,\n featureTableJsonByteLength\n );\n byteOffset += copyBinaryToDataView(\n dataView,\n byteOffset,\n featureTableBinary,\n featureTableBinaryByteLength\n );\n\n // Go \"back\" and rewrite the tile's `byteLength` now that we know the value\n encode3DTileByteLength(dataView, byteOffsetStart, byteOffset - byteOffsetStart);\n\n return byteOffset;\n}\n"],"mappings":";;AAGA,SAAQA,WAAW,QAAO,cAAc;AACxC,SAAQC,kBAAkB,EAAEC,sBAAsB,QAAO,iCAAiC;AAC1F,SACEC,wBAAwB,EACxBC,oBAAoB,EACpBC,oBAAoB,QACf,0BAA0B;AAEjC,MAAMC,0BAA0B,GAAG;EACjCC,aAAa,EAAE,CAAC;EAChBC,SAAS,EAAE;IACTC,UAAU,EAAE;EACd;AACF,CAAC;AAED,OAAO,SAASC,sBAAsB,CAACC,IAAI,EAAEC,QAAQ,EAAEH,UAAU,EAAEI,OAAO,EAAE;EAC1E,MAAM;IAACC,gBAAgB,GAAGR;EAA0B,CAAC,GAAGK,IAAI;EAE5D,IAAII,sBAAsB,GAAGC,IAAI,CAACC,SAAS,CAACH,gBAAgB,CAAC;EAC7DC,sBAAsB,GAAGZ,wBAAwB,CAACY,sBAAsB,EAAE,CAAC,CAAC;EAE5E,MAAM;IAACG,0BAA0B,GAAGH,sBAAsB,CAACI;EAAM,CAAC,GAAGR,IAAI;EAEzE,MAAMS,kBAAkB,GAAG,IAAIC,WAAW,CAAC,EAAE,CAAC;EAC9C,MAAMC,4BAA4B,GAAGF,kBAAkB,CAACG,UAAU;;EAGlEZ,IAAI,GAAG;IAACa,KAAK,EAAExB,WAAW,CAACyB,WAAW;IAAE,GAAGd;EAAI,CAAC;EAEhD,MAAMe,eAAe,GAAGjB,UAAU;EAElCA,UAAU,IAAIR,kBAAkB,CAACU,IAAI,EAAEC,QAAQ,EAAE,CAAC,CAAC;EAEnD,IAAIA,QAAQ,EAAE;IACZA,QAAQ,CAACe,SAAS,CAAClB,UAAU,GAAG,CAAC,EAAES,0BAA0B,EAAE,IAAI,CAAC;IACpEN,QAAQ,CAACe,SAAS,CAAClB,UAAU,GAAG,CAAC,EAAEa,4BAA4B,EAAE,IAAI,CAAC;IACtEV,QAAQ,CAACe,SAAS,CAAClB,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC3CG,QAAQ,CAACe,SAAS,CAAClB,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC;EAC9C;;EACAA,UAAU,IAAI,EAAE;EAEhBA,UAAU,IAAIL,oBAAoB,CAChCQ,QAAQ,EACRH,UAAU,EACVM,sBAAsB,EACtBG,0BAA0B,CAC3B;EACDT,UAAU,IAAIJ,oBAAoB,CAChCO,QAAQ,EACRH,UAAU,EACVW,kBAAkB,EAClBE,4BAA4B,CAC7B;;EAGDpB,sBAAsB,CAACU,QAAQ,EAAEc,eAAe,EAAEjB,UAAU,GAAGiB,eAAe,CAAC;EAE/E,OAAOjB,UAAU;AACnB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { TILE3D_TYPE } from '../constants';
|
|
2
4
|
import { assert } from '@loaders.gl/loader-utils';
|
|
3
5
|
import { encodeComposite3DTile } from './encode-3d-tile-composite';
|
|
@@ -11,23 +13,17 @@ export default function encode3DTile(tile, options) {
|
|
|
11
13
|
encode3DTileToDataView(tile, dataView, 0, options);
|
|
12
14
|
return arrayBuffer;
|
|
13
15
|
}
|
|
14
|
-
|
|
15
16
|
function encode3DTileToDataView(tile, dataView, byteOffset, options) {
|
|
16
17
|
assert(typeof tile.type === 'string');
|
|
17
|
-
|
|
18
18
|
switch (tile.type) {
|
|
19
19
|
case TILE3D_TYPE.COMPOSITE:
|
|
20
20
|
return encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTileToDataView);
|
|
21
|
-
|
|
22
21
|
case TILE3D_TYPE.POINT_CLOUD:
|
|
23
22
|
return encodePointCloud3DTile(tile, dataView, byteOffset, options);
|
|
24
|
-
|
|
25
23
|
case TILE3D_TYPE.BATCHED_3D_MODEL:
|
|
26
24
|
return encodeBatchedModel3DTile(tile, dataView, byteOffset, options);
|
|
27
|
-
|
|
28
25
|
case TILE3D_TYPE.INSTANCED_3D_MODEL:
|
|
29
26
|
return encodeInstancedModel3DTile(tile, dataView, byteOffset, options);
|
|
30
|
-
|
|
31
27
|
default:
|
|
32
28
|
throw new Error('3D Tiles: unknown tile type');
|
|
33
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile.js","names":["TILE3D_TYPE","assert","encodeComposite3DTile","encodeBatchedModel3DTile","encodeInstancedModel3DTile","encodePointCloud3DTile","encode3DTile","tile","options","byteLength","encode3DTileToDataView","arrayBuffer","ArrayBuffer","dataView","DataView","byteOffset","type","COMPOSITE","POINT_CLOUD","BATCHED_3D_MODEL","INSTANCED_3D_MODEL","Error"],"sources":["../../../../src/lib/encoders/encode-3d-tile.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {assert} from '@loaders.gl/loader-utils';\n\nimport {encodeComposite3DTile} from './encode-3d-tile-composite';\nimport {encodeBatchedModel3DTile} from './encode-3d-tile-batched-model';\nimport {encodeInstancedModel3DTile} from './encode-3d-tile-instanced-model';\nimport {encodePointCloud3DTile} from './encode-3d-tile-point-cloud';\n\nexport default function encode3DTile(tile, options) {\n const byteLength = encode3DTileToDataView(tile, null, 0, options);\n const arrayBuffer = new ArrayBuffer(byteLength);\n const dataView = new DataView(arrayBuffer);\n encode3DTileToDataView(tile, dataView, 0, options);\n return arrayBuffer;\n}\n\nfunction encode3DTileToDataView(tile, dataView, byteOffset, options) {\n assert(typeof tile.type === 'string');\n\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n return encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTileToDataView);\n case TILE3D_TYPE.POINT_CLOUD:\n return encodePointCloud3DTile(tile, dataView, byteOffset, options);\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return encodeBatchedModel3DTile(tile, dataView, byteOffset, options);\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return encodeInstancedModel3DTile(tile, dataView, byteOffset, options);\n default:\n throw new Error('3D Tiles: unknown tile type');\n }\n}\n"],"mappings":";;AAGA,SAAQA,WAAW,QAAO,cAAc;AACxC,SAAQC,MAAM,QAAO,0BAA0B;AAE/C,SAAQC,qBAAqB,QAAO,4BAA4B;AAChE,SAAQC,wBAAwB,QAAO,gCAAgC;AACvE,SAAQC,0BAA0B,QAAO,kCAAkC;AAC3E,SAAQC,sBAAsB,QAAO,8BAA8B;AAEnE,eAAe,SAASC,YAAY,CAACC,IAAI,EAAEC,OAAO,EAAE;EAClD,MAAMC,UAAU,GAAGC,sBAAsB,CAACH,IAAI,EAAE,IAAI,EAAE,CAAC,EAAEC,OAAO,CAAC;EACjE,MAAMG,WAAW,GAAG,IAAIC,WAAW,CAACH,UAAU,CAAC;EAC/C,MAAMI,QAAQ,GAAG,IAAIC,QAAQ,CAACH,WAAW,CAAC;EAC1CD,sBAAsB,CAACH,IAAI,EAAEM,QAAQ,EAAE,CAAC,EAAEL,OAAO,CAAC;EAClD,OAAOG,WAAW;AACpB;AAEA,SAASD,sBAAsB,CAACH,IAAI,EAAEM,QAAQ,EAAEE,UAAU,EAAEP,OAAO,EAAE;EACnEP,MAAM,CAAC,OAAOM,IAAI,CAACS,IAAI,KAAK,QAAQ,CAAC;EAErC,QAAQT,IAAI,CAACS,IAAI;IACf,KAAKhB,WAAW,CAACiB,SAAS;MACxB,OAAOf,qBAAqB,CAACK,IAAI,EAAEM,QAAQ,EAAEE,UAAU,EAAEP,OAAO,EAAEE,sBAAsB,CAAC;IAC3F,KAAKV,WAAW,CAACkB,WAAW;MAC1B,OAAOb,sBAAsB,CAACE,IAAI,EAAEM,QAAQ,EAAEE,UAAU,EAAEP,OAAO,CAAC;IACpE,KAAKR,WAAW,CAACmB,gBAAgB;MAC/B,OAAOhB,wBAAwB,CAACI,IAAI,EAAEM,QAAQ,EAAEE,UAAU,EAAEP,OAAO,CAAC;IACtE,KAAKR,WAAW,CAACoB,kBAAkB;MACjC,OAAOhB,0BAA0B,CAACG,IAAI,EAAEM,QAAQ,EAAEE,UAAU,EAAEP,OAAO,CAAC;IACxE;MACE,MAAM,IAAIa,KAAK,CAAC,6BAA6B,CAAC;EAAC;AAErD"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
|
|
1
2
|
import { assert } from '@loaders.gl/loader-utils';
|
|
2
3
|
export function encode3DTileHeader(tile, dataView, byteOffset) {
|
|
3
4
|
const HEADER_SIZE = 12;
|
|
4
|
-
|
|
5
5
|
if (!dataView) {
|
|
6
6
|
return byteOffset + HEADER_SIZE;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
const {
|
|
10
9
|
magic,
|
|
11
10
|
version = 1,
|
|
@@ -18,14 +17,15 @@ export function encode3DTileHeader(tile, dataView, byteOffset) {
|
|
|
18
17
|
dataView.setUint8(byteOffset + 3, magic[3]);
|
|
19
18
|
dataView.setUint32(byteOffset + 4, version, true);
|
|
20
19
|
dataView.setUint32(byteOffset + 8, byteLength, true);
|
|
20
|
+
|
|
21
21
|
byteOffset += HEADER_SIZE;
|
|
22
22
|
return byteOffset;
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
export function encode3DTileByteLength(dataView, byteOffsetTileStart, byteLength) {
|
|
25
26
|
if (!dataView) {
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
29
|
dataView.setUint32(byteOffsetTileStart + 8, byteLength, true);
|
|
30
30
|
}
|
|
31
31
|
//# sourceMappingURL=encode-3d-tile-header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"encode-3d-tile-header.js","names":["assert","encode3DTileHeader","tile","dataView","byteOffset","HEADER_SIZE","magic","version","byteLength","Array","isArray","Number","isFinite","setUint8","setUint32","encode3DTileByteLength","byteOffsetTileStart"],"sources":["../../../../../src/lib/encoders/helpers/encode-3d-tile-header.ts"],"sourcesContent":["// HELPER ENCODERS\nimport {assert} from '@loaders.gl/loader-utils';\n\nexport function encode3DTileHeader(tile, dataView, byteOffset) {\n const HEADER_SIZE = 12;\n\n if (!dataView) {\n return byteOffset + HEADER_SIZE;\n }\n\n const {magic, version = 1, byteLength = 12} = tile;\n\n assert(Array.isArray(magic) && Number.isFinite(version) && Number.isFinite(byteLength));\n\n dataView.setUint8(byteOffset + 0, magic[0]);\n dataView.setUint8(byteOffset + 1, magic[1]);\n dataView.setUint8(byteOffset + 2, magic[2]);\n dataView.setUint8(byteOffset + 3, magic[3]);\n dataView.setUint32(byteOffset + 4, version, true); // version\n dataView.setUint32(byteOffset + 8, byteLength, true); // byteLength\n\n byteOffset += HEADER_SIZE;\n\n return byteOffset;\n}\n\n// Bytelength is sometimes only known at the end of writing a tile\nexport function encode3DTileByteLength(dataView, byteOffsetTileStart, byteLength) {\n if (!dataView) {\n return;\n }\n\n dataView.setUint32(byteOffsetTileStart + 8, byteLength, true); // byteLength\n}\n"],"mappings":";AACA,SAAQA,MAAM,QAAO,0BAA0B;AAE/C,OAAO,SAASC,kBAAkB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,EAAE;EAC7D,MAAMC,WAAW,GAAG,EAAE;EAEtB,IAAI,CAACF,QAAQ,EAAE;IACb,OAAOC,UAAU,GAAGC,WAAW;EACjC;EAEA,MAAM;IAACC,KAAK;IAAEC,OAAO,GAAG,CAAC;IAAEC,UAAU,GAAG;EAAE,CAAC,GAAGN,IAAI;EAElDF,MAAM,CAACS,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,IAAIK,MAAM,CAACC,QAAQ,CAACL,OAAO,CAAC,IAAII,MAAM,CAACC,QAAQ,CAACJ,UAAU,CAAC,CAAC;EAEvFL,QAAQ,CAACU,QAAQ,CAACT,UAAU,GAAG,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3CH,QAAQ,CAACU,QAAQ,CAACT,UAAU,GAAG,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3CH,QAAQ,CAACU,QAAQ,CAACT,UAAU,GAAG,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3CH,QAAQ,CAACU,QAAQ,CAACT,UAAU,GAAG,CAAC,EAAEE,KAAK,CAAC,CAAC,CAAC,CAAC;EAC3CH,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEG,OAAO,EAAE,IAAI,CAAC;EACjDJ,QAAQ,CAACW,SAAS,CAACV,UAAU,GAAG,CAAC,EAAEI,UAAU,EAAE,IAAI,CAAC;;EAEpDJ,UAAU,IAAIC,WAAW;EAEzB,OAAOD,UAAU;AACnB;;AAGA,OAAO,SAASW,sBAAsB,CAACZ,QAAQ,EAAEa,mBAAmB,EAAER,UAAU,EAAE;EAChF,IAAI,CAACL,QAAQ,EAAE;IACb;EACF;EAEAA,QAAQ,CAACW,SAAS,CAACE,mBAAmB,GAAG,CAAC,EAAER,UAAU,EAAE,IAAI,CAAC;AAC/D"}
|
package/dist/esm/lib/ion/ion.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
import { fetchFile } from '@loaders.gl/core';
|
|
2
4
|
import { assert } from '@loaders.gl/loader-utils';
|
|
3
5
|
const CESIUM_ION_URL = 'https://api.cesium.com/v1/assets';
|
|
6
|
+
|
|
4
7
|
export async function getIonTilesetMetadata(accessToken, assetId) {
|
|
5
8
|
if (!assetId) {
|
|
6
9
|
const assets = await getIonAssets(accessToken);
|
|
7
|
-
|
|
8
10
|
for (const item of assets.items) {
|
|
9
11
|
if (item.type === '3DTILES') {
|
|
10
12
|
assetId = item.id;
|
|
@@ -18,11 +20,13 @@ export async function getIonTilesetMetadata(accessToken, assetId) {
|
|
|
18
20
|
url
|
|
19
21
|
} = ionAssetMetadata;
|
|
20
22
|
assert(type === '3DTILES' && url);
|
|
23
|
+
|
|
21
24
|
ionAssetMetadata.headers = {
|
|
22
25
|
Authorization: "Bearer ".concat(ionAssetMetadata.accessToken)
|
|
23
26
|
};
|
|
24
27
|
return ionAssetMetadata;
|
|
25
28
|
}
|
|
29
|
+
|
|
26
30
|
export async function getIonAssets(accessToken) {
|
|
27
31
|
assert(accessToken);
|
|
28
32
|
const url = CESIUM_ION_URL;
|
|
@@ -34,13 +38,12 @@ export async function getIonAssets(accessToken) {
|
|
|
34
38
|
headers
|
|
35
39
|
}
|
|
36
40
|
});
|
|
37
|
-
|
|
38
41
|
if (!response.ok) {
|
|
39
42
|
throw new Error(response.statusText);
|
|
40
43
|
}
|
|
41
|
-
|
|
42
44
|
return await response.json();
|
|
43
45
|
}
|
|
46
|
+
|
|
44
47
|
export async function getIonAssetMetadata(accessToken, assetId) {
|
|
45
48
|
assert(accessToken, assetId);
|
|
46
49
|
const headers = {
|
|
@@ -52,24 +55,23 @@ export async function getIonAssetMetadata(accessToken, assetId) {
|
|
|
52
55
|
headers
|
|
53
56
|
}
|
|
54
57
|
});
|
|
55
|
-
|
|
56
58
|
if (!response.ok) {
|
|
57
59
|
throw new Error(response.statusText);
|
|
58
60
|
}
|
|
59
|
-
|
|
60
61
|
let metadata = await response.json();
|
|
62
|
+
|
|
61
63
|
response = await fetchFile("".concat(url, "/endpoint"), {
|
|
62
64
|
fetch: {
|
|
63
65
|
headers
|
|
64
66
|
}
|
|
65
67
|
});
|
|
66
|
-
|
|
67
68
|
if (!response.ok) {
|
|
68
69
|
throw new Error(response.statusText);
|
|
69
70
|
}
|
|
70
|
-
|
|
71
71
|
const tilesetInfo = await response.json();
|
|
72
|
-
|
|
72
|
+
|
|
73
|
+
metadata = {
|
|
74
|
+
...metadata,
|
|
73
75
|
...tilesetInfo
|
|
74
76
|
};
|
|
75
77
|
return metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ion.js","names":["fetchFile","assert","CESIUM_ION_URL","getIonTilesetMetadata","accessToken","assetId","assets","getIonAssets","item","items","type","id","ionAssetMetadata","getIonAssetMetadata","url","headers","Authorization","response","fetch","ok","Error","statusText","json","metadata","tilesetInfo"],"sources":["../../../../src/lib/ion/ion.ts"],"sourcesContent":["// Minimal support to load tilsets from the Cesium ION services\n\nimport {fetchFile} from '@loaders.gl/core';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst CESIUM_ION_URL = 'https://api.cesium.com/v1/assets';\n\n// Returns `{url, headers, type, attributions}` for an ion tileset\nexport async function getIonTilesetMetadata(accessToken, assetId) {\n // Step 1, if no asset id, look for first 3DTILES asset associated with this token.\n if (!assetId) {\n const assets = await getIonAssets(accessToken);\n for (const item of assets.items) {\n if (item.type === '3DTILES') {\n assetId = item.id;\n }\n }\n }\n\n // Step 2: Query metdatadata for this asset.\n const ionAssetMetadata = await getIonAssetMetadata(accessToken, assetId);\n const {type, url} = ionAssetMetadata;\n assert(type === '3DTILES' && url);\n\n // Prepare a headers object for fetch\n ionAssetMetadata.headers = {\n Authorization: `Bearer ${ionAssetMetadata.accessToken}`\n };\n return ionAssetMetadata;\n}\n\n// Return a list of all assets associated with accessToken\nexport async function getIonAssets(accessToken) {\n assert(accessToken);\n const url = CESIUM_ION_URL;\n const headers = {Authorization: `Bearer ${accessToken}`};\n const response = await fetchFile(url, {fetch: {headers}});\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return await response.json();\n}\n\n// Return metadata for a specific asset associated with token\nexport async function getIonAssetMetadata(accessToken, assetId) {\n assert(accessToken, assetId);\n const headers = {Authorization: `Bearer ${accessToken}`};\n\n const url = `${CESIUM_ION_URL}/${assetId}`;\n // https://cesium.com/docs/rest-api/#operation/getAsset\n // Retrieves metadata information about a specific asset.\n let response = await fetchFile(`${url}`, {fetch: {headers}});\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n let metadata = await response.json();\n\n // https://cesium.com/docs/rest-api/#operation/getAssetEndpoint\n // Retrieves information and credentials that allow you to access the tiled asset data for visualization and analysis.\n response = await fetchFile(`${url}/endpoint`, {fetch: {headers}});\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n const tilesetInfo = await response.json();\n\n // extract dataset description\n metadata = {\n ...metadata,\n ...tilesetInfo\n };\n\n return metadata;\n}\n"],"mappings":";;AAEA,SAAQA,SAAS,QAAO,kBAAkB;AAC1C,SAAQC,MAAM,QAAO,0BAA0B;AAE/C,MAAMC,cAAc,GAAG,kCAAkC;;AAGzD,OAAO,eAAeC,qBAAqB,CAACC,WAAW,EAAEC,OAAO,EAAE;EAEhE,IAAI,CAACA,OAAO,EAAE;IACZ,MAAMC,MAAM,GAAG,MAAMC,YAAY,CAACH,WAAW,CAAC;IAC9C,KAAK,MAAMI,IAAI,IAAIF,MAAM,CAACG,KAAK,EAAE;MAC/B,IAAID,IAAI,CAACE,IAAI,KAAK,SAAS,EAAE;QAC3BL,OAAO,GAAGG,IAAI,CAACG,EAAE;MACnB;IACF;EACF;;EAGA,MAAMC,gBAAgB,GAAG,MAAMC,mBAAmB,CAACT,WAAW,EAAEC,OAAO,CAAC;EACxE,MAAM;IAACK,IAAI;IAAEI;EAAG,CAAC,GAAGF,gBAAgB;EACpCX,MAAM,CAACS,IAAI,KAAK,SAAS,IAAII,GAAG,CAAC;;EAGjCF,gBAAgB,CAACG,OAAO,GAAG;IACzBC,aAAa,mBAAYJ,gBAAgB,CAACR,WAAW;EACvD,CAAC;EACD,OAAOQ,gBAAgB;AACzB;;AAGA,OAAO,eAAeL,YAAY,CAACH,WAAW,EAAE;EAC9CH,MAAM,CAACG,WAAW,CAAC;EACnB,MAAMU,GAAG,GAAGZ,cAAc;EAC1B,MAAMa,OAAO,GAAG;IAACC,aAAa,mBAAYZ,WAAW;EAAE,CAAC;EACxD,MAAMa,QAAQ,GAAG,MAAMjB,SAAS,CAACc,GAAG,EAAE;IAACI,KAAK,EAAE;MAACH;IAAO;EAAC,CAAC,CAAC;EACzD,IAAI,CAACE,QAAQ,CAACE,EAAE,EAAE;IAChB,MAAM,IAAIC,KAAK,CAACH,QAAQ,CAACI,UAAU,CAAC;EACtC;EACA,OAAO,MAAMJ,QAAQ,CAACK,IAAI,EAAE;AAC9B;;AAGA,OAAO,eAAeT,mBAAmB,CAACT,WAAW,EAAEC,OAAO,EAAE;EAC9DJ,MAAM,CAACG,WAAW,EAAEC,OAAO,CAAC;EAC5B,MAAMU,OAAO,GAAG;IAACC,aAAa,mBAAYZ,WAAW;EAAE,CAAC;EAExD,MAAMU,GAAG,aAAMZ,cAAc,cAAIG,OAAO,CAAE;EAG1C,IAAIY,QAAQ,GAAG,MAAMjB,SAAS,WAAIc,GAAG,GAAI;IAACI,KAAK,EAAE;MAACH;IAAO;EAAC,CAAC,CAAC;EAC5D,IAAI,CAACE,QAAQ,CAACE,EAAE,EAAE;IAChB,MAAM,IAAIC,KAAK,CAACH,QAAQ,CAACI,UAAU,CAAC;EACtC;EACA,IAAIE,QAAQ,GAAG,MAAMN,QAAQ,CAACK,IAAI,EAAE;;EAIpCL,QAAQ,GAAG,MAAMjB,SAAS,WAAIc,GAAG,gBAAa;IAACI,KAAK,EAAE;MAACH;IAAO;EAAC,CAAC,CAAC;EACjE,IAAI,CAACE,QAAQ,CAACE,EAAE,EAAE;IAChB,MAAM,IAAIC,KAAK,CAACH,QAAQ,CAACI,UAAU,CAAC;EACtC;EACA,MAAMG,WAAW,GAAG,MAAMP,QAAQ,CAACK,IAAI,EAAE;;EAGzCC,QAAQ,GAAG;IACT,GAAGA,QAAQ;IACX,GAAGC;EACL,CAAC;EAED,OAAOD,QAAQ;AACjB"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { decodeRGB565, GL } from '@loaders.gl/math';
|
|
2
|
+
|
|
2
3
|
export function normalize3DTileColorAttribute(tile, colors, batchTable) {
|
|
3
4
|
if (!colors && (!tile || !tile.batchIds || !batchTable)) {
|
|
4
5
|
return null;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
7
|
const {
|
|
8
8
|
batchIds,
|
|
9
9
|
isRGB565,
|
|
10
10
|
pointCount
|
|
11
11
|
} = tile;
|
|
12
|
-
|
|
13
12
|
if (batchIds && batchTable) {
|
|
14
13
|
const colorArray = new Uint8ClampedArray(pointCount * 3);
|
|
15
|
-
|
|
16
14
|
for (let i = 0; i < pointCount; i++) {
|
|
17
15
|
const batchId = batchIds[i];
|
|
18
16
|
const dimensions = batchTable.getProperty(batchId, 'dimensions');
|
|
@@ -21,7 +19,6 @@ export function normalize3DTileColorAttribute(tile, colors, batchTable) {
|
|
|
21
19
|
colorArray[i * 3 + 1] = color[1];
|
|
22
20
|
colorArray[i * 3 + 2] = color[2];
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
return {
|
|
26
23
|
type: GL.UNSIGNED_BYTE,
|
|
27
24
|
value: colorArray,
|
|
@@ -32,14 +29,12 @@ export function normalize3DTileColorAttribute(tile, colors, batchTable) {
|
|
|
32
29
|
|
|
33
30
|
if (isRGB565) {
|
|
34
31
|
const colorArray = new Uint8ClampedArray(pointCount * 3);
|
|
35
|
-
|
|
36
32
|
for (let i = 0; i < pointCount; i++) {
|
|
37
33
|
const color = decodeRGB565(colors[i]);
|
|
38
34
|
colorArray[i * 3] = color[0];
|
|
39
35
|
colorArray[i * 3 + 1] = color[1];
|
|
40
36
|
colorArray[i * 3 + 2] = color[2];
|
|
41
37
|
}
|
|
42
|
-
|
|
43
38
|
return {
|
|
44
39
|
type: GL.UNSIGNED_BYTE,
|
|
45
40
|
value: colorArray,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"normalize-3d-tile-colors.js","names":["decodeRGB565","GL","normalize3DTileColorAttribute","tile","colors","batchTable","batchIds","isRGB565","pointCount","colorArray","Uint8ClampedArray","i","batchId","dimensions","getProperty","color","map","d","type","UNSIGNED_BYTE","value","size","normalized","length"],"sources":["../../../../../src/lib/parsers/helpers/normalize-3d-tile-colors.ts"],"sourcesContent":["import {decodeRGB565, GL} from '@loaders.gl/math';\n\n/* eslint-disable complexity*/\nexport function normalize3DTileColorAttribute(tile, colors, batchTable?) {\n // no colors defined\n if (!colors && (!tile || !tile.batchIds || !batchTable)) {\n return null;\n }\n\n const {batchIds, isRGB565, pointCount} = tile;\n // Batch table, look up colors in table\n if (batchIds && batchTable) {\n const colorArray = new Uint8ClampedArray(pointCount * 3);\n for (let i = 0; i < pointCount; i++) {\n const batchId = batchIds[i];\n // TODO figure out what is `dimensions` used for\n const dimensions = batchTable.getProperty(batchId, 'dimensions');\n const color = dimensions.map((d) => d * 255);\n colorArray[i * 3] = color[0];\n colorArray[i * 3 + 1] = color[1];\n colorArray[i * 3 + 2] = color[2];\n }\n return {\n type: GL.UNSIGNED_BYTE,\n value: colorArray,\n size: 3,\n normalized: true\n };\n }\n\n // RGB565 case, convert to RGB\n if (isRGB565) {\n const colorArray = new Uint8ClampedArray(pointCount * 3);\n for (let i = 0; i < pointCount; i++) {\n const color = decodeRGB565(colors[i]);\n colorArray[i * 3] = color[0];\n colorArray[i * 3 + 1] = color[1];\n colorArray[i * 3 + 2] = color[2];\n }\n return {\n type: GL.UNSIGNED_BYTE,\n value: colorArray,\n size: 3,\n normalized: true\n };\n }\n\n // RGB case (tile.isTranslucent)\n if (colors && colors.length === pointCount * 3) {\n return {\n type: GL.UNSIGNED_BYTE,\n value: colors,\n size: 3,\n normalized: true\n };\n }\n\n // DEFAULT: RGBA case\n return {\n type: GL.UNSIGNED_BYTE,\n value: colors,\n size: 4,\n normalized: true\n };\n}\n/* eslint-enable complexity*/\n"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,EAAE,QAAO,kBAAkB;;AAGjD,OAAO,SAASC,6BAA6B,CAACC,IAAI,EAAEC,MAAM,EAAEC,UAAW,EAAE;EAEvE,IAAI,CAACD,MAAM,KAAK,CAACD,IAAI,IAAI,CAACA,IAAI,CAACG,QAAQ,IAAI,CAACD,UAAU,CAAC,EAAE;IACvD,OAAO,IAAI;EACb;EAEA,MAAM;IAACC,QAAQ;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGL,IAAI;EAE7C,IAAIG,QAAQ,IAAID,UAAU,EAAE;IAC1B,MAAMI,UAAU,GAAG,IAAIC,iBAAiB,CAACF,UAAU,GAAG,CAAC,CAAC;IACxD,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,EAAEG,CAAC,EAAE,EAAE;MACnC,MAAMC,OAAO,GAAGN,QAAQ,CAACK,CAAC,CAAC;MAE3B,MAAME,UAAU,GAAGR,UAAU,CAACS,WAAW,CAACF,OAAO,EAAE,YAAY,CAAC;MAChE,MAAMG,KAAK,GAAGF,UAAU,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,GAAG,GAAG,CAAC;MAC5CR,UAAU,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;MAC5BN,UAAU,CAACE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;MAChCN,UAAU,CAACE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;IAClC;IACA,OAAO;MACLG,IAAI,EAAEjB,EAAE,CAACkB,aAAa;MACtBC,KAAK,EAAEX,UAAU;MACjBY,IAAI,EAAE,CAAC;MACPC,UAAU,EAAE;IACd,CAAC;EACH;;EAGA,IAAIf,QAAQ,EAAE;IACZ,MAAME,UAAU,GAAG,IAAIC,iBAAiB,CAACF,UAAU,GAAG,CAAC,CAAC;IACxD,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,EAAEG,CAAC,EAAE,EAAE;MACnC,MAAMI,KAAK,GAAGf,YAAY,CAACI,MAAM,CAACO,CAAC,CAAC,CAAC;MACrCF,UAAU,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;MAC5BN,UAAU,CAACE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;MAChCN,UAAU,CAACE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAGI,KAAK,CAAC,CAAC,CAAC;IAClC;IACA,OAAO;MACLG,IAAI,EAAEjB,EAAE,CAACkB,aAAa;MACtBC,KAAK,EAAEX,UAAU;MACjBY,IAAI,EAAE,CAAC;MACPC,UAAU,EAAE;IACd,CAAC;EACH;;EAGA,IAAIlB,MAAM,IAAIA,MAAM,CAACmB,MAAM,KAAKf,UAAU,GAAG,CAAC,EAAE;IAC9C,OAAO;MACLU,IAAI,EAAEjB,EAAE,CAACkB,aAAa;MACtBC,KAAK,EAAEhB,MAAM;MACbiB,IAAI,EAAE,CAAC;MACPC,UAAU,EAAE;IACd,CAAC;EACH;;EAGA,OAAO;IACLJ,IAAI,EAAEjB,EAAE,CAACkB,aAAa;IACtBC,KAAK,EAAEhB,MAAM;IACbiB,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;AACH"}
|
|
@@ -5,22 +5,18 @@ export function normalize3DTileNormalAttribute(tile, normals) {
|
|
|
5
5
|
if (!normals) {
|
|
6
6
|
return null;
|
|
7
7
|
}
|
|
8
|
-
|
|
9
8
|
if (tile.isOctEncoded16P) {
|
|
10
9
|
const decodedArray = new Float32Array(tile.pointsLength * 3);
|
|
11
|
-
|
|
12
10
|
for (let i = 0; i < tile.pointsLength; i++) {
|
|
13
11
|
octDecode(normals[i * 2], normals[i * 2 + 1], scratchNormal);
|
|
14
12
|
scratchNormal.toArray(decodedArray, i * 3);
|
|
15
13
|
}
|
|
16
|
-
|
|
17
14
|
return {
|
|
18
15
|
type: GL.FLOAT,
|
|
19
16
|
size: 2,
|
|
20
17
|
value: decodedArray
|
|
21
18
|
};
|
|
22
19
|
}
|
|
23
|
-
|
|
24
20
|
return {
|
|
25
21
|
type: GL.FLOAT,
|
|
26
22
|
size: 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"normalize-3d-tile-normals.js","names":["Vector3","GL","octDecode","scratchNormal","normalize3DTileNormalAttribute","tile","normals","isOctEncoded16P","decodedArray","Float32Array","pointsLength","i","toArray","type","FLOAT","size","value"],"sources":["../../../../../src/lib/parsers/helpers/normalize-3d-tile-normals.ts"],"sourcesContent":["import {Vector3} from '@math.gl/core';\nimport {GL, octDecode} from '@loaders.gl/math';\n\nconst scratchNormal = new Vector3();\n\nexport function normalize3DTileNormalAttribute(tile, normals) {\n if (!normals) {\n return null;\n }\n\n if (tile.isOctEncoded16P) {\n const decodedArray = new Float32Array(tile.pointsLength * 3);\n for (let i = 0; i < tile.pointsLength; i++) {\n octDecode(normals[i * 2], normals[i * 2 + 1], scratchNormal);\n // @ts-ignore\n scratchNormal.toArray(decodedArray, i * 3);\n }\n\n return {\n type: GL.FLOAT,\n size: 2,\n value: decodedArray\n };\n }\n\n return {\n type: GL.FLOAT,\n size: 2,\n value: normals\n };\n}\n"],"mappings":"AAAA,SAAQA,OAAO,QAAO,eAAe;AACrC,SAAQC,EAAE,EAAEC,SAAS,QAAO,kBAAkB;AAE9C,MAAMC,aAAa,GAAG,IAAIH,OAAO,EAAE;AAEnC,OAAO,SAASI,8BAA8B,CAACC,IAAI,EAAEC,OAAO,EAAE;EAC5D,IAAI,CAACA,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EAEA,IAAID,IAAI,CAACE,eAAe,EAAE;IACxB,MAAMC,YAAY,GAAG,IAAIC,YAAY,CAACJ,IAAI,CAACK,YAAY,GAAG,CAAC,CAAC;IAC5D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,IAAI,CAACK,YAAY,EAAEC,CAAC,EAAE,EAAE;MAC1CT,SAAS,CAACI,OAAO,CAACK,CAAC,GAAG,CAAC,CAAC,EAAEL,OAAO,CAACK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAER,aAAa,CAAC;MAE5DA,aAAa,CAACS,OAAO,CAACJ,YAAY,EAAEG,CAAC,GAAG,CAAC,CAAC;IAC5C;IAEA,OAAO;MACLE,IAAI,EAAEZ,EAAE,CAACa,KAAK;MACdC,IAAI,EAAE,CAAC;MACPC,KAAK,EAAER;IACT,CAAC;EACH;EAEA,OAAO;IACLK,IAAI,EAAEZ,EAAE,CAACa,KAAK;IACdC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAEV;EACT,CAAC;AACH"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Vector3 } from '@math.gl/core';
|
|
2
2
|
import { GL } from '@loaders.gl/math';
|
|
3
|
+
|
|
3
4
|
export function normalize3DTilePositionAttribute(tile, positions, options) {
|
|
4
5
|
if (!tile.isQuantized) {
|
|
5
6
|
return positions;
|
|
@@ -21,11 +22,9 @@ export function normalize3DTilePositionAttribute(tile, positions, options) {
|
|
|
21
22
|
function decodeQuantizedPositions(tile, positions) {
|
|
22
23
|
const scratchPosition = new Vector3();
|
|
23
24
|
const decodedArray = new Float32Array(tile.pointCount * 3);
|
|
24
|
-
|
|
25
25
|
for (let i = 0; i < tile.pointCount; i++) {
|
|
26
26
|
scratchPosition.set(positions[i * 3], positions[i * 3 + 1], positions[i * 3 + 2]).scale(1 / tile.quantizedRange).multiply(tile.quantizedVolumeScale).add(tile.quantizedVolumeOffset).toArray(decodedArray, i * 3);
|
|
27
27
|
}
|
|
28
|
-
|
|
29
28
|
return decodedArray;
|
|
30
29
|
}
|
|
31
30
|
//# sourceMappingURL=normalize-3d-tile-positions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"normalize-3d-tile-positions.js","names":["Vector3","GL","normalize3DTilePositionAttribute","tile","positions","options","isQuantized","decodeQuantizedPositions","type","UNSIGNED_SHORT","value","size","normalized","scratchPosition","decodedArray","Float32Array","pointCount","i","set","scale","quantizedRange","multiply","quantizedVolumeScale","add","quantizedVolumeOffset","toArray"],"sources":["../../../../../src/lib/parsers/helpers/normalize-3d-tile-positions.ts"],"sourcesContent":["import {Vector3} from '@math.gl/core';\nimport {GL} from '@loaders.gl/math';\n\n// Prepare attribute for positions\nexport function normalize3DTilePositionAttribute(tile, positions, options) {\n if (!tile.isQuantized) {\n return positions;\n }\n\n // For quantized posititions, either expand to Float32Array or return custom accessor\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/blob/master/specification/TileFormats/Instanced3DModel/README.md#quantized-positions\n\n // Optionally decodes quantized positions on GPU, for simpler renderers that don't accept normalized attributes\n if (options['3d-tiles'] && options['3d-tiles'].decodeQuantizedPositions) {\n tile.isQuantized = false;\n return decodeQuantizedPositions(tile, positions);\n }\n\n // Default: Use normalized shorts directly, no copying/processing.\n // NOTE: The \"missing\" offset/scaling operations are automatically added to modelMatrix if `tile.isQuantized === true`\n return {\n type: GL.UNSIGNED_SHORT,\n value: positions,\n size: 3,\n normalized: true\n };\n}\n\n// Pre-scale quantized positions on CPU\nfunction decodeQuantizedPositions(tile, positions) {\n const scratchPosition = new Vector3();\n const decodedArray = new Float32Array(tile.pointCount * 3);\n\n for (let i = 0; i < tile.pointCount; i++) {\n // POSITION = POSITION_QUANTIZED / 65535.0 * QUANTIZED_VOLUME_SCALE + QUANTIZED_VOLUME_OFFSET\n scratchPosition\n .set(positions[i * 3], positions[i * 3 + 1], positions[i * 3 + 2])\n .scale(1 / tile.quantizedRange)\n .multiply(tile.quantizedVolumeScale)\n .add(tile.quantizedVolumeOffset)\n .toArray(decodedArray, i * 3);\n }\n\n return decodedArray;\n}\n"],"mappings":"AAAA,SAAQA,OAAO,QAAO,eAAe;AACrC,SAAQC,EAAE,QAAO,kBAAkB;;AAGnC,OAAO,SAASC,gCAAgC,CAACC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAE;EACzE,IAAI,CAACF,IAAI,CAACG,WAAW,EAAE;IACrB,OAAOF,SAAS;EAClB;;EAMA,IAAIC,OAAO,CAAC,UAAU,CAAC,IAAIA,OAAO,CAAC,UAAU,CAAC,CAACE,wBAAwB,EAAE;IACvEJ,IAAI,CAACG,WAAW,GAAG,KAAK;IACxB,OAAOC,wBAAwB,CAACJ,IAAI,EAAEC,SAAS,CAAC;EAClD;;EAIA,OAAO;IACLI,IAAI,EAAEP,EAAE,CAACQ,cAAc;IACvBC,KAAK,EAAEN,SAAS;IAChBO,IAAI,EAAE,CAAC;IACPC,UAAU,EAAE;EACd,CAAC;AACH;;AAGA,SAASL,wBAAwB,CAACJ,IAAI,EAAEC,SAAS,EAAE;EACjD,MAAMS,eAAe,GAAG,IAAIb,OAAO,EAAE;EACrC,MAAMc,YAAY,GAAG,IAAIC,YAAY,CAACZ,IAAI,CAACa,UAAU,GAAG,CAAC,CAAC;EAE1D,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,IAAI,CAACa,UAAU,EAAEC,CAAC,EAAE,EAAE;IAExCJ,eAAe,CACZK,GAAG,CAACd,SAAS,CAACa,CAAC,GAAG,CAAC,CAAC,EAAEb,SAAS,CAACa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAEb,SAAS,CAACa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CACjEE,KAAK,CAAC,CAAC,GAAGhB,IAAI,CAACiB,cAAc,CAAC,CAC9BC,QAAQ,CAAClB,IAAI,CAACmB,oBAAoB,CAAC,CACnCC,GAAG,CAACpB,IAAI,CAACqB,qBAAqB,CAAC,CAC/BC,OAAO,CAACX,YAAY,EAAEG,CAAC,GAAG,CAAC,CAAC;EACjC;EAEA,OAAOH,YAAY;AACrB"}
|
|
@@ -6,6 +6,7 @@ const SUBDIVISION_COUNT_MAP = {
|
|
|
6
6
|
QUADTREE: QUADTREE_DEVISION_COUNT,
|
|
7
7
|
OCTREE: OCTREE_DEVISION_COUNT
|
|
8
8
|
};
|
|
9
|
+
|
|
9
10
|
export async function parseImplicitTiles(params) {
|
|
10
11
|
const {
|
|
11
12
|
options,
|
|
@@ -48,20 +49,18 @@ export async function parseImplicitTiles(params) {
|
|
|
48
49
|
const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);
|
|
49
50
|
let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);
|
|
50
51
|
let tileAvailabilityIndex = levelOffset + childTileMortonIndex;
|
|
52
|
+
|
|
51
53
|
let childTileX = concatBits(parentData.x, childX);
|
|
52
54
|
let childTileY = concatBits(parentData.y, childY);
|
|
53
55
|
let childTileZ = concatBits(parentData.z, childZ);
|
|
54
56
|
let isChildSubtreeAvailable = false;
|
|
55
|
-
|
|
56
57
|
if (level + 1 > subtreeLevels) {
|
|
57
58
|
isChildSubtreeAvailable = getAvailabilityResult(subtree.childSubtreeAvailability, childTileMortonIndex);
|
|
58
59
|
}
|
|
59
|
-
|
|
60
60
|
const x = concatBits(globalData.x, childTileX);
|
|
61
61
|
const y = concatBits(globalData.y, childTileY);
|
|
62
62
|
const z = concatBits(globalData.z, childTileZ);
|
|
63
63
|
const lev = level + globalData.level;
|
|
64
|
-
|
|
65
64
|
if (isChildSubtreeAvailable) {
|
|
66
65
|
const subtreePath = "".concat(basePath, "/").concat(subtreesUriTemplate);
|
|
67
66
|
const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);
|
|
@@ -79,19 +78,14 @@ export async function parseImplicitTiles(params) {
|
|
|
79
78
|
childTileZ = 0;
|
|
80
79
|
level = 0;
|
|
81
80
|
}
|
|
82
|
-
|
|
83
81
|
const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);
|
|
84
|
-
|
|
85
82
|
if (!isTileAvailable || level > maximumLevel) {
|
|
86
83
|
return tile;
|
|
87
84
|
}
|
|
88
|
-
|
|
89
85
|
const isContentAvailable = getAvailabilityResult(subtree.contentAvailability, tileAvailabilityIndex);
|
|
90
|
-
|
|
91
86
|
if (isContentAvailable) {
|
|
92
87
|
tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);
|
|
93
88
|
}
|
|
94
|
-
|
|
95
89
|
const childTileLevel = level + 1;
|
|
96
90
|
const pData = {
|
|
97
91
|
mortonIndex: childTileMortonIndex,
|
|
@@ -99,7 +93,6 @@ export async function parseImplicitTiles(params) {
|
|
|
99
93
|
y: childTileY,
|
|
100
94
|
z: childTileZ
|
|
101
95
|
};
|
|
102
|
-
|
|
103
96
|
for (let index = 0; index < childrenPerTile; index++) {
|
|
104
97
|
const currentTile = await parseImplicitTiles({
|
|
105
98
|
subtree,
|
|
@@ -109,7 +102,6 @@ export async function parseImplicitTiles(params) {
|
|
|
109
102
|
level: childTileLevel,
|
|
110
103
|
globalData
|
|
111
104
|
});
|
|
112
|
-
|
|
113
105
|
if (currentTile.contentUrl || currentTile.children.length) {
|
|
114
106
|
const globalLevel = lev + 1;
|
|
115
107
|
const childCoordinates = {
|
|
@@ -121,19 +113,15 @@ export async function parseImplicitTiles(params) {
|
|
|
121
113
|
tile.children.push(formattedTile);
|
|
122
114
|
}
|
|
123
115
|
}
|
|
124
|
-
|
|
125
116
|
return tile;
|
|
126
117
|
}
|
|
127
|
-
|
|
128
118
|
function getAvailabilityResult(availabilityData, index) {
|
|
129
119
|
if ('constant' in availabilityData) {
|
|
130
120
|
return Boolean(availabilityData.constant);
|
|
131
121
|
}
|
|
132
|
-
|
|
133
122
|
if (availabilityData.explicitBitstream) {
|
|
134
123
|
return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);
|
|
135
124
|
}
|
|
136
|
-
|
|
137
125
|
return false;
|
|
138
126
|
}
|
|
139
127
|
|
|
@@ -207,11 +195,9 @@ export function replaceContentUrlTemplate(templateUrl, level, x, y, z) {
|
|
|
207
195
|
|
|
208
196
|
function generateMapUrl(items) {
|
|
209
197
|
const mapUrl = {};
|
|
210
|
-
|
|
211
198
|
for (const key in items) {
|
|
212
199
|
mapUrl["{".concat(key, "}")] = items[key];
|
|
213
200
|
}
|
|
214
|
-
|
|
215
201
|
return mapUrl;
|
|
216
202
|
}
|
|
217
203
|
|