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系统课程视频
  • 1. 数学几何计算基础

  • 2.位移、速度、加速度(向量)

    • 1. 匀速动画(向量表示速度)
      • 2. 物体下落动画(重力加速度)
    • 3.向量点乘、叉乘

    • 4.四元数、欧拉角(角度姿态)

    • 5.矩阵

    • 6.射线

    • 7.包围盒

    • 8.第一、三人称漫游

    • 9.漫游-八叉树碰撞检测

    • 10.CannonJS物理引擎

    • Three.js进阶教程
    • 2.位移、速度、加速度(向量)
    郭隆邦
    2023-06-04
    目录

    1. 匀速动画(向量表示速度)

    # 匀速动画(向量表示速度)

    前面几节课给大家介绍过threejs的Vector3类可以表示物体的位置,也可以表示物体速度、位移等有方向的量。

    下面给写一个物体匀速运动的动画案例,已知物体的初始位置、物体的速度,然后写一个物体的运动动画效果。

    # 向量表示物体速度

    const v = new THREE.Vector3(10,0,10);//物体运动速度
    

    # 知识回顾

    回顾下基础部分1.11动画渲染循环 (opens new window)讲解过的知识点,通过Clock类计算渲染循环两帧渲染间隔时间。

    const clock = new THREE.Clock();//时钟对象
    // 渲染循环
    function render() {
        const spt = clock.getDelta();//两帧渲染时间间隔(秒)
    
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    

    # 速度 x 时间计算位移

    const v = new THREE.Vector3(10, 0, 10);//物体运动速度
    const clock = new THREE.Clock();//时钟对象
    let t = 0;
    const pos0 = mesh.position.clone();//物体初始位置
    // 渲染循环
    function render() {
        const spt = clock.getDelta();//两帧渲染时间间隔(秒)
        t += spt;
        // 在t时间内,以速度v运动的位移量
        const dis = v.clone().multiplyScalar(t);
        // 网格模型初始位置加上t时间段内运动的位移量
        const newPos = pos0.clone().add(dis);
        mesh.position.copy(newPos);
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    
    

    # 速度 x 间隔时间,然后累加计算位移

    const v = new THREE.Vector3(10,0,10);//物体运动速度
    const clock = new THREE.Clock();//时钟对象
    // 渲染循环
    function render() {
        const spt = clock.getDelta();//两帧渲染时间间隔(秒)
        // 在spt时间内,以速度v运动的位移量
        const dis = v.clone().multiplyScalar(spt);
        // 网格模型当前的位置加上spt时间段内运动的位移量
        mesh.position.add(dis);
        renderer.render(scene, camera);
        requestAnimationFrame(render);
    }
    render();
    
    6. 箭头ArrowHelper
    2. 物体下落动画(重力加速度)

    ← 6. 箭头ArrowHelper 2. 物体下落动画(重力加速度)→

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