@loaders.gl/tile-converter 4.5.3 → 5.0.0-alpha.10
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/LICENSE +14 -3
- package/README.md +464 -0
- package/dist/converter.min.cjs +199 -260
- package/dist/i3s-server/bin/i3s-server.min.cjs +106 -341
- package/dist/index.cjs +38482 -0
- package/dist/index.js +38453 -0
- package/dist/v5/adapters.cjs +1992 -0
- package/dist/v5/adapters.d.ts +22 -0
- package/dist/v5/adapters.js +1972 -0
- package/dist/v5/browser-sink.d.ts +37 -0
- package/dist/v5/browser-source.d.ts +38 -0
- package/dist/v5/browser-tileset-source.d.ts +70 -0
- package/dist/v5/browser.cjs +64 -0
- package/dist/v5/browser.d.ts +34 -0
- package/dist/v5/browser.js +57 -0
- package/dist/v5/conversion-api.d.ts +122 -0
- package/dist/v5/conversion-archive.d.ts +32 -0
- package/dist/v5/core.cjs +863 -0
- package/dist/v5/core.d.ts +16 -0
- package/dist/v5/core.js +845 -0
- package/dist/v5/feature-arrow.d.ts +36 -0
- package/dist/v5/i3s-mesh-conversion.d.ts +26 -0
- package/dist/v5/index.cjs +63 -0
- package/dist/v5/index.d.ts +32 -0
- package/dist/v5/index.js +59 -0
- package/dist/v5/mesh-conversion.d.ts +62 -0
- package/dist/v5/mesh-draco.d.ts +8 -0
- package/dist/v5/mesh-source-features.d.ts +21 -0
- package/dist/v5/mesh-source-texture.d.ts +4 -0
- package/dist/v5/mesh-source.d.ts +34 -0
- package/dist/v5/mesh-tileset-archive.d.ts +18 -0
- package/dist/v5/mesh-tileset-sink.d.ts +51 -0
- package/dist/v5/mesh.d.ts +81 -0
- package/dist/v5/point-cloud-conversion.d.ts +31 -0
- package/dist/v5/point-cloud-source-encoder.d.ts +49 -0
- package/dist/v5/point-cloud-source.d.ts +25 -0
- package/dist/v5/point-cloud.d.ts +24 -0
- package/dist/v5/resource-manifest.d.ts +58 -0
- package/dist/v5/spatial-conversion.d.ts +59 -0
- package/dist/v5/tileset-source.d.ts +21 -0
- package/package.json +53 -27
- package/src/common/README.md +5 -0
- package/src/index.ts +1 -2
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/3d-tiles-converter.ts +14 -3
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/3d-tiles-content-converter.ts +2 -2
- package/src/v4/3d-tiles-converter/helpers/validate-i3s-spatial-reference.ts +124 -0
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/json-templates/tileset.ts +4 -4
- package/src/{converter-cli.ts → v4/converter-cli.ts} +4 -4
- package/src/{deps-installer → v4/deps-installer}/deps-installer.ts +10 -7
- package/src/{i3s-converter → v4/i3s-converter}/helpers/attribute-metadata-info.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/helpers/batch-ids-extensions.ts +1 -1
- package/src/v4/i3s-converter/helpers/encode-string-attribute.ts +23 -0
- package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-attributes.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-converter.ts +34 -59
- package/src/{i3s-converter → v4/i3s-converter}/helpers/gltf-attributes.ts +7 -6
- package/src/{i3s-converter → v4/i3s-converter}/helpers/load-3d-tiles.ts +5 -9
- package/src/{i3s-converter → v4/i3s-converter}/helpers/node-debug.ts +5 -6
- package/src/{i3s-converter → v4/i3s-converter}/i3s-converter.ts +16 -19
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/geometry-definitions.ts +4 -4
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/layers.ts +6 -6
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/node.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/scene-server.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/shared-resources.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/store.ts +1 -1
- package/src/{i3s-server → v4/i3s-server}/README.md +2 -2
- package/src/{i3s-server → v4/i3s-server}/controllers/slpk-controller.ts +1 -1
- package/src/{i3s-server → v4/i3s-server}/routes/slpk-router.ts +2 -1
- package/src/v4/index.ts +2 -0
- package/src/{lib → v4/lib}/utils/compress-util.ts +8 -7
- package/src/{lib → v4/lib}/utils/conversion-dump.ts +4 -4
- package/src/{lib → v4/lib}/utils/file-utils.ts +2 -2
- package/src/{lib → v4/lib}/utils/lod-conversion-utils.ts +2 -4
- package/src/v5/adapters.ts +56 -0
- package/src/v5/browser-sink.ts +130 -0
- package/src/v5/browser-source.ts +155 -0
- package/src/v5/browser-tileset-source.ts +328 -0
- package/src/v5/browser.ts +105 -0
- package/src/v5/conversion-api.ts +287 -0
- package/src/v5/conversion-archive.ts +85 -0
- package/src/v5/core.ts +61 -0
- package/src/v5/feature-arrow.ts +429 -0
- package/src/v5/i3s-mesh-conversion.ts +152 -0
- package/src/v5/index.ts +99 -0
- package/src/v5/mesh-conversion.ts +200 -0
- package/src/v5/mesh-draco.ts +138 -0
- package/src/v5/mesh-source-features.ts +232 -0
- package/src/v5/mesh-source-texture.ts +122 -0
- package/src/v5/mesh-source.ts +360 -0
- package/src/v5/mesh-tileset-archive.ts +50 -0
- package/src/v5/mesh-tileset-sink.ts +324 -0
- package/src/v5/mesh.ts +517 -0
- package/src/v5/point-cloud-conversion.ts +80 -0
- package/src/v5/point-cloud-source-encoder.ts +105 -0
- package/src/v5/point-cloud-source.ts +84 -0
- package/src/v5/point-cloud.ts +271 -0
- package/src/v5/resource-manifest.ts +213 -0
- package/src/v5/spatial-conversion.ts +305 -0
- package/src/v5/tileset-source.ts +54 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.ts +0 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/load-i3s.ts +0 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/texture-atlas.ts +0 -0
- /package/src/{constants.ts → v4/constants.ts} +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/coordinate-converter.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/create-scene-server-path.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/feature-attributes.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-index-document.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-pages.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/preprocess-3d-tiles.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/progress.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/tileset-traversal.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/json-templates/metadata.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/types.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/app.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/bin/www.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/certs/cert.pem +0 -0
- /package/src/{i3s-server → v4/i3s-server}/certs/key.pem +0 -0
- /package/src/{i3s-server → v4/i3s-server}/utils/create-scene-server.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/utils/server-utils.ts +0 -0
- /package/src/{lib → v4/lib}/json-schemas/conversion-dump-json-schema.ts +0 -0
- /package/src/{lib → v4/lib}/utils/cli-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/geometry-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/queue.ts +0 -0
- /package/src/{lib → v4/lib}/utils/statistic-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/write-queue.ts +0 -0
- /package/src/{pgm-loader.ts → v4/pgm-loader.ts} +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ArrowTableBatch, Schema } from '@loaders.gl/schema';
|
|
2
|
+
/** Feature attributes and source identifier ready for Arrow normalization. */
|
|
3
|
+
export interface TileFeatureAttributes {
|
|
4
|
+
/** Stable feature identifier decoded from the source's feature-ID descriptor. */
|
|
5
|
+
readonly featureId: string | number | bigint;
|
|
6
|
+
/** Property values interpreted from the source metadata class. */
|
|
7
|
+
readonly properties: Readonly<Record<string, unknown>>;
|
|
8
|
+
/** Original class or property-table name, kept distinct between output batches. */
|
|
9
|
+
readonly metadataClass: string;
|
|
10
|
+
/** Optional original encoded metadata bytes, preserved without interpretation. */
|
|
11
|
+
readonly rawMetadata?: Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
/** Explicit Arrow mapping and bounded output size for feature attribute batches. */
|
|
14
|
+
export interface FeatureArrowBatchOptions {
|
|
15
|
+
/** Declared output columns and types, including the feature-ID column. */
|
|
16
|
+
readonly schema: Schema;
|
|
17
|
+
/** Schema field receiving stable feature identifiers. Defaults to `feature_id`. */
|
|
18
|
+
readonly featureIdField?: string;
|
|
19
|
+
/** Optional binary field receiving source metadata bytes. */
|
|
20
|
+
readonly rawMetadataField?: string;
|
|
21
|
+
/** Maximum number of features in one emitted Arrow record batch. Defaults to 65,536. */
|
|
22
|
+
readonly batchSize?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Converts decoded feature attributes to bounded Arrow batches using a caller-declared schema.
|
|
26
|
+
*
|
|
27
|
+
* Values retain their source primitive types; nested lists, structs, dictionary enums, and 64-bit
|
|
28
|
+
* identifiers use the corresponding schema field type. Missing schema fields and incompatible
|
|
29
|
+
* identifiers fail explicitly. Unknown properties are rejected so a class mapping cannot silently
|
|
30
|
+
* discard data. Separate metadata classes should be passed separately with their own schema.
|
|
31
|
+
*
|
|
32
|
+
* @param features - Features decoded from one source metadata class.
|
|
33
|
+
* @param options - Explicit Arrow schema and batch configuration.
|
|
34
|
+
* @returns Arrow table batches whose schema metadata records the source metadata class.
|
|
35
|
+
*/
|
|
36
|
+
export declare function convertFeatureAttributesToArrowBatches(features: readonly TileFeatureAttributes[], options: FeatureArrowBatchOptions): ArrowTableBatch[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { EncodedI3SMeshLayer, I3SMeshWriterOptions } from '@loaders.gl/i3s';
|
|
2
|
+
import type { TileConversionCodec, TileConversionSink } from '@loaders.gl/tile-converter/v5/core';
|
|
3
|
+
import type { Tiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
4
|
+
import type { MeshSourceResource } from './mesh-source.js';
|
|
5
|
+
import type { BrowserTileConversionFile } from '@loaders.gl/tile-converter/v5/core';
|
|
6
|
+
/** One authored mesh layer, ready for the single-layer sink. */
|
|
7
|
+
export interface I3SMeshConversionResource extends EncodedI3SMeshLayer {
|
|
8
|
+
/** Source placement identifier used for diagnostics. */
|
|
9
|
+
readonly id: string;
|
|
10
|
+
}
|
|
11
|
+
/** Spatial preparation and required authoring limits for the I3S codec. */
|
|
12
|
+
export interface I3SMeshConversionCodecOptions extends Pick<I3SMeshWriterOptions, 'name' | 'maxPositionError' | 'maxResourceBytes'> {
|
|
13
|
+
/** Shared source-to-ECEF context, applied exactly once before I3S geographic encoding. */
|
|
14
|
+
readonly spatialContext: Tiles3DConversionSpatialContext;
|
|
15
|
+
}
|
|
16
|
+
/** Creates a portable source-mesh to I3S layer codec with explicit precision and feature diagnostics. */
|
|
17
|
+
export declare function createI3SMeshConversionCodec<TInspection = unknown>(options: I3SMeshConversionCodecOptions): TileConversionCodec<TInspection, MeshSourceResource, I3SMeshConversionResource>;
|
|
18
|
+
/** Atomic bounded output for one authored I3S layer. */
|
|
19
|
+
export interface SingleMeshI3SSink extends TileConversionSink<I3SMeshConversionResource> {
|
|
20
|
+
/** Compressed archive-relative files visible only after successful finalization. */
|
|
21
|
+
getFiles(): readonly BrowserTileConversionFile[];
|
|
22
|
+
}
|
|
23
|
+
/** Creates an atomic bounded single-mesh I3S sink; pass finalized files to createTileConversionArchive. */
|
|
24
|
+
export declare function createSingleMeshI3SSink(options: {
|
|
25
|
+
/** Maximum retained compressed resource bytes; not peak conversion memory. */ readonly maxTotalBytes: number;
|
|
26
|
+
}): SingleMeshI3SSink;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/v5/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
TileConversionError: () => import_core.TileConversionError,
|
|
24
|
+
convertFeatureAttributesToArrowBatches: () => import_adapters.convertFeatureAttributesToArrowBatches,
|
|
25
|
+
convertPointCloudSource: () => import_adapters4.convertPointCloudSource,
|
|
26
|
+
convertTileset: () => import_core.convertTileset,
|
|
27
|
+
createI3SConversionSpatialContext: () => import_core3.createI3SConversionSpatialContext,
|
|
28
|
+
createI3SMeshConversionCodec: () => import_adapters11.createI3SMeshConversionCodec,
|
|
29
|
+
createManifestBackedTileConversionSink: () => import_core5.createManifestBackedTileConversionSink,
|
|
30
|
+
createMeshConversionCodec: () => import_adapters6.createMeshConversionCodec,
|
|
31
|
+
createMeshTilesetConversionSource: () => import_adapters10.createMeshTilesetConversionSource,
|
|
32
|
+
createSingleMeshI3SSink: () => import_adapters11.createSingleMeshI3SSink,
|
|
33
|
+
createSingleMeshTilesetArchive: () => import_adapters9.createSingleMeshTilesetArchive,
|
|
34
|
+
createSingleMeshTilesetSink: () => import_adapters7.createSingleMeshTilesetSink,
|
|
35
|
+
createTileConversionArchive: () => import_adapters8.createTileConversionArchive,
|
|
36
|
+
createTiles3DConversionSpatialContext: () => import_core3.createTiles3DConversionSpatialContext,
|
|
37
|
+
createTilesetConversionSource: () => import_core2.createTilesetConversionSource,
|
|
38
|
+
encodeMeshTile: () => import_adapters5.encodeMeshTile,
|
|
39
|
+
encodePointCloudSource: () => import_adapters3.encodePointCloudSource,
|
|
40
|
+
encodePointCloudSourceTile: () => import_adapters3.encodePointCloudSourceTile,
|
|
41
|
+
encodePointCloudTile: () => import_adapters2.encodePointCloudTile,
|
|
42
|
+
encodeTileConversionArchiveInBatches: () => import_adapters8.encodeTileConversionArchiveInBatches,
|
|
43
|
+
inspectTileset: () => import_core.inspectTileset,
|
|
44
|
+
traversePointCloudSource: () => import_core4.traversePointCloudSource,
|
|
45
|
+
validateTileset: () => import_core.validateTileset
|
|
46
|
+
});
|
|
47
|
+
module.exports = __toCommonJS(index_exports);
|
|
48
|
+
var import_core = require("@loaders.gl/tile-converter/v5/core");
|
|
49
|
+
var import_core2 = require("@loaders.gl/tile-converter/v5/core");
|
|
50
|
+
var import_core3 = require("@loaders.gl/tile-converter/v5/core");
|
|
51
|
+
var import_adapters = require("@loaders.gl/tile-converter/v5/adapters");
|
|
52
|
+
var import_adapters2 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
53
|
+
var import_core4 = require("@loaders.gl/tile-converter/v5/core");
|
|
54
|
+
var import_adapters3 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
55
|
+
var import_adapters4 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
56
|
+
var import_core5 = require("@loaders.gl/tile-converter/v5/core");
|
|
57
|
+
var import_adapters5 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
58
|
+
var import_adapters6 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
59
|
+
var import_adapters7 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
60
|
+
var import_adapters8 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
61
|
+
var import_adapters9 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
62
|
+
var import_adapters10 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
63
|
+
var import_adapters11 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { convertTileset, inspectTileset, TileConversionError, validateTileset } from '@loaders.gl/tile-converter/v5/core';
|
|
2
|
+
export type { ConvertTilesetOptions, TileConversionCodec, TileConversionDiagnostic, TileConversionProgress, TileConversionReport, TileConversionSink, TileConversionSource, TileValidationReport, ValidateTilesetOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
3
|
+
export { createTilesetConversionSource } from '@loaders.gl/tile-converter/v5/core';
|
|
4
|
+
export type { TilesetConversionSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
5
|
+
export { createI3SConversionSpatialContext, createTiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
6
|
+
export type { I3SConversionSpatialContext, Tiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
7
|
+
export { convertFeatureAttributesToArrowBatches } from '@loaders.gl/tile-converter/v5/adapters';
|
|
8
|
+
export type { FeatureArrowBatchOptions, TileFeatureAttributes } from '@loaders.gl/tile-converter/v5/adapters';
|
|
9
|
+
export { encodePointCloudTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
10
|
+
export type { EncodePointCloudTileOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
11
|
+
export { traversePointCloudSource } from '@loaders.gl/tile-converter/v5/core';
|
|
12
|
+
export type { PointCloudSourceTile, TraversePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
13
|
+
export { encodePointCloudSource, encodePointCloudSourceTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
14
|
+
export type { EncodedPointCloudSourceTile, EncodePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
15
|
+
export { convertPointCloudSource } from '@loaders.gl/tile-converter/v5/adapters';
|
|
16
|
+
export type { ConvertPointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
17
|
+
export { createManifestBackedTileConversionSink } from '@loaders.gl/tile-converter/v5/core';
|
|
18
|
+
export type { ManifestBackedTileConversionSinkOptions, TileResourceManifest, TileResourceManifestEntry, TileResourceManifestStore } from '@loaders.gl/tile-converter/v5/core';
|
|
19
|
+
export { encodeMeshTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
20
|
+
export type { MeshTileMaterial, MeshTileOptions, MeshTileTexture, MeshTileSampler, MeshTileTextureTransform } from '@loaders.gl/tile-converter/v5/adapters';
|
|
21
|
+
export { createMeshConversionCodec } from '@loaders.gl/tile-converter/v5/adapters';
|
|
22
|
+
export type { MeshConversionInput, EncodedMeshConversionResource, MeshConversionCodecOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
23
|
+
export { createSingleMeshTilesetSink } from '@loaders.gl/tile-converter/v5/adapters';
|
|
24
|
+
export type { SingleMeshTilesetSink, SingleMeshTilesetSinkOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
25
|
+
export { createTileConversionArchive, encodeTileConversionArchiveInBatches } from '@loaders.gl/tile-converter/v5/adapters';
|
|
26
|
+
export type { TileConversionArchiveOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
27
|
+
export { createSingleMeshTilesetArchive } from '@loaders.gl/tile-converter/v5/adapters';
|
|
28
|
+
export type { SingleMeshTilesetArchiveOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
29
|
+
export { createMeshTilesetConversionSource } from '@loaders.gl/tile-converter/v5/adapters';
|
|
30
|
+
export type { MeshSourceResource, MeshTilesetSourceOptions, MeshSourceFeatureOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
31
|
+
export { createI3SMeshConversionCodec, createSingleMeshI3SSink } from '@loaders.gl/tile-converter/v5/adapters';
|
|
32
|
+
export type { I3SMeshConversionResource, I3SMeshConversionCodecOptions, SingleMeshI3SSink } from '@loaders.gl/tile-converter/v5/adapters';
|
package/dist/v5/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// src/v5/index.ts
|
|
2
|
+
import {
|
|
3
|
+
convertTileset,
|
|
4
|
+
inspectTileset,
|
|
5
|
+
TileConversionError,
|
|
6
|
+
validateTileset
|
|
7
|
+
} from "@loaders.gl/tile-converter/v5/core";
|
|
8
|
+
import { createTilesetConversionSource } from "@loaders.gl/tile-converter/v5/core";
|
|
9
|
+
import {
|
|
10
|
+
createI3SConversionSpatialContext,
|
|
11
|
+
createTiles3DConversionSpatialContext
|
|
12
|
+
} from "@loaders.gl/tile-converter/v5/core";
|
|
13
|
+
import { convertFeatureAttributesToArrowBatches } from "@loaders.gl/tile-converter/v5/adapters";
|
|
14
|
+
import { encodePointCloudTile } from "@loaders.gl/tile-converter/v5/adapters";
|
|
15
|
+
import { traversePointCloudSource } from "@loaders.gl/tile-converter/v5/core";
|
|
16
|
+
import {
|
|
17
|
+
encodePointCloudSource,
|
|
18
|
+
encodePointCloudSourceTile
|
|
19
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
20
|
+
import { convertPointCloudSource } from "@loaders.gl/tile-converter/v5/adapters";
|
|
21
|
+
import { createManifestBackedTileConversionSink } from "@loaders.gl/tile-converter/v5/core";
|
|
22
|
+
import { encodeMeshTile } from "@loaders.gl/tile-converter/v5/adapters";
|
|
23
|
+
import { createMeshConversionCodec } from "@loaders.gl/tile-converter/v5/adapters";
|
|
24
|
+
import { createSingleMeshTilesetSink } from "@loaders.gl/tile-converter/v5/adapters";
|
|
25
|
+
import {
|
|
26
|
+
createTileConversionArchive,
|
|
27
|
+
encodeTileConversionArchiveInBatches
|
|
28
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
29
|
+
import { createSingleMeshTilesetArchive } from "@loaders.gl/tile-converter/v5/adapters";
|
|
30
|
+
import { createMeshTilesetConversionSource } from "@loaders.gl/tile-converter/v5/adapters";
|
|
31
|
+
import {
|
|
32
|
+
createI3SMeshConversionCodec,
|
|
33
|
+
createSingleMeshI3SSink
|
|
34
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
35
|
+
export {
|
|
36
|
+
TileConversionError,
|
|
37
|
+
convertFeatureAttributesToArrowBatches,
|
|
38
|
+
convertPointCloudSource,
|
|
39
|
+
convertTileset,
|
|
40
|
+
createI3SConversionSpatialContext,
|
|
41
|
+
createI3SMeshConversionCodec,
|
|
42
|
+
createManifestBackedTileConversionSink,
|
|
43
|
+
createMeshConversionCodec,
|
|
44
|
+
createMeshTilesetConversionSource,
|
|
45
|
+
createSingleMeshI3SSink,
|
|
46
|
+
createSingleMeshTilesetArchive,
|
|
47
|
+
createSingleMeshTilesetSink,
|
|
48
|
+
createTileConversionArchive,
|
|
49
|
+
createTiles3DConversionSpatialContext,
|
|
50
|
+
createTilesetConversionSource,
|
|
51
|
+
encodeMeshTile,
|
|
52
|
+
encodePointCloudSource,
|
|
53
|
+
encodePointCloudSourceTile,
|
|
54
|
+
encodePointCloudTile,
|
|
55
|
+
encodeTileConversionArchiveInBatches,
|
|
56
|
+
inspectTileset,
|
|
57
|
+
traversePointCloudSource,
|
|
58
|
+
validateTileset
|
|
59
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { TilesetSpatialReference } from '@loaders.gl/tiles';
|
|
2
|
+
import type { MeshGeometry } from '@loaders.gl/schema';
|
|
3
|
+
import type { LoadLibraryOptions } from '@loaders.gl/worker-utils';
|
|
4
|
+
import type { TileConversionCodec } from '@loaders.gl/tile-converter/v5/core';
|
|
5
|
+
import type { Tiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
6
|
+
import type { MeshTileMaterial } from './mesh.js';
|
|
7
|
+
/** Explicitly selected geometry, with positions already in the spatial context's source frame. */
|
|
8
|
+
export interface MeshConversionInput {
|
|
9
|
+
/** Caller-owned resource identifier, forwarded to the output sink. */
|
|
10
|
+
readonly id: string;
|
|
11
|
+
/** Triangle geometry with absolute packed Float32 or Float64 source positions. */
|
|
12
|
+
readonly mesh: MeshGeometry;
|
|
13
|
+
/** Optional single material with an embedded base-color image, mapped explicitly by the source adapter. */
|
|
14
|
+
readonly material?: MeshTileMaterial;
|
|
15
|
+
/** Finite xyz origin in the target frame, subtracted before float32 encoding. */
|
|
16
|
+
readonly origin: readonly [number, number, number];
|
|
17
|
+
}
|
|
18
|
+
/** A completed GLB resource and the metadata needed to place its local geometry. */
|
|
19
|
+
export interface EncodedMeshConversionResource {
|
|
20
|
+
/** Caller-owned resource identifier. */
|
|
21
|
+
readonly id: string;
|
|
22
|
+
/** Self-contained GLB with local positions and transformed normals. */
|
|
23
|
+
readonly glb: ArrayBuffer;
|
|
24
|
+
/** Target-frame translation to add to the encoded positions. */
|
|
25
|
+
readonly origin: readonly [number, number, number];
|
|
26
|
+
/** Target-frame bounds of the reconstructed encoded vertices, including float32 rounding. */
|
|
27
|
+
readonly boundingBox: readonly [readonly number[], readonly number[]];
|
|
28
|
+
/** Bounds of encoded local vertices before adding the origin, without absolute-coordinate cancellation. */
|
|
29
|
+
readonly localBoundingBox: readonly [readonly number[], readonly number[]];
|
|
30
|
+
/** Metadata describing the output coordinate operation and height reference. */
|
|
31
|
+
readonly spatialReference: TilesetSpatialReference;
|
|
32
|
+
/** Largest measured Euclidean reconstruction error in target coordinate units. */
|
|
33
|
+
readonly maximumPositionError: number;
|
|
34
|
+
}
|
|
35
|
+
/** Spatial policy used by the concrete mesh conversion codec. */
|
|
36
|
+
export interface MeshConversionCodecOptions {
|
|
37
|
+
/** Shared context that accepts absolute source positions and returns absolute target positions. */
|
|
38
|
+
readonly spatialContext: Tiles3DConversionSpatialContext;
|
|
39
|
+
/** Maximum Euclidean reconstruction error per vertex, in target coordinate units. */
|
|
40
|
+
readonly maxPositionError: number;
|
|
41
|
+
/** Lossless Draco Edge Breaker is enabled by default; false emits uncompressed GLB geometry. */
|
|
42
|
+
readonly draco?: boolean;
|
|
43
|
+
/** Optional local/CDN library locations or injected Draco runtimes for compression and verification. */
|
|
44
|
+
readonly dracoLibraryOptions?: LoadLibraryOptions;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a concrete mesh codec for `convertTileset`.
|
|
48
|
+
*
|
|
49
|
+
* Source adapters must select geometry and apply source placement before supplying absolute
|
|
50
|
+
* positions and matching normals. This codec applies the supplied spatial context once, rebases
|
|
51
|
+
* around each input's target origin, and rejects rounding above the explicit error budget.
|
|
52
|
+
* Lossless Draco Edge Breaker is enabled by default; decoded positions determine output bounds.
|
|
53
|
+
* Set draco to false for uncompressed geometry. Quantization is not enabled by this profile.
|
|
54
|
+
* Geographic and unknown output frames are rejected. The returned origin/bounds/reference are
|
|
55
|
+
* external placement metadata; applications own axis conventions, hierarchy, and packaging.
|
|
56
|
+
* Input arrays are not mutated. Core input/output byte gates, cancellation, awaited writes, and
|
|
57
|
+
* destination finalize/abort handling apply when used through `convertTileset`.
|
|
58
|
+
*
|
|
59
|
+
* @param options - Resolved spatial context and finite nonnegative target-unit precision budget.
|
|
60
|
+
* @returns One GLB and matching metadata per input geometry.
|
|
61
|
+
*/
|
|
62
|
+
export declare function createMeshConversionCodec<TInspection = unknown>(options: MeshConversionCodecOptions): TileConversionCodec<TInspection, MeshConversionInput, EncodedMeshConversionResource>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MeshGeometry } from '@loaders.gl/schema';
|
|
2
|
+
import type { LoadLibraryOptions } from '@loaders.gl/worker-utils';
|
|
3
|
+
import { type MeshTileOptions } from './mesh.js';
|
|
4
|
+
/** Encodes the validated single-mesh profile with lossless Edge Breaker and no raw fallback. */
|
|
5
|
+
export declare function encodeDracoMeshTile(geometry: MeshGeometry, options: MeshTileOptions, libraryOptions?: LoadLibraryOptions): Promise<{
|
|
6
|
+
glb: ArrayBuffer;
|
|
7
|
+
positions: Float32Array;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MeshGeometry } from '@loaders.gl/schema';
|
|
2
|
+
import type { GLTFPostprocessed, GLTFMeshPrimitivePostprocessed } from '@loaders.gl/gltf';
|
|
3
|
+
import type { I3SMeshFeatures } from '@loaders.gl/i3s';
|
|
4
|
+
import type { FeatureArrowBatchOptions } from './feature-arrow.js';
|
|
5
|
+
/** Explicit source feature mapping; target type changes must be authorized separately. */
|
|
6
|
+
export interface MeshSourceFeatureOptions extends FeatureArrowBatchOptions {
|
|
7
|
+
/** Batch-table class label, or the exact structural-metadata class to select. */
|
|
8
|
+
readonly metadataClass: string;
|
|
9
|
+
/** Optional source property providing stable identifiers; otherwise row indices are stable within the content. */
|
|
10
|
+
readonly sourceFeatureIdProperty?: string;
|
|
11
|
+
/** Explicit I3S representation for 64-bit integers; omission rejects those target fields. */
|
|
12
|
+
readonly integer64Encoding?: 'decimal-string';
|
|
13
|
+
}
|
|
14
|
+
/** Extracts legacy batch tables or one decoded modern property table and validates geometry ownership. */
|
|
15
|
+
export declare function extractMeshFeatures(gltf: GLTFPostprocessed, primitive: GLTFMeshPrimitivePostprocessed, payload: {
|
|
16
|
+
batchTableJson?: Record<string, unknown>;
|
|
17
|
+
header?: {
|
|
18
|
+
batchLength?: number;
|
|
19
|
+
};
|
|
20
|
+
featureTableJson?: Record<string, unknown>;
|
|
21
|
+
}, mesh: MeshGeometry, options?: MeshSourceFeatureOptions): I3SMeshFeatures | undefined;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GLTFMaterialPostprocessed } from '@loaders.gl/gltf';
|
|
2
|
+
import type { MeshTileTexture } from './mesh.js';
|
|
3
|
+
/** Maps a buffer-view or base64 PNG/JPEG image, sampling and UV transform without decoding pixels. */
|
|
4
|
+
export declare function mapMeshSourceTexture(textureInfo: NonNullable<GLTFMaterialPostprocessed['pbrMetallicRoughness']>['baseColorTexture']): MeshTileTexture;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Tileset3D, TilesetSourceMetadata } from '@loaders.gl/tiles';
|
|
2
|
+
import type { TileConversionSource } from '@loaders.gl/tile-converter/v5/core';
|
|
3
|
+
import type { TilesetConversionSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
4
|
+
import type { MeshConversionInput } from './mesh-conversion.js';
|
|
5
|
+
import type { MeshSourceFeatureOptions } from './mesh-source-features.js';
|
|
6
|
+
import type { I3SMeshFeatures } from '@loaders.gl/i3s';
|
|
7
|
+
export type { MeshSourceFeatureOptions } from './mesh-source-features.js';
|
|
8
|
+
/** Source mesh with optional explicit-schema feature data and triangle association. */
|
|
9
|
+
export interface MeshSourceResource extends MeshConversionInput {
|
|
10
|
+
/** Arrow features associated with the selected primitive; IDs are distinct from table row indices. */
|
|
11
|
+
readonly features?: I3SMeshFeatures;
|
|
12
|
+
}
|
|
13
|
+
/** Narrow source profile and content lifetime controls. */
|
|
14
|
+
export interface MeshTilesetSourceOptions extends TilesetConversionSourceOptions {
|
|
15
|
+
/** Required when the source has batch/structural metadata; no schema is inferred. */
|
|
16
|
+
readonly features?: MeshSourceFeatureOptions;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Extracts static GLB/B3DM primitives from a native ECEF 3D Tiles runtime, including
|
|
20
|
+
* optional buffer-view or base64 data-URI PNG/JPEG images, TEXCOORD_0, glTF sampling and
|
|
21
|
+
* KHR_texture_transform controls on TEXCOORD_0. Decode content with
|
|
22
|
+
* `gltf.excludeExtensions: {KHR_texture_transform: false}` to retain authored UVs/transforms.
|
|
23
|
+
* Shared traversal retains placement identity and unloads content according to the supplied policy.
|
|
24
|
+
* The adapter applies node transforms, glTF up-axis correction, RTC translation, and tile placement
|
|
25
|
+
* once, retaining Float64 absolute positions and inverse-transpose unit normals. Animation, skins,
|
|
26
|
+
* morphs, instancing, broader texture semantics, unknown extensions, non-affine/mirrored
|
|
27
|
+
* placements, and
|
|
28
|
+
* metadata outside the declared feature profile fail explicitly. Multiple resources can be read;
|
|
29
|
+
* the single-mesh I3S sink rejects a second resource and aborts the entire output.
|
|
30
|
+
* @param tileset - Dedicated native EPSG:4978 runtime with decoded glTF content enabled.
|
|
31
|
+
* @param options - Explicit feature schema/mapping and optional decoded-content cleanup.
|
|
32
|
+
* @returns Portable conversion source; COLOR_0 is preserved for GLB, while I3S rejects vertex colors.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMeshTilesetConversionSource(tileset: Tileset3D, options?: MeshTilesetSourceOptions): TileConversionSource<TilesetSourceMetadata, MeshSourceResource>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BrowserTileConversionFile } from '@loaders.gl/tile-converter/v5/core';
|
|
2
|
+
/** Output-size budget for a single-mesh 3TZ archive. */
|
|
3
|
+
export interface SingleMeshTilesetArchiveOptions {
|
|
4
|
+
/** Maximum final archive bytes, including ZIP headers and index; not peak serialization memory. */
|
|
5
|
+
readonly maxArchiveBytes: number;
|
|
6
|
+
/** Cooperative packaging cancellation; active Blob reads and entry encodes finish first. */
|
|
7
|
+
readonly signal?: AbortSignal;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Packages the two unmodified files from a finalized single-mesh sink as a downloadable 3TZ Blob.
|
|
11
|
+
* The writer checks the complete archive budget before reading either Blob. Applications own
|
|
12
|
+
* object-URL creation/revocation and download UI. Retained input Blobs and transient ZIP buffers
|
|
13
|
+
* are additional memory. SLPK requires separately authored I3S scene-layer resources.
|
|
14
|
+
* @param files - Files returned by a successfully finalized createSingleMeshTilesetSink.
|
|
15
|
+
* @param options - Required final archive-size budget.
|
|
16
|
+
* @returns An indexed 3TZ Blob; save with the .3tz extension.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createSingleMeshTilesetArchive(files: readonly BrowserTileConversionFile[], options: SingleMeshTilesetArchiveOptions): Promise<Blob>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { TileConversionSink } from '@loaders.gl/tile-converter/v5/core';
|
|
2
|
+
import type { BrowserTileConversionFile } from '@loaders.gl/tile-converter/v5/core';
|
|
3
|
+
import type { EncodedMeshConversionResource } from './mesh-conversion.js';
|
|
4
|
+
/** Limits and fidelity policy for one ECEF mesh tileset. */
|
|
5
|
+
export interface SingleMeshTilesetSinkOptions {
|
|
6
|
+
/** Maximum combined UTF-8 tileset JSON and GLB Blob bytes retained by the sink. */
|
|
7
|
+
readonly maxTotalBytes: number;
|
|
8
|
+
/** Explicit geometric error in meters, including source error and position rounding. */
|
|
9
|
+
readonly geometricError: number;
|
|
10
|
+
}
|
|
11
|
+
/** A single-tile output package retained as two named browser-native Blobs. */
|
|
12
|
+
export interface SingleMeshTilesetSink extends TileConversionSink<EncodedMeshConversionResource> {
|
|
13
|
+
/** Returns mesh.glb and tileset.json only after successful finalization; empty after abort. */
|
|
14
|
+
getFiles(): readonly BrowserTileConversionFile[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Packages exactly one `createMeshConversionCodec` output as a 3D Tiles 1.1 tileset.
|
|
18
|
+
*
|
|
19
|
+
* Requires resolved EPSG:4978 output identified by the compact string, with ellipsoidal heights.
|
|
20
|
+
* The tile transform cancels the standard glTF y-up to z-up rotation and adds the ECEF origin.
|
|
21
|
+
* Bounds come from encoded local vertices, avoiding subtraction of large absolute coordinates.
|
|
22
|
+
* Fixed relative names keep the package deterministic. Save both files together or pass them to
|
|
23
|
+
* createSingleMeshTilesetArchive for 3TZ packaging. Applications own downloads, workers, and
|
|
24
|
+
* source-scene extraction.
|
|
25
|
+
* The byte limit bounds retained Blobs, not peak conversion/serialization memory. Input GLB and
|
|
26
|
+
* local bounds must be unmodified codec outputs; this sink does not independently validate GLB.
|
|
27
|
+
*
|
|
28
|
+
* @param options - Required retained-output budget and geometric error in meters.
|
|
29
|
+
* @returns A bounded sink that exposes files on finalization and clears them on abort.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createSingleMeshTilesetSink(options: SingleMeshTilesetSinkOptions): SingleMeshTilesetSink;
|
|
32
|
+
/** Limits for an explicit collection of independent ECEF mesh leaves. */
|
|
33
|
+
export interface MeshTilesetSinkOptions extends SingleMeshTilesetSinkOptions {
|
|
34
|
+
/** Maximum mesh placements, including repeated content at distinct source placements. */
|
|
35
|
+
readonly maxMeshes: number;
|
|
36
|
+
}
|
|
37
|
+
/** Atomic mesh package with a contentless root and independently placed GLB leaves. */
|
|
38
|
+
export interface MeshTilesetSink extends TileConversionSink<EncodedMeshConversionResource> {
|
|
39
|
+
/** Returns deterministically named GLBs and tileset JSON only after finalization. */
|
|
40
|
+
getFiles(): readonly BrowserTileConversionFile[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Packages independent codec outputs as a bounded 3D Tiles 1.1 leaf collection.
|
|
44
|
+
* Each leaf retains its ECEF placement and encoded bounds; the contentless ADD root encloses
|
|
45
|
+
* all leaves. Its geometric error covers the enclosing diagonal; each leaf retains the
|
|
46
|
+
* supplied error. This authors a flat partial dataset, not the source LOD hierarchy. Callers must
|
|
47
|
+
* exclude overlapping parent/descendant LOD representations and provide a conservative error.
|
|
48
|
+
* Resource IDs identify placements, never output paths. Retained bytes include final JSON;
|
|
49
|
+
* maxMeshes bounds hierarchy metadata, while neither limit bounds peak conversion memory.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createMeshTilesetSink(options: MeshTilesetSinkOptions): MeshTilesetSink;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { GLTFScenegraph } from '@loaders.gl/gltf';
|
|
2
|
+
import type { MeshGeometry } from '@loaders.gl/schema';
|
|
3
|
+
/** Explicit glTF wrapping and filtering for the selected base-color image. */
|
|
4
|
+
export interface MeshTileSampler {
|
|
5
|
+
/** Horizontal wrapping: CLAMP_TO_EDGE, MIRRORED_REPEAT, or REPEAT; omitted values use REPEAT. */
|
|
6
|
+
readonly wrapS?: 33071 | 33648 | 10497;
|
|
7
|
+
/** Vertical wrapping: CLAMP_TO_EDGE, MIRRORED_REPEAT, or REPEAT; omitted values use REPEAT. */
|
|
8
|
+
readonly wrapT?: 33071 | 33648 | 10497;
|
|
9
|
+
/** Magnification: NEAREST or LINEAR; omission leaves filtering to the renderer. */
|
|
10
|
+
readonly magFilter?: 9728 | 9729;
|
|
11
|
+
/** Minification: NEAREST, LINEAR, or a glTF mipmap filter; omission leaves filtering to the renderer. */
|
|
12
|
+
readonly minFilter?: 9728 | 9729 | 9984 | 9985 | 9986 | 9987;
|
|
13
|
+
}
|
|
14
|
+
/** Selected KHR_texture_transform controls for TEXCOORD_0. */
|
|
15
|
+
export interface MeshTileTextureTransform {
|
|
16
|
+
/** Finite UV translation; omitted values use [0, 0]. */
|
|
17
|
+
readonly offset?: readonly [number, number];
|
|
18
|
+
/** Finite counterclockwise rotation in radians around the UV origin; omission uses 0. */
|
|
19
|
+
readonly rotation?: number;
|
|
20
|
+
/** Finite UV scale; zero and negative values are allowed, and omission uses [1, 1]. */
|
|
21
|
+
readonly scale?: readonly [number, number];
|
|
22
|
+
}
|
|
23
|
+
/** One already encoded base-color image using TEXCOORD_0. */
|
|
24
|
+
export interface MeshTileTexture {
|
|
25
|
+
/** Encoded PNG/JPEG bytes; a typed array subview selects only its own bytes. */
|
|
26
|
+
readonly data: Uint8Array;
|
|
27
|
+
/** Declared image format, checked against the encoded header. */
|
|
28
|
+
readonly mimeType: 'image/png' | 'image/jpeg';
|
|
29
|
+
/** Optional wrapping/filtering; omission retains glTF's implicit sampler. */
|
|
30
|
+
readonly sampler?: MeshTileSampler;
|
|
31
|
+
/** Optional UV transform, preserved as a required KHR_texture_transform extension. */
|
|
32
|
+
readonly transform?: MeshTileTextureTransform;
|
|
33
|
+
}
|
|
34
|
+
/** One glTF metallic-roughness material, shared by every triangle in the mesh. */
|
|
35
|
+
export interface MeshTileMaterial {
|
|
36
|
+
/** Linear RGBA base-color multiplier; components must be finite in [0, 1]. */
|
|
37
|
+
readonly baseColorFactor?: readonly [number, number, number, number];
|
|
38
|
+
/** Optional embedded image, multiplied by baseColorFactor and COLOR_0; requires TEXCOORD_0. */
|
|
39
|
+
readonly baseColorTexture?: MeshTileTexture;
|
|
40
|
+
/** Metallic weight in [0, 1]; omitted values use the glTF default of 1. */
|
|
41
|
+
readonly metallicFactor?: number;
|
|
42
|
+
/** Roughness weight in [0, 1]; omitted values use the glTF default of 1. */
|
|
43
|
+
readonly roughnessFactor?: number;
|
|
44
|
+
/** Alpha interpretation; omitted values use OPAQUE. */
|
|
45
|
+
readonly alphaMode?: 'OPAQUE' | 'MASK' | 'BLEND';
|
|
46
|
+
/** Finite nonnegative threshold, allowed only with MASK; omitted values use 0.5. */
|
|
47
|
+
readonly alphaCutoff?: number;
|
|
48
|
+
/** Whether both sides are rendered; omitted values use false. */
|
|
49
|
+
readonly doubleSided?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/** Optional appearance for the single-mesh GLB profile. */
|
|
52
|
+
export interface MeshTileOptions {
|
|
53
|
+
/** Explicitly selected material; other texture maps and material extensions are unsupported. */
|
|
54
|
+
readonly material?: MeshTileMaterial;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Encodes one triangle mesh as a self-contained glTF 2.0 GLB resource.
|
|
58
|
+
*
|
|
59
|
+
* POSITION and optional NORMAL must contain packed finite Float32 xyz triples. COLOR_0 accepts
|
|
60
|
+
* packed Float32 linear RGB/RGBA in [0, 1] or normalized Uint8/Uint16 colors per vertex.
|
|
61
|
+
* Normals must have unit length within 0.0001. TEXCOORD_0 accepts packed finite Float32
|
|
62
|
+
* or normalized Uint8/Uint16 UV pairs per vertex. Optional indices use packed unsigned
|
|
63
|
+
* 8-, 16-, or 32-bit values.
|
|
64
|
+
* Unsupported attributes, layouts, and encoded transforms fail rather than being discarded.
|
|
65
|
+
* Coordinates are preserved: callers own CRS conversion, local origins, placement, source material mapping,
|
|
66
|
+
* feature mappings, and tileset packaging. Input arrays are never modified.
|
|
67
|
+
*
|
|
68
|
+
* @param mesh - Triangle-list geometry in the caller's selected local coordinate frame.
|
|
69
|
+
* @param options - Optional single material with an already encoded base-color image.
|
|
70
|
+
* @returns An embedded-buffer GLB containing one mesh, node, and default scene.
|
|
71
|
+
*/
|
|
72
|
+
export declare function encodeMeshTile(mesh: MeshGeometry, options?: MeshTileOptions): ArrayBuffer;
|
|
73
|
+
/** Creates the shared material/image scene without allocating uncompressed geometry buffers. */
|
|
74
|
+
export declare function createMeshTileScenegraph(options: MeshTileOptions, geometry: MeshGeometry): {
|
|
75
|
+
scenegraph: GLTFScenegraph;
|
|
76
|
+
materialIndex: number | undefined;
|
|
77
|
+
};
|
|
78
|
+
/** Adds placement-neutral nodes and serializes the single-mesh scene as GLB. */
|
|
79
|
+
export declare function finalizeMeshTileScenegraph(scenegraph: GLTFScenegraph, meshIndex: number): ArrayBuffer;
|
|
80
|
+
/** Validates the shared mesh profile; spatial preparation may retain Float64 positions internally. */
|
|
81
|
+
export declare function validateMeshGeometry(mesh: MeshGeometry, allowFloat64Positions?: boolean): MeshGeometry;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PointCloudTilesetSource } from '@loaders.gl/tiles';
|
|
2
|
+
import type { TileConversionProgress, TileConversionReport, TileConversionSink } from '@loaders.gl/tile-converter/v5/core';
|
|
3
|
+
import type { PointCloudSourceTile } from '@loaders.gl/tile-converter/v5/core';
|
|
4
|
+
import type { EncodedPointCloudSourceTile, EncodePointCloudSourceOptions } from './point-cloud-source-encoder.js';
|
|
5
|
+
/** Point-cloud encoding options and an application-owned output destination. */
|
|
6
|
+
export interface ConvertPointCloudSourceOptions extends EncodePointCloudSourceOptions {
|
|
7
|
+
/** Destination receiving PNTS resources and their source placement metadata. */
|
|
8
|
+
readonly sink: TileConversionSink<EncodedPointCloudSourceTile>;
|
|
9
|
+
/** Input byte accounting for each visited source tile, including tiles with null content. */
|
|
10
|
+
readonly measureInputBytes: (sourceTile: PointCloudSourceTile) => number;
|
|
11
|
+
/** Maximum caller-measured bytes in one decoded source tile, checked before PNTS encoding. */
|
|
12
|
+
readonly maxInputResourceBytes?: number;
|
|
13
|
+
/** Maximum bytes in one encoded PNTS resource. Defaults to no limit. */
|
|
14
|
+
readonly maxOutputResourceBytes?: number;
|
|
15
|
+
/** Receive conversion progress, including resource counts and caller-measured input bytes. */
|
|
16
|
+
readonly onProgress?: (progress: TileConversionProgress) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Converts a point-cloud source to PNTS resources through the v5 output-sink lifecycle.
|
|
20
|
+
*
|
|
21
|
+
* Each write is awaited before reading the next source tile. The destination is finalized only
|
|
22
|
+
* after traversal and writes succeed, and aborted on read, encoding, write, or cancellation errors.
|
|
23
|
+
* Input resource counts include empty tiles; output counts and byte sizes describe emitted PNTS
|
|
24
|
+
* resources. Applications supply input byte accounting because source tiles contain decoded Arrow
|
|
25
|
+
* data rather than transport bytes. The caller retains ownership of the input source.
|
|
26
|
+
*
|
|
27
|
+
* @param source - An I3S, COPC, or compatible point-cloud source to initialize and traverse.
|
|
28
|
+
* @param options - Destination, byte accounting, traversal limits, and per-tile encoding options.
|
|
29
|
+
* @returns The shared v5 conversion report after destination finalization.
|
|
30
|
+
*/
|
|
31
|
+
export declare function convertPointCloudSource(source: PointCloudTilesetSource, options: ConvertPointCloudSourceOptions): Promise<TileConversionReport>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { PointCloudBoundingVolume, PointCloudCoordinateSystem, PointCloudTilesetSource, TilesetSpatialReference } from '@loaders.gl/tiles';
|
|
2
|
+
import type { EncodePointCloudTileOptions } from './point-cloud.js';
|
|
3
|
+
import type { PointCloudSourceTile, TraversePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
4
|
+
/** Traversal and per-tile encoding options for a point-cloud source. */
|
|
5
|
+
export type EncodePointCloudSourceOptions = TraversePointCloudSourceOptions & {
|
|
6
|
+
/** Select encoder options for each source tile with content, using its header and decoded data. */
|
|
7
|
+
readonly getTileEncodingOptions?: (sourceTile: PointCloudSourceTile) => EncodePointCloudTileOptions;
|
|
8
|
+
};
|
|
9
|
+
/** A PNTS resource paired with the source placement metadata needed to package its tile. */
|
|
10
|
+
export type EncodedPointCloudSourceTile = {
|
|
11
|
+
/** Stable source tile identifier. */
|
|
12
|
+
readonly id: string;
|
|
13
|
+
/** Original source hierarchy and bounds. */
|
|
14
|
+
readonly header: PointCloudSourceTile['header'];
|
|
15
|
+
/** Encoded point-cloud tile content. */
|
|
16
|
+
readonly pnts: ArrayBuffer;
|
|
17
|
+
/** Number of point records encoded. */
|
|
18
|
+
readonly pointCount: number;
|
|
19
|
+
/** Coordinate system used by the returned point positions. */
|
|
20
|
+
readonly coordinateSystem: PointCloudCoordinateSystem;
|
|
21
|
+
/** Origin to add to source-relative point positions. */
|
|
22
|
+
readonly cartographicOrigin: readonly number[];
|
|
23
|
+
/** Optional placement transform supplied by the point-cloud source. */
|
|
24
|
+
readonly modelMatrix?: readonly number[];
|
|
25
|
+
/** Optional source or target CRS metadata. */
|
|
26
|
+
readonly spatialReference?: TilesetSpatialReference;
|
|
27
|
+
/** Optional output-frame tile bounds supplied by the source. */
|
|
28
|
+
readonly spatialBoundingVolume?: PointCloudBoundingVolume;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Encodes a point-cloud source as a stream of PNTS resources, one for each non-empty source tile.
|
|
32
|
+
*
|
|
33
|
+
* @param source - An I3S, COPC, or compatible point-cloud tileset source.
|
|
34
|
+
* @param options - Optional traversal depth limit, cancellation signal, and per-tile encoder options.
|
|
35
|
+
* @returns Encoded source tiles in deterministic depth-first order.
|
|
36
|
+
*/
|
|
37
|
+
export declare function encodePointCloudSource(source: PointCloudTilesetSource, options?: EncodePointCloudSourceOptions): AsyncIterableIterator<EncodedPointCloudSourceTile>;
|
|
38
|
+
/**
|
|
39
|
+
* Encodes one decoded source tile as PNTS and retains its hierarchy and placement metadata.
|
|
40
|
+
*
|
|
41
|
+
* Positions use the source coordinate system, with an optional RTC center subtracted before float32
|
|
42
|
+
* encoding and stored in the PNTS feature table. Source placement metadata is retained so callers
|
|
43
|
+
* can assemble the output tileset. This function does not transform the source CRS.
|
|
44
|
+
*
|
|
45
|
+
* @param sourceTile - Tile header and decoded Arrow point content from `traversePointCloudSource`.
|
|
46
|
+
* @param options - Optional RTC center, batch-table values, and constant color override.
|
|
47
|
+
* @returns An encoded source tile, or null when the source tile has no content.
|
|
48
|
+
*/
|
|
49
|
+
export declare function encodePointCloudSourceTile(sourceTile: PointCloudSourceTile, options?: EncodePointCloudTileOptions): EncodedPointCloudSourceTile | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PointCloudTileContent, PointCloudTileHeader, PointCloudTilesetSource } from '@loaders.gl/tiles';
|
|
2
|
+
/** A source tile and its decoded point content, including null content when no payload exists. */
|
|
3
|
+
export type PointCloudSourceTile = {
|
|
4
|
+
/** Header with the source tile's hierarchy, bounds, and LOD metadata. */
|
|
5
|
+
readonly header: PointCloudTileHeader;
|
|
6
|
+
/** Arrow point data and its coordinate metadata, or null for an empty tile. */
|
|
7
|
+
readonly content: PointCloudTileContent | null;
|
|
8
|
+
};
|
|
9
|
+
/** Options for camera-independent point-cloud source traversal. */
|
|
10
|
+
export type TraversePointCloudSourceOptions = {
|
|
11
|
+
/** Stop descending after this source tile level. Defaults to the complete hierarchy. */
|
|
12
|
+
readonly maxDepth?: number;
|
|
13
|
+
/** Cancel traversal between source operations. */
|
|
14
|
+
readonly signal?: AbortSignal;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Reads a point-cloud source in deterministic depth-first order, independent of a render camera.
|
|
18
|
+
* Each yielded value retains its tile header and Arrow content metadata so callers can apply the
|
|
19
|
+
* source coordinate frame and placement when encoding output tiles.
|
|
20
|
+
*
|
|
21
|
+
* @param source - An I3S, COPC, or compatible point-cloud tileset source.
|
|
22
|
+
* @param options - Optional depth limit and cancellation signal.
|
|
23
|
+
* @returns One header and decoded payload for each reachable source tile.
|
|
24
|
+
*/
|
|
25
|
+
export declare function traversePointCloudSource(source: PointCloudTilesetSource, options?: TraversePointCloudSourceOptions): AsyncIterableIterator<PointCloudSourceTile>;
|