[javascript] Three.js를 사용하여 웹에서의 3D 가상 투어 개발

개요

지금은 주로 웹에서 2D 이미지를 사용하여 가상 투어를 개발하고 있지만, Three.js를 사용하여 3D 가상 투어를 개발할 수도 있습니다. Three.js는 JavaScript 기반의 3D 라이브러리로, 웹 브라우저에서 3D 그래픽을 렌더링하고 제어할 수 있습니다. 이 라이브러리를 이용하여 웹에서 멋진 3D 가상 투어를 개발해보겠습니다.

Three.js 설정

가장 먼저 해야 할 일은 HTML 파일에 Three.js 라이브러리를 추가하는 것입니다. 이를 위해 <script> 태그를 사용하여 Three.js 파일을 로드합니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.js"></script>

씬(Scene) 생성

Three.js를 사용하여 3D 가상 투어를 개발하기 위해선 씬(Scene)을 생성해야 합니다. 씬은 Three.js에서 객체들을 담을 수 있는 컨테이너 역할을 합니다.

var scene = new THREE.Scene();

카메라(Camera) 설정

투어를 통해 사용자에게 보여줄 시점을 조정하기 위해 카메라(Camera)를 설정해야 합니다. Three.js에서는 다양한 카메라 타입을 제공하는데, 가장 일반적으로 사용되는 PerspectiveCamera를 사용하겠습니다.

var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

렌더러(Renderer) 생성

화면에 3D 객체들을 렌더링하기 위해 Three.js에서는 렌더러(Renderer)를 생성해야 합니다. 렌더러는 씬과 카메라를 받아와서 렌더링할 대상에 출력합니다.

var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

조명(Lighting) 설정

3D 객체들을 잘 보여주기 위해 조명(Lighting)을 설정해야 합니다. Three.js에서는 AmbientLight(전역 광원)과 PointLight(점 광원) 등 다양한 조명 타입을 제공합니다.

var ambientLight = new THREE.AmbientLight(0x404040);
scene.add(ambientLight);

오디오(Audio) 추가

가상 투어에 실감을 주기 위해 오디오(Audio)를 추가할 수도 있습니다. Three.js에서는 AudioListener(오디오 리스너)와 Audio(오디오 객체)를 사용하여 이를 구현할 수 있습니다.

var listener = new THREE.AudioListener();
camera.add(listener);

var sound = new THREE.Audio(listener);
var audioLoader = new THREE.AudioLoader();
audioLoader.load('audio/music.mp3', function(buffer) {
  sound.setBuffer(buffer);
  sound.setLoop(true);
  sound.setVolume(0.5);
  sound.play();
});

3D 객체 추가

가상 투어에 필요한 3D 객체를 추가합니다. Three.js에서는 다양한 기하 도형과 외부 모델 파일을 로드할 수 있습니다.

var geometry = new THREE.BoxGeometry();
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
var cube = new THREE.Mesh(geometry, material);

scene.add(cube);

애니메이션(Animation) 추가

웹에서의 3D 가상 투어에 추가적인 효과나 애니메이션을 주기 위해 Three.js에서는 애니메이션(Animation)을 추가할 수 있습니다.

function animate() {
  requestAnimationFrame(animate);

  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;

  renderer.render(scene, camera);
}

animate();

결론

이처럼 Three.js를 사용하면 웹에서도 3D 가상 투어를 개발할 수 있습니다. Three.js는 강력한 3D 라이브러리로 다양한 기능과 도구를 제공하므로, 다양한 시각적인 경험을 제공할 수 있습니다.

더 많은 예제와 자세한 정보는 Three.js 공식 문서를 참조하세요.