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
    目录

    5. 缓动算法.easing(地球渐入相机动画)

    # 缓动算法.easing(地球渐入相机动画)

    动画片段tween通过.easing()方法可以设置缓动算法,在一些动画场景中你设置合理的缓动算法,可以让动画看起来非常自然,比如一辆车从静止进入匀速状态,动画最好有一个加速过程的过渡,对于这个加速的方式就可以通过缓动算法实现。

    形象理解:所谓缓动,你可以理解为运动缓缓加速的过程,缓动算法就是运动加速的算法,推广一下,不一定针对运动,比如颜色渐变、相机动画也可以类比车辆运动加减速。

    # 缓动算法.easing案例体验

    你可以对比课件案例源码地球相机动画设置和不设置缓动的视觉差异,你会发现设置缓动函数后,视觉效果更加舒适和自然。

    camera.position.set(3000, 3000, 3000);
    camera.lookAt(0, 0, 0);
    
    // 视觉效果:地球从小到大出现(透视投影相机远小近大投影规律)
    new TWEEN.Tween(camera.position)
    .to({x: 300,y: 300,z: 300}, 3000)
    .start()
    .easing(TWEEN.Easing.Quadratic.Out);//使用二次缓动函数
    

    你可以把上上节课,相机镜头切换动画加上缓动动画,进行测试。

    camera.position.set(3000, 3000, 3000);
    camera.lookAt(0, 0, 0);
    
    // 视觉效果:地球从小到大出现(透视投影相机远小近大投影规律)
    new TWEEN.Tween(camera.position)
    .to({x: 300,y: 300,z: 300}, 3000)
    .start()
    .easing(TWEEN.Easing.Sinusoidal.InOut)//进入和结束都设置缓动
    

    # .easing()语法格式

    // easing函数:缓动算法(运动效果)
    // easing类型:定义缓动算法起作用地方
    tween.easing(TWEEN.Easing.easing函数.easing类型);
    

    # easing类型(定义缓动算法起作用地方)

    easing函数和easing类型都有多种方式,可以自由组合使用(Linear除外)。

    // 动画开始缓动方式(类比加速启动)
    tween.easing(TWEEN.Easing.Sinusoidal.In);
    // 动画结束缓动方式(类比减速刹车)
    tween.easing(TWEEN.Easing.Sinusoidal.Out);
    // 同时设置In和Out
    tween.easing(TWEEN.Easing.Sinusoidal.InOut);
    

    # 官方案例03_graphs.html

    官方案例tween.js-master\examples目录里面案例03_graphs.html可以查看各种缓动算法的曲线效果图。

    Linear:默认效果可以不设置,可以理解为没有加速过程直接进入匀速状态,或者说没有减速过程,直接刹车

    Quadratic:二次方的缓动(t^2)

    Cubic:三次方的缓动(t^3)

    Quartic:四次方的缓动(t^4)

    Quintic:五次方的缓动(t^5)

    Sinusoidal:正弦曲线的缓动(sin(t))

    Exponential:指数曲线的缓动(2^t)启动非常慢,后面快

    Circular:圆形曲线的缓动(sqrt(1-t^2))会有弹性衰减往复运动感

    Elastic:指数衰减的正弦曲线缓动;TWEEN.Easing.Elastic.inout 会有弹性衰减往复运动感

    Back:超过范围的三次方缓动((s+1)*t^3 – s*t^2)会有弹性衰减往复运动感

    Bounce:指数衰减的反弹缓动。会有弹性衰减往复运动感

    # 匀速运动(特殊情况说明)

    Linear:默认效果可以不设置,可以理解为没有加速过程直接进入匀速状态,或者说没有减速过程,直接刹车

    注意:匀速设置 TWEEN.Easing.Linear.None(默认效果可以不设置)。

    对于Linear不要设置TWEEN.Easing.Linear.In、TWEEN.Easing.Linear.Out或TWEEN.Easing.Linear.InOut,会报错

    4. 点击设备,相机靠近放大预览
    6. 模型或标签淡入淡出

    ← 4. 点击设备,相机靠近放大预览 6. 模型或标签淡入淡出→

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