Minor modifications.

This commit is contained in:
kovacsv 2021-08-06 17:38:08 +02:00
parent 0a269785da
commit a8de237a51

View File

@ -40,9 +40,8 @@ OV.ThreeImporter = class extends OV.ImporterBase
return; return;
} }
Promise.all (libraries).then (() => { Promise.all (libraries).then (() => {
const mainFileUrl = OV.CreateObjectUrl (fileContent); const loader = this.CreateLoader ();
const loader = this.CreateLoader (mainFileUrl); this.LoadModel (fileContent, loader, onFinish);
this.LoadModel (mainFileUrl, loader, onFinish);
}).catch (() => { }).catch (() => {
onFinish (); onFinish ();
}); });
@ -59,12 +58,12 @@ OV.ThreeImporter = class extends OV.ImporterBase
return null; return null;
} }
CreateLoader (mainFileUrl) CreateLoader ()
{ {
const manager = new THREE.LoadingManager (); const manager = new THREE.LoadingManager ();
manager.setURLModifier ((url) => { manager.setURLModifier ((url) => {
if (url === mainFileUrl) { if (url.startsWith ('data:') || url.startsWith ('blob:')) {
return mainFileUrl; return url;
} }
const fileBuffer = this.callbacks.getFileBuffer (url); const fileBuffer = this.callbacks.getFileBuffer (url);
const fileUrl = OV.CreateObjectUrl (fileBuffer); const fileUrl = OV.CreateObjectUrl (fileBuffer);
@ -77,7 +76,7 @@ OV.ThreeImporter = class extends OV.ImporterBase
return loader; return loader;
} }
LoadModel (mainFileUrl, loader, onFinish) LoadModel (fileContent, loader, onFinish)
{ {
function SetColor (color, threeColor) function SetColor (color, threeColor)
{ {
@ -93,13 +92,17 @@ OV.ThreeImporter = class extends OV.ImporterBase
return; return;
} }
// TODO: error // TODO: error handling
const mainFileUrl = OV.CreateObjectUrl (fileContent);
loader.load (mainFileUrl, (object) => { loader.load (mainFileUrl, (object) => {
object.traverse ((child) => { object.traverse ((child) => {
if (child.isMesh) { if (child.isMesh) {
// TODO: merge same materials // TODO: merge same materials
// TODO: PBR materials // TODO: PBR materials
console.log (child); console.log (child);
setTimeout (() => {
console.log (child);
}, 2000);
let threeMaterial = child.material; let threeMaterial = child.material;
let material = new OV.Material (OV.MaterialType.Phong); let material = new OV.Material (OV.MaterialType.Phong);
material.name = threeMaterial.name; material.name = threeMaterial.name;
@ -110,6 +113,7 @@ OV.ThreeImporter = class extends OV.ImporterBase
} }
const materialIndex = this.model.AddMaterial (material); const materialIndex = this.model.AddMaterial (material);
let mesh = OV.ConvertThreeGeometryToMesh (child.geometry, materialIndex); let mesh = OV.ConvertThreeGeometryToMesh (child.geometry, materialIndex);
// TODO: transform
this.model.AddMesh (mesh); this.model.AddMesh (mesh);
} }
}); });