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.3); keyLight.position.set(-10, 10, 10); scene.add(keyLight); let fillLight = new THREE.DirectionalLight(0xffffff, 0.3); fillLight.position.set(10, 10, 10); scene.add(fillLight); let fillLight2 = new THREE.DirectionalLight(0xffffff, 0.3); fillLight2.position.set(-10, 10, 10); scene.add(fillLight2); let ambientLight = new THREE.AmbientLight(0xffffff, 0.4); scene.add(ambientLight); // A cheesy yellow const defaultMaterial = new THREE.MeshStandardMaterial({ color: 0xffc539, roughness: 1.0, metalness: 0.0 }); var objLoader = new THREE.OBJLoader(); objLoader.setPath('models/'); objLoader.load('cheese.obj', function (object) { object.name = "cheese"; scene.add(object); object.position.y -= 0.75; object.traverse(function (child) { if (child instanceof THREE.Mesh) { child.material = defaultMaterial } }) }); 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 );