📕 add, libraries/Three.js

002. 선그리기

awesomeyelim 2022. 5. 23. 16:22
728x90

 

Mesh를 사용하지 않고 선이나 원을 그려보자.

 

 

 

 





1. 먼저 renderer, scene, camera 를 설정

// 기본 세팅 코드 scene, camera, renderer

const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(
  45, //field of view(시야각)
  window.innerWidth / window.innerHeight, //aspect ratio(종횡비)
  1, // near
  500 //far 절단면
);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

camera.position.set(0, 0, 100);
camera.lookAt(0, 0, 0);






2. 다음은 재질을 정의해 보자(선을 그리기 위해서는 LineBasicMaterial나 LineDashedMaterial를 사용하면 됨)

const material = new THREE.LineBasicMaterial({ color: 0xfffff });






3. 꼭지점에 대한 기하학을 정의하자 (x좌표, y좌표, z좌표)

  • 나는 마름모를 그려볼것임
const points = [];
points.push(new THREE.Vector3(-15, 0, 0));
points.push(new THREE.Vector3(0, 10, 0));
points.push(new THREE.Vector3(15, 0, 0));
points.push(new THREE.Vector3(0, -10, 0));
points.push(new THREE.Vector3(-15, 0, 0)); // 이 코드를 삭제한다면 마지막 꼭지점은 이어지지 않아서 선이 닫히지 않을것

const geometry = new THREE.BufferGeometry().setFromPoints(points);






4. 점과 재질을 생성하였으니 합쳐서 선을 만들수 있다. 그리고 render를 시켜보자.

const line = new THREE.Line(geometry, material);

scene.add(line);
renderer.render(scene, camera)

 





5. 뭔가 심심한 느낌이 들어 저번에 활용했던 애니메이팅 효과를 추가하였다.

function animate() {
    requestAnimationFrame(animate);
    line.rotation.y += 0.01; // y축 기준으로 돌수 있음
    renderer.render(scene, camera);
  }

animate()

              좌라란   ~