@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
50 lines (45 loc) • 1.25 kB
text/typescript
/**
* Exports the input as GLTF
*
* @remarks
*/
import {ExporterSopNode, BaseExporterSopParamsConfig} from './_BaseExporter';
import {GLTFExporter, GLTFExporterOptions} from 'three/examples/jsm/exporters/GLTFExporter';
import {SopExporter} from '../../poly/registers/nodes/types/Sop';
class ExporterGLTFSopParamsConfig extends BaseExporterSopParamsConfig {}
const ParamsConfig = new ExporterGLTFSopParamsConfig();
export class ExporterGLTFSopNode extends ExporterSopNode<ExporterGLTFSopParamsConfig> {
override paramsConfig = ParamsConfig;
static override type() {
return SopExporter.EXPORTER_GLTF;
}
fileExtension() {
return 'glb';
}
createBlob(): Promise<Blob> {
return new Promise(async (resolve) => {
const sceneData = await this._prepareScene();
if (!sceneData) {
return;
}
const {scene, objects} = sceneData;
const options: GLTFExporterOptions = {
embedImages: true,
// trs: true,
// onlyVisible: true,
// truncateDrawRange: false,
binary: true,
// maxTextureSize: Infinity
};
const exporter = new GLTFExporter();
exporter.parse(
scene,
async (result) => {
this._handleResult(result, objects, resolve);
},
(err) => {},
options
);
});
}
}