@loaders.gl/3d-tiles 3.2.6 → 3.2.9
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 +14 -4
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +16 -3
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +16 -3
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +15 -3
- package/package.json +7 -7
- package/src/lib/parsers/parse-3d-tile-header.ts +17 -3
package/dist/dist.min.js
CHANGED
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
this.worker = isBrowser2 ? this._createBrowserWorker() : this._createNodeWorker();
|
|
263
263
|
}
|
|
264
264
|
static isSupported() {
|
|
265
|
-
return typeof Worker !== "undefined" && isBrowser2 || typeof Worker2 !==
|
|
265
|
+
return typeof Worker !== "undefined" && isBrowser2 || typeof Worker2 !== "undefined" && !isBrowser2;
|
|
266
266
|
}
|
|
267
267
|
destroy() {
|
|
268
268
|
this.onMessage = NOOP;
|
|
@@ -12418,13 +12418,23 @@
|
|
|
12418
12418
|
return refine;
|
|
12419
12419
|
}
|
|
12420
12420
|
}
|
|
12421
|
+
function resolveUri(uri, basePath) {
|
|
12422
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
12423
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
12424
|
+
const url = new URL(uri, `${basePath}/`);
|
|
12425
|
+
return decodeURI(url.toString());
|
|
12426
|
+
} else if (uri.startsWith("/")) {
|
|
12427
|
+
return uri;
|
|
12428
|
+
}
|
|
12429
|
+
return `${basePath}/${uri}`;
|
|
12430
|
+
}
|
|
12421
12431
|
function normalizeTileData(tile, options) {
|
|
12422
12432
|
if (!tile) {
|
|
12423
12433
|
return null;
|
|
12424
12434
|
}
|
|
12425
12435
|
if (tile.content) {
|
|
12426
12436
|
const contentUri = tile.content.uri || tile.content.url;
|
|
12427
|
-
tile.contentUrl =
|
|
12437
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
12428
12438
|
}
|
|
12429
12439
|
tile.id = tile.contentUrl;
|
|
12430
12440
|
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -12462,9 +12472,9 @@
|
|
|
12462
12472
|
subtrees: { uri: subtreesUriTemplate }
|
|
12463
12473
|
} = implicitTilingExtension;
|
|
12464
12474
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
12465
|
-
const rootSubtreeUrl =
|
|
12475
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
12466
12476
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
12467
|
-
const contentUrlTemplate =
|
|
12477
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
12468
12478
|
const refine = tileset.root.refine;
|
|
12469
12479
|
const rootLodMetricValue = tileset.root.geometricError;
|
|
12470
12480
|
const rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -66,6 +66,19 @@ function getRefine(refine) {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
function resolveUri(uri, basePath) {
|
|
70
|
+
var urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
71
|
+
|
|
72
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
73
|
+
var url = new URL(uri, "".concat(basePath, "/"));
|
|
74
|
+
return decodeURI(url.toString());
|
|
75
|
+
} else if (uri.startsWith('/')) {
|
|
76
|
+
return uri;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return "".concat(basePath, "/").concat(uri);
|
|
80
|
+
}
|
|
81
|
+
|
|
69
82
|
function normalizeTileData(tile, options) {
|
|
70
83
|
if (!tile) {
|
|
71
84
|
return null;
|
|
@@ -73,7 +86,7 @@ function normalizeTileData(tile, options) {
|
|
|
73
86
|
|
|
74
87
|
if (tile.content) {
|
|
75
88
|
var contentUri = tile.content.uri || tile.content.url;
|
|
76
|
-
tile.contentUrl =
|
|
89
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
77
90
|
}
|
|
78
91
|
|
|
79
92
|
tile.id = tile.contentUrl;
|
|
@@ -139,13 +152,13 @@ function _normalizeImplicitTileHeaders() {
|
|
|
139
152
|
implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
140
153
|
subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
|
|
141
154
|
subtreeUrl = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
142
|
-
rootSubtreeUrl =
|
|
155
|
+
rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
143
156
|
_context.next = 9;
|
|
144
157
|
return (0, _core.load)(rootSubtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader);
|
|
145
158
|
|
|
146
159
|
case 9:
|
|
147
160
|
rootSubtree = _context.sent;
|
|
148
|
-
contentUrlTemplate =
|
|
161
|
+
contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
149
162
|
refine = tileset.root.refine;
|
|
150
163
|
rootLodMetricValue = tileset.root.geometricError;
|
|
151
164
|
rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","normalizeTileData","options","content","contentUri","uri","url","basePath","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = `${options.basePath}/${contentUri}`;\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = `${basePath}/${subtreeUrl}`;\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = `${basePath}/${tileset.root.content.uri}`;\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "3.2.
|
|
7
|
+
var VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -41,6 +41,19 @@ function getRefine(refine) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
function resolveUri(uri, basePath) {
|
|
45
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
46
|
+
|
|
47
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
48
|
+
const url = new URL(uri, "".concat(basePath, "/"));
|
|
49
|
+
return decodeURI(url.toString());
|
|
50
|
+
} else if (uri.startsWith('/')) {
|
|
51
|
+
return uri;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return "".concat(basePath, "/").concat(uri);
|
|
55
|
+
}
|
|
56
|
+
|
|
44
57
|
export function normalizeTileData(tile, options) {
|
|
45
58
|
if (!tile) {
|
|
46
59
|
return null;
|
|
@@ -48,7 +61,7 @@ export function normalizeTileData(tile, options) {
|
|
|
48
61
|
|
|
49
62
|
if (tile.content) {
|
|
50
63
|
const contentUri = tile.content.uri || tile.content.url;
|
|
51
|
-
tile.contentUrl =
|
|
64
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
52
65
|
}
|
|
53
66
|
|
|
54
67
|
tile.id = tile.contentUrl;
|
|
@@ -95,9 +108,9 @@ export async function normalizeImplicitTileHeaders(tileset) {
|
|
|
95
108
|
}
|
|
96
109
|
} = implicitTilingExtension;
|
|
97
110
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
98
|
-
const rootSubtreeUrl =
|
|
111
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
99
112
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
100
|
-
const contentUrlTemplate =
|
|
113
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
101
114
|
const refine = tileset.root.refine;
|
|
102
115
|
const rootLodMetricValue = tileset.root.geometricError;
|
|
103
116
|
const rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","normalizeTileData","options","content","contentUri","uri","url","basePath","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","subtreeUrl","rootSubtreeUrl","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"AAAA,SAAQA,mBAAR,QAAkC,8BAAlC;AACA,SAAQC,IAAR,QAAmB,kBAAnB;AACA,SAAmBC,eAAnB,EAAoCC,eAApC,EAAqDC,SAArD,QAAqE,mBAArE;AAEA,SAAQC,kBAAR,EAA4BC,yBAA5B,QAA4D,mCAA5D;;AAEA,SAASC,WAAT,CAAqBC,IAArB,EAA2B;AACzB,MAAI,CAACA,IAAI,CAACC,UAAV,EAAsB;AACpB,WAAOL,SAAS,CAACM,KAAjB;AACD;;AAED,QAAMD,UAAU,GAAGD,IAAI,CAACC,UAAxB;AACA,QAAME,aAAa,GAAGF,UAAU,CAACG,KAAX,CAAiB,GAAjB,EAAsBC,GAAtB,EAAtB;;AACA,UAAQF,aAAR;AACE,SAAK,MAAL;AACE,aAAOP,SAAS,CAACU,UAAjB;;AACF,SAAK,MAAL;AACA,SAAK,MAAL;AACA,SAAK,KAAL;AACA,SAAK,MAAL;AACE,aAAOV,SAAS,CAACW,UAAjB;;AACF;AACE,aAAOJ,aAAP;AATJ;AAWD;;AAED,SAASK,SAAT,CAAmBC,MAAnB,EAA2B;AACzB,UAAQA,MAAR;AACE,SAAK,SAAL;AACA,SAAK,SAAL;AACE,aAAOd,eAAe,CAACe,OAAvB;;AACF,SAAK,KAAL;AACA,SAAK,KAAL;AACE,aAAOf,eAAe,CAACgB,GAAvB;;AACF;AACE,aAAOF,MAAP;AARJ;AAUD;;AAED,OAAO,SAASG,iBAAT,CAA2BZ,IAA3B,EAAiCa,OAAjC,EAA0C;AAC/C,MAAI,CAACb,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AACD,MAAIA,IAAI,CAACc,OAAT,EAAkB;AAChB,UAAMC,UAAU,GAAGf,IAAI,CAACc,OAAL,CAAaE,GAAb,IAAoBhB,IAAI,CAACc,OAAL,CAAaG,GAApD;AACAjB,IAAAA,IAAI,CAACC,UAAL,aAAqBY,OAAO,CAACK,QAA7B,cAAyCH,UAAzC;AACD;;AACDf,EAAAA,IAAI,CAACmB,EAAL,GAAUnB,IAAI,CAACC,UAAf;AACAD,EAAAA,IAAI,CAACoB,aAAL,GAAqB1B,eAAe,CAAC2B,eAArC;AACArB,EAAAA,IAAI,CAACsB,cAAL,GAAsBtB,IAAI,CAACuB,cAA3B;AACAvB,EAAAA,IAAI,CAACwB,eAAL,GAAuBxB,IAAI,CAACyB,SAA5B;AACAzB,EAAAA,IAAI,CAAC0B,IAAL,GAAY3B,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACS,MAAL,GAAcD,SAAS,CAACR,IAAI,CAACS,MAAN,CAAvB;AAEA,SAAOT,IAAP;AACD;AAGD,OAAO,SAAS2B,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,QAAMV,QAAQ,GAAGU,OAAO,CAACV,QAAzB;AACA,QAAMW,IAAI,GAAGjB,iBAAiB,CAACgB,OAAO,CAACC,IAAT,EAAeD,OAAf,CAA9B;AAEA,QAAME,KAAY,GAAG,EAArB;AACAA,EAAAA,KAAK,CAACC,IAAN,CAAWF,IAAX;;AAEA,SAAOC,KAAK,CAACE,MAAN,GAAe,CAAtB,EAAyB;AACvB,UAAMhC,IAAI,GAAG8B,KAAK,CAACzB,GAAN,MAAe,EAA5B;AACA,UAAM4B,QAAQ,GAAGjC,IAAI,CAACiC,QAAL,IAAiB,EAAlC;;AACA,SAAK,MAAMC,WAAX,IAA0BD,QAA1B,EAAoC;AAClCrB,MAAAA,iBAAiB,CAACsB,WAAD,EAAc;AAAChB,QAAAA;AAAD,OAAd,CAAjB;AACAY,MAAAA,KAAK,CAACC,IAAN,CAAWG,WAAX;AACD;AACF;;AAED,SAAOL,IAAP;AACD;AAOD,OAAO,eAAeM,4BAAf,CAA4CP,OAA5C,EAAgE;AACrE,MAAI,CAACA,OAAO,CAACC,IAAb,EAAmB;AACjB,WAAO,IAAP;AACD;;AAED,QAAMX,QAAQ,GAAGU,OAAO,CAACV,QAAzB;AACA,QAAMkB,uBAAuB,GAAGR,OAAO,CAACC,IAAR,CAAaQ,UAAb,CAAwB,yBAAxB,CAAhC;AACA,QAAM;AACJC,IAAAA,iBADI;AAEJC,IAAAA,YAFI;AAGJC,IAAAA,aAHI;AAIJC,IAAAA,QAAQ,EAAE;AAACzB,MAAAA,GAAG,EAAE0B;AAAN;AAJN,MAKFN,uBALJ;AAMA,QAAMO,UAAU,GAAG7C,yBAAyB,CAAC4C,mBAAD,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,CAA5C;AACA,QAAME,cAAc,aAAM1B,QAAN,cAAkByB,UAAlB,CAApB;AACA,QAAME,WAAW,GAAG,MAAMpD,IAAI,CAACmD,cAAD,EAAiBpD,mBAAjB,CAA9B;AACA,QAAMsD,kBAAkB,aAAM5B,QAAN,cAAkBU,OAAO,CAACC,IAAR,CAAaf,OAAb,CAAqBE,GAAvC,CAAxB;AACA,QAAMP,MAAM,GAAGmB,OAAO,CAACC,IAAR,CAAapB,MAA5B;AAEA,QAAMsC,kBAAkB,GAAGnB,OAAO,CAACC,IAAR,CAAaN,cAAxC;AACA,QAAMyB,kBAAkB,GAAGpB,OAAO,CAACC,IAAR,CAAaoB,cAAxC;AAEA,QAAMpC,OAAO,GAAG;AACdiC,IAAAA,kBADc;AAEdJ,IAAAA,mBAFc;AAGdJ,IAAAA,iBAHc;AAIdE,IAAAA,aAJc;AAKdD,IAAAA,YALc;AAMd9B,IAAAA,MANc;AAOdS,IAAAA,QAPc;AAQdE,IAAAA,aAAa,EAAE1B,eAAe,CAAC2B,eARjB;AASd0B,IAAAA,kBATc;AAUdC,IAAAA,kBAVc;AAWdjD,IAAAA,WAXc;AAYdS,IAAAA;AAZc,GAAhB;AAeA,SAAO,MAAM0C,yBAAyB,CAACtB,OAAO,CAACC,IAAT,EAAegB,WAAf,EAA4BhC,OAA5B,CAAtC;AACD;AASD,OAAO,eAAeqC,yBAAf,CAAyClD,IAAzC,EAA+C6C,WAA/C,EAAqEhC,OAArE,EAAmF;AACxF,MAAI,CAACb,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AAEDA,EAAAA,IAAI,CAACoB,aAAL,GAAqB1B,eAAe,CAAC2B,eAArC;AACArB,EAAAA,IAAI,CAACsB,cAAL,GAAsBtB,IAAI,CAACuB,cAA3B;AACAvB,EAAAA,IAAI,CAACwB,eAAL,GAAuBxB,IAAI,CAACyB,SAA5B;AAEA,QAAM;AAACQ,IAAAA,QAAD;AAAWhC,IAAAA;AAAX,MAAyB,MAAMJ,kBAAkB,CAAC;AAACsD,IAAAA,OAAO,EAAEN,WAAV;AAAuBhC,IAAAA;AAAvB,GAAD,CAAvD;;AAEA,MAAIZ,UAAJ,EAAgB;AACdD,IAAAA,IAAI,CAACC,UAAL,GAAkBA,UAAlB;AACAD,IAAAA,IAAI,CAACc,OAAL,GAAe;AAACE,MAAAA,GAAG,EAAEf,UAAU,CAACmD,OAAX,WAAsBvC,OAAO,CAACK,QAA9B,QAA2C,EAA3C;AAAN,KAAf;AACD;;AAEDlB,EAAAA,IAAI,CAACS,MAAL,GAAcD,SAAS,CAACR,IAAI,CAACS,MAAN,CAAvB;AACAT,EAAAA,IAAI,CAAC0B,IAAL,GAAY3B,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACiC,QAAL,GAAgBA,QAAhB;AACAjC,EAAAA,IAAI,CAACmB,EAAL,GAAUnB,IAAI,CAACC,UAAf;AAEA,SAAOD,IAAP;AACD","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = `${options.basePath}/${contentUri}`;\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = `${basePath}/${subtreeUrl}`;\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = `${basePath}/${tileset.root.content.uri}`;\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","subtreeUrl","rootSubtreeUrl","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "3.2.
|
|
1
|
+
export const VERSION = typeof "3.2.9" !== 'undefined' ? "3.2.9" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAA8C,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAA8C,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AAkDpC,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,OAgB9C;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,KAAA,OAiB3C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,SAAS,gBAsCpE;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,KAAA,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAsBvF"}
|
|
@@ -35,13 +35,25 @@ function getRefine(refine) {
|
|
|
35
35
|
return refine;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
function resolveUri(uri, basePath) {
|
|
39
|
+
// url scheme per RFC3986
|
|
40
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
41
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
42
|
+
const url = new URL(uri, `${basePath}/`);
|
|
43
|
+
return decodeURI(url.toString());
|
|
44
|
+
}
|
|
45
|
+
else if (uri.startsWith('/')) {
|
|
46
|
+
return uri;
|
|
47
|
+
}
|
|
48
|
+
return `${basePath}/${uri}`;
|
|
49
|
+
}
|
|
38
50
|
function normalizeTileData(tile, options) {
|
|
39
51
|
if (!tile) {
|
|
40
52
|
return null;
|
|
41
53
|
}
|
|
42
54
|
if (tile.content) {
|
|
43
55
|
const contentUri = tile.content.uri || tile.content.url;
|
|
44
|
-
tile.contentUrl =
|
|
56
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
45
57
|
}
|
|
46
58
|
tile.id = tile.contentUrl;
|
|
47
59
|
tile.lodMetricType = tiles_1.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -82,9 +94,9 @@ async function normalizeImplicitTileHeaders(tileset) {
|
|
|
82
94
|
const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
83
95
|
const { subdivisionScheme, maximumLevel, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
|
|
84
96
|
const subtreeUrl = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
85
|
-
const rootSubtreeUrl =
|
|
97
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
86
98
|
const rootSubtree = await (0, core_1.load)(rootSubtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader);
|
|
87
|
-
const contentUrlTemplate =
|
|
99
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
88
100
|
const refine = tileset.root.refine;
|
|
89
101
|
// @ts-ignore
|
|
90
102
|
const rootLodMetricValue = tileset.root.geometricError;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/3d-tiles",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.9",
|
|
4
4
|
"description": "3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -34,16 +34,16 @@
|
|
|
34
34
|
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@loaders.gl/draco": "3.2.
|
|
38
|
-
"@loaders.gl/gltf": "3.2.
|
|
39
|
-
"@loaders.gl/loader-utils": "3.2.
|
|
40
|
-
"@loaders.gl/math": "3.2.
|
|
41
|
-
"@loaders.gl/tiles": "3.2.
|
|
37
|
+
"@loaders.gl/draco": "3.2.9",
|
|
38
|
+
"@loaders.gl/gltf": "3.2.9",
|
|
39
|
+
"@loaders.gl/loader-utils": "3.2.9",
|
|
40
|
+
"@loaders.gl/math": "3.2.9",
|
|
41
|
+
"@loaders.gl/tiles": "3.2.9",
|
|
42
42
|
"@math.gl/core": "^3.5.1",
|
|
43
43
|
"@math.gl/geospatial": "^3.5.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@loaders.gl/core": "^3.2.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "9369776dfbe8535bf9c3b4fd4786476107418117"
|
|
49
49
|
}
|
|
@@ -37,13 +37,27 @@ function getRefine(refine) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
function resolveUri(uri, basePath) {
|
|
41
|
+
// url scheme per RFC3986
|
|
42
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
43
|
+
|
|
44
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
45
|
+
const url = new URL(uri, `${basePath}/`);
|
|
46
|
+
return decodeURI(url.toString());
|
|
47
|
+
} else if (uri.startsWith('/')) {
|
|
48
|
+
return uri;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return `${basePath}/${uri}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
40
54
|
export function normalizeTileData(tile, options) {
|
|
41
55
|
if (!tile) {
|
|
42
56
|
return null;
|
|
43
57
|
}
|
|
44
58
|
if (tile.content) {
|
|
45
59
|
const contentUri = tile.content.uri || tile.content.url;
|
|
46
|
-
tile.contentUrl =
|
|
60
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
47
61
|
}
|
|
48
62
|
tile.id = tile.contentUrl;
|
|
49
63
|
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -94,9 +108,9 @@ export async function normalizeImplicitTileHeaders(tileset: Tileset3D) {
|
|
|
94
108
|
subtrees: {uri: subtreesUriTemplate}
|
|
95
109
|
} = implicitTilingExtension;
|
|
96
110
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
97
|
-
const rootSubtreeUrl =
|
|
111
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
98
112
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
99
|
-
const contentUrlTemplate =
|
|
113
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
100
114
|
const refine = tileset.root.refine;
|
|
101
115
|
// @ts-ignore
|
|
102
116
|
const rootLodMetricValue = tileset.root.geometricError;
|