@loaders.gl/i3s 4.0.0-alpha.17 → 4.0.0-alpha.18
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 +94 -51
- package/dist/es5/arcgis-webscene-loader.js +1 -1
- package/dist/es5/i3s-attribute-loader.js +1 -1
- package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
- package/dist/es5/i3s-content-loader.js +1 -1
- package/dist/es5/i3s-loader.js +6 -6
- package/dist/es5/i3s-loader.js.map +1 -1
- package/dist/es5/i3s-node-page-loader.js +1 -1
- package/dist/es5/i3s-slpk-loader.js +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +9 -5
- package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
- package/dist/es5/lib/parsers/parse-i3s.js +29 -19
- package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/es5/lib/utils/url-utils.js +3 -3
- package/dist/es5/lib/utils/url-utils.js.map +1 -1
- package/dist/es5/types.js.map +1 -1
- package/dist/esm/arcgis-webscene-loader.js +1 -1
- package/dist/esm/i3s-attribute-loader.js +1 -1
- package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
- package/dist/esm/i3s-content-loader.js +1 -1
- package/dist/esm/i3s-loader.js +3 -4
- package/dist/esm/i3s-loader.js.map +1 -1
- package/dist/esm/i3s-node-page-loader.js +1 -1
- package/dist/esm/i3s-slpk-loader.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +9 -5
- package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
- package/dist/esm/lib/parsers/parse-i3s.js +20 -10
- package/dist/esm/lib/parsers/parse-i3s.js.map +1 -1
- package/dist/esm/lib/utils/url-utils.js +2 -3
- package/dist/esm/lib/utils/url-utils.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/i3s-content-worker-node.js +47 -47
- package/dist/i3s-content-worker-node.js.map +3 -3
- package/dist/i3s-content-worker.js +50 -19
- package/dist/i3s-loader.js +2 -4
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +5 -3
- package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
- package/dist/lib/helpers/i3s-nodepages-tiles.js +7 -5
- package/dist/lib/parsers/parse-i3s.d.ts +2 -2
- package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
- package/dist/lib/parsers/parse-i3s.js +21 -12
- package/dist/lib/utils/url-utils.d.ts +5 -4
- package/dist/lib/utils/url-utils.d.ts.map +1 -1
- package/dist/lib/utils/url-utils.js +5 -4
- package/dist/types.d.ts +102 -34
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/i3s-loader.ts +2 -4
- package/src/index.ts +4 -0
- package/src/lib/helpers/i3s-nodepages-tiles.ts +16 -9
- package/src/lib/parsers/parse-i3s.ts +25 -16
- package/src/lib/utils/url-utils.ts +6 -5
- package/src/types.ts +99 -35
|
@@ -32,6 +32,12 @@
|
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
34
|
|
|
35
|
+
// (disabled):../core/src/lib/fetch/fetch-file.node
|
|
36
|
+
var require_fetch_file = __commonJS({
|
|
37
|
+
"(disabled):../core/src/lib/fetch/fetch-file.node"() {
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
35
41
|
// ../loader-utils/src/lib/env-utils/assert.ts
|
|
36
42
|
function assert(condition, message) {
|
|
37
43
|
if (!condition) {
|
|
@@ -55,7 +61,7 @@
|
|
|
55
61
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
56
62
|
|
|
57
63
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
58
|
-
var VERSION = true ? "4.0.0-alpha.
|
|
64
|
+
var VERSION = true ? "4.0.0-alpha.18" : DEFAULT_VERSION;
|
|
59
65
|
if (false) {
|
|
60
66
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
61
67
|
}
|
|
@@ -587,8 +593,7 @@
|
|
|
587
593
|
}
|
|
588
594
|
async function loadLibraryFromFile(libraryUrl) {
|
|
589
595
|
if (libraryUrl.endsWith("wasm")) {
|
|
590
|
-
|
|
591
|
-
return await response2.arrayBuffer();
|
|
596
|
+
return await loadAsArrayBuffer(libraryUrl);
|
|
592
597
|
}
|
|
593
598
|
if (!isBrowser2) {
|
|
594
599
|
try {
|
|
@@ -600,8 +605,7 @@
|
|
|
600
605
|
if (isWorker) {
|
|
601
606
|
return importScripts(libraryUrl);
|
|
602
607
|
}
|
|
603
|
-
const
|
|
604
|
-
const scriptSource = await response.text();
|
|
608
|
+
const scriptSource = await loadAsText(libraryUrl);
|
|
605
609
|
return loadLibraryFromString(scriptSource, libraryUrl);
|
|
606
610
|
}
|
|
607
611
|
function loadLibraryFromString(scriptSource, id) {
|
|
@@ -622,6 +626,20 @@
|
|
|
622
626
|
document.body.appendChild(script);
|
|
623
627
|
return null;
|
|
624
628
|
}
|
|
629
|
+
async function loadAsArrayBuffer(url) {
|
|
630
|
+
if (!node.readFileAsArrayBuffer || url.startsWith("http")) {
|
|
631
|
+
const response = await fetch(url);
|
|
632
|
+
return await response.arrayBuffer();
|
|
633
|
+
}
|
|
634
|
+
return await node.readFileAsArrayBuffer(url);
|
|
635
|
+
}
|
|
636
|
+
async function loadAsText(url) {
|
|
637
|
+
if (!node.readFileAsText || url.startsWith("http")) {
|
|
638
|
+
const response = await fetch(url);
|
|
639
|
+
return await response.text();
|
|
640
|
+
}
|
|
641
|
+
return await node.readFileAsText(url);
|
|
642
|
+
}
|
|
625
643
|
|
|
626
644
|
// ../loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts
|
|
627
645
|
var requestId = 0;
|
|
@@ -1191,9 +1209,22 @@
|
|
|
1191
1209
|
}
|
|
1192
1210
|
|
|
1193
1211
|
// ../core/src/lib/fetch/fetch-file.ts
|
|
1212
|
+
var node3 = __toModule(require_fetch_file());
|
|
1213
|
+
function isNodePath(url) {
|
|
1214
|
+
return !isRequestURL(url) && !isDataURL(url);
|
|
1215
|
+
}
|
|
1216
|
+
function isRequestURL(url) {
|
|
1217
|
+
return url.startsWith("http:") || url.startsWith("https:");
|
|
1218
|
+
}
|
|
1219
|
+
function isDataURL(url) {
|
|
1220
|
+
return url.startsWith("data:");
|
|
1221
|
+
}
|
|
1194
1222
|
async function fetchFile(urlOrData, fetchOptions) {
|
|
1195
1223
|
if (typeof urlOrData === "string") {
|
|
1196
1224
|
const url = resolvePath(urlOrData);
|
|
1225
|
+
if (isNodePath(url) && node3?.fetchFileNode) {
|
|
1226
|
+
return node3.fetchFileNode(url, fetchOptions);
|
|
1227
|
+
}
|
|
1197
1228
|
return await fetch(url, fetchOptions);
|
|
1198
1229
|
}
|
|
1199
1230
|
return await makeResponse(urlOrData);
|
|
@@ -1230,7 +1261,7 @@
|
|
|
1230
1261
|
var navigator_ = globalThis.navigator || {};
|
|
1231
1262
|
|
|
1232
1263
|
// ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
|
|
1233
|
-
var VERSION3 = true ? "4.0.0-alpha.
|
|
1264
|
+
var VERSION3 = true ? "4.0.0-alpha.18" : "untranspiled source";
|
|
1234
1265
|
var isBrowser4 = isBrowser3();
|
|
1235
1266
|
|
|
1236
1267
|
// ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
|
|
@@ -4578,7 +4609,7 @@
|
|
|
4578
4609
|
_defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
|
|
4579
4610
|
|
|
4580
4611
|
// ../images/src/lib/utils/version.ts
|
|
4581
|
-
var VERSION4 = true ? "4.0.0-alpha.
|
|
4612
|
+
var VERSION4 = true ? "4.0.0-alpha.18" : "latest";
|
|
4582
4613
|
|
|
4583
4614
|
// ../images/src/lib/category-api/image-type.ts
|
|
4584
4615
|
var { _parseImageNode } = globalThis;
|
|
@@ -4975,7 +5006,7 @@
|
|
|
4975
5006
|
};
|
|
4976
5007
|
|
|
4977
5008
|
// ../draco/src/lib/utils/version.ts
|
|
4978
|
-
var VERSION5 = true ? "4.0.0-alpha.
|
|
5009
|
+
var VERSION5 = true ? "4.0.0-alpha.18" : "latest";
|
|
4979
5010
|
|
|
4980
5011
|
// ../draco/src/draco-loader.ts
|
|
4981
5012
|
var DEFAULT_DRACO_OPTIONS = {
|
|
@@ -5520,22 +5551,22 @@
|
|
|
5520
5551
|
}
|
|
5521
5552
|
|
|
5522
5553
|
// ../textures/src/lib/utils/version.ts
|
|
5523
|
-
var VERSION6 = true ? "4.0.0-alpha.
|
|
5554
|
+
var VERSION6 = true ? "4.0.0-alpha.18" : "beta";
|
|
5524
5555
|
|
|
5525
5556
|
// ../textures/src/lib/parsers/basis-module-loader.ts
|
|
5526
|
-
var VERSION7 = true ? "4.0.0-alpha.
|
|
5557
|
+
var VERSION7 = true ? "4.0.0-alpha.18" : "beta";
|
|
5527
5558
|
var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.wasm`;
|
|
5528
5559
|
var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.js`;
|
|
5529
5560
|
var loadBasisTranscoderPromise;
|
|
5530
|
-
async function
|
|
5561
|
+
async function loadBasisTranscoderModule(options) {
|
|
5531
5562
|
const modules = options.modules || {};
|
|
5532
5563
|
if (modules.basis) {
|
|
5533
5564
|
return modules.basis;
|
|
5534
5565
|
}
|
|
5535
|
-
loadBasisTranscoderPromise = loadBasisTranscoderPromise ||
|
|
5566
|
+
loadBasisTranscoderPromise = loadBasisTranscoderPromise || loadBasisTranscoder(options);
|
|
5536
5567
|
return await loadBasisTranscoderPromise;
|
|
5537
5568
|
}
|
|
5538
|
-
async function
|
|
5569
|
+
async function loadBasisTranscoder(options) {
|
|
5539
5570
|
let BASIS = null;
|
|
5540
5571
|
let wasmBinary = null;
|
|
5541
5572
|
[BASIS, wasmBinary] = await Promise.all([
|
|
@@ -5543,9 +5574,9 @@
|
|
|
5543
5574
|
await loadLibrary("basis_transcoder.wasm", "textures", options)
|
|
5544
5575
|
]);
|
|
5545
5576
|
BASIS = BASIS || globalThis.BASIS;
|
|
5546
|
-
return await
|
|
5577
|
+
return await initializeBasisTranscoderModule(BASIS, wasmBinary);
|
|
5547
5578
|
}
|
|
5548
|
-
function
|
|
5579
|
+
function initializeBasisTranscoderModule(BasisModule, wasmBinary) {
|
|
5549
5580
|
const options = {};
|
|
5550
5581
|
if (wasmBinary) {
|
|
5551
5582
|
options.wasmBinary = wasmBinary;
|
|
@@ -5981,7 +6012,7 @@
|
|
|
5981
6012
|
const fileConstructors = await loadBasisEncoderModule(options);
|
|
5982
6013
|
return parseKTX2File(fileConstructors.KTX2File, data, options);
|
|
5983
6014
|
}
|
|
5984
|
-
const { BasisFile } = await
|
|
6015
|
+
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
5985
6016
|
return parseBasisFile(BasisFile, data, options);
|
|
5986
6017
|
}
|
|
5987
6018
|
switch (options.basis.module) {
|
|
@@ -5996,7 +6027,7 @@
|
|
|
5996
6027
|
}
|
|
5997
6028
|
case "transcoder":
|
|
5998
6029
|
default:
|
|
5999
|
-
const { BasisFile } = await
|
|
6030
|
+
const { BasisFile } = await loadBasisTranscoderModule(options);
|
|
6000
6031
|
return parseBasisFile(BasisFile, data, options);
|
|
6001
6032
|
}
|
|
6002
6033
|
}
|
|
@@ -7209,7 +7240,7 @@
|
|
|
7209
7240
|
}
|
|
7210
7241
|
|
|
7211
7242
|
// src/i3s-attribute-loader.ts
|
|
7212
|
-
var VERSION8 = true ? "4.0.0-alpha.
|
|
7243
|
+
var VERSION8 = true ? "4.0.0-alpha.18" : "latest";
|
|
7213
7244
|
var I3SAttributeLoader = {
|
|
7214
7245
|
name: "I3S Attribute",
|
|
7215
7246
|
id: "i3s-attribute",
|
|
@@ -7672,7 +7703,7 @@
|
|
|
7672
7703
|
}
|
|
7673
7704
|
|
|
7674
7705
|
// src/i3s-content-loader.ts
|
|
7675
|
-
var VERSION9 = true ? "4.0.0-alpha.
|
|
7706
|
+
var VERSION9 = true ? "4.0.0-alpha.18" : "beta";
|
|
7676
7707
|
var I3SContentLoader = {
|
|
7677
7708
|
name: "I3S Content (Indexed Scene Layers)",
|
|
7678
7709
|
id: "i3s-content",
|
package/dist/i3s-loader.js
CHANGED
|
@@ -82,10 +82,8 @@ async function parseTileset(data, options, context) {
|
|
|
82
82
|
if (tilesetJson?.layerType === POINT_CLOUD) {
|
|
83
83
|
throw new Error('Point Cloud layers currently are not supported by I3SLoader');
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
|
|
88
|
-
return tilesetJson;
|
|
85
|
+
const tilesetPostprocessed = await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
|
|
86
|
+
return tilesetPostprocessed;
|
|
89
87
|
}
|
|
90
88
|
async function parseTile(data, context) {
|
|
91
89
|
data = JSON.parse(new TextDecoder().decode(data));
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export type { BoundingVolumes, Mbs, Obb, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
|
|
1
|
+
export type { BoundingVolumes, Mbs, Obb, I3STilesetHeader, I3STileContent, I3STileHeader, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, OperationalLayer, TextureSetDefinitionFormats } from './types';
|
|
2
2
|
export type { FileProvider } from './lib/parsers/parse-zip/file-provider';
|
|
3
|
+
export type { I3SLoaderOptions } from './i3s-loader';
|
|
3
4
|
export { COORDINATE_SYSTEM } from './lib/parsers/constants';
|
|
4
5
|
export { I3SLoader } from './i3s-loader';
|
|
5
6
|
export { SLPKLoader } from './i3s-slpk-loader';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC;AACxE,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,SAAS,EAAC,MAAM,qCAAqC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
-
import {
|
|
2
|
+
import { NodePage, NodeInPage, I3STextureFormat, I3STileHeader, SceneLayer3D } from '../../types';
|
|
3
3
|
/**
|
|
4
4
|
* class I3SNodePagesTiles - loads nodePages and form i3s tiles from them
|
|
5
5
|
*/
|
|
6
6
|
export default class I3SNodePagesTiles {
|
|
7
|
-
tileset:
|
|
7
|
+
tileset: SceneLayer3D;
|
|
8
8
|
nodePages: NodePage[];
|
|
9
9
|
pendingNodePages: {
|
|
10
10
|
promise: Promise<NodePage>;
|
|
@@ -18,14 +18,16 @@ export default class I3SNodePagesTiles {
|
|
|
18
18
|
name: string;
|
|
19
19
|
} | null)[];
|
|
20
20
|
nodesInNodePages: number;
|
|
21
|
+
url: string;
|
|
21
22
|
private textureLoaderOptions;
|
|
22
23
|
/**
|
|
23
24
|
* @constructs
|
|
24
25
|
* Create a I3SNodePagesTiles instance.
|
|
25
26
|
* @param tileset - i3s tileset header ('layers/0')
|
|
27
|
+
* @param url - tileset url
|
|
26
28
|
* @param options - i3s loader options
|
|
27
29
|
*/
|
|
28
|
-
constructor(tileset:
|
|
30
|
+
constructor(tileset: SceneLayer3D, url: string | undefined, options: LoaderOptions);
|
|
29
31
|
/**
|
|
30
32
|
* Loads some nodePage and return a particular node from it
|
|
31
33
|
* @param id - id of node through all node pages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i3s-nodepages-tiles.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"i3s-nodepages-tiles.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAEL,QAAQ,EACR,UAAU,EAIV,gBAAgB,EAEhB,aAAa,EACb,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,gBAAgB,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAA;KAAC,EAAE,CAAM;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,EAAE,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,EAAE,CAAM;IAC5F,gBAAgB,EAAE,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,oBAAoB,CAA4B;IAExD;;;;;;OAMG;gBACS,OAAO,EAAE,YAAY,EAAE,GAAG,oBAAa,EAAE,OAAO,EAAE,aAAa;IAW3E;;;OAGG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlD;;;OAGG;IAEG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgE/D;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA8BrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;IACH,OAAO,CAAC,wCAAwC;IA2BhD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}
|
|
@@ -13,14 +13,16 @@ class I3SNodePagesTiles {
|
|
|
13
13
|
* @constructs
|
|
14
14
|
* Create a I3SNodePagesTiles instance.
|
|
15
15
|
* @param tileset - i3s tileset header ('layers/0')
|
|
16
|
+
* @param url - tileset url
|
|
16
17
|
* @param options - i3s loader options
|
|
17
18
|
*/
|
|
18
|
-
constructor(tileset, options) {
|
|
19
|
+
constructor(tileset, url = '', options) {
|
|
19
20
|
this.nodePages = [];
|
|
20
21
|
this.pendingNodePages = [];
|
|
21
22
|
this.textureDefinitionsSelectedFormats = [];
|
|
22
23
|
this.textureLoaderOptions = {};
|
|
23
24
|
this.tileset = { ...tileset }; // spread the tileset to avoid circular reference
|
|
25
|
+
this.url = url;
|
|
24
26
|
this.nodesPerPage = tileset.nodePages?.nodesPerPage || 64;
|
|
25
27
|
this.lodSelectionMetricType = tileset.nodePages?.lodSelectionMetricType;
|
|
26
28
|
this.options = options;
|
|
@@ -34,7 +36,7 @@ class I3SNodePagesTiles {
|
|
|
34
36
|
async getNodeById(id) {
|
|
35
37
|
const pageIndex = Math.floor(id / this.nodesPerPage);
|
|
36
38
|
if (!this.nodePages[pageIndex] && !this.pendingNodePages[pageIndex]) {
|
|
37
|
-
const nodePageUrl = (0, url_utils_1.getUrlWithToken)(`${this.
|
|
39
|
+
const nodePageUrl = (0, url_utils_1.getUrlWithToken)(`${this.url}/nodepages/${pageIndex}`,
|
|
38
40
|
// @ts-expect-error this.options is not properly typed
|
|
39
41
|
this.options.i3s?.token);
|
|
40
42
|
this.pendingNodePages[pageIndex] = {
|
|
@@ -86,10 +88,10 @@ class I3SNodePagesTiles {
|
|
|
86
88
|
materialDefinition = nodeMaterialDefinition;
|
|
87
89
|
textureFormat = textureData.format || textureFormat;
|
|
88
90
|
if (textureData.name) {
|
|
89
|
-
textureUrl = `${this.
|
|
91
|
+
textureUrl = `${this.url}/nodes/${node.mesh.material.resource}/textures/${textureData.name}`;
|
|
90
92
|
}
|
|
91
93
|
if (this.tileset.attributeStorageInfo) {
|
|
92
|
-
attributeUrls = (0, url_utils_1.generateTilesetAttributeUrls)(this.tileset, node.mesh.attribute.resource);
|
|
94
|
+
attributeUrls = (0, url_utils_1.generateTilesetAttributeUrls)(this.tileset, this.url, node.mesh.attribute.resource);
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
const lodSelection = this.getLodSelection(node);
|
|
@@ -131,7 +133,7 @@ class I3SNodePagesTiles {
|
|
|
131
133
|
if (geometryIndex !== -1) {
|
|
132
134
|
const isDracoGeometry = Boolean(geometryDefinition.geometryBuffers[geometryIndex].compressedAttributes);
|
|
133
135
|
result = {
|
|
134
|
-
url: `${this.
|
|
136
|
+
url: `${this.url}/nodes/${meshGeometryData.resource}/geometries/${geometryIndex}`,
|
|
135
137
|
isDracoGeometry
|
|
136
138
|
};
|
|
137
139
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { I3STilesetHeader, I3STileHeader, I3SMinimalNodeData, Node3DIndexDocument } from '../../types';
|
|
1
|
+
import { I3STilesetHeader, I3STileHeader, I3SMinimalNodeData, Node3DIndexDocument, SceneLayer3D } from '../../types';
|
|
2
2
|
import type { LoaderOptions, LoaderContext } from '@loaders.gl/loader-utils';
|
|
3
3
|
export declare function normalizeTileData(tile: Node3DIndexDocument, context: LoaderContext): I3STileHeader;
|
|
4
4
|
export declare function normalizeTileNonUrlData(tile: I3SMinimalNodeData): I3STileHeader;
|
|
5
|
-
export declare function normalizeTilesetData(tileset:
|
|
5
|
+
export declare function normalizeTilesetData(tileset: SceneLayer3D, options: LoaderOptions, context: LoaderContext): Promise<I3STilesetHeader>;
|
|
6
6
|
//# sourceMappingURL=parse-i3s.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CA6BnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAkChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,YAAY,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8B7I"}
|
|
@@ -10,6 +10,7 @@ const core_1 = require("@loaders.gl/core");
|
|
|
10
10
|
const tiles_1 = require("@loaders.gl/tiles");
|
|
11
11
|
const i3s_nodepages_tiles_1 = __importDefault(require("../helpers/i3s-nodepages-tiles"));
|
|
12
12
|
const url_utils_1 = require("../utils/url-utils");
|
|
13
|
+
const i3s_loader_1 = require("../../i3s-loader");
|
|
13
14
|
function normalizeTileData(tile, context) {
|
|
14
15
|
const url = context.url || '';
|
|
15
16
|
let contentUrl;
|
|
@@ -24,11 +25,14 @@ function normalizeTileData(tile, context) {
|
|
|
24
25
|
if (tile.attributeData) {
|
|
25
26
|
attributeUrls = (0, url_utils_1.generateTileAttributeUrls)(url, tile);
|
|
26
27
|
}
|
|
28
|
+
const children = tile.children || [];
|
|
27
29
|
return normalizeTileNonUrlData({
|
|
28
30
|
...tile,
|
|
31
|
+
children,
|
|
29
32
|
url,
|
|
30
33
|
contentUrl,
|
|
31
34
|
textureUrl,
|
|
35
|
+
textureFormat: 'jpg',
|
|
32
36
|
attributeUrls,
|
|
33
37
|
isDracoGeometry: false
|
|
34
38
|
});
|
|
@@ -57,26 +61,27 @@ function normalizeTileNonUrlData(tile) {
|
|
|
57
61
|
}
|
|
58
62
|
const lodMetricType = tile.lodSelection?.[0].metricType;
|
|
59
63
|
const lodMetricValue = tile.lodSelection?.[0].maxError;
|
|
60
|
-
const transformMatrix = tile.transform;
|
|
61
64
|
const type = tiles_1.TILE_TYPE.MESH;
|
|
62
65
|
/**
|
|
63
66
|
* I3S specification supports only REPLACE
|
|
64
67
|
*/
|
|
65
68
|
const refine = tiles_1.TILE_REFINEMENT.REPLACE;
|
|
66
|
-
return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue,
|
|
69
|
+
return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, type, refine };
|
|
67
70
|
}
|
|
68
71
|
exports.normalizeTileNonUrlData = normalizeTileNonUrlData;
|
|
69
72
|
async function normalizeTilesetData(tileset, options, context) {
|
|
70
|
-
|
|
73
|
+
const url = context.url;
|
|
74
|
+
let nodePagesTile;
|
|
75
|
+
let root;
|
|
71
76
|
if (tileset.nodePages) {
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
nodePagesTile = new i3s_nodepages_tiles_1.default(tileset, url, options);
|
|
78
|
+
root = await nodePagesTile.formTileFromNodePages(0);
|
|
74
79
|
}
|
|
75
80
|
else {
|
|
76
81
|
// @ts-expect-error options is not properly typed
|
|
77
82
|
const rootNodeUrl = (0, url_utils_1.getUrlWithToken)(`${tileset.url}/nodes/root`, options.i3s?.token);
|
|
78
83
|
// eslint-disable-next-line no-use-before-define
|
|
79
|
-
|
|
84
|
+
root = await (0, core_1.load)(rootNodeUrl, i3s_loader_1.I3SLoader, {
|
|
80
85
|
...options,
|
|
81
86
|
i3s: {
|
|
82
87
|
// @ts-expect-error options is not properly typed
|
|
@@ -85,11 +90,15 @@ async function normalizeTilesetData(tileset, options, context) {
|
|
|
85
90
|
}
|
|
86
91
|
});
|
|
87
92
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
93
|
+
return {
|
|
94
|
+
...tileset,
|
|
95
|
+
url,
|
|
96
|
+
basePath: url,
|
|
97
|
+
type: tiles_1.TILESET_TYPE.I3S,
|
|
98
|
+
nodePagesTile,
|
|
99
|
+
root,
|
|
100
|
+
lodMetricType: root.lodMetricType,
|
|
101
|
+
lodMetricValue: root.lodMetricValue
|
|
102
|
+
};
|
|
94
103
|
}
|
|
95
104
|
exports.normalizeTilesetData = normalizeTilesetData;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Node3DIndexDocument } from '../../types';
|
|
1
|
+
import { Node3DIndexDocument, SceneLayer3D } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Generates url with token if it is exists.
|
|
4
4
|
* @param url
|
|
@@ -14,9 +14,10 @@ export declare function getUrlWithToken(url: string, token?: string | null): str
|
|
|
14
14
|
export declare function generateTileAttributeUrls(url: string, tile: Node3DIndexDocument): string[];
|
|
15
15
|
/**
|
|
16
16
|
* Generates attribute urls for tileset based on tileset and resource
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
17
|
+
* @param tileset - tileset metadata
|
|
18
|
+
* @param url - tileset base url
|
|
19
|
+
* @param resource - resource id per I3S spec
|
|
19
20
|
* @returns {Array}
|
|
20
21
|
*/
|
|
21
|
-
export declare function generateTilesetAttributeUrls(tileset:
|
|
22
|
+
export declare function generateTilesetAttributeUrls(tileset: SceneLayer3D, url: string, resource: number): string[];
|
|
22
23
|
//# sourceMappingURL=url-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/url-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAU1F;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAUhG"}
|
|
@@ -28,13 +28,14 @@ function generateTileAttributeUrls(url, tile) {
|
|
|
28
28
|
exports.generateTileAttributeUrls = generateTileAttributeUrls;
|
|
29
29
|
/**
|
|
30
30
|
* Generates attribute urls for tileset based on tileset and resource
|
|
31
|
-
* @param
|
|
32
|
-
* @param
|
|
31
|
+
* @param tileset - tileset metadata
|
|
32
|
+
* @param url - tileset base url
|
|
33
|
+
* @param resource - resource id per I3S spec
|
|
33
34
|
* @returns {Array}
|
|
34
35
|
*/
|
|
35
|
-
function generateTilesetAttributeUrls(tileset, resource) {
|
|
36
|
+
function generateTilesetAttributeUrls(tileset, url, resource) {
|
|
36
37
|
const attributeUrls = [];
|
|
37
|
-
const { attributeStorageInfo
|
|
38
|
+
const { attributeStorageInfo = [] } = tileset;
|
|
38
39
|
for (let index = 0; index < attributeStorageInfo.length; index++) {
|
|
39
40
|
const fileName = attributeStorageInfo[index].key;
|
|
40
41
|
attributeUrls.push(`${url}/nodes/${resource}/attributes/${fileName}/0`);
|
package/dist/types.d.ts
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
1
|
import type { Matrix4, Quaternion, Vector3 } from '@math.gl/core';
|
|
2
2
|
import type { TypedArray, MeshAttribute, TextureLevel } from '@loaders.gl/schema';
|
|
3
|
-
import { Tile3D, Tileset3D } from '@loaders.gl/tiles';
|
|
3
|
+
import { TILESET_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D, Tileset3D } from '@loaders.gl/tiles';
|
|
4
|
+
import I3SNodePagesTiles from './lib/helpers/i3s-nodepages-tiles';
|
|
4
5
|
export type COLOR = [number, number, number, number];
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* Extension of SceneLayer3D JSON with postprocessed loader data
|
|
7
8
|
*/
|
|
8
9
|
export interface I3STilesetHeader extends SceneLayer3D {
|
|
9
10
|
/** Not in spec, but is necessary for woking */
|
|
10
11
|
url?: string;
|
|
11
|
-
|
|
12
|
+
/** Base path that non-absolute paths in tileset are relative to. */
|
|
13
|
+
basePath?: string;
|
|
14
|
+
/** root node metadata */
|
|
15
|
+
root: I3STileHeader;
|
|
16
|
+
/** instance of the NodePages to tiles loader */
|
|
17
|
+
nodePagesTile?: I3SNodePagesTiles;
|
|
18
|
+
/** Type of the tileset */
|
|
19
|
+
type: TILESET_TYPE.I3S;
|
|
20
|
+
/** LOD metric type per I3S spec*/
|
|
21
|
+
lodMetricType?: string;
|
|
22
|
+
/** LOD metric value */
|
|
23
|
+
lodMetricValue?: number;
|
|
12
24
|
}
|
|
13
25
|
/** https://github.com/Esri/i3s-spec/blob/master/docs/1.8/nodePage.cmn.md */
|
|
14
26
|
export type NodePage = {
|
|
@@ -53,18 +65,64 @@ type meshAttribute = {
|
|
|
53
65
|
/** The resource identifier to be used to locate attribute resources of this mesh. i.e. layers/0/nodes/<resource id>/attributes/... */
|
|
54
66
|
resource: number;
|
|
55
67
|
};
|
|
68
|
+
/**
|
|
69
|
+
* Texture format
|
|
70
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/textureSetDefinitionFormat.cmn.md
|
|
71
|
+
*/
|
|
56
72
|
export type I3STextureFormat = 'jpg' | 'png' | 'ktx-etc2' | 'dds' | 'ktx2';
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
url?: string;
|
|
61
|
-
textureFormat?: I3STextureFormat;
|
|
62
|
-
textureLoaderOptions?: any;
|
|
63
|
-
materialDefinition?: I3SMaterialDefinition;
|
|
73
|
+
/** Postprocessed I3S Node */
|
|
74
|
+
export type I3STileHeader = I3SMinimalNodeData & {
|
|
75
|
+
/** MBS per I3S spec */
|
|
64
76
|
mbs: Mbs;
|
|
65
|
-
|
|
77
|
+
/** Material definition from the layer metadata per I3S spec */
|
|
78
|
+
materialDefinition?: I3SMaterialDefinition;
|
|
79
|
+
/** Bounding volume converted to 3DTiles format. It is generic for `tile` module */
|
|
80
|
+
boundingVolume: {
|
|
81
|
+
box?: number[];
|
|
82
|
+
sphere?: number[];
|
|
83
|
+
};
|
|
84
|
+
/** LOD metric selected for usage */
|
|
85
|
+
lodMetricType?: string;
|
|
86
|
+
/** LOD metric value */
|
|
87
|
+
lodMetricValue?: number;
|
|
88
|
+
/** Tile content type */
|
|
89
|
+
type: TILE_TYPE.MESH;
|
|
90
|
+
/** Tile refinement type. I3S supports only `REPLACE` */
|
|
91
|
+
refine: TILE_REFINEMENT.REPLACE;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Minimal I3S node data is needed for loading
|
|
95
|
+
* These data can come from 3DNodeIndexDocument (I3S spec) or from `I3SNodePagesTiles` instance
|
|
96
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md
|
|
97
|
+
*/
|
|
98
|
+
export type I3SMinimalNodeData = {
|
|
99
|
+
/** Node ID */
|
|
100
|
+
id: string;
|
|
101
|
+
/** Node base path */
|
|
102
|
+
url?: string;
|
|
103
|
+
/** LOD selection metrics */
|
|
66
104
|
lodSelection?: LodSelection[];
|
|
67
|
-
|
|
105
|
+
obb?: Obb;
|
|
106
|
+
/** MBS per I3S spec */
|
|
107
|
+
mbs?: Mbs;
|
|
108
|
+
/** Geometry content URL */
|
|
109
|
+
contentUrl?: string;
|
|
110
|
+
/** Texture image URL */
|
|
111
|
+
textureUrl?: string;
|
|
112
|
+
/** Feature attributes URLs */
|
|
113
|
+
attributeUrls?: string[];
|
|
114
|
+
/** Material definition from I3S layer metadata */
|
|
115
|
+
materialDefinition?: I3SMaterialDefinition;
|
|
116
|
+
/** Texture format per I3S spec */
|
|
117
|
+
textureFormat: I3STextureFormat;
|
|
118
|
+
/** Loader options for texture loader. The loader might be `CompressedTextureLoader` for `dds`, BasisLoader for `ktx2` or ImageLoader for `jpg`and `png` */
|
|
119
|
+
textureLoaderOptions?: {
|
|
120
|
+
[key: string]: any;
|
|
121
|
+
};
|
|
122
|
+
/** Child Nodes references */
|
|
123
|
+
children: NodeReference[];
|
|
124
|
+
/** Is the node has Draco compressed geometry */
|
|
125
|
+
isDracoGeometry: boolean;
|
|
68
126
|
};
|
|
69
127
|
export type I3SParseOptions = {
|
|
70
128
|
/** ArcGIS access token */
|
|
@@ -89,13 +147,20 @@ export type I3SParseOptions = {
|
|
|
89
147
|
* Supported coordinate systems: METER_OFFSETS, LNGLAT_OFFSETS
|
|
90
148
|
*/
|
|
91
149
|
coordinateSystem?: number;
|
|
150
|
+
/** Options to colorize 3DObjects by attribute value */
|
|
92
151
|
colorsByAttribute?: {
|
|
152
|
+
/** Feature attribute name */
|
|
93
153
|
attributeName: string;
|
|
154
|
+
/** Minimum attribute value */
|
|
94
155
|
minValue: number;
|
|
156
|
+
/** Maximum attribute value */
|
|
95
157
|
maxValue: number;
|
|
158
|
+
/** Minimum color. 3DObject will be colorized with gradient from `minColor to `maxColor` */
|
|
96
159
|
minColor: COLOR;
|
|
160
|
+
/** Maximum color. 3DObject will be colorized with gradient from `minColor to `maxColor` */
|
|
97
161
|
maxColor: COLOR;
|
|
98
|
-
mode
|
|
162
|
+
/** Colorization mode. `replace` - replace vertex colors with a new colors, `multiply` - multiply vertex colors with new colors */
|
|
163
|
+
mode: 'multiply' | 'replace';
|
|
99
164
|
};
|
|
100
165
|
/** @deprecated */
|
|
101
166
|
tile?: Tile3D | I3STileOptions;
|
|
@@ -139,11 +204,19 @@ export type BoundingVolumes = {
|
|
|
139
204
|
mbs: Mbs;
|
|
140
205
|
obb: Obb;
|
|
141
206
|
};
|
|
207
|
+
/**
|
|
208
|
+
* Oriented bounding box per I3S spec
|
|
209
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/obb.cmn.md
|
|
210
|
+
*/
|
|
142
211
|
export type Obb = {
|
|
143
212
|
center: number[] | Vector3;
|
|
144
213
|
halfSize: number[] | Vector3;
|
|
145
214
|
quaternion: number[] | Quaternion;
|
|
146
215
|
};
|
|
216
|
+
/**
|
|
217
|
+
* Minimum bounding sphere per I3S spec
|
|
218
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/3DNodeIndexDocument.cmn.md#properties
|
|
219
|
+
*/
|
|
147
220
|
export type Mbs = [number, number, number, number];
|
|
148
221
|
/** SceneLayer3D based on I3S specification - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/3DSceneLayer.cmn.md */
|
|
149
222
|
export type SceneLayer3D = {
|
|
@@ -345,36 +418,31 @@ export type Node3DIndexDocument = {
|
|
|
345
418
|
expires?: string;
|
|
346
419
|
};
|
|
347
420
|
/**
|
|
348
|
-
*
|
|
421
|
+
* LOD selection metrics per I3S spec
|
|
422
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/lodSelection.cmn.md
|
|
349
423
|
*/
|
|
350
|
-
export type I3SMinimalNodeData = {
|
|
351
|
-
id: string;
|
|
352
|
-
url?: string;
|
|
353
|
-
transform?: number[];
|
|
354
|
-
lodSelection?: LodSelection[];
|
|
355
|
-
obb?: Obb;
|
|
356
|
-
mbs?: Mbs;
|
|
357
|
-
contentUrl?: string;
|
|
358
|
-
textureUrl?: string;
|
|
359
|
-
attributeUrls?: string[];
|
|
360
|
-
materialDefinition?: I3SMaterialDefinition;
|
|
361
|
-
textureFormat?: I3STextureFormat;
|
|
362
|
-
textureLoaderOptions?: {
|
|
363
|
-
[key: string]: any;
|
|
364
|
-
};
|
|
365
|
-
children?: NodeReference[];
|
|
366
|
-
isDracoGeometry: boolean;
|
|
367
|
-
};
|
|
368
424
|
export type LodSelection = {
|
|
425
|
+
/** */
|
|
369
426
|
metricType?: string;
|
|
370
427
|
maxError: number;
|
|
371
428
|
};
|
|
429
|
+
/**
|
|
430
|
+
* Node reference per I3S spec
|
|
431
|
+
* @see https://github.com/Esri/i3s-spec/blob/master/docs/1.7/nodeReference.cmn.md
|
|
432
|
+
*/
|
|
372
433
|
export type NodeReference = {
|
|
434
|
+
/** Tree Key ID of the referenced node represented as string. */
|
|
373
435
|
id: string;
|
|
436
|
+
/** Version (store update session ID) of the referenced node. */
|
|
374
437
|
version?: string;
|
|
438
|
+
/** An array of four doubles, corresponding to x, y, z and radius of the minimum bounding sphere of a node. */
|
|
375
439
|
mbs?: Mbs;
|
|
440
|
+
/** Describes oriented bounding box. */
|
|
376
441
|
obb?: Obb;
|
|
442
|
+
/** Number of values per element. */
|
|
377
443
|
href?: string;
|
|
444
|
+
/** Number of features in the referenced node and its descendants, down to the leaf nodes. */
|
|
445
|
+
featureCount?: number;
|
|
378
446
|
};
|
|
379
447
|
export type Resource = {
|
|
380
448
|
href: string;
|
|
@@ -716,7 +784,7 @@ type TextureSetDefinition = {
|
|
|
716
784
|
};
|
|
717
785
|
/** Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/geometryDefinition.cmn.md */
|
|
718
786
|
type GeometryDefinition = {
|
|
719
|
-
topology
|
|
787
|
+
topology?: 'triangle';
|
|
720
788
|
geometryBuffers: GeometryBuffer[];
|
|
721
789
|
};
|
|
722
790
|
/** Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/geometryBuffer.cmn.md */
|
|
@@ -738,7 +806,7 @@ type GeometryBufferItem = {
|
|
|
738
806
|
type: string;
|
|
739
807
|
component: number;
|
|
740
808
|
encoding?: string;
|
|
741
|
-
binding
|
|
809
|
+
binding?: string;
|
|
742
810
|
};
|
|
743
811
|
type AttributeValue = {
|
|
744
812
|
valueType: string;
|