let scene = new THREE.Scene(); let camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); camera.position.y = 2; camera.position.z = 5; camera.lookAt(new THREE.Vector3(0,0,0)); let renderer = new THREE.WebGLRenderer(); renderer.antialias = true; renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); let keyLight = new THREE.DirectionalLight(0xffffff, 0.8); keyLight.position.set(-10, 10, 10); let fillLight = new THREE.DirectionalLight(0xffffff, 0.3); fillLight.position.set(10, 10, 10); let ambientLight = new THREE.AmbientLight(0xffffff, 0.3); scene.add(keyLight); scene.add(fillLight); scene.add(ambientLight); var mtlLoader = new THREE.MTLLoader(); mtlLoader.setPath('models/'); mtlLoader.load('cheese.mtl', function (materials) { materials.preload(); var objLoader = new THREE.OBJLoader(); objLoader.setMaterials(materials); objLoader.setPath('models/'); objLoader.load('cheese.obj', function (object) { object.name = "cheese"; scene.add(object); object.position.y -= 0.75; }); }); var animate = function (timestamp) { let speed = 1.2; let iTime = ((timestamp / 1000) * speed) % (Math.PI * 2); requestAnimationFrame( animate ); let cheese = scene.getObjectByName("cheese"); if(cheese) { cheese.rotation.y += 0.01; } camera.zoom = 1.5 + Math.sin(iTime) / 10; camera.updateProjectionMatrix(); renderer.render(scene, camera); }; animate(0); window.addEventListener( 'resize', () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); }, false );