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);
.