three.js:requestAnimationFrame的理解

  • 动画函数requestAnimationFrame()
    requestAnimationFrame()是浏览器window对象的方法,参数是将要被调用函数的函数名,requestAnimationFrame()调用一个函数不是立即调用而是向浏览器发起一个执行某函数的请求,什么时候执行由浏览器决定,一般默认是60FPS的频率,也就是大约每16.7ms调用一次requestAnimationFrame()方法指定的函数。
3D模型旋转.png
  • 首先照样的先要创建相机、渲染器、场景、以及网格等对象:
        var scene, camera, renderer, mesh; //定义场景、相机、渲染器、网格
        scene = new THREE.Scene();
        camera = new THREE.PerspectiveCamera(30, 1280 / 720, 0.1, 1000);
  • 创建好网格,使用wireframe表示不再以实体的形式显示,只显示线框:
        mesh = new THREE.Mesh(
            new THREE.BoxGeometry(1, 1, 1),
            new THREE.MeshBasicMaterial({
                color: 0x40C4FF,
                wireframe: true,
                transparent: true
            })
        )
  • 创建好网格后,把网格塞进场景中去:
        scene.add(mesh);
  • 给相机一个位置以及相机眼睛看向的方向:
        camera.position.set(10, 10, 10);
        camera.lookAt(new THREE.Vector3(0, 0, 0))
  • 创建渲染器,创建完后把渲染器加入到文档流中去:
        renderer = new THREE.WebGLRenderer();
        renderer.setSize(1280, 720);

        document.body.appendChild(renderer.domElement);
  • 添加一个旋转动画:
        function animate() {
            requestAnimationFrame(animate); //每一帧回调执行这个函数
            // mesh.position.x += 0.01;
            // mesh.position.z += 0.01;
            mesh.rotateY(0.01);
            mesh.rotateX(0.01);
            renderer.render(scene, camera);
        }

执行这个动画

animate();

注意:没执行一次渲染器对象WebGLRenderer的渲染方法render(场景,相机),浏览器就会渲染出一帧图像并显示在Web页面上,也就是说,想要实现3D模型的动画效果,只需要在你的animate()方法中不断的按照一定的周期去执行渲染方法render(),就可以不停的生成新的图像并覆盖原来的图像,也就是说一边旋转,一边执行重新渲染的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义...
    无言以越阅读 3,006评论 3 19
  • Threejs 为什么? webGL太难用,太复杂! 但是现代浏览器都支持 WebGL 这样我们就不必使用 Fla...
    强某某阅读 6,178评论 1 21
  • 1.三大组建 2.渲染器renderer 3.场景 4.渲染器 5.渲染循环 渲染有两种方式:实时渲染和离线渲染 ...
    七百年前阅读 411评论 0 0
  • 随着我们的上网设备的硬件条件和网速的不断提升,浏览器对于3d画面的渲染速度越来越快,3d正在被更多的重视和应用。所...
    locky丶阅读 329评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,104评论 0 4