@loaders.gl/3d-tiles 3.3.0-alpha.3 → 3.3.0-alpha.4
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 +60 -33
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -0
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +47 -18
- package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +153 -69
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/tiles-3d-loader.js +5 -26
- package/dist/es5/tiles-3d-loader.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -0
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +28 -7
- package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +38 -20
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/tiles-3d-loader.js +2 -9
- package/dist/esm/tiles-3d-loader.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -13
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +36 -7
- package/dist/lib/parsers/parse-3d-tile-header.d.ts +5 -4
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +37 -18
- package/dist/tiles-3d-loader.d.ts.map +1 -1
- package/dist/tiles-3d-loader.js +1 -8
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +1 -1
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +2 -14
- package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +50 -7
- package/src/lib/parsers/parse-3d-tile-header.ts +59 -21
- package/src/tiles-3d-loader.ts +2 -16
- package/src/types.ts +15 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":["SUBTREE_FILE_MAGIC","SUBTREE_FILE_VERSION","parse3DTilesSubtree","data","options","context","magic","Uint32Array","slice","Error","version","jsonByteLength","parseUint64Value","stringAttribute","Uint8Array","textDecoder","TextDecoder","string","decode","subtree","JSON","parse","binaryByteLength","internalBinaryBuffer","ArrayBuffer","tileAvailability","explicitBitstream","getExplicitBitstream","contentAvailability","childSubtreeAvailability","resolveBufferUri","bitstreamRelativeUri","basePath","hasProtocol","startsWith","resolvedUri","URL","decodeURI","toString","basePathWithProtocol","host","pathname","name","bufferViewIndex","bufferView","bufferViews","buffer","buffers","url","fetch","uri","bufferUri","response","arrayBuffer","byteOffset","byteLength","dataView","DataView","left","getUint32","right"],"mappings":"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","sourcesContent":["import type {Subtree, ExplicitBitstream} from '../../../types';\nimport type {LoaderContext, LoaderOptions} from '@loaders.gl/loader-utils';\n\nconst SUBTREE_FILE_MAGIC = 0x74627573;\nconst SUBTREE_FILE_VERSION = 1;\n\n/**\n * Parse subtree file\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format\n * @param data\n * @returns\n */\n// eslint-disable-next-line max-statements\nexport default async function parse3DTilesSubtree(\n data: ArrayBuffer,\n options: LoaderOptions | undefined,\n context: LoaderContext | undefined\n): Promise<Subtree> {\n const magic = new Uint32Array(data.slice(0, 4));\n\n if (magic[0] !== SUBTREE_FILE_MAGIC) {\n throw new Error('Wrong subtree file magic number');\n }\n\n const version = new Uint32Array(data.slice(4, 8));\n\n if (version[0] !== SUBTREE_FILE_VERSION) {\n throw new Error('Wrong subtree file verson, must be 1');\n }\n\n const jsonByteLength = parseUint64Value(data.slice(8, 16));\n const stringAttribute = new Uint8Array(data, 24, jsonByteLength);\n\n const textDecoder = new TextDecoder('utf8');\n const string = textDecoder.decode(stringAttribute);\n const subtree = JSON.parse(string);\n\n const binaryByteLength = parseUint64Value(data.slice(16, 24));\n let internalBinaryBuffer = new ArrayBuffer(0);\n\n if (binaryByteLength) {\n internalBinaryBuffer = data.slice(24 + jsonByteLength);\n }\n\n if ('bufferView' in subtree.tileAvailability) {\n subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'tileAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n if ('bufferView' in subtree.contentAvailability) {\n subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'contentAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n if ('bufferView' in subtree.childSubtreeAvailability) {\n subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(\n subtree,\n 'childSubtreeAvailability',\n internalBinaryBuffer,\n context\n );\n }\n\n return subtree;\n}\n\n/**\n * Get url for bitstream downloading\n * @param bitstreamRelativeUri\n * @param baseUri\n * @returns\n */\nfunction resolveBufferUri(bitstreamRelativeUri: string, basePath: string): string {\n const hasProtocol = basePath.startsWith('http');\n\n if (hasProtocol) {\n const resolvedUri = new URL(bitstreamRelativeUri, basePath);\n return decodeURI(resolvedUri.toString());\n }\n\n /**\n * Adding http protocol only for new URL constructor usage.\n * It allows to resolve relative paths like ../../example with basePath.\n */\n const basePathWithProtocol = `http://${basePath}`;\n const resolvedUri = new URL(bitstreamRelativeUri, basePathWithProtocol);\n /**\n * Drop protocol and use just relative path.\n */\n return `/${resolvedUri.host}${resolvedUri.pathname}`;\n}\n\n/**\n * Get explicit bitstream for subtree availability data.\n * @param subtree\n * @param name\n * @param internalBinaryBuffer\n */\nasync function getExplicitBitstream(\n subtree: Subtree,\n name: string,\n internalBinaryBuffer: ArrayBuffer,\n context: LoaderContext | undefined\n): Promise<ExplicitBitstream> {\n const bufferViewIndex = subtree[name].bufferView;\n const bufferView = subtree.bufferViews[bufferViewIndex];\n const buffer = subtree.buffers[bufferView.buffer];\n\n if (!context?.url || !context.fetch) {\n throw new Error('Url is not provided');\n }\n\n if (!context.fetch) {\n throw new Error('fetch is not provided');\n }\n\n // External bitstream loading\n if (buffer.uri) {\n const bufferUri = resolveBufferUri(buffer.uri, context?.url);\n const response = await context.fetch(bufferUri);\n const data = await response.arrayBuffer();\n // Return view of bitstream.\n return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);\n }\n // Return view of bitstream.\n return new Uint8Array(internalBinaryBuffer, bufferView.byteOffset, bufferView.byteLength);\n}\n\n/**\n * Parse buffer to return uint64 value\n * @param buffer\n * @returns 64-bit value until precision is lost after Number.MAX_SAFE_INTEGER\n */\nfunction parseUint64Value(buffer: ArrayBuffer): number {\n const dataView = new DataView(buffer);\n const left = dataView.getUint32(0, true);\n const right = dataView.getUint32(4, true);\n // combine the two 32-bit values\n return left + 2 ** 32 * right;\n}\n"],"file":"parse-3d-tile-subtree.js"}
|
|
@@ -72,9 +72,17 @@ export function normalizeTileData(tile, options) {
|
|
|
72
72
|
tile.refine = getRefine(tile.refine);
|
|
73
73
|
return tile;
|
|
74
74
|
}
|
|
75
|
-
export function normalizeTileHeaders(tileset) {
|
|
75
|
+
export async function normalizeTileHeaders(tileset, options) {
|
|
76
76
|
const basePath = tileset.basePath;
|
|
77
|
-
|
|
77
|
+
let root;
|
|
78
|
+
const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset === null || tileset === void 0 ? void 0 : tileset.root);
|
|
79
|
+
|
|
80
|
+
if (rootImplicitTilingExtension && tileset.root) {
|
|
81
|
+
root = await normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
|
|
82
|
+
} else {
|
|
83
|
+
root = normalizeTileData(tileset.root, tileset);
|
|
84
|
+
}
|
|
85
|
+
|
|
78
86
|
const stack = [];
|
|
79
87
|
stack.push(root);
|
|
80
88
|
|
|
@@ -82,23 +90,27 @@ export function normalizeTileHeaders(tileset) {
|
|
|
82
90
|
const tile = stack.pop() || {};
|
|
83
91
|
const children = tile.children || [];
|
|
84
92
|
|
|
85
|
-
for (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
for (let childHeader of children) {
|
|
94
|
+
const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
|
|
95
|
+
|
|
96
|
+
if (childImplicitTilingExtension) {
|
|
97
|
+
childHeader = await normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
|
|
98
|
+
} else {
|
|
99
|
+
normalizeTileData(childHeader, {
|
|
100
|
+
basePath
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
89
104
|
stack.push(childHeader);
|
|
90
105
|
}
|
|
91
106
|
}
|
|
92
107
|
|
|
93
108
|
return root;
|
|
94
109
|
}
|
|
95
|
-
export async function normalizeImplicitTileHeaders(tileset) {
|
|
96
|
-
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
110
|
+
export async function normalizeImplicitTileHeaders(tile, tileset, implicitTilingExtension, options) {
|
|
111
|
+
var _tileset$root;
|
|
99
112
|
|
|
100
113
|
const basePath = tileset.basePath;
|
|
101
|
-
const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
102
114
|
const {
|
|
103
115
|
subdivisionScheme,
|
|
104
116
|
maximumLevel,
|
|
@@ -107,14 +119,14 @@ export async function normalizeImplicitTileHeaders(tileset) {
|
|
|
107
119
|
uri: subtreesUriTemplate
|
|
108
120
|
}
|
|
109
121
|
} = implicitTilingExtension;
|
|
110
|
-
const
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
const contentUrlTemplate = resolveUri(
|
|
114
|
-
const refine = tileset.root.refine;
|
|
115
|
-
const rootLodMetricValue =
|
|
116
|
-
const rootBoundingVolume =
|
|
117
|
-
const
|
|
122
|
+
const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
123
|
+
const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
|
|
124
|
+
const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);
|
|
125
|
+
const contentUrlTemplate = resolveUri(tile.content.uri, basePath);
|
|
126
|
+
const refine = tileset === null || tileset === void 0 ? void 0 : (_tileset$root = tileset.root) === null || _tileset$root === void 0 ? void 0 : _tileset$root.refine;
|
|
127
|
+
const rootLodMetricValue = tile.geometricError;
|
|
128
|
+
const rootBoundingVolume = tile.boundingVolume;
|
|
129
|
+
const implicitOptions = {
|
|
118
130
|
contentUrlTemplate,
|
|
119
131
|
subtreesUriTemplate,
|
|
120
132
|
subdivisionScheme,
|
|
@@ -128,7 +140,7 @@ export async function normalizeImplicitTileHeaders(tileset) {
|
|
|
128
140
|
getTileType,
|
|
129
141
|
getRefine
|
|
130
142
|
};
|
|
131
|
-
return await normalizeImplicitTileData(
|
|
143
|
+
return await normalizeImplicitTileData(tile, subtree, implicitOptions);
|
|
132
144
|
}
|
|
133
145
|
export async function normalizeImplicitTileData(tile, rootSubtree, options) {
|
|
134
146
|
if (!tile) {
|
|
@@ -159,4 +171,10 @@ export async function normalizeImplicitTileData(tile, rootSubtree, options) {
|
|
|
159
171
|
tile.id = tile.contentUrl;
|
|
160
172
|
return tile;
|
|
161
173
|
}
|
|
174
|
+
|
|
175
|
+
function getImplicitTilingExtensionData(tile) {
|
|
176
|
+
var _tile$extensions;
|
|
177
|
+
|
|
178
|
+
return (tile === null || tile === void 0 ? void 0 : (_tile$extensions = tile.extensions) === null || _tile$extensions === void 0 ? void 0 : _tile$extensions['3DTILES_implicit_tiling']) || (tile === null || tile === void 0 ? void 0 : tile.implicitTiling);
|
|
179
|
+
}
|
|
162
180
|
//# sourceMappingURL=parse-3d-tile-header.js.map
|
|
@@ -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","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
|
+
{"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","rootImplicitTilingExtension","getImplicitTilingExtensionData","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","replace","extensions","implicitTiling"],"mappings":"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","sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, 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 async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\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 (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\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(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\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(tile, subtree, implicitOptions);\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\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "3.3.0-alpha.
|
|
1
|
+
export const VERSION = typeof "3.3.0-alpha.4" !== 'undefined' ? "3.3.0-alpha.4" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -2,8 +2,7 @@ import { path } from '@loaders.gl/loader-utils';
|
|
|
2
2
|
import { TILESET_TYPE, LOD_METRIC_TYPE } from '@loaders.gl/tiles';
|
|
3
3
|
import { VERSION } from './lib/utils/version';
|
|
4
4
|
import { parse3DTile } from './lib/parsers/parse-3d-tile';
|
|
5
|
-
import { normalizeTileHeaders
|
|
6
|
-
const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
|
|
5
|
+
import { normalizeTileHeaders } from './lib/parsers/parse-3d-tile-header';
|
|
7
6
|
export const Tiles3DLoader = {
|
|
8
7
|
id: '3d-tiles',
|
|
9
8
|
name: '3D Tiles',
|
|
@@ -45,7 +44,7 @@ async function parseTileset(data, options, context) {
|
|
|
45
44
|
tilesetJson.loader = options.loader || Tiles3DLoader;
|
|
46
45
|
tilesetJson.url = context.url;
|
|
47
46
|
tilesetJson.basePath = getBaseUri(tilesetJson);
|
|
48
|
-
tilesetJson.root =
|
|
47
|
+
tilesetJson.root = await normalizeTileHeaders(tilesetJson, options);
|
|
49
48
|
tilesetJson.type = TILESET_TYPE.TILES3D;
|
|
50
49
|
tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
51
50
|
tilesetJson.lodMetricValue = ((_tilesetJson$root = tilesetJson.root) === null || _tilesetJson$root === void 0 ? void 0 : _tilesetJson$root.lodMetricValue) || 0;
|
|
@@ -70,10 +69,4 @@ async function parse(data, options, context) {
|
|
|
70
69
|
|
|
71
70
|
return data;
|
|
72
71
|
}
|
|
73
|
-
|
|
74
|
-
function hasImplicitTilingExtension(tilesetJson) {
|
|
75
|
-
var _tilesetJson$extensio, _tilesetJson$extensio2;
|
|
76
|
-
|
|
77
|
-
return (tilesetJson === null || tilesetJson === void 0 ? void 0 : (_tilesetJson$extensio = tilesetJson.extensionsRequired) === null || _tilesetJson$extensio === void 0 ? void 0 : _tilesetJson$extensio.includes(IMPLICIT_TILING_EXTENSION_NAME)) && (tilesetJson === null || tilesetJson === void 0 ? void 0 : (_tilesetJson$extensio2 = tilesetJson.extensionsUsed) === null || _tilesetJson$extensio2 === void 0 ? void 0 : _tilesetJson$extensio2.includes(IMPLICIT_TILING_EXTENSION_NAME));
|
|
78
|
-
}
|
|
79
72
|
//# sourceMappingURL=tiles-3d-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tiles-3d-loader.ts"],"names":["path","TILESET_TYPE","LOD_METRIC_TYPE","VERSION","parse3DTile","normalizeTileHeaders","
|
|
1
|
+
{"version":3,"sources":["../../src/tiles-3d-loader.ts"],"names":["path","TILESET_TYPE","LOD_METRIC_TYPE","VERSION","parse3DTile","normalizeTileHeaders","Tiles3DLoader","id","name","module","version","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","getBaseUri","tileset","dirname","url","parseTile","arrayBuffer","context","tile","content","featureIds","byteOffset","parseTileset","data","tilesetJson","JSON","TextDecoder","decode","loader","basePath","root","type","TILES3D","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","loaderOptions","indexOf"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\nfunction getBaseUri(tileset) {\n return path.dirname(tileset.url);\n}\n\nasync function parseTile(arrayBuffer, options, context) {\n const tile = {\n content: {\n featureIds: null\n }\n };\n const byteOffset = 0;\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n return tile.content;\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = options.loader || Tiles3DLoader;\n tilesetJson.url = context.url;\n // base path that non-absolute paths in tileset are relative to.\n tilesetJson.basePath = getBaseUri(tilesetJson);\n tilesetJson.root = await normalizeTileHeaders(tilesetJson, options);\n\n tilesetJson.type = TILESET_TYPE.TILES3D;\n\n tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;\n\n return tilesetJson;\n}\n\nasync function parse(data, options, context) {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else {\n data = await parseTile(data, options, context);\n }\n\n return data;\n}\n"],"file":"tiles-3d-loader.js"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { default as Tile3DFeatureTable } from './lib/classes/tile-3d-feature-tab
|
|
|
6
6
|
export { default as Tile3DBatchTable } from './lib/classes/tile-3d-batch-table';
|
|
7
7
|
export { TILE3D_TYPE } from './lib/constants';
|
|
8
8
|
export { getIonTilesetMetadata as _getIonTilesetMetadata } from './lib/ion/ion';
|
|
9
|
-
export type { FeatureTableJson, B3DMContent, Node3D } from './types';
|
|
9
|
+
export type { FeatureTableJson, B3DMContent, Node3D, ImplicitTilingExtension } from './types';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,qBAAqB,IAAI,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,qBAAqB,IAAI,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-3d-implicit-tiles.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAY1E;;;;;;;;;;;GAWG;AAEH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACpF;;;;
|
|
1
|
+
{"version":3,"file":"parse-3d-implicit-tiles.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAY1E;;;;;;;;;;;GAWG;AAEH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACpF;;;;GAsHA;AA2GD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM,CAGR"}
|
|
@@ -49,14 +49,6 @@ async function parseImplicitTiles(params) {
|
|
|
49
49
|
let childTileX = concatBits(parentData.x, childX);
|
|
50
50
|
let childTileY = concatBits(parentData.y, childY);
|
|
51
51
|
let childTileZ = concatBits(parentData.z, childZ);
|
|
52
|
-
// TODO Remove after real implicit tileset will be tested.
|
|
53
|
-
// Degug data
|
|
54
|
-
// tile.level = level + globalData.level;
|
|
55
|
-
// tile.x = concatBits(globalData.x, childTileX);
|
|
56
|
-
// tile.y = concatBits(globalData.y, childTileY);
|
|
57
|
-
// tile.z = concatBits(globalData.z, childTileZ);
|
|
58
|
-
// tile.mortonIndex = childTileMortonIndex;
|
|
59
|
-
// End of debug data
|
|
60
52
|
let isChildSubtreeAvailable = false;
|
|
61
53
|
if (level + 1 > subtreeLevels) {
|
|
62
54
|
isChildSubtreeAvailable = getAvailabilityResult(subtree.childSubtreeAvailability, childTileMortonIndex);
|
|
@@ -143,12 +135,9 @@ function formatTileData(tile, level, childCoordinates, options) {
|
|
|
143
135
|
type: getTileType(tile),
|
|
144
136
|
lodMetricType,
|
|
145
137
|
lodMetricValue,
|
|
138
|
+
geometricError: lodMetricValue,
|
|
139
|
+
transform: tile.transform,
|
|
146
140
|
boundingVolume
|
|
147
|
-
// Temp debug values. Remove when real implicit tileset will be tested.
|
|
148
|
-
// x: tile.x,
|
|
149
|
-
// y: tile.y,
|
|
150
|
-
// z: tile.z,
|
|
151
|
-
// level: tile.level
|
|
152
141
|
};
|
|
153
142
|
}
|
|
154
143
|
/**
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Subtree } from '../../../types';
|
|
2
|
+
import type { LoaderContext, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
3
|
/**
|
|
3
4
|
* Parse subtree file
|
|
4
5
|
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
|
|
5
6
|
* @param data
|
|
6
7
|
* @returns
|
|
7
8
|
*/
|
|
8
|
-
export default function parse3DTilesSubtree(data: ArrayBuffer): Promise<Subtree>;
|
|
9
|
+
export default function parse3DTilesSubtree(data: ArrayBuffer, options: LoaderOptions | undefined, context: LoaderContext | undefined): Promise<Subtree>;
|
|
9
10
|
//# sourceMappingURL=parse-3d-tile-subtree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-3d-tile-subtree.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAoB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-subtree.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAoB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAK3E;;;;;GAKG;AAEH,wBAA8B,mBAAmB,CAC/C,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,OAAO,CAAC,OAAO,CAAC,CAuDlB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const core_1 = require("@loaders.gl/core");
|
|
4
3
|
const SUBTREE_FILE_MAGIC = 0x74627573;
|
|
5
4
|
const SUBTREE_FILE_VERSION = 1;
|
|
6
5
|
/**
|
|
@@ -10,7 +9,7 @@ const SUBTREE_FILE_VERSION = 1;
|
|
|
10
9
|
* @returns
|
|
11
10
|
*/
|
|
12
11
|
// eslint-disable-next-line max-statements
|
|
13
|
-
async function parse3DTilesSubtree(data) {
|
|
12
|
+
async function parse3DTilesSubtree(data, options, context) {
|
|
14
13
|
const magic = new Uint32Array(data.slice(0, 4));
|
|
15
14
|
if (magic[0] !== SUBTREE_FILE_MAGIC) {
|
|
16
15
|
throw new Error('Wrong subtree file magic number');
|
|
@@ -30,30 +29,60 @@ async function parse3DTilesSubtree(data) {
|
|
|
30
29
|
internalBinaryBuffer = data.slice(24 + jsonByteLength);
|
|
31
30
|
}
|
|
32
31
|
if ('bufferView' in subtree.tileAvailability) {
|
|
33
|
-
subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'tileAvailability', internalBinaryBuffer);
|
|
32
|
+
subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'tileAvailability', internalBinaryBuffer, context);
|
|
34
33
|
}
|
|
35
34
|
if ('bufferView' in subtree.contentAvailability) {
|
|
36
|
-
subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'contentAvailability', internalBinaryBuffer);
|
|
35
|
+
subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'contentAvailability', internalBinaryBuffer, context);
|
|
37
36
|
}
|
|
38
37
|
if ('bufferView' in subtree.childSubtreeAvailability) {
|
|
39
|
-
subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'childSubtreeAvailability', internalBinaryBuffer);
|
|
38
|
+
subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'childSubtreeAvailability', internalBinaryBuffer, context);
|
|
40
39
|
}
|
|
41
40
|
return subtree;
|
|
42
41
|
}
|
|
43
42
|
exports.default = parse3DTilesSubtree;
|
|
43
|
+
/**
|
|
44
|
+
* Get url for bitstream downloading
|
|
45
|
+
* @param bitstreamRelativeUri
|
|
46
|
+
* @param baseUri
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
function resolveBufferUri(bitstreamRelativeUri, basePath) {
|
|
50
|
+
const hasProtocol = basePath.startsWith('http');
|
|
51
|
+
if (hasProtocol) {
|
|
52
|
+
const resolvedUri = new URL(bitstreamRelativeUri, basePath);
|
|
53
|
+
return decodeURI(resolvedUri.toString());
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Adding http protocol only for new URL constructor usage.
|
|
57
|
+
* It allows to resolve relative paths like ../../example with basePath.
|
|
58
|
+
*/
|
|
59
|
+
const basePathWithProtocol = `http://${basePath}`;
|
|
60
|
+
const resolvedUri = new URL(bitstreamRelativeUri, basePathWithProtocol);
|
|
61
|
+
/**
|
|
62
|
+
* Drop protocol and use just relative path.
|
|
63
|
+
*/
|
|
64
|
+
return `/${resolvedUri.host}${resolvedUri.pathname}`;
|
|
65
|
+
}
|
|
44
66
|
/**
|
|
45
67
|
* Get explicit bitstream for subtree availability data.
|
|
46
68
|
* @param subtree
|
|
47
69
|
* @param name
|
|
48
70
|
* @param internalBinaryBuffer
|
|
49
71
|
*/
|
|
50
|
-
async function getExplicitBitstream(subtree, name, internalBinaryBuffer) {
|
|
72
|
+
async function getExplicitBitstream(subtree, name, internalBinaryBuffer, context) {
|
|
51
73
|
const bufferViewIndex = subtree[name].bufferView;
|
|
52
74
|
const bufferView = subtree.bufferViews[bufferViewIndex];
|
|
53
75
|
const buffer = subtree.buffers[bufferView.buffer];
|
|
76
|
+
if (!context?.url || !context.fetch) {
|
|
77
|
+
throw new Error('Url is not provided');
|
|
78
|
+
}
|
|
79
|
+
if (!context.fetch) {
|
|
80
|
+
throw new Error('fetch is not provided');
|
|
81
|
+
}
|
|
54
82
|
// External bitstream loading
|
|
55
83
|
if (buffer.uri) {
|
|
56
|
-
const
|
|
84
|
+
const bufferUri = resolveBufferUri(buffer.uri, context?.url);
|
|
85
|
+
const response = await context.fetch(bufferUri);
|
|
57
86
|
const data = await response.arrayBuffer();
|
|
58
87
|
// Return view of bitstream.
|
|
59
88
|
return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
import { Tileset3D, Tile3D } from '@loaders.gl/tiles';
|
|
3
|
+
import { ImplicitTilingExtension, Subtree } from '../../types';
|
|
3
4
|
export declare function normalizeTileData(tile: any, options: any): any;
|
|
4
|
-
export declare function normalizeTileHeaders(tileset:
|
|
5
|
+
export declare function normalizeTileHeaders(tileset: Tileset3D, options: LoaderOptions): Promise<Tileset3D>;
|
|
5
6
|
/**
|
|
6
7
|
* Do normalisation of implicit tile headers
|
|
7
8
|
* TODO Check if Tile3D class can be a return type here.
|
|
8
9
|
* @param tileset
|
|
9
10
|
*/
|
|
10
|
-
export declare function normalizeImplicitTileHeaders(tileset: Tileset3D): Promise<any>;
|
|
11
|
+
export declare function normalizeImplicitTileHeaders(tile: Tile3D, tileset: Tileset3D, implicitTilingExtension: ImplicitTilingExtension, options: LoaderOptions): Promise<any>;
|
|
11
12
|
/**
|
|
12
13
|
* Do implicit data normalisation to create hierarchical tile structure
|
|
13
14
|
* @param tile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAC,SAAS,EAA+C,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAC,uBAAuB,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAkD7D,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,OAgB9C;AAGD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,CAAC,CAwCpB;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAClB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,aAAa,gBAkCvB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,KAAA,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAsBvF"}
|
|
@@ -65,16 +65,29 @@ function normalizeTileData(tile, options) {
|
|
|
65
65
|
}
|
|
66
66
|
exports.normalizeTileData = normalizeTileData;
|
|
67
67
|
// normalize tile headers
|
|
68
|
-
function normalizeTileHeaders(tileset) {
|
|
68
|
+
async function normalizeTileHeaders(tileset, options) {
|
|
69
69
|
const basePath = tileset.basePath;
|
|
70
|
-
|
|
70
|
+
let root;
|
|
71
|
+
const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);
|
|
72
|
+
if (rootImplicitTilingExtension && tileset.root) {
|
|
73
|
+
root = await normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
root = normalizeTileData(tileset.root, tileset);
|
|
77
|
+
}
|
|
71
78
|
const stack = [];
|
|
72
79
|
stack.push(root);
|
|
73
80
|
while (stack.length > 0) {
|
|
74
81
|
const tile = stack.pop() || {};
|
|
75
82
|
const children = tile.children || [];
|
|
76
|
-
for (
|
|
77
|
-
|
|
83
|
+
for (let childHeader of children) {
|
|
84
|
+
const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
|
|
85
|
+
if (childImplicitTilingExtension) {
|
|
86
|
+
childHeader = await normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
normalizeTileData(childHeader, { basePath });
|
|
90
|
+
}
|
|
78
91
|
stack.push(childHeader);
|
|
79
92
|
}
|
|
80
93
|
}
|
|
@@ -86,22 +99,18 @@ exports.normalizeTileHeaders = normalizeTileHeaders;
|
|
|
86
99
|
* TODO Check if Tile3D class can be a return type here.
|
|
87
100
|
* @param tileset
|
|
88
101
|
*/
|
|
89
|
-
async function normalizeImplicitTileHeaders(tileset) {
|
|
90
|
-
if (!tileset.root) {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
102
|
+
async function normalizeImplicitTileHeaders(tile, tileset, implicitTilingExtension, options) {
|
|
93
103
|
const basePath = tileset.basePath;
|
|
94
|
-
const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
95
104
|
const { subdivisionScheme, maximumLevel, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const contentUrlTemplate = resolveUri(
|
|
100
|
-
const refine = tileset
|
|
105
|
+
const replacedUrlTemplate = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
106
|
+
const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
|
|
107
|
+
const subtree = await (0, core_1.load)(subtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader, options);
|
|
108
|
+
const contentUrlTemplate = resolveUri(tile.content.uri, basePath);
|
|
109
|
+
const refine = tileset?.root?.refine;
|
|
101
110
|
// @ts-ignore
|
|
102
|
-
const rootLodMetricValue =
|
|
103
|
-
const rootBoundingVolume =
|
|
104
|
-
const
|
|
111
|
+
const rootLodMetricValue = tile.geometricError;
|
|
112
|
+
const rootBoundingVolume = tile.boundingVolume;
|
|
113
|
+
const implicitOptions = {
|
|
105
114
|
contentUrlTemplate,
|
|
106
115
|
subtreesUriTemplate,
|
|
107
116
|
subdivisionScheme,
|
|
@@ -115,7 +124,7 @@ async function normalizeImplicitTileHeaders(tileset) {
|
|
|
115
124
|
getTileType,
|
|
116
125
|
getRefine
|
|
117
126
|
};
|
|
118
|
-
return await normalizeImplicitTileData(
|
|
127
|
+
return await normalizeImplicitTileData(tile, subtree, implicitOptions);
|
|
119
128
|
}
|
|
120
129
|
exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
|
|
121
130
|
/**
|
|
@@ -144,3 +153,13 @@ async function normalizeImplicitTileData(tile, rootSubtree, options) {
|
|
|
144
153
|
return tile;
|
|
145
154
|
}
|
|
146
155
|
exports.normalizeImplicitTileData = normalizeImplicitTileData;
|
|
156
|
+
/**
|
|
157
|
+
* Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.
|
|
158
|
+
* Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
|
|
159
|
+
* Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling
|
|
160
|
+
* @param tile
|
|
161
|
+
* @returns
|
|
162
|
+
*/
|
|
163
|
+
function getImplicitTilingExtensionData(tile) {
|
|
164
|
+
return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;
|
|
165
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiles-3d-loader.d.ts","sourceRoot":"","sources":["../src/tiles-3d-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"tiles-3d-loader.d.ts","sourceRoot":"","sources":["../src/tiles-3d-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAO/D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAiB3B,CAAC"}
|
package/dist/tiles-3d-loader.js
CHANGED
|
@@ -6,7 +6,6 @@ const tiles_1 = require("@loaders.gl/tiles");
|
|
|
6
6
|
const version_1 = require("./lib/utils/version");
|
|
7
7
|
const parse_3d_tile_1 = require("./lib/parsers/parse-3d-tile");
|
|
8
8
|
const parse_3d_tile_header_1 = require("./lib/parsers/parse-3d-tile-header");
|
|
9
|
-
const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
|
|
10
9
|
/**
|
|
11
10
|
* Loader for 3D Tiles
|
|
12
11
|
*/
|
|
@@ -48,9 +47,7 @@ async function parseTileset(data, options, context) {
|
|
|
48
47
|
tilesetJson.url = context.url;
|
|
49
48
|
// base path that non-absolute paths in tileset are relative to.
|
|
50
49
|
tilesetJson.basePath = getBaseUri(tilesetJson);
|
|
51
|
-
tilesetJson.root =
|
|
52
|
-
? await (0, parse_3d_tile_header_1.normalizeImplicitTileHeaders)(tilesetJson)
|
|
53
|
-
: (0, parse_3d_tile_header_1.normalizeTileHeaders)(tilesetJson);
|
|
50
|
+
tilesetJson.root = await (0, parse_3d_tile_header_1.normalizeTileHeaders)(tilesetJson, options);
|
|
54
51
|
tilesetJson.type = tiles_1.TILESET_TYPE.TILES3D;
|
|
55
52
|
tilesetJson.lodMetricType = tiles_1.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
56
53
|
tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;
|
|
@@ -74,7 +71,3 @@ async function parse(data, options, context) {
|
|
|
74
71
|
}
|
|
75
72
|
return data;
|
|
76
73
|
}
|
|
77
|
-
function hasImplicitTilingExtension(tilesetJson) {
|
|
78
|
-
return (tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&
|
|
79
|
-
tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME));
|
|
80
|
-
}
|
package/dist/types.d.ts
CHANGED
|
@@ -76,5 +76,18 @@ declare type BufferView = {
|
|
|
76
76
|
byteOffset: number;
|
|
77
77
|
byteLength: number;
|
|
78
78
|
};
|
|
79
|
+
/**
|
|
80
|
+
* Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
|
|
81
|
+
*/
|
|
82
|
+
export declare type ImplicitTilingExtension = {
|
|
83
|
+
subdivisionScheme: 'QUADTREE' | 'OCTREE';
|
|
84
|
+
maximumLevel?: number;
|
|
85
|
+
availableLevels: number;
|
|
86
|
+
subtreeLevels: number;
|
|
87
|
+
subtrees: SubtreeUri;
|
|
88
|
+
};
|
|
89
|
+
declare type SubtreeUri = {
|
|
90
|
+
uri: string;
|
|
91
|
+
};
|
|
79
92
|
export {};
|
|
80
93
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAE/C,oBAAY,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;CACtB,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,UAAU,GAAG;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,0BAA0B,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF,oBAAY,MAAM,GAAG;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,oBAAY,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,mBAAmB,EAAE,YAAY,CAAC;IAClC,wBAAwB,EAAE,YAAY,CAAC;CACxC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF,oBAAY,iBAAiB,GAAG,UAAU,CAAC;AAE3C;;GAEG;AACH,oBAAY,iBAAiB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEtD,aAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,aAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|