@loaders.gl/draco
Version:
Framework-independent loader and writer for Draco compressed meshes and point clouds
107 lines • 3.74 kB
TypeScript
import type { Draco3D, Encoder, Mesh, MeshBuilder, PointCloud, Metadata, MetadataBuilder, draco_GeometryAttribute_Type } from "../draco3d/draco3d-types.js";
import type { TypedArray } from '@loaders.gl/schema';
import type { DracoMesh } from "./draco-types.js";
export type DracoBuildOptions = {
pointcloud?: boolean;
metadata?: {
[key: string]: string;
};
attributesMetadata?: {};
log?: any;
speed?: [number, number];
method?: string;
quantization?: {
[attributeName: string]: number;
};
};
export default class DracoBuilder {
draco: Draco3D;
dracoEncoder: Encoder;
dracoMeshBuilder: MeshBuilder;
dracoMetadataBuilder: MetadataBuilder;
log: any;
constructor(draco: Draco3D);
destroy(): void;
destroyEncodedObject(object: any): void;
/**
* Encode mesh or point cloud
* @param mesh =({})
* @param options
*/
encodeSync(mesh: DracoMesh, options?: DracoBuildOptions): ArrayBuffer;
_getAttributesFromMesh(mesh: DracoMesh): {
attributes: {
[attributeName: string]: import("@loaders.gl/schema").MeshAttribute;
};
indices?: import("@loaders.gl/schema").MeshAttribute;
topology: "point-list" | "triangle-list" | "triangle-strip";
mode: number;
loader: "draco";
loaderData: {
[key: string]: any;
} & import("./draco-types").DracoLoaderData;
header?: {
vertexCount: number;
boundingBox?: [number[], number[]];
};
schema: import("@loaders.gl/schema").Schema;
};
_encodePointCloud(pointcloud: DracoMesh, options: DracoBuildOptions): ArrayBuffer;
_encodeMesh(mesh: DracoMesh, options: DracoBuildOptions): ArrayBuffer;
/**
* Set encoding options.
* @param {{speed?: any; method?: any; quantization?: any;}} options
*/
_setOptions(options: DracoBuildOptions): void;
/**
* @param {Mesh} dracoMesh
* @param {object} attributes
* @returns {Mesh}
*/
_createDracoMesh(dracoMesh: Mesh, attributes: any, options: DracoBuildOptions): Mesh;
/**
* @param {} dracoPointCloud
* @param {object} attributes
*/
_createDracoPointCloud(dracoPointCloud: PointCloud, attributes: object, options: DracoBuildOptions): PointCloud;
/**
* @param mesh
* @param attributeName
* @param attribute
* @param vertexCount
*/
_addAttributeToMesh(mesh: PointCloud, attributeName: string, attribute: TypedArray, vertexCount: number): number;
/**
* DRACO can compress attributes of know type better
* TODO - expose an attribute type map?
* @param attributeName
*/
_getDracoAttributeType(attributeName: string): draco_GeometryAttribute_Type | 'indices';
_getPositionAttribute(attributes: any): any;
/**
* Add metadata for the geometry.
* @param dracoGeometry - WASM Draco Object
* @param metadata
*/
_addGeometryMetadata(dracoGeometry: PointCloud, metadata: {
[key: string]: string;
}): void;
/**
* Add metadata for an attribute to geometry.
* @param dracoGeometry - WASM Draco Object
* @param uniqueAttributeId
* @param metadata
*/
_addAttributeMetadata(dracoGeometry: PointCloud, uniqueAttributeId: number, metadata: Map<string, string> | {
[key: string]: string;
}): void;
/**
* Add contents of object or map to a WASM Draco Metadata Object
* @param dracoMetadata - WASM Draco Object
* @param metadata
*/
_populateDracoMetadata(dracoMetadata: Metadata, metadata: Map<string, string> | {
[key: string]: string;
}): void;
}
//# sourceMappingURL=draco-builder.d.ts.map