forge-convert-utils
Version:
Tools for converting Autodesk Forge file formats.
77 lines • 3.86 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import * as fse from 'fs-extra';
import * as gltf from './schema';
import * as IMF from '../common/intermediate-format';
export interface IWriterOptions {
maxBufferSize?: number; /** Approx. size limit (in bytes) of binary buffers with mesh data (5 << 20 by default) */
ignoreMeshGeometry?: boolean; /** Don't output mesh geometry */
ignoreLineGeometry?: boolean; /** Don't output line geometry */
ignorePointGeometry?: boolean; /** Don't output point geometry */
deduplicate?: boolean; /** Find and remove mesh geometry duplicates (increases the processing time) */
skipUnusedUvs?: boolean; /** Skip unused tex coordinates. */
center?: boolean; /** Move the model to origin. */
log?: (msg: string) => void; /** Optional logging function. */
filter?: (dbid: number, fragid: number) => boolean;
}
interface IWriterStats {
materialsDeduplicated: number;
meshesDeduplicated: number;
accessorsDeduplicated: number;
bufferViewsDeduplicated: number;
}
/**
* Utility class for serializing parsed 3D content to local file system as glTF (2.0).
*/
export declare class Writer {
protected options: Required<IWriterOptions>;
protected baseDir: string;
protected manifest: gltf.GlTf;
protected bufferStream: fse.WriteStream | null;
protected bufferSize: number;
protected bufferViewCache: Map<string, gltf.BufferView>;
protected meshHashes: Map<string, number>;
protected bufferViewHashes: Map<string, number>;
protected accessorHashes: Map<string, number>;
protected pendingTasks: Promise<void>[];
protected activeSvfMaterials: number[];
protected stats: IWriterStats;
/**
* Initializes the writer.
* @param {IWriterOptions} [options={}] Additional writer options.
*/
constructor(options?: IWriterOptions);
/**
* Outputs scene into glTF.
* @async
* @param {IMF.IScene} imf Complete scene in intermediate, in-memory format.
* @param {string} outputDir Path to output folder.
*/
write(imf: IMF.IScene, outputDir: string): Promise<void>;
protected reset(outputDir: string): void;
protected postprocess(imf: IMF.IScene, gltfPath: string): Promise<void>;
protected serializeManifest(manifest: gltf.GlTf, outputPath: string): void;
protected createScene(imf: IMF.IScene): gltf.Scene;
protected createNode(fragment: IMF.IObjectNode, imf: IMF.IScene, outputUvs: boolean): gltf.Node;
protected addMesh(mesh: gltf.Mesh): number;
protected createMeshGeometry(geometry: IMF.IMeshGeometry, imf: IMF.IScene, outputUvs: boolean): gltf.Mesh;
protected createLineGeometry(geometry: IMF.ILineGeometry, imf: IMF.IScene): gltf.Mesh;
protected createPointGeometry(geometry: IMF.IPointGeometry, imf: IMF.IScene): gltf.Mesh;
protected addBufferView(bufferView: gltf.BufferView): number;
protected createBufferView(data: Buffer): gltf.BufferView;
protected addAccessor(accessor: gltf.Accessor): number;
protected createAccessor(bufferViewID: number, componentType: number, count: number, type: string, min?: number[], max?: number[]): gltf.Accessor;
protected createMaterial(mat: IMF.Material | null, imf: IMF.IScene): gltf.MaterialPbrMetallicRoughness;
protected createTexture(uri: string, imf: IMF.IScene): gltf.Texture;
protected computeMeshHash(mesh: gltf.Mesh): string;
protected computeBufferViewHash(bufferView: gltf.BufferView): string;
protected computeAccessorHash(accessor: gltf.Accessor): string;
protected computeBufferHash(buffer: Buffer): string;
protected computeMaterialHash(material: IMF.IPhysicalMaterial | null): string;
protected computeBoundsVec3(array: Float32Array): {
min: number[];
max: number[];
};
}
export {};
//# sourceMappingURL=writer.d.ts.map