73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
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 );
|