[javascript] Three.js를 이용한 모션 블러(Motion Blur) 효과

motion-blur

Three.js는 웹에서 3D 그래픽을 구현하기 위한 라이브러리로, 다양한 효과를 적용할 수 있습니다. 이 중에서도 모션 블러(Motion Blur) 효과는 물체의 움직임을 부드럽게 표현하는데 사용됩니다. 이번 글에서는 Three.js를 이용하여 모션 블러 효과를 구현하는 방법에 대해 알아보겠습니다.

모션 블러 효과란?

모션 블러(Motion Blur) 효과는 물체가 움직일 때, 그 움직임을 부드럽게 표현하기 위한 효과입니다. 이를 구현하기 위해서는 물체의 이전 위치와 현재 위치를 비교하여 움직임 벡터를 계산하고, 이를 이용하여 각각의 픽셀의 이동 속도를 결정해야 합니다. 이렇게 계산된 이동 속도를 이용하여 픽셀의 위치를 보정하면 모션 블러 효과를 구현할 수 있습니다.

Three.js로 모션 블러 효과 구현하기

Three.js에서 모션 블러 효과를 구현하기 위해서는 다음과 같은 단계를 따라야 합니다.

  1. Three.js를 초기화합니다.
  2. 모션 블러 효과를 적용할 재질(Material)을 생성합니다.
  3. 모션 블러 효과를 적용할 물체(Geometry)를 생성합니다.
  4. 렌더링(loop) 함수에서 물체의 위치를 업데이트하고, 모션 블러 효과를 적용합니다.
  5. 모션 블러 효과를 보여주기 위해 카메라를 이동시킵니다.
// Three.js 초기화
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// 모션 블러 효과를 적용할 재질(Material) 생성
const material = new THREE.MeshBasicMaterial({ color: 0xff0000 });

// 모션 블러 효과를 적용할 물체(Geometry) 생성
const geometry = new THREE.BoxGeometry(1, 1, 1);
const mesh = new THREE.Mesh(geometry, material);

// 카메라 및 씬(Scene) 생성
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
const scene = new THREE.Scene();
scene.add(mesh);

// 모션 블러 효과를 적용하는 렌더링(loop) 함수
function render() {
  requestAnimationFrame(render);

  // 물체의 위치 업데이트
  mesh.rotation.x += 0.01;
  mesh.rotation.y += 0.01;

  // 모션 블러 효과 적용
  renderer.render(scene, camera);
}

// 렌더링 시작
render();

위의 예제 코드는 Three.js를 사용하여 모션 블러 효과를 구현하는 간단한 예제입니다. 해당 코드를 실행하면 모션 블러 효과가 적용된 큐브를 확인할 수 있습니다.

마무리

Three.js는 웹에서 3D 그래픽을 구현하기 위한 강력한 도구로, 다양한 효과를 적용할 수 있습니다. 이번 글에서는 Three.js를 이용하여 모션 블러 효과를 구현하는 방법을 알아보았습니다. 이를 응용하여 더 다양한 효과를 구현해보세요!