这种方式需要gltf模型本身就带有动画,就是在建模的时候添加了动画,否则是不会生效的

只有一个动作

// 用于收集动画
const clock: THREE.Clock = new THREE.Clock();
const mixers: Array<THREE.AnimationMixer> = [];async function loadWalkRobot() {const { scene: object, animations } = await loadGLTF("/model/robot/scene.gltf");//模型旋转object.rotateY(180 * Math.PI) / 180);object.position.set(0, 0, 0);//【核心在这里】const mixer = new THREE.AnimationMixer(object);const actions = [];for (var i = 0; i < animations.length; i++) {actions[i] = mixer.clipAction(animations[i]);}// 播放actions.forEach((action) => {action.play();});mixers.push(mixer);scene.value?.add(object);}// 渲染const _render = () => {renderer.value!.render(scene.value!, camera.value!);const mixerUpdateDelta = clock.getDelta();mixers.forEach((mixer) => mixer.update(mixerUpdateDelta));// FPS帧率显示渲染typeof stats.value === "function" && stats.value.update();requestAnimationFrame(_render);};

如果有多个动作

提取到一个单独的方法,传入动画名称控制不同的动画

  // 动画的方法const loadAnimate = (mesh: THREE.Mesh | THREE.AnimationObjectGroup | THREE.Group,animations: Array<THREE.AnimationClip>,animationName: string) => {const mixer = new THREE.AnimationMixer(mesh);const clip = THREE.AnimationClip.findByName(animations, animationName);if (!clip) return void 0;const action = mixer.clipAction(clip);// 播放action.play();mixers.push(mixer);};async function loadWalkGirl() {const { scene: object, animations } = await loadGLTF("/model/robot/scene.gltf");object.rotateY(getAngle(180));object.position.set(0, 0, 0);loadAnimate(object, animations, "Take 001");scene.value?.add(object);}
//渲染还是一样的

threejs学习笔记:实现导入的动画gltf模型播放动画相关推荐

  1. ArcGIS案例学习笔记2_2_等高线生成DEM和三维景观动画

    ArcGIS案例学习笔记2_2_等高线生成DEM和三维景观动画 计划时间:第二天下午 教程:Pdf/405 数据:ch9/ex3 方法: 1. 创建DEM SA工具箱/插值分析/地形转栅格 2. 生成 ...

  2. android 同根动画_Android(java)学习笔记141:Android下的逐帧动画(Drawable Animation)...

    1. 帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一 ...

  3. OPENMP学习笔记(1)——简介,模型,运行

    OPENMP学习笔记(1)--简介,模型,运行 简介: OpenMP的英文全称是Open Multiprocessing,一种应用程序接口(API,即Application Program Inter ...

  4. 学习笔记【Java 虚拟机④】内存模型

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 总目录 学习笔记[Java 虚拟机①]内存结构 学习笔记[Java 虚拟机②]垃圾回收 学习笔记[Java ...

  5. Unity animator不剪辑动画实现 分段播放动画

    public Animator anim;private AnimatorStateInfo animInfo; /// <summary>/// 控制动画暂停和播放/// </su ...

  6. Threejs学习笔记

    Three.js Three.js 学习笔记,来自: https://gitchat.csdn.net/columnTopic/5b320731bebc3c4bd7e725cb?utm_source= ...

  7. Three-js 学习笔记(2)——几何体

    1,安装three npm install --s three 2,渲染几何图形 (1)添加vue元素 <template><div class="geometry_01& ...

  8. Cesium学习笔记(五):3D 模型 (http://blog.csdn.net/umgsoil/article/details/74572877)

    Cesium支持3D模型,包括关键帧动画,皮肤的改变还有单个节点的选择等,Cesium还提供了了一个基于网络的工具,将COLLADA模型转换为glTF,方便和优化模型添加 还记得我们在实体添加的时候添 ...

  9. 深度学习笔记 第五门课 序列模型 第三周 序列模型和注意力机制

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. HighChart学习-更新数据data Series与重绘
  2. 2批量批量查询数据插入数据_Excel如何快速对数据批量查询,vlookup+match函数高效完成工作...
  3. linux切换桌面环境bug,GNOME 3.32.2桌面环境发布,最新的bug和安全修复
  4. 网络:TCP协议3次握手4次挥手
  5. maven引用servlet_解决Maven 项目报错 java.httpservlet和synchronized使用方法
  6. 【POJ - 3616】Milking Time (贪心+dp)
  7. 华为P40系列发布时间或敲定:继续在3月26日亮相?
  8. linux X11窗口转发配置简记
  9. Win7 IIS7 HTTP 错误 404.2 - Not Found解决方法
  10. java 代码段 执行超时 抛异常_Java 并发队列详解TransferQueue、BlockingQueue、BlockingDeque
  11. ThinPHP_5的请求和响应
  12. 伪静态URL、静态URL和动态URL的区别
  13. FileSplit简单使用
  14. 切换linux默认桌面,Debian默认桌面再次切换到Gnome
  15. 关于offsetX、layerX、clientX、screenX以及pageX
  16. C语言练习题:统计 N 个整数中,大于零或小于零的整数个数(数组)
  17. 50个好网站,从此上网不再虚度!
  18. 勤学勤记(四)——放弃Addon,选择纯C++
  19. 4-6:关注列表,粉丝列表
  20. Spring Cloud Hystrix 服务容错保护

热门文章

  1. (Tekla Structures二次开发)自动标注尺寸展示
  2. [附源码]java+ssm计算机毕业设计交通违章举报平台lxsqm(源码+程序+数据库+部署)
  3. web基础知识回顾(一)
  4. java获取法定节假日_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
  5. 微博推荐算法学习(Weibo Recommend Algolrithm)
  6. 2014 年总结--【宽容待人】
  7. 5个好用的Excel技巧,一秒钟完成一个功能
  8. 基于AMSR-E和AMSR2数据的全球长时序日尺度土壤水分数据集(2002-2022)
  9. 使用 ThreeJS 还原「流浪气球」
  10. exadata的exacli