@loaders.gl/tile-converter 3.2.3 → 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/3d-tiles-attributes-worker.js +3 -3
- package/dist/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/converter-cli.js +30 -7
- package/dist/converter.min.js +1 -1
- package/dist/dist.min.js +820 -517
- package/dist/es5/3d-tiles-attributes-worker.js +1 -1
- package/dist/es5/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/es5/converter-cli.js +42 -12
- package/dist/es5/converter-cli.js.map +1 -1
- package/dist/es5/i3s-attributes-worker.js +1 -1
- package/dist/es5/i3s-attributes-worker.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js +135 -0
- package/dist/es5/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/es5/i3s-converter/helpers/geometry-converter.js +16 -10
- package/dist/es5/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js +15 -1
- package/dist/es5/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/es5/i3s-converter/i3s-converter.js +19 -15
- package/dist/es5/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/es5/lib/utils/write-queue.js +3 -5
- package/dist/es5/lib/utils/write-queue.js.map +1 -1
- package/dist/es5/pgm-loader.js +1 -1
- package/dist/es5/pgm-loader.js.map +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js +1 -1
- package/dist/esm/3d-tiles-attributes-worker.js.map +1 -1
- package/dist/esm/converter-cli.js +37 -7
- package/dist/esm/converter-cli.js.map +1 -1
- package/dist/esm/i3s-attributes-worker.js +1 -1
- package/dist/esm/i3s-attributes-worker.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js +117 -0
- package/dist/esm/i3s-converter/helpers/batch-ids-extensions.js.map +1 -0
- package/dist/esm/i3s-converter/helpers/geometry-converter.js +13 -8
- package/dist/esm/i3s-converter/helpers/geometry-converter.js.map +1 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js +15 -1
- package/dist/esm/i3s-converter/helpers/gltf-attributes.js.map +1 -1
- package/dist/esm/i3s-converter/i3s-converter.js +5 -1
- package/dist/esm/i3s-converter/i3s-converter.js.map +1 -1
- package/dist/esm/lib/utils/write-queue.js +3 -5
- package/dist/esm/lib/utils/write-queue.js.map +1 -1
- package/dist/esm/pgm-loader.js +1 -1
- package/dist/esm/pgm-loader.js.map +1 -1
- package/dist/i3s-attributes-worker.js +3 -3
- package/dist/i3s-attributes-worker.js.map +3 -3
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts +12 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.d.ts.map +1 -0
- package/dist/i3s-converter/helpers/batch-ids-extensions.js +127 -0
- package/dist/i3s-converter/helpers/geometry-converter.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/geometry-converter.js +16 -11
- package/dist/i3s-converter/helpers/gltf-attributes.d.ts.map +1 -1
- package/dist/i3s-converter/helpers/gltf-attributes.js +13 -0
- package/dist/i3s-converter/i3s-converter.d.ts.map +1 -1
- package/dist/i3s-converter/i3s-converter.js +4 -1
- package/dist/i3s-converter/types.d.ts +48 -0
- package/dist/i3s-converter/types.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.d.ts.map +1 -1
- package/dist/lib/utils/write-queue.js +3 -4
- package/package.json +16 -16
- package/src/converter-cli.ts +33 -7
- package/src/i3s-converter/helpers/batch-ids-extensions.ts +182 -0
- package/src/i3s-converter/helpers/geometry-converter.ts +26 -11
- package/src/i3s-converter/helpers/gltf-attributes.ts +15 -0
- package/src/i3s-converter/i3s-converter.ts +13 -6
- package/src/i3s-converter/types.ts +51 -0
- package/src/lib/utils/write-queue.ts +7 -5
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GLTFAccessorPostprocessed } from 'modules/gltf/src/lib/types/gltf-types';
|
|
2
|
+
import type { Image, MeshPrimitive } from 'modules/gltf/src/lib/types/gltf-postprocessed-schema';
|
|
3
|
+
/**
|
|
4
|
+
* Getting batchIds from 3DTilesNext extensions.
|
|
5
|
+
* @param attributes
|
|
6
|
+
* @param primitive
|
|
7
|
+
* @param textures
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleBatchIdsExtensions(attributes: {
|
|
10
|
+
[key: string]: GLTFAccessorPostprocessed;
|
|
11
|
+
}, primitive: MeshPrimitive, images: Image[]): number[];
|
|
12
|
+
//# sourceMappingURL=batch-ids-extensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-ids-extensions.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/batch-ids-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,uCAAuC,CAAC;AACrF,OAAO,KAAK,EAAC,KAAK,EAAE,aAAa,EAAC,MAAM,sDAAsD,CAAC;AAM/F;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAC1C,EACD,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,KAAK,EAAE,GACd,MAAM,EAAE,CAwBV"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleBatchIdsExtensions = void 0;
|
|
4
|
+
const EXT_MESH_FEATURES = 'EXT_mesh_features';
|
|
5
|
+
const EXT_FEATURE_METADATA = 'EXT_feature_metadata';
|
|
6
|
+
/**
|
|
7
|
+
* Getting batchIds from 3DTilesNext extensions.
|
|
8
|
+
* @param attributes
|
|
9
|
+
* @param primitive
|
|
10
|
+
* @param textures
|
|
11
|
+
*/
|
|
12
|
+
function handleBatchIdsExtensions(attributes, primitive, images) {
|
|
13
|
+
const extensions = primitive?.extensions;
|
|
14
|
+
if (!extensions) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
for (const [extensionName, extensionData] of Object.entries(extensions || {})) {
|
|
18
|
+
switch (extensionName) {
|
|
19
|
+
case EXT_FEATURE_METADATA:
|
|
20
|
+
return handleExtFeatureMetadataExtension(attributes, extensionData, images);
|
|
21
|
+
case EXT_MESH_FEATURES:
|
|
22
|
+
console.warn('EXT_mesh_features extension is not supported yet');
|
|
23
|
+
return [];
|
|
24
|
+
default:
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
exports.handleBatchIdsExtensions = handleBatchIdsExtensions;
|
|
31
|
+
/**
|
|
32
|
+
* Get batchIds from EXT_feature_metadata extension.
|
|
33
|
+
* Docs - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata
|
|
34
|
+
* @param attributes
|
|
35
|
+
* @param extFeatureMetadata
|
|
36
|
+
* @param textures
|
|
37
|
+
*/
|
|
38
|
+
function handleExtFeatureMetadataExtension(attributes, extFeatureMetadata, images) {
|
|
39
|
+
// Take only first extension object to get batchIds attribute name.
|
|
40
|
+
const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];
|
|
41
|
+
if (featureIdAttribute?.featureIds?.attribute) {
|
|
42
|
+
const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];
|
|
43
|
+
return batchIdsAttribute.value;
|
|
44
|
+
}
|
|
45
|
+
if (featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&
|
|
46
|
+
featureIdAttribute?.featureIds?.hasOwnProperty('divisor')) {
|
|
47
|
+
const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;
|
|
48
|
+
return generateImplicitFeatureIds(featuresCount, featureIdAttribute.featureIds.constant, featureIdAttribute.featureIds.divisor);
|
|
49
|
+
}
|
|
50
|
+
// Take only first extension object to get batchIds attribute name.
|
|
51
|
+
const featureIdTexture = extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];
|
|
52
|
+
if (featureIdTexture) {
|
|
53
|
+
const textureCoordinates = attributes.TEXCOORD_0.value;
|
|
54
|
+
return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);
|
|
55
|
+
}
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generates implicit feature ids
|
|
60
|
+
* Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids
|
|
61
|
+
* @param featuresCount
|
|
62
|
+
* @param constant
|
|
63
|
+
* @param devisor
|
|
64
|
+
*/
|
|
65
|
+
function generateImplicitFeatureIds(featuresCount, constant = 0, divisor = 0) {
|
|
66
|
+
let featureIds = [];
|
|
67
|
+
if (divisor > 0) {
|
|
68
|
+
let currentValue = constant;
|
|
69
|
+
let devisorCounter = divisor;
|
|
70
|
+
for (let index = 0; index < featuresCount; index++) {
|
|
71
|
+
featureIds.push(currentValue);
|
|
72
|
+
devisorCounter -= 1;
|
|
73
|
+
if (devisorCounter === 0) {
|
|
74
|
+
currentValue++;
|
|
75
|
+
devisorCounter = divisor;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
featureIds = Array(featuresCount).fill(constant, 0, featuresCount);
|
|
81
|
+
}
|
|
82
|
+
return featureIds;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get batchIds from texture.
|
|
86
|
+
* @param primitive
|
|
87
|
+
* @param featureIdTextures
|
|
88
|
+
*/
|
|
89
|
+
function generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images) {
|
|
90
|
+
const CHANNELS_MAP = {
|
|
91
|
+
r: 0,
|
|
92
|
+
g: 1,
|
|
93
|
+
b: 2,
|
|
94
|
+
a: 3
|
|
95
|
+
};
|
|
96
|
+
const textureIndex = featureIdTexture?.featureIds?.texture?.index;
|
|
97
|
+
const featureChannel = featureIdTexture?.featureIds?.channels;
|
|
98
|
+
if (!featureChannel || textureIndex === undefined) {
|
|
99
|
+
return [];
|
|
100
|
+
}
|
|
101
|
+
const image = images[textureIndex];
|
|
102
|
+
const batchIds = [];
|
|
103
|
+
const channels = CHANNELS_MAP[featureChannel];
|
|
104
|
+
if (!image.compressed) {
|
|
105
|
+
for (let index = 0; index < textureCoordinates.length; index += 2) {
|
|
106
|
+
const u = textureCoordinates[index];
|
|
107
|
+
const v = textureCoordinates[index + 1];
|
|
108
|
+
const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);
|
|
109
|
+
const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);
|
|
110
|
+
const offset = (ty * image.width + tx) * image.components + channels;
|
|
111
|
+
const batchId = new Uint8Array(image.data)[offset];
|
|
112
|
+
batchIds.push(batchId);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.warn(`Can't get batch Ids from ${image.mimeType} compressed texture`);
|
|
117
|
+
}
|
|
118
|
+
return batchIds;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Handle UVs if they are out of range [0,1].
|
|
122
|
+
* @param n
|
|
123
|
+
* @param m
|
|
124
|
+
*/
|
|
125
|
+
function emod(n) {
|
|
126
|
+
return ((n % 1) + 1) % 1;
|
|
127
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry-converter.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/geometry-converter.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAGtB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EACL,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AAMrC,OAAO,EAAC,kBAAkB,EAAqC,MAAM,6BAA6B,CAAC;AAyBnG;;;;;;;;;;;GAWG;AACH,wBAA8B,wBAAwB,CACpD,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EAAE,EAC3B,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,SAAS,EACxD,KAAK,EAAE,OAAO,EACd,uBAAuB,EAAE,OAAO,EAChC,gBAAgB,EAAE,KAAK,EACvB,YAAY,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,2CAoEtC;AAiID;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,kBAAkB,EAClC,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CA0C3C"}
|
|
@@ -13,6 +13,7 @@ const md5_1 = __importDefault(require("md5"));
|
|
|
13
13
|
const geometry_attributes_1 = require("./geometry-attributes");
|
|
14
14
|
const coordinate_converter_1 = require("./coordinate-converter");
|
|
15
15
|
const gltf_attributes_1 = require("./gltf-attributes");
|
|
16
|
+
const batch_ids_extensions_1 = require("./batch-ids-extensions");
|
|
16
17
|
// Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/pbrMetallicRoughness.cmn.md
|
|
17
18
|
const DEFAULT_ROUGHNESS_FACTOR = 1;
|
|
18
19
|
const DEFAULT_METALLIC_FACTOR = 1;
|
|
@@ -258,8 +259,9 @@ function getCompositeTransformationMatrix(node, matrix) {
|
|
|
258
259
|
function convertNode(node, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
|
|
259
260
|
const transformationMatrix = getCompositeTransformationMatrix(node, matrix);
|
|
260
261
|
const mesh = node.mesh;
|
|
262
|
+
const images = node.images;
|
|
261
263
|
if (mesh) {
|
|
262
|
-
convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
|
|
264
|
+
convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
|
|
263
265
|
}
|
|
264
266
|
convertNodes(node.children || [], cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions, transformationMatrix);
|
|
265
267
|
}
|
|
@@ -274,7 +276,7 @@ function convertNode(node, cartographicOrigin, cartesianModelMatrix, attributesM
|
|
|
274
276
|
|
|
275
277
|
* @param {Matrix4} matrix - transformation matrix - cumulative transformation matrix formed from all parent node matrices
|
|
276
278
|
*/
|
|
277
|
-
function convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions = false, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
|
|
279
|
+
function convertMesh(mesh, images, cartographicOrigin, cartesianModelMatrix, attributesMap, useCartesianPositions = false, matrix = new core_1.Matrix4([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])) {
|
|
278
280
|
for (const primitive of mesh.primitives) {
|
|
279
281
|
let outputAttributes = null;
|
|
280
282
|
if (primitive.material) {
|
|
@@ -309,7 +311,7 @@ function convertMesh(mesh, cartographicOrigin, cartesianModelMatrix, attributesM
|
|
|
309
311
|
outputAttributes.texCoords = (0, loader_utils_1.concatenateTypedArrays)(outputAttributes.texCoords, flattenTexCoords(attributes.TEXCOORD_0 && attributes.TEXCOORD_0.value, primitive.indices?.value));
|
|
310
312
|
outputAttributes.colors = (0, loader_utils_1.concatenateTypedArrays)(outputAttributes.colors, flattenColors(attributes.COLOR_0, primitive.indices?.value));
|
|
311
313
|
outputAttributes.featureIndicesGroups = outputAttributes.featureIndicesGroups || [];
|
|
312
|
-
outputAttributes.featureIndicesGroups.push(flattenBatchIds(
|
|
314
|
+
outputAttributes.featureIndicesGroups.push(flattenBatchIds(getBatchIds(attributes, primitive, images), primitive.indices?.value));
|
|
313
315
|
}
|
|
314
316
|
}
|
|
315
317
|
/**
|
|
@@ -446,21 +448,24 @@ function flattenBatchIds(batchedIds, indices) {
|
|
|
446
448
|
return newBatchIds;
|
|
447
449
|
}
|
|
448
450
|
/**
|
|
449
|
-
*
|
|
450
|
-
* @param attributes
|
|
451
|
-
* @
|
|
451
|
+
* Get batchIds for featureIds creation
|
|
452
|
+
* @param attributes
|
|
453
|
+
* @param primitive
|
|
454
|
+
* @param textures
|
|
452
455
|
*/
|
|
453
|
-
function
|
|
454
|
-
|
|
456
|
+
function getBatchIds(attributes, primitive, images) {
|
|
457
|
+
const batchIds = (0, batch_ids_extensions_1.handleBatchIdsExtensions)(attributes, primitive, images);
|
|
458
|
+
if (batchIds.length) {
|
|
459
|
+
return batchIds;
|
|
460
|
+
}
|
|
455
461
|
for (let index = 0; index < BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES.length; index++) {
|
|
456
462
|
const possibleBatchIdAttributeName = BATCHED_ID_POSSIBLE_ATTRIBUTE_NAMES[index];
|
|
457
463
|
if (attributes[possibleBatchIdAttributeName] &&
|
|
458
464
|
attributes[possibleBatchIdAttributeName].value) {
|
|
459
|
-
|
|
460
|
-
break;
|
|
465
|
+
return attributes[possibleBatchIdAttributeName].value;
|
|
461
466
|
}
|
|
462
467
|
}
|
|
463
|
-
return
|
|
468
|
+
return [];
|
|
464
469
|
}
|
|
465
470
|
/**
|
|
466
471
|
* Convert GLTF material to I3S material definitions and textures
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"gltf-attributes.d.ts","sourceRoot":"","sources":["../../../src/i3s-converter/helpers/gltf-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAsBpE;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAqD/F"}
|
|
@@ -25,12 +25,25 @@ function prepareDataForAttributesConversion(tileContent) {
|
|
|
25
25
|
tileContent.gltf?.scenes?.[0]?.nodes ||
|
|
26
26
|
tileContent.gltf?.nodes ||
|
|
27
27
|
[];
|
|
28
|
+
const images = tileContent.gltf?.images?.map((imageObject) => {
|
|
29
|
+
// Need data only for uncompressed images because we can't get batchIds from compressed textures.
|
|
30
|
+
const data = imageObject?.image?.compressed ? null : imageObject?.image?.data.subarray();
|
|
31
|
+
return {
|
|
32
|
+
data,
|
|
33
|
+
compressed: Boolean(imageObject?.image?.compressed),
|
|
34
|
+
height: imageObject.image.height,
|
|
35
|
+
width: imageObject.image.width,
|
|
36
|
+
components: imageObject.image.components,
|
|
37
|
+
mimeType: imageObject.mimeType
|
|
38
|
+
};
|
|
39
|
+
}) || [];
|
|
28
40
|
const prepearedNodes = nodes.map((node) => {
|
|
29
41
|
if (!node.mesh) {
|
|
30
42
|
return node;
|
|
31
43
|
}
|
|
32
44
|
return {
|
|
33
45
|
...node,
|
|
46
|
+
images,
|
|
34
47
|
mesh: {
|
|
35
48
|
...node.mesh,
|
|
36
49
|
primitives: node.mesh?.primitives.map((primitive) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"i3s-converter.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/i3s-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -707,7 +707,10 @@ class I3SConverter {
|
|
|
707
707
|
await this.writeTextureFile(textureData, '0', format, childPath, slpkChildPath);
|
|
708
708
|
if (this.generateTextures) {
|
|
709
709
|
formats.push({ name: '1', format: 'ktx2' });
|
|
710
|
-
|
|
710
|
+
// For Node.js texture.image.data is type of Buffer
|
|
711
|
+
const copyArrayBuffer = texture.image.data.subarray();
|
|
712
|
+
const arrayToEncode = new Uint8Array(copyArrayBuffer);
|
|
713
|
+
const ktx2TextureData = (0, core_1.encode)({ ...texture.image, data: arrayToEncode }, textures_1.KTX2BasisWriterWorker, {
|
|
711
714
|
...textures_1.KTX2BasisWriterWorker.options,
|
|
712
715
|
source: this.workerSource.ktx2,
|
|
713
716
|
reuseWorkers: true,
|
|
@@ -111,4 +111,52 @@ export declare type I3SMaterialWithTexture = {
|
|
|
111
111
|
/** Texture content (image) */
|
|
112
112
|
texture?: ImageDataType;
|
|
113
113
|
};
|
|
114
|
+
/**
|
|
115
|
+
* 3DTilesNext EXT_feature_metadata extension
|
|
116
|
+
* Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata
|
|
117
|
+
*/
|
|
118
|
+
export declare type ExtFeatureMetadata = {
|
|
119
|
+
/** Feature ids definition in attributes */
|
|
120
|
+
featureIdAttributes?: ExtFeatureMetadataAttribute[];
|
|
121
|
+
/** Feature ids definition in textures */
|
|
122
|
+
featureIdTextures?: ExtFeatureMetadataAttribute[];
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Attribute which described featureIds definition.
|
|
126
|
+
*/
|
|
127
|
+
export declare type ExtFeatureMetadataAttribute = {
|
|
128
|
+
/** Name of feature table */
|
|
129
|
+
featureTable: string;
|
|
130
|
+
/** Described how feature ids are defined */
|
|
131
|
+
featureIds: ExtFeatureMetadataFeatureIds;
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Defining featureIds by attributes or implicitly.
|
|
135
|
+
*/
|
|
136
|
+
declare type ExtFeatureMetadataFeatureIds = {
|
|
137
|
+
/** Name of attribute where featureIds are defined */
|
|
138
|
+
attribute?: string;
|
|
139
|
+
/** Sets a constant feature ID for each vertex. The default is 0. */
|
|
140
|
+
constant?: number;
|
|
141
|
+
/** Sets the rate at which feature IDs increment.
|
|
142
|
+
* If divisor is zero then constant is used.
|
|
143
|
+
* If divisor is greater than zero the feature ID increments once per divisor sets of vertices, starting at constant.
|
|
144
|
+
* The default is 0
|
|
145
|
+
*/
|
|
146
|
+
divisor?: number;
|
|
147
|
+
/** gLTF textureInfo object - https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json */
|
|
148
|
+
texture?: ExtFeatureMetadataTexture;
|
|
149
|
+
/** Must be a single channel ("r", "g", "b", or "a") */
|
|
150
|
+
channels?: 'r' | 'g' | 'b' | 'a';
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Reference to a texture.
|
|
154
|
+
*/
|
|
155
|
+
declare type ExtFeatureMetadataTexture = {
|
|
156
|
+
/** The set index of texture's TEXCOORD attribute used for texture coordinate mapping.*/
|
|
157
|
+
texCoord: number;
|
|
158
|
+
/** The index of the texture. */
|
|
159
|
+
index: number;
|
|
160
|
+
};
|
|
161
|
+
export {};
|
|
114
162
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAEjD,4CAA4C;AAC5C,oBAAY,qBAAqB,GAAG;IAClC;;;OAGG;IACH,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACjD;;OAEG;IACH,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C;;OAEG;IACH,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;OAEG;IACH,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;OAEG;IACH,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,mBAAmB,GAAG;IAChC,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,eAAe,EAAE,IAAI,GAAG,eAAe,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC/B,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,kCAAkC;IAClC,SAAS,EAAE,WAAW,CAAC;IACvB,kCAAkC;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,8DAA8D;AAC9D,oBAAY,4BAA4B,GAAG;IACzC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,6BAA6B;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,YAAY,CAAC;CACzB,CAAC;AAEF,+CAA+C;AAC/C,oBAAY,qBAAqB,GAAG;IAClC,oHAAoH;IACpH,uBAAuB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACnD,kHAAkH;IAClH,sBAAsB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,2EAA2E;AAC3E,oBAAY,sBAAsB,GAAG;IACnC,2GAA2G;IAC3G,QAAQ,EAAE,qBAAqB,CAAC;IAChC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i3s-converter/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/write-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,oBAAY,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,CAAiB;IAC7B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;gBAEpB,iBAAiB,GAAE,MAAa,EAAE,gBAAgB,GAAE,MAAY;IAM5E,cAAc;IAId,aAAa;IAMP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjB,OAAO;IAmBrB,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"write-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/write-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,oBAAY,cAAc,GAAG;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,CAAiB;IAC7B,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAM;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;gBAEpB,iBAAiB,GAAE,MAAa,EAAE,gBAAgB,GAAE,MAAY;IAM5E,cAAc;IAId,aAAa;IAMP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAKjB,OAAO;IAmBrB,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -44,7 +44,7 @@ class WriteQueue extends queue_1.Queue {
|
|
|
44
44
|
archiveKeys.push(archiveKey);
|
|
45
45
|
promises.push(writePromise);
|
|
46
46
|
}
|
|
47
|
-
const writeResults = await Promise.
|
|
47
|
+
const writeResults = await Promise.allSettled(promises);
|
|
48
48
|
this.updateFileMap(archiveKeys, writeResults);
|
|
49
49
|
}
|
|
50
50
|
this.writePromise = null;
|
|
@@ -52,10 +52,9 @@ class WriteQueue extends queue_1.Queue {
|
|
|
52
52
|
updateFileMap(archiveKeys, writeResults) {
|
|
53
53
|
for (let i = 0; i < archiveKeys.length; i++) {
|
|
54
54
|
const archiveKey = archiveKeys[i];
|
|
55
|
-
if (
|
|
56
|
-
|
|
55
|
+
if (archiveKey && 'value' in writeResults[i]) {
|
|
56
|
+
this.fileMap[archiveKey] = writeResults[i].value;
|
|
57
57
|
}
|
|
58
|
-
this.fileMap[archiveKey] = writeResults[i];
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/tile-converter",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0-alpha.1",
|
|
4
4
|
"description": "Converter",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -43,19 +43,19 @@
|
|
|
43
43
|
"build-3d-tiles-attributes-worker": "esbuild src/workers/3d-tiles-attributes-worker.ts --outfile=dist/3d-tiles-attributes-worker.js --platform=node --target=esnext,node12 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@loaders.gl/3d-tiles": "3.
|
|
47
|
-
"@loaders.gl/crypto": "3.
|
|
48
|
-
"@loaders.gl/draco": "3.
|
|
49
|
-
"@loaders.gl/gltf": "3.
|
|
50
|
-
"@loaders.gl/i3s": "3.
|
|
51
|
-
"@loaders.gl/images": "3.
|
|
52
|
-
"@loaders.gl/loader-utils": "3.
|
|
53
|
-
"@loaders.gl/polyfills": "3.
|
|
54
|
-
"@loaders.gl/schema": "3.
|
|
55
|
-
"@loaders.gl/textures": "3.
|
|
56
|
-
"@loaders.gl/tiles": "3.
|
|
57
|
-
"@loaders.gl/worker-utils": "3.
|
|
58
|
-
"@loaders.gl/zip": "3.
|
|
46
|
+
"@loaders.gl/3d-tiles": "3.3.0-alpha.1",
|
|
47
|
+
"@loaders.gl/crypto": "3.3.0-alpha.1",
|
|
48
|
+
"@loaders.gl/draco": "3.3.0-alpha.1",
|
|
49
|
+
"@loaders.gl/gltf": "3.3.0-alpha.1",
|
|
50
|
+
"@loaders.gl/i3s": "3.3.0-alpha.1",
|
|
51
|
+
"@loaders.gl/images": "3.3.0-alpha.1",
|
|
52
|
+
"@loaders.gl/loader-utils": "3.3.0-alpha.1",
|
|
53
|
+
"@loaders.gl/polyfills": "3.3.0-alpha.1",
|
|
54
|
+
"@loaders.gl/schema": "3.3.0-alpha.1",
|
|
55
|
+
"@loaders.gl/textures": "3.3.0-alpha.1",
|
|
56
|
+
"@loaders.gl/tiles": "3.3.0-alpha.1",
|
|
57
|
+
"@loaders.gl/worker-utils": "3.3.0-alpha.1",
|
|
58
|
+
"@loaders.gl/zip": "3.3.0-alpha.1",
|
|
59
59
|
"@luma.gl/engine": "^8.5.4",
|
|
60
60
|
"@math.gl/core": "^3.5.1",
|
|
61
61
|
"@math.gl/culling": "^3.5.1",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"uuid": "^8.1.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
|
-
"@loaders.gl/core": "3.2.0"
|
|
76
|
+
"@loaders.gl/core": "^3.2.0"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "85ed2df7d17dd0d204c8bd8feb44779f70bc693b"
|
|
79
79
|
}
|
package/src/converter-cli.ts
CHANGED
|
@@ -66,7 +66,9 @@ async function main() {
|
|
|
66
66
|
printHelp();
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
const
|
|
69
|
+
const validatedOptionsArr = validateOptionsWithEqual(args);
|
|
70
|
+
|
|
71
|
+
const options: TileConversionOptions = parseOptions(validatedOptionsArr);
|
|
70
72
|
|
|
71
73
|
if (options.installDependencies) {
|
|
72
74
|
const depthInstaller = new DepsInstaller();
|
|
@@ -199,6 +201,19 @@ function validateOptions(options: TileConversionOptions): ValidatedTileConversio
|
|
|
199
201
|
return <ValidatedTileConversionOptions>options;
|
|
200
202
|
}
|
|
201
203
|
|
|
204
|
+
function validateOptionsWithEqual(args: string[]): string[] {
|
|
205
|
+
return args.reduce((acc: string[], curr) => {
|
|
206
|
+
const equalSignIndex = curr.indexOf('=');
|
|
207
|
+
const beforeEqual = curr.slice(0, equalSignIndex);
|
|
208
|
+
const afterEqual = curr.slice(equalSignIndex + 1, curr.length);
|
|
209
|
+
const condition = curr.includes('=') && curr.startsWith('--') && afterEqual;
|
|
210
|
+
if (condition) {
|
|
211
|
+
return acc.concat(beforeEqual, afterEqual);
|
|
212
|
+
}
|
|
213
|
+
return acc.concat(curr);
|
|
214
|
+
}, []);
|
|
215
|
+
}
|
|
216
|
+
|
|
202
217
|
/**
|
|
203
218
|
* Parse option from the cli arguments array
|
|
204
219
|
* @param args
|
|
@@ -237,7 +252,7 @@ function parseOptions(args: string[]): TileConversionOptions {
|
|
|
237
252
|
opts.maxDepth = getIntegerValue(index, args);
|
|
238
253
|
break;
|
|
239
254
|
case '--slpk':
|
|
240
|
-
opts.slpk =
|
|
255
|
+
opts.slpk = getBooleanValue(index, args);
|
|
241
256
|
break;
|
|
242
257
|
case '--7zExe':
|
|
243
258
|
opts.sevenZipExe = getStringValue(index, args);
|
|
@@ -249,19 +264,19 @@ function parseOptions(args: string[]): TileConversionOptions {
|
|
|
249
264
|
opts.token = getStringValue(index, args);
|
|
250
265
|
break;
|
|
251
266
|
case '--no-draco':
|
|
252
|
-
opts.draco =
|
|
267
|
+
opts.draco = getBooleanValue(index, args);
|
|
253
268
|
break;
|
|
254
269
|
case '--validate':
|
|
255
|
-
opts.validate =
|
|
270
|
+
opts.validate = getBooleanValue(index, args);
|
|
256
271
|
break;
|
|
257
272
|
case '--install-dependencies':
|
|
258
|
-
opts.installDependencies =
|
|
273
|
+
opts.installDependencies = getBooleanValue(index, args);
|
|
259
274
|
break;
|
|
260
275
|
case '--generate-textures':
|
|
261
|
-
opts.generateTextures =
|
|
276
|
+
opts.generateTextures = getBooleanValue(index, args);
|
|
262
277
|
break;
|
|
263
278
|
case '--generate-bounding-volumes':
|
|
264
|
-
opts.generateBoundingVolumes =
|
|
279
|
+
opts.generateBoundingVolumes = getBooleanValue(index, args);
|
|
265
280
|
break;
|
|
266
281
|
case '--help':
|
|
267
282
|
printHelp();
|
|
@@ -308,3 +323,14 @@ function getIntegerValue(index: number, args: string[]): number {
|
|
|
308
323
|
}
|
|
309
324
|
return NaN;
|
|
310
325
|
}
|
|
326
|
+
|
|
327
|
+
function getBooleanValue(index: number, args: string[]): boolean {
|
|
328
|
+
const stringValue: string = getStringValue(index, args).toLowerCase().trim();
|
|
329
|
+
if (args[index] === '--no-draco' && !stringValue) {
|
|
330
|
+
return false;
|
|
331
|
+
}
|
|
332
|
+
if (!stringValue || stringValue === 'true') {
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
return false;
|
|
336
|
+
}
|