threejs 动画渲染循环

js yekong

threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。

// requestAnimationFrame实现周期性循环执行
// requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能

let i = 0;
//渲染循环
function render() {
    i += 1;
    console.log('执行次数' + i);
    mesh.rotateY(0.01); //周期性旋转
    renderer.render(scene, camera)
    requestAnimationFrame(render)
    // 请求再次执行函数render
}

render()

使用时钟

let i = 0;
const clock = new THREE.Clock();

function render() {
    i += 1;
    const spt = clock.getDelta() * 1000;
    console.log('两帧渲染时间间隔(毫秒)', spt);
    console.log('帧率FPS', 1000 / spt);
    console.log('执行次数' + i);
    mesh.rotateY(0.01); //周期性旋转
    renderer.render(scene, camera)
    requestAnimationFrame(render)
    // 请求再次执行函数render
}

render()

渲染循环和相机控件OrbitControls

设置了渲染循环,相机控件OrbitControls就不用再通过事件change执行renderer.render(scene, camera);,毕竟渲染循环一直在执行 renderer.render(scene, camera);.

喜欢