three.js学习三——场景动画 - cytggit/Map-openlayers GitHub Wiki
动画方式
- 场景动起来的方法:
-
让物体在坐标系里面移动,摄像机不动。
-
让摄像机在坐标系里面移动,物体不动。
- 渲染循环:
不断的执行animate这个函数。也就是不断的执行render()函数。在render()函数中不断的改变物体或者摄像机的位置,并渲染它们,就能够实现动画了。
function animate() {
// 1.1、物体沿x轴左移
line.position.x-=0.1;
// 1.2、整个场景的所有物体左移
scene.position.x-=1;
// 2、相机沿x轴右移(物体左移)
camera.position.x =camera.position.x +1;
// 重新绘制渲染结果
renderer.render( scene, camera );
// 循环执行animate函数
requestAnimationFrame( animate );
}
程序性能
- 介绍
在Three.js中,性能由一个性能监视器来管理:https://github.com/mrdoob/stats.js
-
FPS表示:上一秒的帧数,这个值越大越好,一般都为60左右。
-
MS表示:渲染一帧需要的毫秒数,这个数字是越小越好。
-
应用方式
var stats = new Stats(); stats.setMode(1); // 0: fps, 1: ms // 将stats的界面对应左上角 stats.domElement.style.position = 'absolute'; stats.domElement.style.left = '0px'; stats.domElement.style.top = '0px'; document.body.appendChild( stats.domElement ); setInterval( function () { stats.begin(); // 你的每一帧的代码 stats.end(); }, 1000 / 60 );
-
实例
var stats = new Stats(); stats.domElement.style.position = 'absolute'; stats.domElement.style.left = '0px'; stats.domElement.style.top = '0px'; document.body.appendChild( stats.domElement ); // 部分代码,只需调用update()函数 function animation() { //renderer.clear(); //camera.position.x =camera.position.x +1; mesh.position.x-=1; renderer.render(scene, camera); requestAnimationFrame(animation); stats.update(); }