What’s on our mind?

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

**
	//화면 설정
    var scene = new THREE.Scene();

    //카메라 설정
    var camera = new THREE.PerspectiveCamera(55, window.innerWidth/window.innerHeight, 0.01, 1000);
    camera.position.set(0, 0, 250);
    scene.add(camera);

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

    // 텍스쳐 설정
    const loader = new THREE.TextureLoader();
    const textureSphereBg = loader.load('https://i.ibb.co/4gHcRZD/bg3-je3ddz.jpg');
    const texturenucleus = loader.load('https://i.ibb.co/hcN2qXk/star-nc8wkw.jpg');
    const textureStar = loader.load("https://i.ibb.co/ZKsdYSz/p1-g3zb2a.png");

    // 메시 설정
    texturenucleus.anisotropy = 16;
    let icosahedronGeometry = new THREE.IcosahedronGeometry(30, 10);
    let lambertMaterial = new THREE.MeshPhongMaterial({ map: texturenucleus });
    nucleus = new THREE.Mesh(icosahedronGeometry, lambertMaterial);
    scene.add(nucleus);
    
    
    // 조명 설정
    const directionalLight = new THREE.DirectionalLight("#fff", 2);
    directionalLight.position.set(0, 50, -20);
    scene.add(directionalLight);

    const ambientLight = new THREE.AmbientLight("#fff", 1);
    ambientLight.position.set(0, 10, 10);
    scene.add(ambientLight);

    noise = new SimplexNoise()

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

        nucleus.geometry.vertices.forEach(function (v) {
            let time = Date.now();
            v.normalize();
            let distance = nucleus.geometry.parameters.radius + noise.noise3D(
                v.x + time * 0.0005,
                v.y + time * 0.0003,
                v.z + time * 0.0008
            ) * 8;
            v.multiplyScalar(distance);
        })
        nucleus.geometry.verticesNeedUpdate = true;
        nucleus.geometry.normalsNeedUpdate = true;
        nucleus.geometry.computeVertexNormals();
        nucleus.geometry.computeFaceNormals();
        nucleus.rotation.y += 0.002;
     
        
		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);