카메라로 장면을 렌더링할 수 있도록 장면, 카메라, 렌더러의 세 가지가 필요하다.
import * as THREE from 'three';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
import * as THREE from 'three';
const scene = new THREE.Scene();
// 시야각이 75도, 종횡비는 현재 창의 가로세로 비율,
// 카메라는 0.1부터 1000까지의 깊이 범위 내에서 물체를 볼 수 있다.
const camera = new THREE.PerspectiveCamera (
75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
렌더러가 장면을 표시하기 위해 사용하는 <canvas>
요소를 사용한다.
const geometry = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );
const geometry = new THREE.BoxGeometry(1, 1, 1);
// 녹색으로 된 기본 재질을 사용한다.
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
animate()
매 프레임마다 실행되며 큐브에 멋진 회전 애니메이션
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>My first three.js app</title>
<style>
body { margin: 0; }
</style>
</head>
<body>
<script type="module" src="/main.js"></script>
</body>
</html>
import * as THREE from 'three';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
const geometry = new THREE.BoxGeometry( 1, 1, 1 );
const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
const cube = new THREE.Mesh( geometry, material );
scene.add( cube );
camera.position.z = 5;
function animate() {
requestAnimationFrame( animate );
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render( scene, camera );
}
animate();
cube를 생성할 때 position 을 설정하지 않으셔서 좌표(0,0,0) 에 생성되어 있습니다
camera처럼 cube의 position을 옮겨보세요!!