Three.js中文网 Three.js中文网
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
首页
免费视频
系统课 (opens new window)
  • Three.js基础课程
  • Vue3+Threejs 3D可视化
  • Threejs进阶课程
  • 展厅3D预览漫游
  • Threejs Shader
  • Blender建模基础
  • Three.js基础课程(旧版本) (opens new window)
  • 文章
WebGPU教程
  • WebGL教程
  • WebGL教程(旧版本) (opens new window)
3D案例
  • 本站部署(打开快) (opens new window)
  • 原英文官网文档 (opens new window)
Web3D系统课程视频
  • 0.学前说明

  • 1.Three.js快速入门

  • 2.几何体BufferGeometry

  • 3.模型对象、材质

  • 4.层级模型

  • 5.顶点UV坐标、纹理贴图

  • 6.加载外部三维模型(gltf)

  • 7.PBR材质与纹理贴图

  • 8.渲染器和前端UI界面

  • 9.生成曲线、几何体

  • 10.相机基础

  • 11.光源和阴影

  • 12.精灵模型Sprite

  • 13.后处理EffectComposer

  • 14.射线拾取模型

  • 15.场景标注标签信息

  • 16.关键帧动画

  • 17.动画库tween.js

    • 1. tweenjs创建threejs动画
    • 2. tweenjs相机运动动画
      • 3. 点按钮,相机飞行靠近观察设备
      • 4. 点击设备,相机靠近放大预览
      • 5. 缓动算法.easing(地球渐入相机动画)
      • 6. 模型或标签淡入淡出
      • tweenjs常用属性和方法
    • Three.js教程
    • 17.动画库tween.js
    郭隆邦
    2023-04-25
    目录

    2. tweenjs相机运动动画

    # tweenjs相机运动动画

    下面给大家讲解如何通过tweenjs实现threejs相机动画,具体说就是使用tweenjs改变相机的位置camera.position和视线方向。

    # 相机飞行动画(从一个点飞到另一个点)

    引入tweenjs,并在requestAnimationFrame动画中执行TWEEN.update();更新。

    import TWEEN from '@tweenjs/tween.js';
    // 渲染循环
    function render() {
        TWEEN.update();
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    

    相机动画:从一个点移动到另一个点

    camera.position.set(202, 123, 125);
    new TWEEN.Tween(camera.position)
    .to({x: 202,y: 123,z: 50}, 3000)
    .start()
    

    # 相机飞行过程中重新计算相机视线

    只改变相机位置,相机默认视线方向保持不变,如果你想重新计算相机视线方向,可以在相机位置改变的过程中不停地执行lookAt()即可。

    camera.position.set(202, 123, 125);
    camera.lookAt(0, 0, 0);
    new TWEEN.Tween(camera.position)
    .to({x: 202,y: 123,z: -350}, 3000)
    // tweenjs改变参数对象的过程中,.onUpdate方法会被重复调用执行
    .onUpdate(function(){
        camera.lookAt(0, 0, 0);
    })
    .start()
    

    # Tweenjs回调函数

    twwenjs库提供了onStart、onUpdate、onComplete等用于控制动画执行的回调函数。

    • onStart:动画开始执行触发
    • onUpdate:动画执行过程中,一直被调用执行
    • onComplete:动画正常执行完触发

    .onUpdate(function(obj){})结构中,obj对应的是new TWEEN.Tween(pos)的参数对象pos。

    const tween = new TWEEN.Tween(pos).to({x: 0}, 4000)
    // 开始执行:动画片段tween开始执行的时候触发onStart
    .onStart(function(obj){
    	...
    })
    

    # 相机圆周运动,且保持相机镜头对准坐标原点

    const R = 100; //相机圆周运动的半径
    new TWEEN.Tween({angle:0})
    .to({angle: Math.PI*2}, 16000)
    .onUpdate(function(obj){
        camera.position.x = R * Math.cos(obj.angle);
        camera.position.z = R * Math.sin(obj.angle);
        camera.lookAt(0, 0, 0);
    })
    .start()
    
    1. tweenjs创建threejs动画
    3. 点按钮,相机飞行靠近观察设备

    ← 1. tweenjs创建threejs动画 3. 点按钮,相机飞行靠近观察设备→

    Theme by Vdoing | Copyright © 2016-2025 豫ICP备16004767号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式