UNPKG

forge-convert-utils

Version:

Tools for converting Autodesk Forge file formats.

77 lines 3.86 kB
/// <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