TrackballControls는 Three.js 라이브러리에서 카메라의 이동, 회전, 확대/축소 등의 제어를 쉽게 할 수 있게 도와주는 컨트롤 클래스입니다. 마우스와 터치를 이용하여 3D 장면을 탐색할 수 있도록 해줍니다. TrackballControls를 사용하면 카메라를 자유롭게 움직이며 3D 모델을 관찰할 수 있습니다.
import * as THREE from 'three';
import { TrackballControls } from 'three/examples/jsm/controls/TrackballControls';
let camera, scene, renderer, controls;
function init() {
// 씬 생성
scene = new THREE.Scene();
// 카메라 설정
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
// 렌더러 설정
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// TrackballControls 설정
controls = new TrackballControls(camera, renderer.domElement);
controls.dynamicDampingFactor = 0.2; // 제어의 저항을 설정
// 예제용 큐브 생성
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 애니메이션 루프
function animate() {
requestAnimationFrame(animate);
controls.update(); // TrackballControls 업데이트
renderer.render(scene, camera);
}
animate();
// 창 크기 변경 시 카메라와 렌더러 크기 재설정
window.addEventListener('resize', onWindowResize, false);
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
}
init();
const controls = new THREE.TrackballControls(camera, renderer.domElement);
controls.addEventListener('start', function () {
blocker.style.display = '';
});
controls.addEventListener('end', function () {
blocker.style.display = 'none';
});
controls.addEventListener('change', function () {
// 조작에 따라 장면을 업데이트할 수 있습니다
});| WebGLRenderer(), CSS3DRenderer() (0) | 2024.11.21 |
|---|---|
| camera.lookAt() (1) | 2024.11.21 |
| TWEEN (0) | 2024.11.21 |
| CSS3DRenderer 팩키지 (0) | 2024.11.21 |
| crosshairs 와 마우스 일치 (4) | 2024.10.11 |