UNPKG

@loaders.gl/3d-tiles

Version:

3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.

34 lines (33 loc) 1.71 kB
// loaders.gl // SPDX-License-Identifier: MIT AND Apache-2.0 // Copyright vis.gl contributors // This file is derived from the Cesium code base under Apache 2 license // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md import { TILE3D_TYPE } from "../constants.js"; import { assert } from '@loaders.gl/loader-utils'; import { encodeComposite3DTile } from "./encode-3d-tile-composite.js"; import { encodeBatchedModel3DTile } from "./encode-3d-tile-batched-model.js"; import { encodeInstancedModel3DTile } from "./encode-3d-tile-instanced-model.js"; import { encodePointCloud3DTile } from "./encode-3d-tile-point-cloud.js"; export default function encode3DTile(tile, options) { const byteLength = encode3DTileToDataView(tile, null, 0, options); const arrayBuffer = new ArrayBuffer(byteLength); const dataView = new DataView(arrayBuffer); encode3DTileToDataView(tile, dataView, 0, options); return arrayBuffer; } function encode3DTileToDataView(tile, dataView, byteOffset, options) { assert(typeof tile.type === 'string'); switch (tile.type) { case TILE3D_TYPE.COMPOSITE: return encodeComposite3DTile(tile, dataView, byteOffset, options, encode3DTileToDataView); case TILE3D_TYPE.POINT_CLOUD: return encodePointCloud3DTile(tile, dataView, byteOffset, options); case TILE3D_TYPE.BATCHED_3D_MODEL: return encodeBatchedModel3DTile(tile, dataView, byteOffset, options); case TILE3D_TYPE.INSTANCED_3D_MODEL: return encodeInstancedModel3DTile(tile, dataView, byteOffset, options); default: throw new Error('3D Tiles: unknown tile type'); } }