RAF๋ ์ ๋๋ฉ์ด์
์ ์ํ ๊ธฐ๋ฅ์ด ์๋
๋ค์ ํจ์ ํธ์ถํ๋ ๊ฒ (in a recursive manner)
์ฌ๊ท์ฌ๊ท์ฌ๊ท
// Animations
function tick() {
// Update Objects
mesh.rotation.y += 0.01;
// Renderer
renderer.render(scene, camera);
requestAnimationFrame(tick);
}
tick();

RAF๋ ์ต๋ 60๋ฒ์ ๋ชฉํ๋ก ํ๋๋ฐ, ์ ์ ์ปด ์ฑ๋ฅ์ ๋ฐ๋ผ FPS๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ. ์๋ฃจ์ ์ ์๋์ ๊ฐ์
cf) since 1970 Jan 1st
์ ์ฐ๋?
the cube will rotate at the same speed regardless of FPS!! ์๋๋ฉด ์๊ฐ์ด ๊ธฐ์ค์ด๋ผ์ ์ ์ ์ปดํจํฐ ์ฑ๋ฅ์ด๋ ๋ ธ์๊ด
// Time
let time = Date.now();
// Animations
function tick() {
// Time
const currentTime = Date.now();
const deltaTime = currentTime - time;
time = currentTime;
console.log(deltaTime);
// Update Objects
mesh.rotation.y += 0.001 * deltaTime;
// Renderer
renderer.render(scene, camera);
requestAnimationFrame(tick);
}
tick();
// Clock
const clock = new THREE.Clock();

- ๋ฐ๋ฆฌsec๊ฐ ์๋๋ผ sec
- 0 ๋ถํฐ ์์
1 rotation per sec ์ํ๋ฉด!

function tick() {
const elapsedTime = clock.getElapsedTime();
// Update Objects
mesh.rotation.y = elapsedTime * Math.PI * 2;
}
// Animations
function tick() {
const elapsedTime = clock.getElapsedTime();
// Update Objects
mesh.position.y = Math.sin(elapsedTime);
mesh.position.x = Math.cos(elapsedTime);
์ฌ์ธ๋ง

์ฌ์ธ ์ฝ์ฌ์ธ ๋ค ์คฌ์ ๋


// Clock
const clock = new THREE.Clock();
// Animations
function tick() {
const elapsedTime = clock.getElapsedTime();
// Update Objects
camera.position.y = Math.sin(elapsedTime);
camera.position.x = Math.cos(elapsedTime);
camera.lookAt(mesh.position);
// Renderer
renderer.render(scene, camera);
requestAnimationFrame(tick);
}
tick();