What’s on our mind?

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

*
	//화면 생성
    let scene = new THREE.Scene();
    scene.fog = new THREE.FogExp2('#222', 0.001);

    //카메라 설정
    let camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000)
    camera.position.z = 500;

    //렌더링 설정
    renderer = new THREE.WebGLRenderer({antialias:true});
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setClearColor('#000', .1);
    document.body.appendChild(renderer.domElement);

    //파티클 설정
    let material = new THREE.PointsMaterial({
        color: 0xffffff,
        size: 3,
        transparent: true,
        blending: THREE.AdditiveBlending
    });

    let particleCount = 15000;
    let particles = new THREE.Geometry();

    for (var i = 0; i < particleCount; i++) {
        var px = Math.random() * 2000 - 1000;
        var py = Math.random() * 2000 - 1000;
        var pz = Math.random() * 2000 - 1000;
        particle = new THREE.Vector3(px, py, pz);
        particle.velocity = new THREE.Vector3(0, Math.random(), 0);
        particles.vertices.push(particle);
    }

    let points = new THREE.Points(particles, material);
    points.sortParticles = true;
    scene.add(points);

    //애니메이션 설정
    function animate() {
        requestAnimationFrame(animate);

        //배경
        scene.rotation.y += 0.0005;

        //별
        var i = particleCount;
        while(i--){
            var particle = particles.vertices[i];

            if(particle.y > 1000){
                particle.y = -1000;
                particle.velocity.y = Math.random();
            }
            particle.velocity.y += Math.random() * 0.001;

            particle.add(particle.velocity);
        }
        points.geometry.verticesNeedUpdate = true;

        camera.lookAt(scene.position);
        renderer.render(scene, camera);
    }
    animate();

    //화면 사이즈 설정
    function onWindowResize() {
        camera.aspect = window.innerWidth / window.innerHeight;
        camera.updateProjectionMatrix();
        renderer.setSize(window.innerWidth, window.innerHeight);
    }
    window.addEventListener('resize', onWindowResize);