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

    1. tweenjs创建threejs动画

    # tweenjs创建threejs动画

    TweenJS是一个由JavaScript语言编写的补间动画库,如果需要tweenjs辅助你生成动画,对于任何前端web项目,你都可以选择tweenjs库。

    如果你使用three.js开发web3d项目,使用tween.js辅助three.js生成动画效果也是比较好的选择。

    • github地址:https://github.com/tweenjs/tween.js/
    • npm地址:https://www.npmjs.com/package/@tweenjs/tween.js
    • 官网:https://createjs.com/tweenjs

    # npm安装

    在工程化开发的时候可以通过npm命令行安装tween.js模块。

    npm i @tweenjs/tween.js@^18
    
    import TWEEN from '@tweenjs/tween.js';
    

    # .html引入tween.js

    tween.js-master文件包/dist目录下有多个js文件,如果你想script标签直接引入tween.umd.js即可。

    <script src="./tween.js-master/dist/tween.umd.js"></script>
    

    .html学习环境模拟开发环境中引入方式,就可以和开发环境一样书写import TWEEN from '@tweenjs/tween.js'。

    <!-- type="importmap"功能:tween在html学习环境和开发环境一样写法 -->
    <script type="importmap">
        {
    		"imports": {
    			"@tweenjs/tween.js": "./tween.esm.js"
    		}
    	}
    </script>
    <script type="module">
        import TWEEN from '@tweenjs/tween.js';
    </script>
    

    # tweenjs基本语法

    tweenjs功能从语法的角度讲,就是改变自己的参数对象。

    const pos = {x: 0,y: 0};
    const tween = new TWEEN.Tween(pos);//创建一段tween动画
    //经过2000毫秒,pos对象的x和y属性分别从零变化为100、50
    tween.to({x: 100,y: 50}, 2000);
    //tween动画开始执行
    tween.start();
    

    在requestAnimationFrame动画中,tween更新.update(),tween才能正常执行

    function loop() {
        requestAnimationFrame(loop);
    }
    loop();
    
    function loop() {
        TWEEN.update();//tween更新
        requestAnimationFrame(loop);
    }
    

    浏览器控制台测试查看tweenjs是否逐渐改变pos对象的x和y属性

    function loop() {
        TWEEN.update();
        // 测试tweenjs是否逐渐改变pos对象的x和y属性
        console.log(pos.x,pos.y);
        requestAnimationFrame(loop);
    }
    

    # tweenjs改变threejs模型对象位置

    three.js模型的位置mesh.position属性是一个具有.x、.y、.z属性的对象,可以直接使用tweenjs直接改变。

    //创建一段mesh平移的动画
    const tween = new TWEEN.Tween(mesh.position);
    //经过2000毫秒,pos对象的x和y属性分别从零变化为100、50
    tween.to({x: 100,y: 50}, 2000);
    //tween动画开始执行
    tween.start(); 
    

    最后不要忘记在渲染循环中更新TWEEN.update();即可。

    // 渲染循环
    function render() {
        TWEEN.update();
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    

    换个语法形式书写也可以,更简洁

    const tween = new TWEEN.Tween(mesh.position).to({x: 100,y: 50}, 2000).start();
    
    const tween = new TWEEN.Tween(mesh.position)
    .to({x: 100,y: 50}, 2000)
    .start();
    

    # 测试模型缩放动画

    模型的缩放属性mesh.scale和.position属性一样是一个具有.x、.y、.z属性的对象,你也可以直接用tweenjs动画控制。

    new TWEEN.Tween(mesh.scale).to({
        x: 100,
        y: 50
    }, 2000).start();
    
    11. 骨骼动画不同动作切换
    2. tweenjs相机运动动画

    ← 11. 骨骼动画不同动作切换 2. tweenjs相机运动动画→

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