mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-22 20:11:24 +01:00
Added OBJ exporter
This commit is contained in:
parent
547069f25c
commit
f833ce9bb3
5 changed files with 44 additions and 4 deletions
|
|
@ -10,7 +10,8 @@ const options = {scale: 50, lightness: .7, shadow: .5, sun: {x: 100, y: 600, z:
|
|||
|
||||
// set variables
|
||||
let Renderer, scene, camera, controls, animationFrame, material, texture,
|
||||
geometry, mesh, ambientLight, spotLight, waterPlane, waterMaterial, waterMesh;
|
||||
geometry, mesh, ambientLight, spotLight, waterPlane, waterMaterial, waterMesh,
|
||||
objexporter;
|
||||
|
||||
// initiate 3d scene
|
||||
const create = async function(canvas, type = "viewMesh") {
|
||||
|
|
@ -121,11 +122,23 @@ const saveScreenshot = async function() {
|
|||
const link = document.createElement("a");
|
||||
link.download = getFileName() + ".jpeg";
|
||||
link.href = URL;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
tip(`Screenshot is saved. Open "Downloads" screen (CTRL + J) to check`, true, "success", 7000);
|
||||
window.setTimeout(() => window.URL.revokeObjectURL(URL), 5000);
|
||||
}
|
||||
|
||||
const saveOBJ = async function() {
|
||||
const URL = 'data:text/plain;charset=UTF-8,' + encodeURIComponent(await getOBJ());
|
||||
const link = document.createElement("a");
|
||||
link.download = getFileName() + ".obj";
|
||||
link.href = URL;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
tip(`OBJ is saved. Open "Downloads" screen (CTRL + J) to check`, true, "success", 7000);
|
||||
window.setTimeout(() => window.URL.revokeObjectURL(URL), 5000);
|
||||
}
|
||||
|
||||
// start 3d view and heightmap edit preview
|
||||
async function newMesh(canvas) {
|
||||
const loaded = await loadTHREE();
|
||||
|
|
@ -289,6 +302,13 @@ async function updateGlobeTexure(addMesh) {
|
|||
img2.src = await getMapURL("mesh", "globe");;
|
||||
}
|
||||
|
||||
async function getOBJ() {
|
||||
objexporter = await OBJExporter();
|
||||
|
||||
const data = await objexporter.parse(mesh);
|
||||
return data;
|
||||
}
|
||||
|
||||
function addGlobe3dMesh() {
|
||||
geometry = new THREE.SphereBufferGeometry(1, 64, 64);
|
||||
mesh = new THREE.Mesh(geometry, material);
|
||||
|
|
@ -332,6 +352,18 @@ function OrbitControls(camera, domElement) {
|
|||
});
|
||||
}
|
||||
|
||||
return {create, redraw, update, stop, options, setScale, setLightness, setSun, setRotation, toggleSky, setResolution, setColors, saveScreenshot};
|
||||
function OBJExporter() {
|
||||
if (THREE.OBJExporter) return new THREE.OBJExporter();
|
||||
|
||||
return new Promise(resolve => {
|
||||
const script = document.createElement('script');
|
||||
script.src = "libs/objexporter.min.js"
|
||||
document.head.append(script);
|
||||
script.onload = () => resolve(new THREE.OBJExporter());
|
||||
script.onerror = () => resolve(false);
|
||||
});
|
||||
}
|
||||
|
||||
return {create, redraw, update, stop, options, setScale, setLightness, setSun, setRotation, toggleSky, setResolution, setColors, saveScreenshot, saveOBJ};
|
||||
|
||||
})));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue