@loaders.gl/draco
Version:
Framework-independent loader and writer for Draco compressed meshes and point clouds
59 lines • 1.87 kB
JavaScript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import { extractLoadLibraryOptions } from '@loaders.gl/worker-utils';
import DRACOBuilder from "./lib/draco-builder.js";
import { loadDracoEncoderModule } from "./lib/draco-module-loader.js";
import { VERSION } from "./lib/utils/version.js";
const DEFAULT_DRACO_WRITER_OPTIONS = {
pointcloud: false, // Set to true if pointcloud (mode: 0, no indices)
attributeNameEntry: 'name'
// Draco Compression Parameters
// method: 'MESH_EDGEBREAKER_ENCODING', // Use draco defaults
// speed: [5, 5], // Use draco defaults
// quantization: { // Use draco defaults
// POSITION: 10
// }
};
/**
* Browser worker doesn't work because of issue during "draco_encoder.js" loading.
* Refused to execute script from 'https://raw.githubusercontent.com/google/draco/1.4.1/javascript/draco_encoder.js' because its MIME type ('') is not executable.
*/
export const DracoWriterWorker = {
id: 'draco-writer',
name: 'Draco compressed geometry writer',
module: 'draco',
version: VERSION,
worker: true,
options: {
draco: {},
source: null
}
};
/**
* Exporter for Draco3D compressed geometries
*/
export const DracoWriter = {
name: 'DRACO',
id: 'draco',
module: 'draco',
version: VERSION,
extensions: ['drc'],
mimeTypes: ['application/octet-stream'],
options: {
draco: DEFAULT_DRACO_WRITER_OPTIONS
},
encode
};
async function encode(data, options = {}) {
// Dynamically load draco
const { draco } = await loadDracoEncoderModule(extractLoadLibraryOptions(options));
const dracoBuilder = new DRACOBuilder(draco);
try {
return dracoBuilder.encodeSync(data, options.draco);
}
finally {
dracoBuilder.destroy();
}
}
//# sourceMappingURL=draco-writer.js.map