What’s on our mind?

Collection of articles, design, site, and resources made by designers and publisher @Menu View


var camera, scene, renderer;
init();
animate();

function init() {
    camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
    camera.position.z = 60;
    scene = new THREE.Scene();

    // lights
    function createLight(color) {
        var pointLight = new THREE.PointLight(color, 7, 25);
        var geometry = new THREE.SphereGeometry(0.1, 0.1, 0.1);
        var material = new THREE.MeshBasicMaterial({color: color});
        var sphere = new THREE.Mesh(geometry, material);
        pointLight.add(sphere);
        return pointLight;
    }

    for (var i = 0; i < 80; i++) {
        window["pointLight" + i] = createLight(Math.random() * 0x04ff00);
        scene.add(window["pointLight" + i]);
    }

    var material = new THREE.MeshPhongMaterial({color: 0x000000, shininess: 300});
    var materialred = new THREE.MeshToonMaterial({color: 0xff0000});
    var geometry_sphere = new THREE.SphereBufferGeometry(5, 32, 32);
    var big_sphere = new THREE.Mesh(geometry_sphere, material);
    scene.add(big_sphere);
    big_sphere.position.y = 10;

    renderer = new THREE.WebGLRenderer({
        antialias: true
    });
    renderer = new THREE.WebGLRenderer({ alpha: true });
    renderer.setClearColor( 0x000000, 0 );
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);

    var controls = new THREE.OrbitControls(camera, renderer.domElement);
    controls.target.set(0, 10, 0);
    controls.update();
    window.addEventListener('resize', onWindowResize, false);
}

function onWindowResize() {
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize(window.innerWidth, window.innerHeight);
}

function animate() {
    requestAnimationFrame(animate);
    scene.rotation.y += 0.005;
    render();
}

function render() {
    var time = performance.now() * 0.0003;

    for (var i = 0; i < 40; i++) {
        time += 3 + i;
        window["pointLight" + i].position.x = Math.sin(time) * -13 + 0;
        window["pointLight" + i].position.y = Math.sin(time * 1) * 13 + 10;
        window["pointLight" + i].position.z = Math.sin(time * 1.2) * -13;
    }

    for (var i = 40; i < 80; i++) {
        time += 3 + i;
        window["pointLight" + i].position.x = Math.sin(time) * 13 + 0;
        window["pointLight" + i].position.y = Math.sin(time * 1) * 13 + 10;
        window["pointLight" + i].position.z = Math.sin(time * 1.2) * 13;
    }

    renderer.render(scene, camera);
}