import { Object3D } from 'three/webgpu'; import { GLTFExporterOptions as THREEGLTFExporterOptions } from 'three/examples/jsm/exporters/GLTFExporter.js'; import { USDZExporterOptions as THREEUSDZExporterOptions } from 'three/examples/jsm/exporters/USDZExporter.js'; import { FileType } from '../../../types/file/FileTypes.ts'; export type USDZExporterOptions = THREEUSDZExporterOptions & { ar?: { anchoring: { type: 'plane' | 'image' | 'face' | 'none'; }; planeAnchoring: { alignment: 'horizontal' | 'vertical' | 'any'; }; }; }; export type GLTFExporterOptions = THREEGLTFExporterOptions; export type FileTypeToExporterOptions = { glb: GLTFExporterOptions; gltf: GLTFExporterOptions; usdz: USDZExporterOptions; step: undefined; stp: undefined; iges: undefined; igs: undefined; }; export declare class AssetExporter { private _gltfExporter; private _usdzExporter; constructor(); export(object: Object3D, type: T, options?: FileTypeToExporterOptions[T]): Promise; private _exportByType; private _exportGlb; private _exportGltf; private _exportUsdz; /** * Temporarily hides everything drawable that does not count as real geometry. * * Anything carrying a geometry, not just a `Mesh`: a group's link lines and a * bounding box helper are `LineSegments`, and a class-based test left them in * the file. The layer decides, so product lines and points are exported and * helper meshes are not. * * @returns A function that restores the previous visibility. */ private _hideNonProductGeometry; private _computeNormals; }