@loaders.gl/3d-tiles 3.1.7 → 3.2.0-alpha.2
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 +131 -72
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +31 -63
- package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +4 -1
- 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/lib/utils/version.js.map +1 -1
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +30 -13
- package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.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 +4 -1
- 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/lib/utils/version.js.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +18 -11
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
- package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +22 -14
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts +1 -1
- package/dist/lib/parsers/parse-3d-tile-gltf.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +31 -25
- package/src/lib/parsers/{parse-3d-tile-gltf.js → parse-3d-tile-gltf.ts} +0 -0
- package/src/lib/parsers/parse-3d-tile-header.ts +1 -1
- package/src/types.ts +2 -2
|
@@ -25,70 +25,31 @@ var SUBDIVISION_COUNT_MAP = {
|
|
|
25
25
|
OCTREE: OCTREE_DEVISION_COUNT
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
function parseImplicitTiles(_x
|
|
28
|
+
function parseImplicitTiles(_x) {
|
|
29
29
|
return _parseImplicitTiles.apply(this, arguments);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function _parseImplicitTiles() {
|
|
33
|
-
_parseImplicitTiles = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(
|
|
34
|
-
var parentData,
|
|
35
|
-
|
|
36
|
-
level,
|
|
37
|
-
globalData,
|
|
38
|
-
subdivisionScheme,
|
|
39
|
-
subtreeLevels,
|
|
40
|
-
maximumLevel,
|
|
41
|
-
contentUrlTemplate,
|
|
42
|
-
subtreesUriTemplate,
|
|
43
|
-
basePath,
|
|
44
|
-
tile,
|
|
45
|
-
childrenPerTile,
|
|
46
|
-
childX,
|
|
47
|
-
childY,
|
|
48
|
-
childZ,
|
|
49
|
-
levelOffset,
|
|
50
|
-
childTileMortonIndex,
|
|
51
|
-
tileAvailabilityIndex,
|
|
52
|
-
childTileX,
|
|
53
|
-
childTileY,
|
|
54
|
-
childTileZ,
|
|
55
|
-
isChildSubtreeAvailable,
|
|
56
|
-
x,
|
|
57
|
-
y,
|
|
58
|
-
z,
|
|
59
|
-
lev,
|
|
60
|
-
subtreePath,
|
|
61
|
-
childSubtreeUrl,
|
|
62
|
-
childSubtree,
|
|
63
|
-
isTileAvailable,
|
|
64
|
-
isContentAvailable,
|
|
65
|
-
childTileLevel,
|
|
66
|
-
pData,
|
|
67
|
-
index,
|
|
68
|
-
currentTile,
|
|
69
|
-
globalLevel,
|
|
70
|
-
childCoordinates,
|
|
71
|
-
formattedTile,
|
|
72
|
-
_args = arguments;
|
|
33
|
+
_parseImplicitTiles = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(params) {
|
|
34
|
+
var options, _params$parentData, parentData, _params$childIndex, childIndex, _params$globalData, globalData, subtree, _params$level, level, subdivisionScheme, subtreeLevels, maximumLevel, contentUrlTemplate, subtreesUriTemplate, basePath, tile, childrenPerTile, childX, childY, childZ, levelOffset, childTileMortonIndex, tileAvailabilityIndex, childTileX, childTileY, childTileZ, isChildSubtreeAvailable, x, y, z, lev, subtreePath, childSubtreeUrl, childSubtree, isTileAvailable, isContentAvailable, childTileLevel, pData, index, currentTile, globalLevel, childCoordinates, formattedTile;
|
|
35
|
+
|
|
73
36
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
74
37
|
while (1) {
|
|
75
38
|
switch (_context.prev = _context.next) {
|
|
76
39
|
case 0:
|
|
77
|
-
parentData =
|
|
40
|
+
options = params.options, _params$parentData = params.parentData, parentData = _params$parentData === void 0 ? {
|
|
78
41
|
mortonIndex: 0,
|
|
79
42
|
x: 0,
|
|
80
43
|
y: 0,
|
|
81
44
|
z: 0
|
|
82
|
-
}
|
|
83
|
-
childIndex = _args.length > 3 && _args[3] !== undefined ? _args[3] : 0;
|
|
84
|
-
level = _args.length > 4 && _args[4] !== undefined ? _args[4] : 0;
|
|
85
|
-
globalData = _args.length > 5 && _args[5] !== undefined ? _args[5] : {
|
|
45
|
+
} : _params$parentData, _params$childIndex = params.childIndex, childIndex = _params$childIndex === void 0 ? 0 : _params$childIndex, _params$globalData = params.globalData, globalData = _params$globalData === void 0 ? {
|
|
86
46
|
level: 0,
|
|
87
47
|
mortonIndex: 0,
|
|
88
48
|
x: 0,
|
|
89
49
|
y: 0,
|
|
90
50
|
z: 0
|
|
91
|
-
};
|
|
51
|
+
} : _params$globalData;
|
|
52
|
+
subtree = params.subtree, _params$level = params.level, level = _params$level === void 0 ? 0 : _params$level;
|
|
92
53
|
subdivisionScheme = options.subdivisionScheme, subtreeLevels = options.subtreeLevels, maximumLevel = options.maximumLevel, contentUrlTemplate = options.contentUrlTemplate, subtreesUriTemplate = options.subtreesUriTemplate, basePath = options.basePath;
|
|
93
54
|
tile = {
|
|
94
55
|
children: [],
|
|
@@ -117,16 +78,16 @@ function _parseImplicitTiles() {
|
|
|
117
78
|
lev = level + globalData.level;
|
|
118
79
|
|
|
119
80
|
if (!isChildSubtreeAvailable) {
|
|
120
|
-
_context.next =
|
|
81
|
+
_context.next = 38;
|
|
121
82
|
break;
|
|
122
83
|
}
|
|
123
84
|
|
|
124
85
|
subtreePath = "".concat(basePath, "/").concat(subtreesUriTemplate);
|
|
125
86
|
childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);
|
|
126
|
-
_context.next =
|
|
87
|
+
_context.next = 25;
|
|
127
88
|
return (0, _core.load)(childSubtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader);
|
|
128
89
|
|
|
129
|
-
case
|
|
90
|
+
case 25:
|
|
130
91
|
childSubtree = _context.sent;
|
|
131
92
|
subtree = childSubtree;
|
|
132
93
|
globalData.mortonIndex = childTileMortonIndex;
|
|
@@ -141,17 +102,17 @@ function _parseImplicitTiles() {
|
|
|
141
102
|
childTileZ = 0;
|
|
142
103
|
level = 0;
|
|
143
104
|
|
|
144
|
-
case
|
|
105
|
+
case 38:
|
|
145
106
|
isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);
|
|
146
107
|
|
|
147
108
|
if (!(!isTileAvailable || level > maximumLevel)) {
|
|
148
|
-
_context.next =
|
|
109
|
+
_context.next = 41;
|
|
149
110
|
break;
|
|
150
111
|
}
|
|
151
112
|
|
|
152
113
|
return _context.abrupt("return", tile);
|
|
153
114
|
|
|
154
|
-
case
|
|
115
|
+
case 41:
|
|
155
116
|
isContentAvailable = getAvailabilityResult(subtree.contentAvailability, tileAvailabilityIndex);
|
|
156
117
|
|
|
157
118
|
if (isContentAvailable) {
|
|
@@ -167,16 +128,23 @@ function _parseImplicitTiles() {
|
|
|
167
128
|
};
|
|
168
129
|
index = 0;
|
|
169
130
|
|
|
170
|
-
case
|
|
131
|
+
case 46:
|
|
171
132
|
if (!(index < childrenPerTile)) {
|
|
172
|
-
_context.next =
|
|
133
|
+
_context.next = 54;
|
|
173
134
|
break;
|
|
174
135
|
}
|
|
175
136
|
|
|
176
|
-
_context.next =
|
|
177
|
-
return parseImplicitTiles(
|
|
178
|
-
|
|
179
|
-
|
|
137
|
+
_context.next = 49;
|
|
138
|
+
return parseImplicitTiles({
|
|
139
|
+
subtree: subtree,
|
|
140
|
+
options: options,
|
|
141
|
+
parentData: pData,
|
|
142
|
+
childIndex: index,
|
|
143
|
+
level: childTileLevel,
|
|
144
|
+
globalData: globalData
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
case 49:
|
|
180
148
|
currentTile = _context.sent;
|
|
181
149
|
|
|
182
150
|
if (currentTile.contentUrl || currentTile.children.length) {
|
|
@@ -190,15 +158,15 @@ function _parseImplicitTiles() {
|
|
|
190
158
|
tile.children.push(formattedTile);
|
|
191
159
|
}
|
|
192
160
|
|
|
193
|
-
case
|
|
161
|
+
case 51:
|
|
194
162
|
index++;
|
|
195
|
-
_context.next =
|
|
163
|
+
_context.next = 46;
|
|
196
164
|
break;
|
|
197
165
|
|
|
198
|
-
case
|
|
166
|
+
case 54:
|
|
199
167
|
return _context.abrupt("return", tile);
|
|
200
168
|
|
|
201
|
-
case
|
|
169
|
+
case 55:
|
|
202
170
|
case "end":
|
|
203
171
|
return _context.stop();
|
|
204
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":["QUADTREE_DEVISION_COUNT","OCTREE_DEVISION_COUNT","SUBDIVISION_COUNT_MAP","QUADTREE","OCTREE","parseImplicitTiles","subtree","options","parentData","mortonIndex","x","y","z","childIndex","level","globalData","subdivisionScheme","subtreeLevels","maximumLevel","contentUrlTemplate","subtreesUriTemplate","basePath","tile","children","lodMetricValue","contentUrl","childrenPerTile","childX","childY","childZ","levelOffset","childTileMortonIndex","concatBits","tileAvailabilityIndex","childTileX","childTileY","childTileZ","isChildSubtreeAvailable","getAvailabilityResult","childSubtreeAvailability","lev","subtreePath","childSubtreeUrl","replaceContentUrlTemplate","Tile3DSubtreeLoader","childSubtree","isTileAvailable","tileAvailability","isContentAvailable","contentAvailability","childTileLevel","pData","index","currentTile","length","globalLevel","childCoordinates","formattedTile","formatTileData","push","availabilityData","Boolean","constant","explicitBitstream","getBooleanValueFromBitstream","refine","getRefine","lodMetricType","getTileType","rootLodMetricValue","rootBoundingVolume","uri","replace","boundingVolume","calculateBoundingVolumeForChildTile","content","id","type","region","west","south","east","north","minimumHeight","maximumHeight","boundingVolumesCount","sizeX","sizeY","sizeZ","childWest","childEast","childSouth","childNorth","childMinimumHeight","childMaximumHeight","console","warn","first","second","parseInt","toString","templateUrl","mapUrl","generateMapUrl","matched","items","key","availabilityIndex","availabilityBuffer","byteIndex","Math","floor","bitIndex","bitValue"],"mappings":"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","sourcesContent":["import type {Availability, BoundingVolume, Subtree} from '../../../types';\nimport {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\n\nconst QUADTREE_DEVISION_COUNT = 4;\nconst OCTREE_DEVISION_COUNT = 8;\n\nconst SUBDIVISION_COUNT_MAP = {\n QUADTREE: QUADTREE_DEVISION_COUNT,\n OCTREE: OCTREE_DEVISION_COUNT\n};\n\n/**\n * Recursively parse implicit tiles tree\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * TODO Check out do we able to use Tile3D class as return type here.\n * @param subtree\n * @param lodMetricValue\n * @param options\n * @param parentData\n * @param childIndex\n * @param level\n * @param globalData\n */\n// eslint-disable-next-line max-params\n// eslint-disable-next-line max-statements\nexport async function parseImplicitTiles(\n subtree: Subtree,\n options: any,\n parentData: {mortonIndex: number; x: number; y: number; z: number} = {\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n },\n childIndex: number = 0,\n level: number = 0,\n globalData: {level: number; mortonIndex: number; x: number; y: number; z: number} = {\n level: 0,\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n }\n) {\n const {\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n contentUrlTemplate,\n subtreesUriTemplate,\n basePath\n } = options;\n\n const tile = {children: [], lodMetricValue: 0, contentUrl: ''};\n\n const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];\n\n const childX = childIndex & 0b01;\n const childY = (childIndex >> 1) & 0b01;\n const childZ = (childIndex >> 2) & 0b01;\n\n const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);\n let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);\n let tileAvailabilityIndex = levelOffset + childTileMortonIndex;\n\n // Local tile coordinates\n let childTileX = concatBits(parentData.x, childX);\n let childTileY = concatBits(parentData.y, childY);\n let childTileZ = concatBits(parentData.z, childZ);\n\n // TODO Remove after real implicit tileset will be tested.\n // Degug data\n // tile.level = level + globalData.level;\n // tile.x = concatBits(globalData.x, childTileX);\n // tile.y = concatBits(globalData.y, childTileY);\n // tile.z = concatBits(globalData.z, childTileZ);\n // tile.mortonIndex = childTileMortonIndex;\n // End of debug data\n\n let isChildSubtreeAvailable = false;\n\n if (level + 1 > subtreeLevels) {\n isChildSubtreeAvailable = getAvailabilityResult(\n subtree.childSubtreeAvailability,\n childTileMortonIndex\n );\n }\n\n const x = concatBits(globalData.x, childTileX);\n const y = concatBits(globalData.y, childTileY);\n const z = concatBits(globalData.z, childTileZ);\n const lev = level + globalData.level;\n\n if (isChildSubtreeAvailable) {\n const subtreePath = `${basePath}/${subtreesUriTemplate}`;\n const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);\n const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);\n\n subtree = childSubtree;\n\n globalData.mortonIndex = childTileMortonIndex;\n globalData.x = childTileX;\n globalData.y = childTileY;\n globalData.z = childTileZ;\n globalData.level = level;\n\n childTileMortonIndex = 0;\n tileAvailabilityIndex = 0;\n childTileX = 0;\n childTileY = 0;\n childTileZ = 0;\n level = 0;\n }\n\n const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);\n\n if (!isTileAvailable || level > maximumLevel) {\n return tile;\n }\n\n const isContentAvailable = getAvailabilityResult(\n subtree.contentAvailability,\n tileAvailabilityIndex\n );\n\n if (isContentAvailable) {\n tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);\n }\n\n const childTileLevel = level + 1;\n const pData = {mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ};\n\n for (let index = 0; index < childrenPerTile; index++) {\n const currentTile = await parseImplicitTiles(\n subtree,\n options,\n pData,\n index,\n childTileLevel,\n globalData\n );\n\n if (currentTile.contentUrl || currentTile.children.length) {\n const globalLevel = lev + 1;\n const childCoordinates = {childTileX, childTileY, childTileZ};\n const formattedTile = formatTileData(currentTile, globalLevel, childCoordinates, options);\n // @ts-ignore\n tile.children.push(formattedTile);\n }\n }\n\n return tile;\n}\n\nfunction getAvailabilityResult(availabilityData: Availability, index: number): boolean {\n if ('constant' in availabilityData) {\n return Boolean(availabilityData.constant);\n }\n\n if (availabilityData.explicitBitstream) {\n return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);\n }\n\n return false;\n}\n\n/**\n * Do formatting of implicit tile data.\n * TODO Check out do we able to use Tile3D class as type here.\n * @param tile\n * @param lodMetricValue\n * @param options\n * @returns\n */\nfunction formatTileData(\n tile,\n level: number,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},\n options: any\n) {\n const {\n basePath,\n refine,\n getRefine,\n lodMetricType,\n getTileType,\n rootLodMetricValue,\n rootBoundingVolume\n } = options;\n const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, '');\n const lodMetricValue = rootLodMetricValue / 2 ** level;\n const boundingVolume = calculateBoundingVolumeForChildTile(\n level,\n rootBoundingVolume,\n childCoordinates\n );\n\n return {\n children: tile.children,\n contentUrl: tile.contentUrl,\n content: {uri},\n id: tile.contentUrl,\n refine: getRefine(refine),\n type: getTileType(tile),\n lodMetricType,\n lodMetricValue,\n boundingVolume\n // Temp debug values. Remove when real implicit tileset will be tested.\n // x: tile.x,\n // y: tile.y,\n // z: tile.z,\n // level: tile.level\n };\n}\n\n/**\n * Calculate child bounding volume.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-rules\n * @param level\n * @param rootBoundingVolume\n * @param childCoordinates\n */\nfunction calculateBoundingVolumeForChildTile(\n level: number,\n rootBoundingVolume: BoundingVolume,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number}\n): BoundingVolume | null {\n if (rootBoundingVolume.region) {\n const {childTileX, childTileY, childTileZ} = childCoordinates;\n const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;\n const boundingVolumesCount = 2 ** level;\n\n const sizeX = (east - west) / boundingVolumesCount;\n const sizeY = (north - south) / boundingVolumesCount;\n const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;\n\n const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];\n const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];\n const [childMinimumHeight, childMaximumHeight] = [\n minimumHeight + sizeZ * childTileZ,\n minimumHeight + sizeZ * (childTileZ + 1)\n ];\n\n return {\n region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]\n };\n }\n\n // eslint-disable-next-line no-console\n console.warn('Unsupported bounding volume type: ', rootBoundingVolume);\n return null;\n}\n\n/**\n * Do binary concatenation\n * @param first\n * @param second\n */\nfunction concatBits(first: number, second: number): number {\n return parseInt(first.toString(2) + second.toString(2), 2);\n}\n\n/**\n * Replace implicit tile content url with real coordinates.\n * @param templateUrl\n * @param level\n * @param x\n * @param y\n * @param z\n */\nexport function replaceContentUrlTemplate(\n templateUrl: string,\n level: number,\n x: number,\n y: number,\n z: number\n): string {\n const mapUrl = generateMapUrl({level, x, y, z});\n return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, (matched) => mapUrl[matched]);\n}\n\n/**\n * Get Map object for content url generation\n * @param items\n */\nfunction generateMapUrl(items: {[key: string]: number}): {[key: string]: string} {\n const mapUrl = {};\n\n for (const key in items) {\n mapUrl[`{${key}}`] = items[key];\n }\n return mapUrl;\n}\n\n/**\n * Get boolean value from bistream by index\n * A boolean value is encoded as a single bit, either 0 (false) or 1 (true).\n * Multiple boolean values are packed tightly in the same buffer.\n * These buffers of tightly-packed bits are sometimes referred to as bitstreams.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/implicit-revisions/specification/Metadata#booleans\n * @param availabilitiIndex\n */\nfunction getBooleanValueFromBitstream(\n availabilityIndex: number,\n availabilityBuffer: Uint8Array\n): boolean {\n const byteIndex = Math.floor(availabilityIndex / 8);\n const bitIndex = availabilityIndex % 8;\n const bitValue = (availabilityBuffer[byteIndex] >> bitIndex) & 1;\n\n return bitValue === 1;\n}\n"],"file":"parse-3d-implicit-tiles.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":["QUADTREE_DEVISION_COUNT","OCTREE_DEVISION_COUNT","SUBDIVISION_COUNT_MAP","QUADTREE","OCTREE","parseImplicitTiles","params","options","parentData","mortonIndex","x","y","z","childIndex","globalData","level","subtree","subdivisionScheme","subtreeLevels","maximumLevel","contentUrlTemplate","subtreesUriTemplate","basePath","tile","children","lodMetricValue","contentUrl","childrenPerTile","childX","childY","childZ","levelOffset","childTileMortonIndex","concatBits","tileAvailabilityIndex","childTileX","childTileY","childTileZ","isChildSubtreeAvailable","getAvailabilityResult","childSubtreeAvailability","lev","subtreePath","childSubtreeUrl","replaceContentUrlTemplate","Tile3DSubtreeLoader","childSubtree","isTileAvailable","tileAvailability","isContentAvailable","contentAvailability","childTileLevel","pData","index","currentTile","length","globalLevel","childCoordinates","formattedTile","formatTileData","push","availabilityData","Boolean","constant","explicitBitstream","getBooleanValueFromBitstream","refine","getRefine","lodMetricType","getTileType","rootLodMetricValue","rootBoundingVolume","uri","replace","boundingVolume","calculateBoundingVolumeForChildTile","content","id","type","region","west","south","east","north","minimumHeight","maximumHeight","boundingVolumesCount","sizeX","sizeY","sizeZ","childWest","childEast","childSouth","childNorth","childMinimumHeight","childMaximumHeight","console","warn","first","second","parseInt","toString","templateUrl","mapUrl","generateMapUrl","matched","items","key","availabilityIndex","availabilityBuffer","byteIndex","Math","floor","bitIndex","bitValue"],"mappings":"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","sourcesContent":["import type {Availability, BoundingVolume, Subtree} from '../../../types';\nimport {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\n\nconst QUADTREE_DEVISION_COUNT = 4;\nconst OCTREE_DEVISION_COUNT = 8;\n\nconst SUBDIVISION_COUNT_MAP = {\n QUADTREE: QUADTREE_DEVISION_COUNT,\n OCTREE: OCTREE_DEVISION_COUNT\n};\n\n/**\n * Recursively parse implicit tiles tree\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * TODO Check out do we able to use Tile3D class as return type here.\n * @param subtree\n * @param lodMetricValue\n * @param options\n * @param parentData\n * @param childIndex\n * @param level\n * @param globalData\n */\n// eslint-disable-next-line max-statements\nexport async function parseImplicitTiles(params: {\n subtree: Subtree;\n options: any;\n parentData?: {mortonIndex: number; x: number; y: number; z: number};\n childIndex?: number;\n level?: number;\n globalData?: {level: number; mortonIndex: number; x: number; y: number; z: number};\n}) {\n const {\n options,\n parentData = {\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n },\n childIndex = 0,\n globalData = {\n level: 0,\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n }\n } = params;\n let {subtree, level = 0} = params;\n const {\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n contentUrlTemplate,\n subtreesUriTemplate,\n basePath\n } = options;\n\n const tile = {children: [], lodMetricValue: 0, contentUrl: ''};\n\n const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];\n\n const childX = childIndex & 0b01;\n const childY = (childIndex >> 1) & 0b01;\n const childZ = (childIndex >> 2) & 0b01;\n\n const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);\n let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);\n let tileAvailabilityIndex = levelOffset + childTileMortonIndex;\n\n // Local tile coordinates\n let childTileX = concatBits(parentData.x, childX);\n let childTileY = concatBits(parentData.y, childY);\n let childTileZ = concatBits(parentData.z, childZ);\n\n // TODO Remove after real implicit tileset will be tested.\n // Degug data\n // tile.level = level + globalData.level;\n // tile.x = concatBits(globalData.x, childTileX);\n // tile.y = concatBits(globalData.y, childTileY);\n // tile.z = concatBits(globalData.z, childTileZ);\n // tile.mortonIndex = childTileMortonIndex;\n // End of debug data\n\n let isChildSubtreeAvailable = false;\n\n if (level + 1 > subtreeLevels) {\n isChildSubtreeAvailable = getAvailabilityResult(\n subtree.childSubtreeAvailability,\n childTileMortonIndex\n );\n }\n\n const x = concatBits(globalData.x, childTileX);\n const y = concatBits(globalData.y, childTileY);\n const z = concatBits(globalData.z, childTileZ);\n const lev = level + globalData.level;\n\n if (isChildSubtreeAvailable) {\n const subtreePath = `${basePath}/${subtreesUriTemplate}`;\n const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);\n const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);\n\n subtree = childSubtree;\n\n globalData.mortonIndex = childTileMortonIndex;\n globalData.x = childTileX;\n globalData.y = childTileY;\n globalData.z = childTileZ;\n globalData.level = level;\n\n childTileMortonIndex = 0;\n tileAvailabilityIndex = 0;\n childTileX = 0;\n childTileY = 0;\n childTileZ = 0;\n level = 0;\n }\n\n const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);\n\n if (!isTileAvailable || level > maximumLevel) {\n return tile;\n }\n\n const isContentAvailable = getAvailabilityResult(\n subtree.contentAvailability,\n tileAvailabilityIndex\n );\n\n if (isContentAvailable) {\n tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);\n }\n\n const childTileLevel = level + 1;\n const pData = {mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ};\n\n for (let index = 0; index < childrenPerTile; index++) {\n const currentTile = await parseImplicitTiles({\n subtree,\n options,\n parentData: pData,\n childIndex: index,\n level: childTileLevel,\n globalData\n });\n\n if (currentTile.contentUrl || currentTile.children.length) {\n const globalLevel = lev + 1;\n const childCoordinates = {childTileX, childTileY, childTileZ};\n const formattedTile = formatTileData(currentTile, globalLevel, childCoordinates, options);\n // @ts-ignore\n tile.children.push(formattedTile);\n }\n }\n\n return tile;\n}\n\nfunction getAvailabilityResult(availabilityData: Availability, index: number): boolean {\n if ('constant' in availabilityData) {\n return Boolean(availabilityData.constant);\n }\n\n if (availabilityData.explicitBitstream) {\n return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);\n }\n\n return false;\n}\n\n/**\n * Do formatting of implicit tile data.\n * TODO Check out do we able to use Tile3D class as type here.\n * @param tile\n * @param lodMetricValue\n * @param options\n * @returns\n */\nfunction formatTileData(\n tile,\n level: number,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},\n options: any\n) {\n const {\n basePath,\n refine,\n getRefine,\n lodMetricType,\n getTileType,\n rootLodMetricValue,\n rootBoundingVolume\n } = options;\n const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, '');\n const lodMetricValue = rootLodMetricValue / 2 ** level;\n const boundingVolume = calculateBoundingVolumeForChildTile(\n level,\n rootBoundingVolume,\n childCoordinates\n );\n\n return {\n children: tile.children,\n contentUrl: tile.contentUrl,\n content: {uri},\n id: tile.contentUrl,\n refine: getRefine(refine),\n type: getTileType(tile),\n lodMetricType,\n lodMetricValue,\n boundingVolume\n // Temp debug values. Remove when real implicit tileset will be tested.\n // x: tile.x,\n // y: tile.y,\n // z: tile.z,\n // level: tile.level\n };\n}\n\n/**\n * Calculate child bounding volume.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-rules\n * @param level\n * @param rootBoundingVolume\n * @param childCoordinates\n */\nfunction calculateBoundingVolumeForChildTile(\n level: number,\n rootBoundingVolume: BoundingVolume,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number}\n): BoundingVolume | null {\n if (rootBoundingVolume.region) {\n const {childTileX, childTileY, childTileZ} = childCoordinates;\n const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;\n const boundingVolumesCount = 2 ** level;\n\n const sizeX = (east - west) / boundingVolumesCount;\n const sizeY = (north - south) / boundingVolumesCount;\n const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;\n\n const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];\n const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];\n const [childMinimumHeight, childMaximumHeight] = [\n minimumHeight + sizeZ * childTileZ,\n minimumHeight + sizeZ * (childTileZ + 1)\n ];\n\n return {\n region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]\n };\n }\n\n // eslint-disable-next-line no-console\n console.warn('Unsupported bounding volume type: ', rootBoundingVolume);\n return null;\n}\n\n/**\n * Do binary concatenation\n * @param first\n * @param second\n */\nfunction concatBits(first: number, second: number): number {\n return parseInt(first.toString(2) + second.toString(2), 2);\n}\n\n/**\n * Replace implicit tile content url with real coordinates.\n * @param templateUrl\n * @param level\n * @param x\n * @param y\n * @param z\n */\nexport function replaceContentUrlTemplate(\n templateUrl: string,\n level: number,\n x: number,\n y: number,\n z: number\n): string {\n const mapUrl = generateMapUrl({level, x, y, z});\n return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, (matched) => mapUrl[matched]);\n}\n\n/**\n * Get Map object for content url generation\n * @param items\n */\nfunction generateMapUrl(items: {[key: string]: number}): {[key: string]: string} {\n const mapUrl = {};\n\n for (const key in items) {\n mapUrl[`{${key}}`] = items[key];\n }\n return mapUrl;\n}\n\n/**\n * Get boolean value from bistream by index\n * A boolean value is encoded as a single bit, either 0 (false) or 1 (true).\n * Multiple boolean values are packed tightly in the same buffer.\n * These buffers of tightly-packed bits are sometimes referred to as bitstreams.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/implicit-revisions/specification/Metadata#booleans\n * @param availabilitiIndex\n */\nfunction getBooleanValueFromBitstream(\n availabilityIndex: number,\n availabilityBuffer: Uint8Array\n): boolean {\n const byteIndex = Math.floor(availabilityIndex / 8);\n const bitIndex = availabilityIndex % 8;\n const bitValue = (availabilityBuffer[byteIndex] >> bitIndex) & 1;\n\n return bitValue === 1;\n}\n"],"file":"parse-3d-implicit-tiles.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"names":["parseGltf3DTile","tile","arrayBuffer","options","context","rotateYtoZ","gltfUpAxis","assetGltfUpAxis","parse","GLTFLoader","gltf"],"mappings":";;;;;;;;;;;;;AAAA;;SAEsBA,e;;;;;+EAAf,iBAA+BC,IAA/B,EAAqCC,WAArC,EAAkDC,OAAlD,EAA2DC,OAA3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAILH,YAAAA,IAAI,CAACI,UAAL,GAAkB,IAAlB;AAEAJ,YAAAA,IAAI,CAACK,UAAL,GACEH,OAAO,CAAC,UAAD,CAAP,IAAuBA,OAAO,CAAC,UAAD,CAAP,CAAoBI,eAA3C,GACIJ,OAAO,CAAC,UAAD,CAAP,CAAoBI,eADxB,GAEI,GAHN;AAKOC,YAAAA,KAXF,GAWWJ,OAXX,CAWEI,KAXF;AAAA;AAAA,mBAYaA,KAAK,CAACN,WAAD,EAAcO,gBAAd,EAA0BN,OAA1B,EAAmCC,OAAnC,CAZlB;;AAAA;AAYLH,YAAAA,IAAI,CAACS,IAZA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["import {GLTFLoader} from '@loaders.gl/gltf';\n\nexport async function parseGltf3DTile(tile, arrayBuffer, options, context) {\n // Set flags\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n tile.rotateYtoZ = true;\n // Save gltf up axis\n tile.gltfUpAxis =\n options['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis\n ? options['3d-tiles'].assetGltfUpAxis\n : 'Y';\n\n const {parse} = context;\n tile.gltf = await parse(arrayBuffer, GLTFLoader, options, context);\n}\n"],"file":"parse-3d-tile-gltf.js"}
|
|
@@ -203,7 +203,10 @@ function _normalizeImplicitTileData() {
|
|
|
203
203
|
tile.lodMetricValue = tile.geometricError;
|
|
204
204
|
tile.transformMatrix = tile.transform;
|
|
205
205
|
_context2.next = 7;
|
|
206
|
-
return (0, _parse3dImplicitTiles.parseImplicitTiles)(
|
|
206
|
+
return (0, _parse3dImplicitTiles.parseImplicitTiles)({
|
|
207
|
+
subtree: rootSubtree,
|
|
208
|
+
options: options
|
|
209
|
+
});
|
|
207
210
|
|
|
208
211
|
case 7:
|
|
209
212
|
_yield$parseImplicitT = _context2.sent;
|
|
@@ -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","replace"],"mappings":"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
|
|
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":";;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;;;;;;;AAEA,SAASA,WAAT,CAAqBC,IAArB,EAA2B;AACzB,MAAI,CAACA,IAAI,CAACC,UAAV,EAAsB;AACpB,WAAOC,iBAAUC,KAAjB;AACD;;AAED,MAAMF,UAAU,GAAGD,IAAI,CAACC,UAAxB;AACA,MAAMG,aAAa,GAAGH,UAAU,CAACI,KAAX,CAAiB,GAAjB,EAAsBC,GAAtB,EAAtB;;AACA,UAAQF,aAAR;AACE,SAAK,MAAL;AACE,aAAOF,iBAAUK,UAAjB;;AACF,SAAK,MAAL;AACA,SAAK,MAAL;AACA,SAAK,KAAL;AACA,SAAK,MAAL;AACE,aAAOL,iBAAUM,UAAjB;;AACF;AACE,aAAOJ,aAAP;AATJ;AAWD;;AAED,SAASK,SAAT,CAAmBC,MAAnB,EAA2B;AACzB,UAAQA,MAAR;AACE,SAAK,SAAL;AACA,SAAK,SAAL;AACE,aAAOC,uBAAgBC,OAAvB;;AACF,SAAK,KAAL;AACA,SAAK,KAAL;AACE,aAAOD,uBAAgBE,GAAvB;;AACF;AACE,aAAOH,MAAP;AARJ;AAUD;;AAEM,SAASI,iBAAT,CAA2Bd,IAA3B,EAAiCe,OAAjC,EAA0C;AAC/C,MAAI,CAACf,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AACD,MAAIA,IAAI,CAACgB,OAAT,EAAkB;AAChB,QAAMC,UAAU,GAAGjB,IAAI,CAACgB,OAAL,CAAaE,GAAb,IAAoBlB,IAAI,CAACgB,OAAL,CAAaG,GAApD;AACAnB,IAAAA,IAAI,CAACC,UAAL,aAAqBc,OAAO,CAACK,QAA7B,cAAyCH,UAAzC;AACD;;AACDjB,EAAAA,IAAI,CAACqB,EAAL,GAAUrB,IAAI,CAACC,UAAf;AACAD,EAAAA,IAAI,CAACsB,aAAL,GAAqBC,uBAAgBC,eAArC;AACAxB,EAAAA,IAAI,CAACyB,cAAL,GAAsBzB,IAAI,CAAC0B,cAA3B;AACA1B,EAAAA,IAAI,CAAC2B,eAAL,GAAuB3B,IAAI,CAAC4B,SAA5B;AACA5B,EAAAA,IAAI,CAAC6B,IAAL,GAAY9B,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACU,MAAL,GAAcD,SAAS,CAACT,IAAI,CAACU,MAAN,CAAvB;AAEA,SAAOV,IAAP;AACD;;AAGM,SAAS8B,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,MAAMX,QAAQ,GAAGW,OAAO,CAACX,QAAzB;AACA,MAAMY,IAAI,GAAGlB,iBAAiB,CAACiB,OAAO,CAACC,IAAT,EAAeD,OAAf,CAA9B;AAEA,MAAME,KAAY,GAAG,EAArB;AACAA,EAAAA,KAAK,CAACC,IAAN,CAAWF,IAAX;;AAEA,SAAOC,KAAK,CAACE,MAAN,GAAe,CAAtB,EAAyB;AACvB,QAAMnC,IAAI,GAAGiC,KAAK,CAAC3B,GAAN,MAAe,EAA5B;AACA,QAAM8B,QAAQ,GAAGpC,IAAI,CAACoC,QAAL,IAAiB,EAAlC;;AAFuB,+CAGGA,QAHH;AAAA;;AAAA;AAGvB,0DAAoC;AAAA,YAAzBC,WAAyB;AAClCvB,QAAAA,iBAAiB,CAACuB,WAAD,EAAc;AAACjB,UAAAA,QAAQ,EAARA;AAAD,SAAd,CAAjB;AACAa,QAAAA,KAAK,CAACC,IAAN,CAAWG,WAAX;AACD;AANsB;AAAA;AAAA;AAAA;AAAA;AAOxB;;AAED,SAAOL,IAAP;AACD;;SAOqBM,4B;;;;;4FAAf,iBAA4CP,OAA5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBACAA,OAAO,CAACC,IADR;AAAA;AAAA;AAAA;;AAAA,6CAEI,IAFJ;;AAAA;AAKCZ,YAAAA,QALD,GAKYW,OAAO,CAACX,QALpB;AAMCmB,YAAAA,uBAND,GAM2BR,OAAO,CAACC,IAAR,CAAaQ,UAAb,CAAwB,yBAAxB,CAN3B;AAQHC,YAAAA,iBARG,GAYDF,uBAZC,CAQHE,iBARG,EASHC,YATG,GAYDH,uBAZC,CASHG,YATG,EAUHC,aAVG,GAYDJ,uBAZC,CAUHI,aAVG,EAWaC,mBAXb,GAYDL,uBAZC,CAWHM,QAXG,CAWQ3B,GAXR;AAaC4B,YAAAA,UAbD,GAac,qDAA0BF,mBAA1B,EAA+C,CAA/C,EAAkD,CAAlD,EAAqD,CAArD,EAAwD,CAAxD,CAbd;AAcCG,YAAAA,cAdD,aAcqB3B,QAdrB,cAciC0B,UAdjC;AAAA;AAAA,mBAeqB,gBAAKC,cAAL,EAAqBC,wCAArB,CAfrB;;AAAA;AAeCC,YAAAA,WAfD;AAgBCC,YAAAA,kBAhBD,aAgByB9B,QAhBzB,cAgBqCW,OAAO,CAACC,IAAR,CAAahB,OAAb,CAAqBE,GAhB1D;AAiBCR,YAAAA,MAjBD,GAiBUqB,OAAO,CAACC,IAAR,CAAatB,MAjBvB;AAmBCyC,YAAAA,kBAnBD,GAmBsBpB,OAAO,CAACC,IAAR,CAAaN,cAnBnC;AAoBC0B,YAAAA,kBApBD,GAoBsBrB,OAAO,CAACC,IAAR,CAAaqB,cApBnC;AAsBCtC,YAAAA,OAtBD,GAsBW;AACdmC,cAAAA,kBAAkB,EAAlBA,kBADc;AAEdN,cAAAA,mBAAmB,EAAnBA,mBAFc;AAGdH,cAAAA,iBAAiB,EAAjBA,iBAHc;AAIdE,cAAAA,aAAa,EAAbA,aAJc;AAKdD,cAAAA,YAAY,EAAZA,YALc;AAMdhC,cAAAA,MAAM,EAANA,MANc;AAOdU,cAAAA,QAAQ,EAARA,QAPc;AAQdE,cAAAA,aAAa,EAAEC,uBAAgBC,eARjB;AASd2B,cAAAA,kBAAkB,EAAlBA,kBATc;AAUdC,cAAAA,kBAAkB,EAAlBA,kBAVc;AAWdrD,cAAAA,WAAW,EAAXA,WAXc;AAYdU,cAAAA,SAAS,EAATA;AAZc,aAtBX;AAAA;AAAA,mBAqCQ6C,yBAAyB,CAACvB,OAAO,CAACC,IAAT,EAAeiB,WAAf,EAA4BlC,OAA5B,CArCjC;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SA+CeuC,yB;;;;;yFAAf,kBAAyCtD,IAAzC,EAA+CiD,WAA/C,EAAqElC,OAArE;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,gBACAf,IADA;AAAA;AAAA;AAAA;;AAAA,8CAEI,IAFJ;;AAAA;AAKLA,YAAAA,IAAI,CAACsB,aAAL,GAAqBC,uBAAgBC,eAArC;AACAxB,YAAAA,IAAI,CAACyB,cAAL,GAAsBzB,IAAI,CAAC0B,cAA3B;AACA1B,YAAAA,IAAI,CAAC2B,eAAL,GAAuB3B,IAAI,CAAC4B,SAA5B;AAPK;AAAA,mBASgC,8CAAmB;AAAC2B,cAAAA,OAAO,EAAEN,WAAV;AAAuBlC,cAAAA,OAAO,EAAPA;AAAvB,aAAnB,CAThC;;AAAA;AAAA;AASEqB,YAAAA,QATF,yBASEA,QATF;AASYnC,YAAAA,UATZ,yBASYA,UATZ;;AAWL,gBAAIA,UAAJ,EAAgB;AACdD,cAAAA,IAAI,CAACC,UAAL,GAAkBA,UAAlB;AACAD,cAAAA,IAAI,CAACgB,OAAL,GAAe;AAACE,gBAAAA,GAAG,EAAEjB,UAAU,CAACuD,OAAX,WAAsBzC,OAAO,CAACK,QAA9B,QAA2C,EAA3C;AAAN,eAAf;AACD;;AAEDpB,YAAAA,IAAI,CAACU,MAAL,GAAcD,SAAS,CAACT,IAAI,CAACU,MAAN,CAAvB;AACAV,YAAAA,IAAI,CAAC6B,IAAL,GAAY9B,WAAW,CAACC,IAAD,CAAvB;AACAA,YAAAA,IAAI,CAACoC,QAAL,GAAgBA,QAAhB;AACApC,YAAAA,IAAI,CAACqB,EAAL,GAAUrB,IAAI,CAACC,UAAf;AAnBK,8CAqBED,IArBF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","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"}
|
|
@@ -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.
|
|
7
|
+
var VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
|
|
8
8
|
exports.VERSION = VERSION;
|
|
9
9
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
|
|
@@ -6,18 +6,28 @@ const SUBDIVISION_COUNT_MAP = {
|
|
|
6
6
|
QUADTREE: QUADTREE_DEVISION_COUNT,
|
|
7
7
|
OCTREE: OCTREE_DEVISION_COUNT
|
|
8
8
|
};
|
|
9
|
-
export async function parseImplicitTiles(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
export async function parseImplicitTiles(params) {
|
|
10
|
+
const {
|
|
11
|
+
options,
|
|
12
|
+
parentData = {
|
|
13
|
+
mortonIndex: 0,
|
|
14
|
+
x: 0,
|
|
15
|
+
y: 0,
|
|
16
|
+
z: 0
|
|
17
|
+
},
|
|
18
|
+
childIndex = 0,
|
|
19
|
+
globalData = {
|
|
20
|
+
level: 0,
|
|
21
|
+
mortonIndex: 0,
|
|
22
|
+
x: 0,
|
|
23
|
+
y: 0,
|
|
24
|
+
z: 0
|
|
25
|
+
}
|
|
26
|
+
} = params;
|
|
27
|
+
let {
|
|
28
|
+
subtree,
|
|
29
|
+
level = 0
|
|
30
|
+
} = params;
|
|
21
31
|
const {
|
|
22
32
|
subdivisionScheme,
|
|
23
33
|
subtreeLevels,
|
|
@@ -91,7 +101,14 @@ export async function parseImplicitTiles(subtree, options, parentData = {
|
|
|
91
101
|
};
|
|
92
102
|
|
|
93
103
|
for (let index = 0; index < childrenPerTile; index++) {
|
|
94
|
-
const currentTile = await parseImplicitTiles(
|
|
104
|
+
const currentTile = await parseImplicitTiles({
|
|
105
|
+
subtree,
|
|
106
|
+
options,
|
|
107
|
+
parentData: pData,
|
|
108
|
+
childIndex: index,
|
|
109
|
+
level: childTileLevel,
|
|
110
|
+
globalData
|
|
111
|
+
});
|
|
95
112
|
|
|
96
113
|
if (currentTile.contentUrl || currentTile.children.length) {
|
|
97
114
|
const globalLevel = lev + 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":["Tile3DSubtreeLoader","load","QUADTREE_DEVISION_COUNT","OCTREE_DEVISION_COUNT","SUBDIVISION_COUNT_MAP","QUADTREE","OCTREE","parseImplicitTiles","subtree","options","parentData","mortonIndex","x","y","z","childIndex","level","globalData","subdivisionScheme","subtreeLevels","maximumLevel","contentUrlTemplate","subtreesUriTemplate","basePath","tile","children","lodMetricValue","contentUrl","childrenPerTile","childX","childY","childZ","levelOffset","childTileMortonIndex","concatBits","tileAvailabilityIndex","childTileX","childTileY","childTileZ","isChildSubtreeAvailable","getAvailabilityResult","childSubtreeAvailability","lev","subtreePath","childSubtreeUrl","replaceContentUrlTemplate","childSubtree","isTileAvailable","tileAvailability","isContentAvailable","contentAvailability","childTileLevel","pData","index","currentTile","length","globalLevel","childCoordinates","formattedTile","formatTileData","push","availabilityData","Boolean","constant","explicitBitstream","getBooleanValueFromBitstream","refine","getRefine","lodMetricType","getTileType","rootLodMetricValue","rootBoundingVolume","uri","replace","boundingVolume","calculateBoundingVolumeForChildTile","content","id","type","region","west","south","east","north","minimumHeight","maximumHeight","boundingVolumesCount","sizeX","sizeY","sizeZ","childWest","childEast","childSouth","childNorth","childMinimumHeight","childMaximumHeight","console","warn","first","second","parseInt","toString","templateUrl","mapUrl","generateMapUrl","matched","items","key","availabilityIndex","availabilityBuffer","byteIndex","Math","floor","bitIndex","bitValue"],"mappings":"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","sourcesContent":["import type {Availability, BoundingVolume, Subtree} from '../../../types';\nimport {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\n\nconst QUADTREE_DEVISION_COUNT = 4;\nconst OCTREE_DEVISION_COUNT = 8;\n\nconst SUBDIVISION_COUNT_MAP = {\n QUADTREE: QUADTREE_DEVISION_COUNT,\n OCTREE: OCTREE_DEVISION_COUNT\n};\n\n/**\n * Recursively parse implicit tiles tree\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * TODO Check out do we able to use Tile3D class as return type here.\n * @param subtree\n * @param lodMetricValue\n * @param options\n * @param parentData\n * @param childIndex\n * @param level\n * @param globalData\n */\n// eslint-disable-next-line max-params\n// eslint-disable-next-line max-statements\nexport async function parseImplicitTiles(\n subtree: Subtree,\n options: any,\n parentData: {mortonIndex: number; x: number; y: number; z: number} = {\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n },\n childIndex: number = 0,\n level: number = 0,\n globalData: {level: number; mortonIndex: number; x: number; y: number; z: number} = {\n level: 0,\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n }\n) {\n const {\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n contentUrlTemplate,\n subtreesUriTemplate,\n basePath\n } = options;\n\n const tile = {children: [], lodMetricValue: 0, contentUrl: ''};\n\n const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];\n\n const childX = childIndex & 0b01;\n const childY = (childIndex >> 1) & 0b01;\n const childZ = (childIndex >> 2) & 0b01;\n\n const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);\n let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);\n let tileAvailabilityIndex = levelOffset + childTileMortonIndex;\n\n // Local tile coordinates\n let childTileX = concatBits(parentData.x, childX);\n let childTileY = concatBits(parentData.y, childY);\n let childTileZ = concatBits(parentData.z, childZ);\n\n // TODO Remove after real implicit tileset will be tested.\n // Degug data\n // tile.level = level + globalData.level;\n // tile.x = concatBits(globalData.x, childTileX);\n // tile.y = concatBits(globalData.y, childTileY);\n // tile.z = concatBits(globalData.z, childTileZ);\n // tile.mortonIndex = childTileMortonIndex;\n // End of debug data\n\n let isChildSubtreeAvailable = false;\n\n if (level + 1 > subtreeLevels) {\n isChildSubtreeAvailable = getAvailabilityResult(\n subtree.childSubtreeAvailability,\n childTileMortonIndex\n );\n }\n\n const x = concatBits(globalData.x, childTileX);\n const y = concatBits(globalData.y, childTileY);\n const z = concatBits(globalData.z, childTileZ);\n const lev = level + globalData.level;\n\n if (isChildSubtreeAvailable) {\n const subtreePath = `${basePath}/${subtreesUriTemplate}`;\n const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);\n const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);\n\n subtree = childSubtree;\n\n globalData.mortonIndex = childTileMortonIndex;\n globalData.x = childTileX;\n globalData.y = childTileY;\n globalData.z = childTileZ;\n globalData.level = level;\n\n childTileMortonIndex = 0;\n tileAvailabilityIndex = 0;\n childTileX = 0;\n childTileY = 0;\n childTileZ = 0;\n level = 0;\n }\n\n const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);\n\n if (!isTileAvailable || level > maximumLevel) {\n return tile;\n }\n\n const isContentAvailable = getAvailabilityResult(\n subtree.contentAvailability,\n tileAvailabilityIndex\n );\n\n if (isContentAvailable) {\n tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);\n }\n\n const childTileLevel = level + 1;\n const pData = {mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ};\n\n for (let index = 0; index < childrenPerTile; index++) {\n const currentTile = await parseImplicitTiles(\n subtree,\n options,\n pData,\n index,\n childTileLevel,\n globalData\n );\n\n if (currentTile.contentUrl || currentTile.children.length) {\n const globalLevel = lev + 1;\n const childCoordinates = {childTileX, childTileY, childTileZ};\n const formattedTile = formatTileData(currentTile, globalLevel, childCoordinates, options);\n // @ts-ignore\n tile.children.push(formattedTile);\n }\n }\n\n return tile;\n}\n\nfunction getAvailabilityResult(availabilityData: Availability, index: number): boolean {\n if ('constant' in availabilityData) {\n return Boolean(availabilityData.constant);\n }\n\n if (availabilityData.explicitBitstream) {\n return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);\n }\n\n return false;\n}\n\n/**\n * Do formatting of implicit tile data.\n * TODO Check out do we able to use Tile3D class as type here.\n * @param tile\n * @param lodMetricValue\n * @param options\n * @returns\n */\nfunction formatTileData(\n tile,\n level: number,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},\n options: any\n) {\n const {\n basePath,\n refine,\n getRefine,\n lodMetricType,\n getTileType,\n rootLodMetricValue,\n rootBoundingVolume\n } = options;\n const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, '');\n const lodMetricValue = rootLodMetricValue / 2 ** level;\n const boundingVolume = calculateBoundingVolumeForChildTile(\n level,\n rootBoundingVolume,\n childCoordinates\n );\n\n return {\n children: tile.children,\n contentUrl: tile.contentUrl,\n content: {uri},\n id: tile.contentUrl,\n refine: getRefine(refine),\n type: getTileType(tile),\n lodMetricType,\n lodMetricValue,\n boundingVolume\n // Temp debug values. Remove when real implicit tileset will be tested.\n // x: tile.x,\n // y: tile.y,\n // z: tile.z,\n // level: tile.level\n };\n}\n\n/**\n * Calculate child bounding volume.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-rules\n * @param level\n * @param rootBoundingVolume\n * @param childCoordinates\n */\nfunction calculateBoundingVolumeForChildTile(\n level: number,\n rootBoundingVolume: BoundingVolume,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number}\n): BoundingVolume | null {\n if (rootBoundingVolume.region) {\n const {childTileX, childTileY, childTileZ} = childCoordinates;\n const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;\n const boundingVolumesCount = 2 ** level;\n\n const sizeX = (east - west) / boundingVolumesCount;\n const sizeY = (north - south) / boundingVolumesCount;\n const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;\n\n const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];\n const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];\n const [childMinimumHeight, childMaximumHeight] = [\n minimumHeight + sizeZ * childTileZ,\n minimumHeight + sizeZ * (childTileZ + 1)\n ];\n\n return {\n region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]\n };\n }\n\n // eslint-disable-next-line no-console\n console.warn('Unsupported bounding volume type: ', rootBoundingVolume);\n return null;\n}\n\n/**\n * Do binary concatenation\n * @param first\n * @param second\n */\nfunction concatBits(first: number, second: number): number {\n return parseInt(first.toString(2) + second.toString(2), 2);\n}\n\n/**\n * Replace implicit tile content url with real coordinates.\n * @param templateUrl\n * @param level\n * @param x\n * @param y\n * @param z\n */\nexport function replaceContentUrlTemplate(\n templateUrl: string,\n level: number,\n x: number,\n y: number,\n z: number\n): string {\n const mapUrl = generateMapUrl({level, x, y, z});\n return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, (matched) => mapUrl[matched]);\n}\n\n/**\n * Get Map object for content url generation\n * @param items\n */\nfunction generateMapUrl(items: {[key: string]: number}): {[key: string]: string} {\n const mapUrl = {};\n\n for (const key in items) {\n mapUrl[`{${key}}`] = items[key];\n }\n return mapUrl;\n}\n\n/**\n * Get boolean value from bistream by index\n * A boolean value is encoded as a single bit, either 0 (false) or 1 (true).\n * Multiple boolean values are packed tightly in the same buffer.\n * These buffers of tightly-packed bits are sometimes referred to as bitstreams.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/implicit-revisions/specification/Metadata#booleans\n * @param availabilitiIndex\n */\nfunction getBooleanValueFromBitstream(\n availabilityIndex: number,\n availabilityBuffer: Uint8Array\n): boolean {\n const byteIndex = Math.floor(availabilityIndex / 8);\n const bitIndex = availabilityIndex % 8;\n const bitValue = (availabilityBuffer[byteIndex] >> bitIndex) & 1;\n\n return bitValue === 1;\n}\n"],"file":"parse-3d-implicit-tiles.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":["Tile3DSubtreeLoader","load","QUADTREE_DEVISION_COUNT","OCTREE_DEVISION_COUNT","SUBDIVISION_COUNT_MAP","QUADTREE","OCTREE","parseImplicitTiles","params","options","parentData","mortonIndex","x","y","z","childIndex","globalData","level","subtree","subdivisionScheme","subtreeLevels","maximumLevel","contentUrlTemplate","subtreesUriTemplate","basePath","tile","children","lodMetricValue","contentUrl","childrenPerTile","childX","childY","childZ","levelOffset","childTileMortonIndex","concatBits","tileAvailabilityIndex","childTileX","childTileY","childTileZ","isChildSubtreeAvailable","getAvailabilityResult","childSubtreeAvailability","lev","subtreePath","childSubtreeUrl","replaceContentUrlTemplate","childSubtree","isTileAvailable","tileAvailability","isContentAvailable","contentAvailability","childTileLevel","pData","index","currentTile","length","globalLevel","childCoordinates","formattedTile","formatTileData","push","availabilityData","Boolean","constant","explicitBitstream","getBooleanValueFromBitstream","refine","getRefine","lodMetricType","getTileType","rootLodMetricValue","rootBoundingVolume","uri","replace","boundingVolume","calculateBoundingVolumeForChildTile","content","id","type","region","west","south","east","north","minimumHeight","maximumHeight","boundingVolumesCount","sizeX","sizeY","sizeZ","childWest","childEast","childSouth","childNorth","childMinimumHeight","childMaximumHeight","console","warn","first","second","parseInt","toString","templateUrl","mapUrl","generateMapUrl","matched","items","key","availabilityIndex","availabilityBuffer","byteIndex","Math","floor","bitIndex","bitValue"],"mappings":"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","sourcesContent":["import type {Availability, BoundingVolume, Subtree} from '../../../types';\nimport {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\n\nconst QUADTREE_DEVISION_COUNT = 4;\nconst OCTREE_DEVISION_COUNT = 8;\n\nconst SUBDIVISION_COUNT_MAP = {\n QUADTREE: QUADTREE_DEVISION_COUNT,\n OCTREE: OCTREE_DEVISION_COUNT\n};\n\n/**\n * Recursively parse implicit tiles tree\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * TODO Check out do we able to use Tile3D class as return type here.\n * @param subtree\n * @param lodMetricValue\n * @param options\n * @param parentData\n * @param childIndex\n * @param level\n * @param globalData\n */\n// eslint-disable-next-line max-statements\nexport async function parseImplicitTiles(params: {\n subtree: Subtree;\n options: any;\n parentData?: {mortonIndex: number; x: number; y: number; z: number};\n childIndex?: number;\n level?: number;\n globalData?: {level: number; mortonIndex: number; x: number; y: number; z: number};\n}) {\n const {\n options,\n parentData = {\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n },\n childIndex = 0,\n globalData = {\n level: 0,\n mortonIndex: 0,\n x: 0,\n y: 0,\n z: 0\n }\n } = params;\n let {subtree, level = 0} = params;\n const {\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n contentUrlTemplate,\n subtreesUriTemplate,\n basePath\n } = options;\n\n const tile = {children: [], lodMetricValue: 0, contentUrl: ''};\n\n const childrenPerTile = SUBDIVISION_COUNT_MAP[subdivisionScheme];\n\n const childX = childIndex & 0b01;\n const childY = (childIndex >> 1) & 0b01;\n const childZ = (childIndex >> 2) & 0b01;\n\n const levelOffset = (childrenPerTile ** level - 1) / (childrenPerTile - 1);\n let childTileMortonIndex = concatBits(parentData.mortonIndex, childIndex);\n let tileAvailabilityIndex = levelOffset + childTileMortonIndex;\n\n // Local tile coordinates\n let childTileX = concatBits(parentData.x, childX);\n let childTileY = concatBits(parentData.y, childY);\n let childTileZ = concatBits(parentData.z, childZ);\n\n // TODO Remove after real implicit tileset will be tested.\n // Degug data\n // tile.level = level + globalData.level;\n // tile.x = concatBits(globalData.x, childTileX);\n // tile.y = concatBits(globalData.y, childTileY);\n // tile.z = concatBits(globalData.z, childTileZ);\n // tile.mortonIndex = childTileMortonIndex;\n // End of debug data\n\n let isChildSubtreeAvailable = false;\n\n if (level + 1 > subtreeLevels) {\n isChildSubtreeAvailable = getAvailabilityResult(\n subtree.childSubtreeAvailability,\n childTileMortonIndex\n );\n }\n\n const x = concatBits(globalData.x, childTileX);\n const y = concatBits(globalData.y, childTileY);\n const z = concatBits(globalData.z, childTileZ);\n const lev = level + globalData.level;\n\n if (isChildSubtreeAvailable) {\n const subtreePath = `${basePath}/${subtreesUriTemplate}`;\n const childSubtreeUrl = replaceContentUrlTemplate(subtreePath, lev, x, y, z);\n const childSubtree = await load(childSubtreeUrl, Tile3DSubtreeLoader);\n\n subtree = childSubtree;\n\n globalData.mortonIndex = childTileMortonIndex;\n globalData.x = childTileX;\n globalData.y = childTileY;\n globalData.z = childTileZ;\n globalData.level = level;\n\n childTileMortonIndex = 0;\n tileAvailabilityIndex = 0;\n childTileX = 0;\n childTileY = 0;\n childTileZ = 0;\n level = 0;\n }\n\n const isTileAvailable = getAvailabilityResult(subtree.tileAvailability, tileAvailabilityIndex);\n\n if (!isTileAvailable || level > maximumLevel) {\n return tile;\n }\n\n const isContentAvailable = getAvailabilityResult(\n subtree.contentAvailability,\n tileAvailabilityIndex\n );\n\n if (isContentAvailable) {\n tile.contentUrl = replaceContentUrlTemplate(contentUrlTemplate, lev, x, y, z);\n }\n\n const childTileLevel = level + 1;\n const pData = {mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ};\n\n for (let index = 0; index < childrenPerTile; index++) {\n const currentTile = await parseImplicitTiles({\n subtree,\n options,\n parentData: pData,\n childIndex: index,\n level: childTileLevel,\n globalData\n });\n\n if (currentTile.contentUrl || currentTile.children.length) {\n const globalLevel = lev + 1;\n const childCoordinates = {childTileX, childTileY, childTileZ};\n const formattedTile = formatTileData(currentTile, globalLevel, childCoordinates, options);\n // @ts-ignore\n tile.children.push(formattedTile);\n }\n }\n\n return tile;\n}\n\nfunction getAvailabilityResult(availabilityData: Availability, index: number): boolean {\n if ('constant' in availabilityData) {\n return Boolean(availabilityData.constant);\n }\n\n if (availabilityData.explicitBitstream) {\n return getBooleanValueFromBitstream(index, availabilityData.explicitBitstream);\n }\n\n return false;\n}\n\n/**\n * Do formatting of implicit tile data.\n * TODO Check out do we able to use Tile3D class as type here.\n * @param tile\n * @param lodMetricValue\n * @param options\n * @returns\n */\nfunction formatTileData(\n tile,\n level: number,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},\n options: any\n) {\n const {\n basePath,\n refine,\n getRefine,\n lodMetricType,\n getTileType,\n rootLodMetricValue,\n rootBoundingVolume\n } = options;\n const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, '');\n const lodMetricValue = rootLodMetricValue / 2 ** level;\n const boundingVolume = calculateBoundingVolumeForChildTile(\n level,\n rootBoundingVolume,\n childCoordinates\n );\n\n return {\n children: tile.children,\n contentUrl: tile.contentUrl,\n content: {uri},\n id: tile.contentUrl,\n refine: getRefine(refine),\n type: getTileType(tile),\n lodMetricType,\n lodMetricValue,\n boundingVolume\n // Temp debug values. Remove when real implicit tileset will be tested.\n // x: tile.x,\n // y: tile.y,\n // z: tile.z,\n // level: tile.level\n };\n}\n\n/**\n * Calculate child bounding volume.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-rules\n * @param level\n * @param rootBoundingVolume\n * @param childCoordinates\n */\nfunction calculateBoundingVolumeForChildTile(\n level: number,\n rootBoundingVolume: BoundingVolume,\n childCoordinates: {childTileX: number; childTileY: number; childTileZ: number}\n): BoundingVolume | null {\n if (rootBoundingVolume.region) {\n const {childTileX, childTileY, childTileZ} = childCoordinates;\n const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;\n const boundingVolumesCount = 2 ** level;\n\n const sizeX = (east - west) / boundingVolumesCount;\n const sizeY = (north - south) / boundingVolumesCount;\n const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;\n\n const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];\n const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];\n const [childMinimumHeight, childMaximumHeight] = [\n minimumHeight + sizeZ * childTileZ,\n minimumHeight + sizeZ * (childTileZ + 1)\n ];\n\n return {\n region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]\n };\n }\n\n // eslint-disable-next-line no-console\n console.warn('Unsupported bounding volume type: ', rootBoundingVolume);\n return null;\n}\n\n/**\n * Do binary concatenation\n * @param first\n * @param second\n */\nfunction concatBits(first: number, second: number): number {\n return parseInt(first.toString(2) + second.toString(2), 2);\n}\n\n/**\n * Replace implicit tile content url with real coordinates.\n * @param templateUrl\n * @param level\n * @param x\n * @param y\n * @param z\n */\nexport function replaceContentUrlTemplate(\n templateUrl: string,\n level: number,\n x: number,\n y: number,\n z: number\n): string {\n const mapUrl = generateMapUrl({level, x, y, z});\n return templateUrl.replace(/{level}|{x}|{y}|{z}/gi, (matched) => mapUrl[matched]);\n}\n\n/**\n * Get Map object for content url generation\n * @param items\n */\nfunction generateMapUrl(items: {[key: string]: number}): {[key: string]: string} {\n const mapUrl = {};\n\n for (const key in items) {\n mapUrl[`{${key}}`] = items[key];\n }\n return mapUrl;\n}\n\n/**\n * Get boolean value from bistream by index\n * A boolean value is encoded as a single bit, either 0 (false) or 1 (true).\n * Multiple boolean values are packed tightly in the same buffer.\n * These buffers of tightly-packed bits are sometimes referred to as bitstreams.\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/implicit-revisions/specification/Metadata#booleans\n * @param availabilitiIndex\n */\nfunction getBooleanValueFromBitstream(\n availabilityIndex: number,\n availabilityBuffer: Uint8Array\n): boolean {\n const byteIndex = Math.floor(availabilityIndex / 8);\n const bitIndex = availabilityIndex % 8;\n const bitValue = (availabilityBuffer[byteIndex] >> bitIndex) & 1;\n\n return bitValue === 1;\n}\n"],"file":"parse-3d-implicit-tiles.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-gltf.ts"],"names":["GLTFLoader","parseGltf3DTile","tile","arrayBuffer","options","context","rotateYtoZ","gltfUpAxis","assetGltfUpAxis","parse","gltf"],"mappings":"AAAA,SAAQA,UAAR,QAAyB,kBAAzB;AAEA,OAAO,eAAeC,eAAf,CAA+BC,IAA/B,EAAqCC,WAArC,EAAkDC,OAAlD,EAA2DC,OAA3D,EAAoE;AAIzEH,EAAAA,IAAI,CAACI,UAAL,GAAkB,IAAlB;AAEAJ,EAAAA,IAAI,CAACK,UAAL,GACEH,OAAO,CAAC,UAAD,CAAP,IAAuBA,OAAO,CAAC,UAAD,CAAP,CAAoBI,eAA3C,GACIJ,OAAO,CAAC,UAAD,CAAP,CAAoBI,eADxB,GAEI,GAHN;AAKA,QAAM;AAACC,IAAAA;AAAD,MAAUJ,OAAhB;AACAH,EAAAA,IAAI,CAACQ,IAAL,GAAY,MAAMD,KAAK,CAACN,WAAD,EAAcH,UAAd,EAA0BI,OAA1B,EAAmCC,OAAnC,CAAvB;AACD","sourcesContent":["import {GLTFLoader} from '@loaders.gl/gltf';\n\nexport async function parseGltf3DTile(tile, arrayBuffer, options, context) {\n // Set flags\n // glTF models need to be rotated from Y to Z up\n // https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#y-up-to-z-up\n tile.rotateYtoZ = true;\n // Save gltf up axis\n tile.gltfUpAxis =\n options['3d-tiles'] && options['3d-tiles'].assetGltfUpAxis\n ? options['3d-tiles'].assetGltfUpAxis\n : 'Y';\n\n const {parse} = context;\n tile.gltf = await parse(arrayBuffer, GLTFLoader, options, context);\n}\n"],"file":"parse-3d-tile-gltf.js"}
|
|
@@ -128,7 +128,10 @@ export async function normalizeImplicitTileData(tile, rootSubtree, options) {
|
|
|
128
128
|
const {
|
|
129
129
|
children,
|
|
130
130
|
contentUrl
|
|
131
|
-
} = await parseImplicitTiles(
|
|
131
|
+
} = await parseImplicitTiles({
|
|
132
|
+
subtree: rootSubtree,
|
|
133
|
+
options
|
|
134
|
+
});
|
|
132
135
|
|
|
133
136
|
if (contentUrl) {
|
|
134
137
|
tile.contentUrl = contentUrl;
|
|
@@ -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","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,
|
|
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":"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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,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "3.
|
|
1
|
+
export const VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
|