import {_testFinish, downloadBlob, IMaterial, IObject3D, Mesh, SphereGeometry, ThreeViewer} from 'threepipe' import {createSimpleButtons} from '../js-utils/simple-bottom-buttons.js' const viewer = new ThreeViewer({canvas: document.getElementById('mcanvas') as HTMLCanvasElement, msaa: true}) async function init() { await viewer.setEnvironmentMap('https://threejs.org/examples/textures/equirectangular/venice_sunset_1k.hdr') const helmet = await viewer.load('https://threejs.org/examples/models/gltf/DamagedHelmet/glTF/DamagedHelmet.gltf', { autoCenter: true, autoScale: true, }) if (!helmet) { alert('Unable to load model') return } const mesh = helmet.getObjectByName('node_damagedHelmet_-6514')! const material = mesh.materials?.[0] helmet.position.setX(-3) const sphere = new Mesh(new SphereGeometry(0.5, 32, 32), material) sphere.position.setX(2) await viewer.addSceneObject(sphere) const matBlob = await viewer.assetManager.exporter.exportObject(material) if (!matBlob) { return } const material2 = await viewer.assetManager.importer.importSingle({file: matBlob, path: 'mat.' + matBlob.ext}) if (!material2) { return } console.log(material2) const sphere2 = new Mesh(new SphereGeometry(0.5, 32, 32), material2) sphere2.position.setX(0) await viewer.addSceneObject(sphere2) createSimpleButtons({ ['Download PMAT']: async() => { const blob = await viewer.assetManager.exporter.exportObject(material) if (!blob) { alert('Unable to export material') return } downloadBlob(blob, 'material.' + blob.ext) }, }) } init().then(_testFinish)