@loaders.gl/3d-tiles 3.2.5 → 3.3.0-alpha.1
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 +290 -91
- package/dist/es5/lib/parsers/parse-3d-tile-header.js +16 -3
- package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/es5/lib/utils/version.js.map +1 -1
- package/dist/esm/lib/parsers/parse-3d-tile-header.js +16 -3
- package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/esm/lib/utils/version.js.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
- package/dist/lib/parsers/parse-3d-tile-header.js +15 -3
- package/package.json +7 -7
- package/src/lib/parsers/parse-3d-tile-header.ts +17 -3
package/dist/dist.min.js
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
};
|
|
15
15
|
var __export = (target, all) => {
|
|
16
16
|
__markAsModule(target);
|
|
17
|
-
for (var
|
|
18
|
-
__defProp(target,
|
|
17
|
+
for (var name9 in all)
|
|
18
|
+
__defProp(target, name9, { get: all[name9], enumerable: true });
|
|
19
19
|
};
|
|
20
20
|
var __reExport = (target, module2, desc) => {
|
|
21
21
|
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
var DEFAULT_VERSION, VERSION;
|
|
65
65
|
var init_version = __esm({
|
|
66
66
|
"../worker-utils/src/lib/env-utils/version.ts"() {
|
|
67
|
-
DEFAULT_VERSION = "
|
|
67
|
+
DEFAULT_VERSION = "beta";
|
|
68
68
|
VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
|
|
69
69
|
if (typeof __VERSION__ === "undefined") {
|
|
70
70
|
console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
@@ -252,9 +252,9 @@
|
|
|
252
252
|
constructor(props) {
|
|
253
253
|
this.terminated = false;
|
|
254
254
|
this._loadableURL = "";
|
|
255
|
-
const { name:
|
|
255
|
+
const { name: name9, source, url } = props;
|
|
256
256
|
assert3(source || url);
|
|
257
|
-
this.name =
|
|
257
|
+
this.name = name9;
|
|
258
258
|
this.source = source;
|
|
259
259
|
this.url = url;
|
|
260
260
|
this.onMessage = NOOP;
|
|
@@ -379,9 +379,9 @@
|
|
|
379
379
|
this.onDebug = props.onDebug;
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
|
-
async startJob(
|
|
382
|
+
async startJob(name9, onMessage2 = (job, type, data) => job.done(data), onError = (job, error) => job.error(error)) {
|
|
383
383
|
const startPromise = new Promise((onStart) => {
|
|
384
|
-
this.jobQueue.push({ name:
|
|
384
|
+
this.jobQueue.push({ name: name9, onMessage: onMessage2, onError, onStart });
|
|
385
385
|
return this;
|
|
386
386
|
});
|
|
387
387
|
this._startQueuedJob();
|
|
@@ -432,8 +432,8 @@
|
|
|
432
432
|
}
|
|
433
433
|
if (this.count < this._getMaxConcurrency()) {
|
|
434
434
|
this.count++;
|
|
435
|
-
const
|
|
436
|
-
return new WorkerThread({ name:
|
|
435
|
+
const name9 = `${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;
|
|
436
|
+
return new WorkerThread({ name: name9, source: this.source, url: this.url });
|
|
437
437
|
}
|
|
438
438
|
return null;
|
|
439
439
|
}
|
|
@@ -485,16 +485,16 @@
|
|
|
485
485
|
}
|
|
486
486
|
}
|
|
487
487
|
getWorkerPool(options) {
|
|
488
|
-
const { name:
|
|
489
|
-
let workerPool = this.workerPools.get(
|
|
488
|
+
const { name: name9, source, url } = options;
|
|
489
|
+
let workerPool = this.workerPools.get(name9);
|
|
490
490
|
if (!workerPool) {
|
|
491
491
|
workerPool = new WorkerPool({
|
|
492
|
-
name:
|
|
492
|
+
name: name9,
|
|
493
493
|
source,
|
|
494
494
|
url
|
|
495
495
|
});
|
|
496
496
|
workerPool.setProps(this._getWorkerPoolProps());
|
|
497
|
-
this.workerPools.set(
|
|
497
|
+
this.workerPools.set(name9, workerPool);
|
|
498
498
|
}
|
|
499
499
|
return workerPool;
|
|
500
500
|
}
|
|
@@ -536,7 +536,7 @@
|
|
|
536
536
|
var init_get_worker_url = __esm({
|
|
537
537
|
"../worker-utils/src/lib/worker-api/get-worker-url.ts"() {
|
|
538
538
|
init_assert2();
|
|
539
|
-
NPM_TAG = "
|
|
539
|
+
NPM_TAG = "beta";
|
|
540
540
|
}
|
|
541
541
|
});
|
|
542
542
|
|
|
@@ -634,7 +634,7 @@
|
|
|
634
634
|
node = __toModule(require_require_utils());
|
|
635
635
|
init_assert2();
|
|
636
636
|
init_version();
|
|
637
|
-
LATEST = "
|
|
637
|
+
LATEST = "beta";
|
|
638
638
|
VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
|
|
639
639
|
loadLibraryPromises = {};
|
|
640
640
|
}
|
|
@@ -663,10 +663,10 @@
|
|
|
663
663
|
return loader.worker && options?.worker;
|
|
664
664
|
}
|
|
665
665
|
async function parseWithWorker(loader, data, options, context, parseOnMainThread) {
|
|
666
|
-
const
|
|
666
|
+
const name9 = loader.id;
|
|
667
667
|
const url = getWorkerURL(loader, options);
|
|
668
668
|
const workerFarm = WorkerFarm.getWorkerFarm(options);
|
|
669
|
-
const workerPool = workerFarm.getWorkerPool({ name:
|
|
669
|
+
const workerPool = workerFarm.getWorkerPool({ name: name9, url });
|
|
670
670
|
options = JSON.parse(JSON.stringify(options));
|
|
671
671
|
context = JSON.parse(JSON.stringify(context || {}));
|
|
672
672
|
const job = await workerPool.startJob("process-on-worker", onMessage.bind(null, parseOnMainThread));
|
|
@@ -4670,7 +4670,7 @@
|
|
|
4670
4670
|
const propNames = Object.getOwnPropertyNames(proto);
|
|
4671
4671
|
for (const key of propNames) {
|
|
4672
4672
|
if (typeof obj[key] === "function") {
|
|
4673
|
-
if (!predefined.find((
|
|
4673
|
+
if (!predefined.find((name9) => key === name9)) {
|
|
4674
4674
|
obj[key] = obj[key].bind(obj);
|
|
4675
4675
|
}
|
|
4676
4676
|
}
|
|
@@ -5564,7 +5564,7 @@
|
|
|
5564
5564
|
const propNames = Object.getOwnPropertyNames(proto);
|
|
5565
5565
|
for (const key of propNames) {
|
|
5566
5566
|
if (typeof obj[key] === "function") {
|
|
5567
|
-
if (!predefined.find((
|
|
5567
|
+
if (!predefined.find((name9) => key === name9)) {
|
|
5568
5568
|
obj[key] = obj[key].bind(obj);
|
|
5569
5569
|
}
|
|
5570
5570
|
}
|
|
@@ -6692,8 +6692,8 @@
|
|
|
6692
6692
|
}
|
|
6693
6693
|
select(...columnNames) {
|
|
6694
6694
|
const nameMap = Object.create(null);
|
|
6695
|
-
for (const
|
|
6696
|
-
nameMap[
|
|
6695
|
+
for (const name9 of columnNames) {
|
|
6696
|
+
nameMap[name9] = true;
|
|
6697
6697
|
}
|
|
6698
6698
|
const selectedFields = this.fields.filter((field) => nameMap[field.name]);
|
|
6699
6699
|
return new Schema(selectedFields, this.metadata);
|
|
@@ -6731,8 +6731,8 @@
|
|
|
6731
6731
|
var init_field = __esm({
|
|
6732
6732
|
"../schema/src/lib/schema/impl/field.ts"() {
|
|
6733
6733
|
Field = class {
|
|
6734
|
-
constructor(
|
|
6735
|
-
this.name =
|
|
6734
|
+
constructor(name9, type, nullable = false, metadata = new Map()) {
|
|
6735
|
+
this.name = name9;
|
|
6736
6736
|
this.type = type;
|
|
6737
6737
|
this.nullable = nullable;
|
|
6738
6738
|
this.metadata = metadata;
|
|
@@ -7719,8 +7719,8 @@
|
|
|
7719
7719
|
}
|
|
7720
7720
|
throw new Error(ERR_TYPE_CONVERSION);
|
|
7721
7721
|
}
|
|
7722
|
-
static fromName(
|
|
7723
|
-
const glType = NAME_TO_GL_TYPE[
|
|
7722
|
+
static fromName(name9) {
|
|
7723
|
+
const glType = NAME_TO_GL_TYPE[name9];
|
|
7724
7724
|
if (!glType) {
|
|
7725
7725
|
throw new Error(ERR_TYPE_CONVERSION);
|
|
7726
7726
|
}
|
|
@@ -8279,10 +8279,10 @@
|
|
|
8279
8279
|
}
|
|
8280
8280
|
return void 0;
|
|
8281
8281
|
}
|
|
8282
|
-
hasProperty(batchId,
|
|
8282
|
+
hasProperty(batchId, name9) {
|
|
8283
8283
|
this._checkBatchId(batchId);
|
|
8284
|
-
assert2(typeof
|
|
8285
|
-
return defined2(this._properties[
|
|
8284
|
+
assert2(typeof name9 === "string", name9);
|
|
8285
|
+
return defined2(this._properties[name9]) || this._hasPropertyInHierarchy(batchId, name9);
|
|
8286
8286
|
}
|
|
8287
8287
|
getPropertyNames(batchId, results) {
|
|
8288
8288
|
this._checkBatchId(batchId);
|
|
@@ -8295,47 +8295,47 @@
|
|
|
8295
8295
|
}
|
|
8296
8296
|
return results;
|
|
8297
8297
|
}
|
|
8298
|
-
getProperty(batchId,
|
|
8298
|
+
getProperty(batchId, name9) {
|
|
8299
8299
|
this._checkBatchId(batchId);
|
|
8300
|
-
assert2(typeof
|
|
8300
|
+
assert2(typeof name9 === "string", name9);
|
|
8301
8301
|
if (this._binaryProperties) {
|
|
8302
|
-
const binaryProperty = this._binaryProperties[
|
|
8302
|
+
const binaryProperty = this._binaryProperties[name9];
|
|
8303
8303
|
if (defined2(binaryProperty)) {
|
|
8304
8304
|
return this._getBinaryProperty(binaryProperty, batchId);
|
|
8305
8305
|
}
|
|
8306
8306
|
}
|
|
8307
|
-
const propertyValues = this._properties[
|
|
8307
|
+
const propertyValues = this._properties[name9];
|
|
8308
8308
|
if (defined2(propertyValues)) {
|
|
8309
8309
|
return clone3(propertyValues[batchId], true);
|
|
8310
8310
|
}
|
|
8311
8311
|
if (this._hierarchy) {
|
|
8312
|
-
const hierarchyProperty = this._getHierarchyProperty(batchId,
|
|
8312
|
+
const hierarchyProperty = this._getHierarchyProperty(batchId, name9);
|
|
8313
8313
|
if (defined2(hierarchyProperty)) {
|
|
8314
8314
|
return hierarchyProperty;
|
|
8315
8315
|
}
|
|
8316
8316
|
}
|
|
8317
8317
|
return void 0;
|
|
8318
8318
|
}
|
|
8319
|
-
setProperty(batchId,
|
|
8319
|
+
setProperty(batchId, name9, value) {
|
|
8320
8320
|
const featureCount = this.featureCount;
|
|
8321
8321
|
this._checkBatchId(batchId);
|
|
8322
|
-
assert2(typeof
|
|
8322
|
+
assert2(typeof name9 === "string", name9);
|
|
8323
8323
|
if (this._binaryProperties) {
|
|
8324
|
-
const binaryProperty = this._binaryProperties[
|
|
8324
|
+
const binaryProperty = this._binaryProperties[name9];
|
|
8325
8325
|
if (binaryProperty) {
|
|
8326
8326
|
this._setBinaryProperty(binaryProperty, batchId, value);
|
|
8327
8327
|
return;
|
|
8328
8328
|
}
|
|
8329
8329
|
}
|
|
8330
8330
|
if (this._hierarchy) {
|
|
8331
|
-
if (this._setHierarchyProperty(this, batchId,
|
|
8331
|
+
if (this._setHierarchyProperty(this, batchId, name9, value)) {
|
|
8332
8332
|
return;
|
|
8333
8333
|
}
|
|
8334
8334
|
}
|
|
8335
|
-
let propertyValues = this._properties[
|
|
8335
|
+
let propertyValues = this._properties[name9];
|
|
8336
8336
|
if (!defined2(propertyValues)) {
|
|
8337
|
-
this._properties[
|
|
8338
|
-
propertyValues = this._properties[
|
|
8337
|
+
this._properties[name9] = new Array(featureCount);
|
|
8338
|
+
propertyValues = this._properties[name9];
|
|
8339
8339
|
}
|
|
8340
8340
|
propertyValues[batchId] = clone3(value, true);
|
|
8341
8341
|
}
|
|
@@ -8353,21 +8353,21 @@
|
|
|
8353
8353
|
}
|
|
8354
8354
|
_initializeBinaryProperties() {
|
|
8355
8355
|
let binaryProperties = null;
|
|
8356
|
-
for (const
|
|
8357
|
-
const property = this._properties[
|
|
8358
|
-
const binaryProperty = this._initializeBinaryProperty(
|
|
8356
|
+
for (const name9 in this._properties) {
|
|
8357
|
+
const property = this._properties[name9];
|
|
8358
|
+
const binaryProperty = this._initializeBinaryProperty(name9, property);
|
|
8359
8359
|
if (binaryProperty) {
|
|
8360
8360
|
binaryProperties = binaryProperties || {};
|
|
8361
|
-
binaryProperties[
|
|
8361
|
+
binaryProperties[name9] = binaryProperty;
|
|
8362
8362
|
}
|
|
8363
8363
|
}
|
|
8364
8364
|
return binaryProperties;
|
|
8365
8365
|
}
|
|
8366
|
-
_initializeBinaryProperty(
|
|
8366
|
+
_initializeBinaryProperty(name9, property) {
|
|
8367
8367
|
if ("byteOffset" in property) {
|
|
8368
8368
|
const tile3DAccessor = property;
|
|
8369
|
-
assert2(this.binary, `Property ${
|
|
8370
|
-
assert2(tile3DAccessor.type, `Property ${
|
|
8369
|
+
assert2(this.binary, `Property ${name9} requires a batch table binary.`);
|
|
8370
|
+
assert2(tile3DAccessor.type, `Property ${name9} requires a type.`);
|
|
8371
8371
|
const accessor = createTypedArrayFromAccessor(tile3DAccessor, this.binary.buffer, this.binary.byteOffset | 0, this.featureCount);
|
|
8372
8372
|
return {
|
|
8373
8373
|
typedArray: accessor.values,
|
|
@@ -8378,14 +8378,14 @@
|
|
|
8378
8378
|
}
|
|
8379
8379
|
return null;
|
|
8380
8380
|
}
|
|
8381
|
-
_hasPropertyInHierarchy(batchId,
|
|
8381
|
+
_hasPropertyInHierarchy(batchId, name9) {
|
|
8382
8382
|
if (!this._hierarchy) {
|
|
8383
8383
|
return false;
|
|
8384
8384
|
}
|
|
8385
8385
|
const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
8386
8386
|
const classId = hierarchy.classIds[instanceIndex];
|
|
8387
8387
|
const instances = hierarchy.classes[classId].instances;
|
|
8388
|
-
return defined2(instances[
|
|
8388
|
+
return defined2(instances[name9]);
|
|
8389
8389
|
});
|
|
8390
8390
|
return defined2(result);
|
|
8391
8391
|
}
|
|
@@ -8393,21 +8393,21 @@
|
|
|
8393
8393
|
traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
8394
8394
|
const classId = hierarchy.classIds[instanceIndex];
|
|
8395
8395
|
const instances = hierarchy.classes[classId].instances;
|
|
8396
|
-
for (const
|
|
8397
|
-
if (instances.hasOwnProperty(
|
|
8398
|
-
if (results.indexOf(
|
|
8399
|
-
results.push(
|
|
8396
|
+
for (const name9 in instances) {
|
|
8397
|
+
if (instances.hasOwnProperty(name9)) {
|
|
8398
|
+
if (results.indexOf(name9) === -1) {
|
|
8399
|
+
results.push(name9);
|
|
8400
8400
|
}
|
|
8401
8401
|
}
|
|
8402
8402
|
}
|
|
8403
8403
|
});
|
|
8404
8404
|
}
|
|
8405
|
-
_getHierarchyProperty(batchId,
|
|
8405
|
+
_getHierarchyProperty(batchId, name9) {
|
|
8406
8406
|
return traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
8407
8407
|
const classId = hierarchy.classIds[instanceIndex];
|
|
8408
8408
|
const instanceClass = hierarchy.classes[classId];
|
|
8409
8409
|
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
8410
|
-
const propertyValues = instanceClass.instances[
|
|
8410
|
+
const propertyValues = instanceClass.instances[name9];
|
|
8411
8411
|
if (defined2(propertyValues)) {
|
|
8412
8412
|
if (defined2(propertyValues.typedArray)) {
|
|
8413
8413
|
return this._getBinaryProperty(propertyValues, indexInClass);
|
|
@@ -8417,14 +8417,14 @@
|
|
|
8417
8417
|
return null;
|
|
8418
8418
|
});
|
|
8419
8419
|
}
|
|
8420
|
-
_setHierarchyProperty(batchTable, batchId,
|
|
8420
|
+
_setHierarchyProperty(batchTable, batchId, name9, value) {
|
|
8421
8421
|
const result = traverseHierarchy(this._hierarchy, batchId, (hierarchy, instanceIndex) => {
|
|
8422
8422
|
const classId = hierarchy.classIds[instanceIndex];
|
|
8423
8423
|
const instanceClass = hierarchy.classes[classId];
|
|
8424
8424
|
const indexInClass = hierarchy.classIndexes[instanceIndex];
|
|
8425
|
-
const propertyValues = instanceClass.instances[
|
|
8425
|
+
const propertyValues = instanceClass.instances[name9];
|
|
8426
8426
|
if (defined2(propertyValues)) {
|
|
8427
|
-
assert2(instanceIndex === batchId, `Inherited property "${
|
|
8427
|
+
assert2(instanceIndex === batchId, `Inherited property "${name9}" is read-only.`);
|
|
8428
8428
|
if (defined2(propertyValues.typedArray)) {
|
|
8429
8429
|
this._setBinaryProperty(propertyValues, indexInClass, value);
|
|
8430
8430
|
} else {
|
|
@@ -8876,7 +8876,7 @@
|
|
|
8876
8876
|
var VERSION8;
|
|
8877
8877
|
var init_version5 = __esm({
|
|
8878
8878
|
"../textures/src/lib/utils/version.ts"() {
|
|
8879
|
-
VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "
|
|
8879
|
+
VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
|
|
8880
8880
|
}
|
|
8881
8881
|
});
|
|
8882
8882
|
|
|
@@ -9948,12 +9948,12 @@
|
|
|
9948
9948
|
return extras[key];
|
|
9949
9949
|
}
|
|
9950
9950
|
getExtension(extensionName) {
|
|
9951
|
-
const isExtension = this.getUsedExtensions().find((
|
|
9951
|
+
const isExtension = this.getUsedExtensions().find((name9) => name9 === extensionName);
|
|
9952
9952
|
const extensions = this.json.extensions || {};
|
|
9953
9953
|
return isExtension ? extensions[extensionName] || true : null;
|
|
9954
9954
|
}
|
|
9955
9955
|
getRequiredExtension(extensionName) {
|
|
9956
|
-
const isRequired = this.getRequiredExtensions().find((
|
|
9956
|
+
const isRequired = this.getRequiredExtensions().find((name9) => name9 === extensionName);
|
|
9957
9957
|
return isRequired ? this.getExtension(extensionName) : null;
|
|
9958
9958
|
}
|
|
9959
9959
|
getRequiredExtensions() {
|
|
@@ -10607,11 +10607,11 @@
|
|
|
10607
10607
|
// ../gltf/src/lib/gltf-utils/gltf-attribute-utils.ts
|
|
10608
10608
|
function getGLTFAccessors(attributes) {
|
|
10609
10609
|
const accessors = {};
|
|
10610
|
-
for (const
|
|
10611
|
-
const attribute = attributes[
|
|
10612
|
-
if (
|
|
10610
|
+
for (const name9 in attributes) {
|
|
10611
|
+
const attribute = attributes[name9];
|
|
10612
|
+
if (name9 !== "indices") {
|
|
10613
10613
|
const glTFAccessor = getGLTFAccessor(attribute);
|
|
10614
|
-
accessors[
|
|
10614
|
+
accessors[name9] = glTFAccessor;
|
|
10615
10615
|
}
|
|
10616
10616
|
}
|
|
10617
10617
|
return accessors;
|
|
@@ -10774,14 +10774,201 @@
|
|
|
10774
10774
|
}
|
|
10775
10775
|
});
|
|
10776
10776
|
|
|
10777
|
+
// ../gltf/src/lib/gltf-utils/gltf-constants.ts
|
|
10778
|
+
var COMPONENTS, BYTES;
|
|
10779
|
+
var init_gltf_constants = __esm({
|
|
10780
|
+
"../gltf/src/lib/gltf-utils/gltf-constants.ts"() {
|
|
10781
|
+
COMPONENTS = {
|
|
10782
|
+
SCALAR: 1,
|
|
10783
|
+
VEC2: 2,
|
|
10784
|
+
VEC3: 3,
|
|
10785
|
+
VEC4: 4,
|
|
10786
|
+
MAT2: 4,
|
|
10787
|
+
MAT3: 9,
|
|
10788
|
+
MAT4: 16
|
|
10789
|
+
};
|
|
10790
|
+
BYTES = {
|
|
10791
|
+
5120: 1,
|
|
10792
|
+
5121: 1,
|
|
10793
|
+
5122: 2,
|
|
10794
|
+
5123: 2,
|
|
10795
|
+
5125: 4,
|
|
10796
|
+
5126: 4
|
|
10797
|
+
};
|
|
10798
|
+
}
|
|
10799
|
+
});
|
|
10800
|
+
|
|
10801
|
+
// ../gltf/src/lib/extensions/KHR_texture_transform.ts
|
|
10802
|
+
var KHR_texture_transform_exports = {};
|
|
10803
|
+
__export(KHR_texture_transform_exports, {
|
|
10804
|
+
decode: () => decode4,
|
|
10805
|
+
name: () => name5
|
|
10806
|
+
});
|
|
10807
|
+
async function decode4(gltfData, options) {
|
|
10808
|
+
const gltfScenegraph = new GLTFScenegraph(gltfData);
|
|
10809
|
+
const extension = gltfScenegraph.getExtension(EXT_MESHOPT_TRANSFORM);
|
|
10810
|
+
if (!extension) {
|
|
10811
|
+
return;
|
|
10812
|
+
}
|
|
10813
|
+
const materials = gltfData.json.materials || [];
|
|
10814
|
+
for (let i2 = 0; i2 < materials.length; i2++) {
|
|
10815
|
+
transformTexCoords(i2, gltfData);
|
|
10816
|
+
}
|
|
10817
|
+
}
|
|
10818
|
+
function transformTexCoords(materialIndex, gltfData) {
|
|
10819
|
+
const processedTexCoords = [];
|
|
10820
|
+
const material = gltfData.json.materials?.[materialIndex];
|
|
10821
|
+
const baseColorTexture = material?.pbrMetallicRoughness?.baseColorTexture;
|
|
10822
|
+
if (baseColorTexture) {
|
|
10823
|
+
transformPrimitives(gltfData, materialIndex, baseColorTexture, processedTexCoords);
|
|
10824
|
+
}
|
|
10825
|
+
const emisiveTexture = material?.emissiveTexture;
|
|
10826
|
+
if (emisiveTexture) {
|
|
10827
|
+
transformPrimitives(gltfData, materialIndex, emisiveTexture, processedTexCoords);
|
|
10828
|
+
}
|
|
10829
|
+
const normalTexture = material?.normalTexture;
|
|
10830
|
+
if (normalTexture) {
|
|
10831
|
+
transformPrimitives(gltfData, materialIndex, normalTexture, processedTexCoords);
|
|
10832
|
+
}
|
|
10833
|
+
const occlusionTexture = material?.occlusionTexture;
|
|
10834
|
+
if (occlusionTexture) {
|
|
10835
|
+
transformPrimitives(gltfData, materialIndex, occlusionTexture, processedTexCoords);
|
|
10836
|
+
}
|
|
10837
|
+
const metallicRoughnessTexture = material?.pbrMetallicRoughness?.metallicRoughnessTexture;
|
|
10838
|
+
if (metallicRoughnessTexture) {
|
|
10839
|
+
transformPrimitives(gltfData, materialIndex, metallicRoughnessTexture, processedTexCoords);
|
|
10840
|
+
}
|
|
10841
|
+
}
|
|
10842
|
+
function transformPrimitives(gltfData, materialIndex, texture, processedTexCoords) {
|
|
10843
|
+
const transformParameters = getTransformParameters(texture, processedTexCoords);
|
|
10844
|
+
if (!transformParameters) {
|
|
10845
|
+
return;
|
|
10846
|
+
}
|
|
10847
|
+
const meshes = gltfData.json.meshes || [];
|
|
10848
|
+
for (const mesh of meshes) {
|
|
10849
|
+
for (const primitive of mesh.primitives) {
|
|
10850
|
+
const material = primitive.material;
|
|
10851
|
+
if (Number.isFinite(material) && materialIndex === material) {
|
|
10852
|
+
transformPrimitive(gltfData, primitive, transformParameters);
|
|
10853
|
+
}
|
|
10854
|
+
}
|
|
10855
|
+
}
|
|
10856
|
+
}
|
|
10857
|
+
function getTransformParameters(texture, processedTexCoords) {
|
|
10858
|
+
const textureInfo = texture.extensions?.[EXT_MESHOPT_TRANSFORM];
|
|
10859
|
+
const { texCoord: originalTexCoord = 0 } = texture;
|
|
10860
|
+
const { texCoord = originalTexCoord } = textureInfo;
|
|
10861
|
+
const isProcessed = processedTexCoords.findIndex(([original, newTexCoord]) => original === originalTexCoord && newTexCoord === texCoord) !== -1;
|
|
10862
|
+
if (!isProcessed) {
|
|
10863
|
+
const matrix = makeTransformationMatrix(textureInfo);
|
|
10864
|
+
if (originalTexCoord !== texCoord) {
|
|
10865
|
+
texture.texCoord = texCoord;
|
|
10866
|
+
}
|
|
10867
|
+
processedTexCoords.push([originalTexCoord, texCoord]);
|
|
10868
|
+
return { originalTexCoord, texCoord, matrix };
|
|
10869
|
+
}
|
|
10870
|
+
return null;
|
|
10871
|
+
}
|
|
10872
|
+
function transformPrimitive(gltfData, primitive, transformParameters) {
|
|
10873
|
+
const { originalTexCoord, texCoord, matrix } = transformParameters;
|
|
10874
|
+
const texCoordAccessor = primitive.attributes[`TEXCOORD_${originalTexCoord}`];
|
|
10875
|
+
if (Number.isFinite(texCoordAccessor)) {
|
|
10876
|
+
const accessor = gltfData.json.accessors?.[texCoordAccessor];
|
|
10877
|
+
if (accessor && accessor.bufferView) {
|
|
10878
|
+
const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
|
|
10879
|
+
if (bufferView) {
|
|
10880
|
+
const { arrayBuffer, byteOffset: bufferByteOffset } = gltfData.buffers[bufferView.buffer];
|
|
10881
|
+
const byteOffset = (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);
|
|
10882
|
+
const { ArrayType, length: length4 } = getAccessorArrayTypeAndLength(accessor, bufferView);
|
|
10883
|
+
const bytes = BYTES[accessor.componentType];
|
|
10884
|
+
const components = COMPONENTS[accessor.type];
|
|
10885
|
+
const elementAddressScale = bufferView.byteStride || bytes * components;
|
|
10886
|
+
const result = new Float32Array(length4);
|
|
10887
|
+
for (let i2 = 0; i2 < accessor.count; i2++) {
|
|
10888
|
+
const uv = new ArrayType(arrayBuffer, byteOffset + i2 * elementAddressScale, 2);
|
|
10889
|
+
scratchVector5.set(uv[0], uv[1], 1);
|
|
10890
|
+
scratchVector5.transformByMatrix3(matrix);
|
|
10891
|
+
result.set([scratchVector5[0], scratchVector5[1]], i2 * components);
|
|
10892
|
+
}
|
|
10893
|
+
if (originalTexCoord === texCoord) {
|
|
10894
|
+
updateGltf(accessor, bufferView, gltfData.buffers, result);
|
|
10895
|
+
} else {
|
|
10896
|
+
createAttribute(texCoord, accessor, primitive, gltfData, result);
|
|
10897
|
+
}
|
|
10898
|
+
}
|
|
10899
|
+
}
|
|
10900
|
+
}
|
|
10901
|
+
}
|
|
10902
|
+
function updateGltf(accessor, bufferView, buffers, newTexCoordArray) {
|
|
10903
|
+
accessor.componentType = 5126;
|
|
10904
|
+
buffers.push({
|
|
10905
|
+
arrayBuffer: newTexCoordArray.buffer,
|
|
10906
|
+
byteOffset: 0,
|
|
10907
|
+
byteLength: newTexCoordArray.buffer.byteLength
|
|
10908
|
+
});
|
|
10909
|
+
bufferView.buffer = buffers.length - 1;
|
|
10910
|
+
bufferView.byteLength = newTexCoordArray.buffer.byteLength;
|
|
10911
|
+
bufferView.byteOffset = 0;
|
|
10912
|
+
delete bufferView.byteStride;
|
|
10913
|
+
}
|
|
10914
|
+
function createAttribute(newTexCoord, originalAccessor, primitive, gltfData, newTexCoordArray) {
|
|
10915
|
+
gltfData.buffers.push({
|
|
10916
|
+
arrayBuffer: newTexCoordArray.buffer,
|
|
10917
|
+
byteOffset: 0,
|
|
10918
|
+
byteLength: newTexCoordArray.buffer.byteLength
|
|
10919
|
+
});
|
|
10920
|
+
const bufferViews = gltfData.json.bufferViews;
|
|
10921
|
+
if (!bufferViews) {
|
|
10922
|
+
return;
|
|
10923
|
+
}
|
|
10924
|
+
bufferViews.push({
|
|
10925
|
+
buffer: gltfData.buffers.length - 1,
|
|
10926
|
+
byteLength: newTexCoordArray.buffer.byteLength,
|
|
10927
|
+
byteOffset: 0
|
|
10928
|
+
});
|
|
10929
|
+
const accessors = gltfData.json.accessors;
|
|
10930
|
+
if (!accessors) {
|
|
10931
|
+
return;
|
|
10932
|
+
}
|
|
10933
|
+
accessors.push({
|
|
10934
|
+
bufferView: bufferViews?.length - 1,
|
|
10935
|
+
byteOffset: 0,
|
|
10936
|
+
componentType: 5126,
|
|
10937
|
+
count: originalAccessor.count,
|
|
10938
|
+
type: "VEC2"
|
|
10939
|
+
});
|
|
10940
|
+
primitive.attributes[`TEXCOORD_${newTexCoord}`] = accessors.length - 1;
|
|
10941
|
+
}
|
|
10942
|
+
function makeTransformationMatrix(extensionData) {
|
|
10943
|
+
const { offset = [0, 0], rotation = 0, scale: scale5 = [1, 1] } = extensionData;
|
|
10944
|
+
const translationMatirx = new Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);
|
|
10945
|
+
const rotationMatirx = scratchRotationMatrix.set(Math.cos(rotation), Math.sin(rotation), 0, -Math.sin(rotation), Math.cos(rotation), 0, 0, 0, 1);
|
|
10946
|
+
const scaleMatrix = scratchScaleMatrix.set(scale5[0], 0, 0, 0, scale5[1], 0, 0, 0, 1);
|
|
10947
|
+
return translationMatirx.multiplyRight(rotationMatirx).multiplyRight(scaleMatrix);
|
|
10948
|
+
}
|
|
10949
|
+
var EXT_MESHOPT_TRANSFORM, name5, scratchVector5, scratchRotationMatrix, scratchScaleMatrix;
|
|
10950
|
+
var init_KHR_texture_transform = __esm({
|
|
10951
|
+
"../gltf/src/lib/extensions/KHR_texture_transform.ts"() {
|
|
10952
|
+
init_esm();
|
|
10953
|
+
init_gltf_utils();
|
|
10954
|
+
init_gltf_constants();
|
|
10955
|
+
init_gltf_scenegraph();
|
|
10956
|
+
EXT_MESHOPT_TRANSFORM = "KHR_texture_transform";
|
|
10957
|
+
name5 = EXT_MESHOPT_TRANSFORM;
|
|
10958
|
+
scratchVector5 = new Vector3();
|
|
10959
|
+
scratchRotationMatrix = new Matrix3();
|
|
10960
|
+
scratchScaleMatrix = new Matrix3();
|
|
10961
|
+
}
|
|
10962
|
+
});
|
|
10963
|
+
|
|
10777
10964
|
// ../gltf/src/lib/extensions/deprecated/KHR_lights_punctual.ts
|
|
10778
10965
|
var KHR_lights_punctual_exports = {};
|
|
10779
10966
|
__export(KHR_lights_punctual_exports, {
|
|
10780
|
-
decode: () =>
|
|
10967
|
+
decode: () => decode5,
|
|
10781
10968
|
encode: () => encode2,
|
|
10782
|
-
name: () =>
|
|
10969
|
+
name: () => name6
|
|
10783
10970
|
});
|
|
10784
|
-
async function
|
|
10971
|
+
async function decode5(gltfData) {
|
|
10785
10972
|
const gltfScenegraph = new GLTFScenegraph(gltfData);
|
|
10786
10973
|
const { json } = gltfScenegraph;
|
|
10787
10974
|
const extension = gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);
|
|
@@ -10814,24 +11001,24 @@
|
|
|
10814
11001
|
delete gltfScenegraph.json.lights;
|
|
10815
11002
|
}
|
|
10816
11003
|
}
|
|
10817
|
-
var KHR_LIGHTS_PUNCTUAL,
|
|
11004
|
+
var KHR_LIGHTS_PUNCTUAL, name6;
|
|
10818
11005
|
var init_KHR_lights_punctual = __esm({
|
|
10819
11006
|
"../gltf/src/lib/extensions/deprecated/KHR_lights_punctual.ts"() {
|
|
10820
11007
|
init_assert8();
|
|
10821
11008
|
init_gltf_scenegraph();
|
|
10822
11009
|
KHR_LIGHTS_PUNCTUAL = "KHR_lights_punctual";
|
|
10823
|
-
|
|
11010
|
+
name6 = KHR_LIGHTS_PUNCTUAL;
|
|
10824
11011
|
}
|
|
10825
11012
|
});
|
|
10826
11013
|
|
|
10827
11014
|
// ../gltf/src/lib/extensions/deprecated/KHR_materials_unlit.ts
|
|
10828
11015
|
var KHR_materials_unlit_exports = {};
|
|
10829
11016
|
__export(KHR_materials_unlit_exports, {
|
|
10830
|
-
decode: () =>
|
|
11017
|
+
decode: () => decode6,
|
|
10831
11018
|
encode: () => encode3,
|
|
10832
|
-
name: () =>
|
|
11019
|
+
name: () => name7
|
|
10833
11020
|
});
|
|
10834
|
-
async function
|
|
11021
|
+
async function decode6(gltfData) {
|
|
10835
11022
|
const gltfScenegraph = new GLTFScenegraph(gltfData);
|
|
10836
11023
|
const { json } = gltfScenegraph;
|
|
10837
11024
|
gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);
|
|
@@ -10856,23 +11043,23 @@
|
|
|
10856
11043
|
}
|
|
10857
11044
|
}
|
|
10858
11045
|
}
|
|
10859
|
-
var KHR_MATERIALS_UNLIT,
|
|
11046
|
+
var KHR_MATERIALS_UNLIT, name7;
|
|
10860
11047
|
var init_KHR_materials_unlit = __esm({
|
|
10861
11048
|
"../gltf/src/lib/extensions/deprecated/KHR_materials_unlit.ts"() {
|
|
10862
11049
|
init_gltf_scenegraph();
|
|
10863
11050
|
KHR_MATERIALS_UNLIT = "KHR_materials_unlit";
|
|
10864
|
-
|
|
11051
|
+
name7 = KHR_MATERIALS_UNLIT;
|
|
10865
11052
|
}
|
|
10866
11053
|
});
|
|
10867
11054
|
|
|
10868
11055
|
// ../gltf/src/lib/extensions/deprecated/KHR_techniques_webgl.ts
|
|
10869
11056
|
var KHR_techniques_webgl_exports = {};
|
|
10870
11057
|
__export(KHR_techniques_webgl_exports, {
|
|
10871
|
-
decode: () =>
|
|
11058
|
+
decode: () => decode7,
|
|
10872
11059
|
encode: () => encode4,
|
|
10873
|
-
name: () =>
|
|
11060
|
+
name: () => name8
|
|
10874
11061
|
});
|
|
10875
|
-
async function
|
|
11062
|
+
async function decode7(gltfData) {
|
|
10876
11063
|
const gltfScenegraph = new GLTFScenegraph(gltfData);
|
|
10877
11064
|
const { json } = gltfScenegraph;
|
|
10878
11065
|
const extension = gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);
|
|
@@ -10924,12 +11111,12 @@
|
|
|
10924
11111
|
});
|
|
10925
11112
|
return values;
|
|
10926
11113
|
}
|
|
10927
|
-
var KHR_TECHNIQUES_WEBGL,
|
|
11114
|
+
var KHR_TECHNIQUES_WEBGL, name8;
|
|
10928
11115
|
var init_KHR_techniques_webgl = __esm({
|
|
10929
11116
|
"../gltf/src/lib/extensions/deprecated/KHR_techniques_webgl.ts"() {
|
|
10930
11117
|
init_gltf_scenegraph();
|
|
10931
11118
|
KHR_TECHNIQUES_WEBGL = "KHR_techniques_webgl";
|
|
10932
|
-
|
|
11119
|
+
name8 = KHR_TECHNIQUES_WEBGL;
|
|
10933
11120
|
}
|
|
10934
11121
|
});
|
|
10935
11122
|
|
|
@@ -10958,6 +11145,7 @@
|
|
|
10958
11145
|
init_EXT_texture_webp();
|
|
10959
11146
|
init_KHR_texture_basisu();
|
|
10960
11147
|
init_KHR_draco_mesh_compression();
|
|
11148
|
+
init_KHR_texture_transform();
|
|
10961
11149
|
init_KHR_lights_punctual();
|
|
10962
11150
|
init_KHR_materials_unlit();
|
|
10963
11151
|
init_KHR_techniques_webgl();
|
|
@@ -10968,7 +11156,8 @@
|
|
|
10968
11156
|
KHR_draco_mesh_compression_exports,
|
|
10969
11157
|
KHR_lights_punctual_exports,
|
|
10970
11158
|
KHR_materials_unlit_exports,
|
|
10971
|
-
KHR_techniques_webgl_exports
|
|
11159
|
+
KHR_techniques_webgl_exports,
|
|
11160
|
+
KHR_texture_transform_exports
|
|
10972
11161
|
];
|
|
10973
11162
|
}
|
|
10974
11163
|
});
|
|
@@ -11199,20 +11388,20 @@
|
|
|
11199
11388
|
|
|
11200
11389
|
// ../gltf/src/lib/api/post-process-gltf.ts
|
|
11201
11390
|
function getBytesFromComponentType(componentType) {
|
|
11202
|
-
return
|
|
11391
|
+
return BYTES2[componentType];
|
|
11203
11392
|
}
|
|
11204
11393
|
function getSizeFromAccessorType(type) {
|
|
11205
|
-
return
|
|
11394
|
+
return COMPONENTS2[type];
|
|
11206
11395
|
}
|
|
11207
11396
|
function postProcessGLTF(gltf, options) {
|
|
11208
11397
|
return new GLTFPostProcessor().postProcess(gltf, options);
|
|
11209
11398
|
}
|
|
11210
|
-
var
|
|
11399
|
+
var COMPONENTS2, BYTES2, GL_SAMPLER, SAMPLER_PARAMETER_GLTF_TO_GL, DEFAULT_SAMPLER, GLTFPostProcessor;
|
|
11211
11400
|
var init_post_process_gltf = __esm({
|
|
11212
11401
|
"../gltf/src/lib/api/post-process-gltf.ts"() {
|
|
11213
11402
|
init_assert8();
|
|
11214
11403
|
init_gltf_utils();
|
|
11215
|
-
|
|
11404
|
+
COMPONENTS2 = {
|
|
11216
11405
|
SCALAR: 1,
|
|
11217
11406
|
VEC2: 2,
|
|
11218
11407
|
VEC3: 3,
|
|
@@ -11221,7 +11410,7 @@
|
|
|
11221
11410
|
MAT3: 9,
|
|
11222
11411
|
MAT4: 16
|
|
11223
11412
|
};
|
|
11224
|
-
|
|
11413
|
+
BYTES2 = {
|
|
11225
11414
|
5120: 1,
|
|
11226
11415
|
5121: 1,
|
|
11227
11416
|
5122: 2,
|
|
@@ -12160,8 +12349,8 @@
|
|
|
12160
12349
|
}
|
|
12161
12350
|
return subtree;
|
|
12162
12351
|
}
|
|
12163
|
-
async function getExplicitBitstream(subtree,
|
|
12164
|
-
const bufferViewIndex = subtree[
|
|
12352
|
+
async function getExplicitBitstream(subtree, name9, internalBinaryBuffer) {
|
|
12353
|
+
const bufferViewIndex = subtree[name9].bufferView;
|
|
12165
12354
|
const bufferView = subtree.bufferViews[bufferViewIndex];
|
|
12166
12355
|
const buffer = subtree.buffers[bufferView.buffer];
|
|
12167
12356
|
if (buffer.uri) {
|
|
@@ -12418,13 +12607,23 @@
|
|
|
12418
12607
|
return refine;
|
|
12419
12608
|
}
|
|
12420
12609
|
}
|
|
12610
|
+
function resolveUri(uri, basePath) {
|
|
12611
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
12612
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
12613
|
+
const url = new URL(uri, `${basePath}/`);
|
|
12614
|
+
return decodeURI(url.toString());
|
|
12615
|
+
} else if (uri.startsWith("/")) {
|
|
12616
|
+
return uri;
|
|
12617
|
+
}
|
|
12618
|
+
return `${basePath}/${uri}`;
|
|
12619
|
+
}
|
|
12421
12620
|
function normalizeTileData(tile, options) {
|
|
12422
12621
|
if (!tile) {
|
|
12423
12622
|
return null;
|
|
12424
12623
|
}
|
|
12425
12624
|
if (tile.content) {
|
|
12426
12625
|
const contentUri = tile.content.uri || tile.content.url;
|
|
12427
|
-
tile.contentUrl =
|
|
12626
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
12428
12627
|
}
|
|
12429
12628
|
tile.id = tile.contentUrl;
|
|
12430
12629
|
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -12462,9 +12661,9 @@
|
|
|
12462
12661
|
subtrees: { uri: subtreesUriTemplate }
|
|
12463
12662
|
} = implicitTilingExtension;
|
|
12464
12663
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
12465
|
-
const rootSubtreeUrl =
|
|
12664
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
12466
12665
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
12467
|
-
const contentUrlTemplate =
|
|
12666
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
12468
12667
|
const refine = tileset.root.refine;
|
|
12469
12668
|
const rootLodMetricValue = tileset.root.geometricError;
|
|
12470
12669
|
const rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -66,6 +66,19 @@ function getRefine(refine) {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
function resolveUri(uri, basePath) {
|
|
70
|
+
var urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
71
|
+
|
|
72
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
73
|
+
var url = new URL(uri, "".concat(basePath, "/"));
|
|
74
|
+
return decodeURI(url.toString());
|
|
75
|
+
} else if (uri.startsWith('/')) {
|
|
76
|
+
return uri;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return "".concat(basePath, "/").concat(uri);
|
|
80
|
+
}
|
|
81
|
+
|
|
69
82
|
function normalizeTileData(tile, options) {
|
|
70
83
|
if (!tile) {
|
|
71
84
|
return null;
|
|
@@ -73,7 +86,7 @@ function normalizeTileData(tile, options) {
|
|
|
73
86
|
|
|
74
87
|
if (tile.content) {
|
|
75
88
|
var contentUri = tile.content.uri || tile.content.url;
|
|
76
|
-
tile.contentUrl =
|
|
89
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
77
90
|
}
|
|
78
91
|
|
|
79
92
|
tile.id = tile.contentUrl;
|
|
@@ -139,13 +152,13 @@ function _normalizeImplicitTileHeaders() {
|
|
|
139
152
|
implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
140
153
|
subdivisionScheme = implicitTilingExtension.subdivisionScheme, maximumLevel = implicitTilingExtension.maximumLevel, subtreeLevels = implicitTilingExtension.subtreeLevels, subtreesUriTemplate = implicitTilingExtension.subtrees.uri;
|
|
141
154
|
subtreeUrl = (0, _parse3dImplicitTiles.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
142
|
-
rootSubtreeUrl =
|
|
155
|
+
rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
143
156
|
_context.next = 9;
|
|
144
157
|
return (0, _core.load)(rootSubtreeUrl, _tile3dSubtreeLoader.Tile3DSubtreeLoader);
|
|
145
158
|
|
|
146
159
|
case 9:
|
|
147
160
|
rootSubtree = _context.sent;
|
|
148
|
-
contentUrlTemplate =
|
|
161
|
+
contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
149
162
|
refine = tileset.root.refine;
|
|
150
163
|
rootLodMetricValue = tileset.root.geometricError;
|
|
151
164
|
rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","normalizeTileData","options","content","contentUri","uri","url","basePath","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = `${options.basePath}/${contentUri}`;\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = `${basePath}/${subtreeUrl}`;\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = `${basePath}/${tileset.root.content.uri}`;\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","subtreeUrl","rootSubtreeUrl","Tile3DSubtreeLoader","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.VERSION = void 0;
|
|
7
|
-
var VERSION = typeof "3.
|
|
7
|
+
var VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : '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"}
|
|
@@ -41,6 +41,19 @@ function getRefine(refine) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
function resolveUri(uri, basePath) {
|
|
45
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
46
|
+
|
|
47
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
48
|
+
const url = new URL(uri, "".concat(basePath, "/"));
|
|
49
|
+
return decodeURI(url.toString());
|
|
50
|
+
} else if (uri.startsWith('/')) {
|
|
51
|
+
return uri;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return "".concat(basePath, "/").concat(uri);
|
|
55
|
+
}
|
|
56
|
+
|
|
44
57
|
export function normalizeTileData(tile, options) {
|
|
45
58
|
if (!tile) {
|
|
46
59
|
return null;
|
|
@@ -48,7 +61,7 @@ export function normalizeTileData(tile, options) {
|
|
|
48
61
|
|
|
49
62
|
if (tile.content) {
|
|
50
63
|
const contentUri = tile.content.uri || tile.content.url;
|
|
51
|
-
tile.contentUrl =
|
|
64
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
52
65
|
}
|
|
53
66
|
|
|
54
67
|
tile.id = tile.contentUrl;
|
|
@@ -95,9 +108,9 @@ export async function normalizeImplicitTileHeaders(tileset) {
|
|
|
95
108
|
}
|
|
96
109
|
} = implicitTilingExtension;
|
|
97
110
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
98
|
-
const rootSubtreeUrl =
|
|
111
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
99
112
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
100
|
-
const contentUrlTemplate =
|
|
113
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
101
114
|
const refine = tileset.root.refine;
|
|
102
115
|
const rootLodMetricValue = tileset.root.geometricError;
|
|
103
116
|
const rootBoundingVolume = tileset.root.boundingVolume;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","normalizeTileData","options","content","contentUri","uri","url","basePath","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","subtreeUrl","rootSubtreeUrl","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = `${options.basePath}/${contentUri}`;\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = `${basePath}/${subtreeUrl}`;\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = `${basePath}/${tileset.root.content.uri}`;\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","stack","push","length","children","childHeader","normalizeImplicitTileHeaders","implicitTilingExtension","extensions","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","subtreeUrl","rootSubtreeUrl","rootSubtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","normalizeImplicitTileData","subtree","replace"],"mappings":"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,SAASG,UAAT,CAAoBC,GAApB,EAAyBC,QAAzB,EAAmC;AAEjC,QAAMC,cAAc,GAAG,sBAAvB;;AAEA,MAAIA,cAAc,CAACC,IAAf,CAAoBF,QAApB,CAAJ,EAAmC;AACjC,UAAMG,GAAG,GAAG,IAAIC,GAAJ,CAAQL,GAAR,YAAgBC,QAAhB,OAAZ;AACA,WAAOK,SAAS,CAACF,GAAG,CAACG,QAAJ,EAAD,CAAhB;AACD,GAHD,MAGO,IAAIP,GAAG,CAACQ,UAAJ,CAAe,GAAf,CAAJ,EAAyB;AAC9B,WAAOR,GAAP;AACD;;AAED,mBAAUC,QAAV,cAAsBD,GAAtB;AACD;;AAED,OAAO,SAASS,iBAAT,CAA2BtB,IAA3B,EAAiCuB,OAAjC,EAA0C;AAC/C,MAAI,CAACvB,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AACD,MAAIA,IAAI,CAACwB,OAAT,EAAkB;AAChB,UAAMC,UAAU,GAAGzB,IAAI,CAACwB,OAAL,CAAaX,GAAb,IAAoBb,IAAI,CAACwB,OAAL,CAAaP,GAApD;AACAjB,IAAAA,IAAI,CAACC,UAAL,GAAkBW,UAAU,CAACa,UAAD,EAAaF,OAAO,CAACT,QAArB,CAA5B;AACD;;AACDd,EAAAA,IAAI,CAAC0B,EAAL,GAAU1B,IAAI,CAACC,UAAf;AACAD,EAAAA,IAAI,CAAC2B,aAAL,GAAqBjC,eAAe,CAACkC,eAArC;AACA5B,EAAAA,IAAI,CAAC6B,cAAL,GAAsB7B,IAAI,CAAC8B,cAA3B;AACA9B,EAAAA,IAAI,CAAC+B,eAAL,GAAuB/B,IAAI,CAACgC,SAA5B;AACAhC,EAAAA,IAAI,CAACiC,IAAL,GAAYlC,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACS,MAAL,GAAcD,SAAS,CAACR,IAAI,CAACS,MAAN,CAAvB;AAEA,SAAOT,IAAP;AACD;AAGD,OAAO,SAASkC,oBAAT,CAA8BC,OAA9B,EAAuC;AAC5C,QAAMrB,QAAQ,GAAGqB,OAAO,CAACrB,QAAzB;AACA,QAAMsB,IAAI,GAAGd,iBAAiB,CAACa,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,UAAMvC,IAAI,GAAGqC,KAAK,CAAChC,GAAN,MAAe,EAA5B;AACA,UAAMmC,QAAQ,GAAGxC,IAAI,CAACwC,QAAL,IAAiB,EAAlC;;AACA,SAAK,MAAMC,WAAX,IAA0BD,QAA1B,EAAoC;AAClClB,MAAAA,iBAAiB,CAACmB,WAAD,EAAc;AAAC3B,QAAAA;AAAD,OAAd,CAAjB;AACAuB,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,QAAMtB,QAAQ,GAAGqB,OAAO,CAACrB,QAAzB;AACA,QAAM6B,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;AAACnC,MAAAA,GAAG,EAAEoC;AAAN;AAJN,MAKFN,uBALJ;AAMA,QAAMO,UAAU,GAAGpD,yBAAyB,CAACmD,mBAAD,EAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,CAA5C;AACA,QAAME,cAAc,GAAGvC,UAAU,CAACsC,UAAD,EAAapC,QAAb,CAAjC;AACA,QAAMsC,WAAW,GAAG,MAAM3D,IAAI,CAAC0D,cAAD,EAAiB3D,mBAAjB,CAA9B;AACA,QAAM6D,kBAAkB,GAAGzC,UAAU,CAACuB,OAAO,CAACC,IAAR,CAAaZ,OAAb,CAAqBX,GAAtB,EAA2BC,QAA3B,CAArC;AACA,QAAML,MAAM,GAAG0B,OAAO,CAACC,IAAR,CAAa3B,MAA5B;AAEA,QAAM6C,kBAAkB,GAAGnB,OAAO,CAACC,IAAR,CAAaN,cAAxC;AACA,QAAMyB,kBAAkB,GAAGpB,OAAO,CAACC,IAAR,CAAaoB,cAAxC;AAEA,QAAMjC,OAAO,GAAG;AACd8B,IAAAA,kBADc;AAEdJ,IAAAA,mBAFc;AAGdJ,IAAAA,iBAHc;AAIdE,IAAAA,aAJc;AAKdD,IAAAA,YALc;AAMdrC,IAAAA,MANc;AAOdK,IAAAA,QAPc;AAQda,IAAAA,aAAa,EAAEjC,eAAe,CAACkC,eARjB;AASd0B,IAAAA,kBATc;AAUdC,IAAAA,kBAVc;AAWdxD,IAAAA,WAXc;AAYdS,IAAAA;AAZc,GAAhB;AAeA,SAAO,MAAMiD,yBAAyB,CAACtB,OAAO,CAACC,IAAT,EAAegB,WAAf,EAA4B7B,OAA5B,CAAtC;AACD;AASD,OAAO,eAAekC,yBAAf,CAAyCzD,IAAzC,EAA+CoD,WAA/C,EAAqE7B,OAArE,EAAmF;AACxF,MAAI,CAACvB,IAAL,EAAW;AACT,WAAO,IAAP;AACD;;AAEDA,EAAAA,IAAI,CAAC2B,aAAL,GAAqBjC,eAAe,CAACkC,eAArC;AACA5B,EAAAA,IAAI,CAAC6B,cAAL,GAAsB7B,IAAI,CAAC8B,cAA3B;AACA9B,EAAAA,IAAI,CAAC+B,eAAL,GAAuB/B,IAAI,CAACgC,SAA5B;AAEA,QAAM;AAACQ,IAAAA,QAAD;AAAWvC,IAAAA;AAAX,MAAyB,MAAMJ,kBAAkB,CAAC;AAAC6D,IAAAA,OAAO,EAAEN,WAAV;AAAuB7B,IAAAA;AAAvB,GAAD,CAAvD;;AAEA,MAAItB,UAAJ,EAAgB;AACdD,IAAAA,IAAI,CAACC,UAAL,GAAkBA,UAAlB;AACAD,IAAAA,IAAI,CAACwB,OAAL,GAAe;AAACX,MAAAA,GAAG,EAAEZ,UAAU,CAAC0D,OAAX,WAAsBpC,OAAO,CAACT,QAA9B,QAA2C,EAA3C;AAAN,KAAf;AACD;;AAEDd,EAAAA,IAAI,CAACS,MAAL,GAAcD,SAAS,CAACR,IAAI,CAACS,MAAN,CAAvB;AACAT,EAAAA,IAAI,CAACiC,IAAL,GAAYlC,WAAW,CAACC,IAAD,CAAvB;AACAA,EAAAA,IAAI,CAACwC,QAAL,GAAgBA,QAAhB;AACAxC,EAAAA,IAAI,CAAC0B,EAAL,GAAU1B,IAAI,CAACC,UAAf;AAEA,SAAOD,IAAP;AACD","sourcesContent":["import {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport function normalizeTileHeaders(tileset) {\n const basePath = tileset.basePath;\n const root = normalizeTileData(tileset.root, tileset);\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (const childHeader of children) {\n normalizeTileData(childHeader, {basePath});\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(tileset: Tileset3D) {\n if (!tileset.root) {\n return null;\n }\n\n const basePath = tileset.basePath;\n const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);\n const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);\n const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);\n const refine = tileset.root.refine;\n // @ts-ignore\n const rootLodMetricValue = tileset.root.geometricError;\n const rootBoundingVolume = tileset.root.boundingVolume;\n\n const options = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tileset.root, rootSubtree, options);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n"],"file":"parse-3d-tile-header.js"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof "3.
|
|
1
|
+
export const VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : '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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAA8C,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAA8C,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AAkDpC,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,OAgB9C;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,KAAA,OAiB3C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,SAAS,gBAsCpE;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,KAAA,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAsBvF"}
|
|
@@ -35,13 +35,25 @@ function getRefine(refine) {
|
|
|
35
35
|
return refine;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
+
function resolveUri(uri, basePath) {
|
|
39
|
+
// url scheme per RFC3986
|
|
40
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
41
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
42
|
+
const url = new URL(uri, `${basePath}/`);
|
|
43
|
+
return decodeURI(url.toString());
|
|
44
|
+
}
|
|
45
|
+
else if (uri.startsWith('/')) {
|
|
46
|
+
return uri;
|
|
47
|
+
}
|
|
48
|
+
return `${basePath}/${uri}`;
|
|
49
|
+
}
|
|
38
50
|
function normalizeTileData(tile, options) {
|
|
39
51
|
if (!tile) {
|
|
40
52
|
return null;
|
|
41
53
|
}
|
|
42
54
|
if (tile.content) {
|
|
43
55
|
const contentUri = tile.content.uri || tile.content.url;
|
|
44
|
-
tile.contentUrl =
|
|
56
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
45
57
|
}
|
|
46
58
|
tile.id = tile.contentUrl;
|
|
47
59
|
tile.lodMetricType = tiles_1.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -82,9 +94,9 @@ async function normalizeImplicitTileHeaders(tileset) {
|
|
|
82
94
|
const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
|
|
83
95
|
const { subdivisionScheme, maximumLevel, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
|
|
84
96
|
const subtreeUrl = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
|
|
85
|
-
const rootSubtreeUrl =
|
|
97
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
86
98
|
const rootSubtree = await (0, core_1.load)(rootSubtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader);
|
|
87
|
-
const contentUrlTemplate =
|
|
99
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
88
100
|
const refine = tileset.root.refine;
|
|
89
101
|
// @ts-ignore
|
|
90
102
|
const rootLodMetricValue = tileset.root.geometricError;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/3d-tiles",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0-alpha.1",
|
|
4
4
|
"description": "3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -34,16 +34,16 @@
|
|
|
34
34
|
"build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@loaders.gl/draco": "3.
|
|
38
|
-
"@loaders.gl/gltf": "3.
|
|
39
|
-
"@loaders.gl/loader-utils": "3.
|
|
40
|
-
"@loaders.gl/math": "3.
|
|
41
|
-
"@loaders.gl/tiles": "3.
|
|
37
|
+
"@loaders.gl/draco": "3.3.0-alpha.1",
|
|
38
|
+
"@loaders.gl/gltf": "3.3.0-alpha.1",
|
|
39
|
+
"@loaders.gl/loader-utils": "3.3.0-alpha.1",
|
|
40
|
+
"@loaders.gl/math": "3.3.0-alpha.1",
|
|
41
|
+
"@loaders.gl/tiles": "3.3.0-alpha.1",
|
|
42
42
|
"@math.gl/core": "^3.5.1",
|
|
43
43
|
"@math.gl/geospatial": "^3.5.1"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@loaders.gl/core": "^3.2.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "85ed2df7d17dd0d204c8bd8feb44779f70bc693b"
|
|
49
49
|
}
|
|
@@ -37,13 +37,27 @@ function getRefine(refine) {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
function resolveUri(uri, basePath) {
|
|
41
|
+
// url scheme per RFC3986
|
|
42
|
+
const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;
|
|
43
|
+
|
|
44
|
+
if (urlSchemeRegex.test(basePath)) {
|
|
45
|
+
const url = new URL(uri, `${basePath}/`);
|
|
46
|
+
return decodeURI(url.toString());
|
|
47
|
+
} else if (uri.startsWith('/')) {
|
|
48
|
+
return uri;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return `${basePath}/${uri}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
40
54
|
export function normalizeTileData(tile, options) {
|
|
41
55
|
if (!tile) {
|
|
42
56
|
return null;
|
|
43
57
|
}
|
|
44
58
|
if (tile.content) {
|
|
45
59
|
const contentUri = tile.content.uri || tile.content.url;
|
|
46
|
-
tile.contentUrl =
|
|
60
|
+
tile.contentUrl = resolveUri(contentUri, options.basePath);
|
|
47
61
|
}
|
|
48
62
|
tile.id = tile.contentUrl;
|
|
49
63
|
tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
|
|
@@ -94,9 +108,9 @@ export async function normalizeImplicitTileHeaders(tileset: Tileset3D) {
|
|
|
94
108
|
subtrees: {uri: subtreesUriTemplate}
|
|
95
109
|
} = implicitTilingExtension;
|
|
96
110
|
const subtreeUrl = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);
|
|
97
|
-
const rootSubtreeUrl =
|
|
111
|
+
const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
|
|
98
112
|
const rootSubtree = await load(rootSubtreeUrl, Tile3DSubtreeLoader);
|
|
99
|
-
const contentUrlTemplate =
|
|
113
|
+
const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
|
|
100
114
|
const refine = tileset.root.refine;
|
|
101
115
|
// @ts-ignore
|
|
102
116
|
const rootLodMetricValue = tileset.root.geometricError;
|