let camera, scene, renderer, loader, light1, light2, controls, model; init(); animate(); function init() { let url = (document.URL.split('?')[1] || "exemple/suzanne.obja"); loader = new Loader(url, 1024, 20); loader.start(function(elements) { for (let element of elements) { if (element !== undefined) { try { model.manageElement(element); } catch(e) { if (e.type === "custom") { document.getElementById('errormessage').innerHTML = e; } else { throw e; } } } } }); camera = new THREE.PerspectiveCamera(70, window.innerWidth / window.innerHeight, 0.0001, 1000); camera.position.z = 3; scene = new THREE.Scene(); model = new Model(url); scene.add(model); light1 = new THREE.AmbientLight(0x999999); scene.add(light1); light2 = new THREE.DirectionalLight(0xffffff, 1.0); light2.position.set(0.0, 1.0, 0.0); scene.add(light2); renderer = new THREE.WebGLRenderer({antialias: true}); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); window.addEventListener('resize', onWindowResize, false); controls = new THREE.OrbitControls(camera, renderer.domElement); } function animate() { requestAnimationFrame(animate); controls.update(); document.getElementById('progressbar').value = Math.floor(100 * loader.percentage()) || 0; document.getElementById('percentage').innerHTML = Math.floor(100 * loader.percentage()) / 100 + "%"; renderer.render(scene, camera); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); }