ThreeJs-083D动画系统详解
一.动画原理和应用
three的动画大概就是通过不同时间的关键帧来实现
加载一个手机模型

在这个对象里面,注意后期都是直接通过可视化软件Blender编辑好关键帧就能实现动画,这也是个已经编辑好的动画模型,在这个对象里面有一个animations就是动画集,也就是这个物体可以有很多个动画
其中animationclip表示剪辑动画,duration表示动画时长,tracks轨道表示各种关键帧,比如第一个关键帧里面,name什么group1 2 3等等都是一个部位,最后position表示这个关键帧是移动了位置,times表示时间,values是顶点,三维向量,一个时间对应values三个向量也就是一个顶点,表示这个时间段0.03999999910593033秒,第一个点移动到了-0.009195199236273766, -0.021173708140850067, -0.05099957436323166这个位置,所以times x3 等于values

当然你要看物体也可以在children属性里面看到

编辑好后拿到模型此时是静态的,还需要将动画播放起来

此时还要注意,我们要不断更新动画,那就在animate函数里面,并且创建一个时间,作为参数,要让动画知道时间是什么


1.1 代码实现keyframme关键帧动画
简单创建一个立方体


1.2 四元数与欧拉角转换设置关键帧
主要就是旋转动画,刚才是位移动画,旋转动画就要用到QuaternionKeyframeTrack
四元数就是利用一系列公式算出角度可以避免旋转过程中轴心偏向的问题
当然这个three已经帮我们处理好了,我们不用去算直接用她的一个数学库来解决



除此之外,四元数还支持欧拉角的方式来设置角度,三个参数分别表示x轴角度y轴z轴

1.3 布尔关键帧动画
就是控制显示隐藏,类似于星星闪烁效果


如果要对模型使用,注意模型的名字可以通过children属性查找里面的name


1.4 颜色关键帧
可以根据时间设置不同的颜色
注意颜色支持rgb但是是0-1的写法
而且是对材质设置


4.5 数值关键帧
就是想对这个3D物体某些属性进行数值上的单独修改可以用这个
比如透明度
注意要找到模型的材质,可以一直往这个gltf.scene的children下面找,找到最后一级会有mesh此时就带有材质


二.混合器
混合器就是可以对动画进行一些设置,比如时间多少,快慢,暂停启动等


三.人物多动作丝滑切换
加载模型进来,可以看到这是一个已经做好动画的模型


随便取几个代表性的动画出来

注意:这些动画不能一股脑一次性播放不然会变得很鬼畜

首先来一个站着不动呼吸的动画
其他效果类似


ThreeJs-083D动画系统详解的更多相关文章
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- Bootstrap栅格系统详解,响应式布局
Bootstrap栅格系统详解 栅格系统介绍 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 栅格系统用于通 ...
- java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET
java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了! 社区福利快来领取免费参加MDCC大会机会哦 Tag功能介绍—我们 ...
- Android Animations 视图动画使用详解!!!
转自:http://www.open-open.com/lib/view/open1335777066015.html Android Animations 视图动画使用详解 一.动画类型 Andro ...
- CSS3图片翻转动画技术详解
CSS动画非常的有趣:这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果.其中代表性的一种就是CSS图片翻转效果,能让你看到一张卡片的正反两面上的内容.本文就是要用最简单的方法向大家 ...
- Vmware12安装centos系统详解
vmware12安装centos7系统详解 用虚拟机12安装centos7系统详细安装过程,后附centos7下载地址. 工具/原料 虚拟机12 centos7系统镜像 方法/步骤 1 1.百度搜索c ...
- centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解
centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...
- syslog之一:Linux syslog日志系统详解
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
- POPSpring动画参数详解
POPSpring动画参数详解 效果 源码 https://github.com/YouXianMing/Animations // // POPSpringParameterController.m ...
- Unity3D NGUI UIPlayTween(原UIButtonTween)动画事件详解
http://blog.csdn.net/asd237241291/article/details/8507817 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 Unity3D引擎技术 ...
随机推荐
- c#传统读取配置文件
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; namespace C ...
- Csharp的CancellationToken 案例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- Vue 项目优化解决方案 有哪些 ?
1. 打包的时候 , 通过插件把css代码单独抽离出来使用 link 引入 2. 打包的时候 , 通过webpack内置插件optimization 把 公共的js代码抽离出来 ps:打包之后,代码 ...
- PHP实现断点续传
解释 业务上要求对资源文件进行加密,遂实现通过php接口调用,修改header头,传输流的方式. 测试中,在苹果手机上,如果文件过大(大概10M以上),会主动调用多次接口.此时如果不使用断点续传的方式 ...
- JavaScript初始化对象数组
一.{} 我们都知道JavaScript的数据结构是松散的,比如说你定义一个变量 var temp; 那么你可以随手这样定义temp.attr1 = "参数1",因为对于Java ...
- CerberusDet:不同任务共享不同的部分,新多任务目标检测方案
传统的目标检测模型通常受到其训练数据和定义的类别逻辑的限制.随着语言-视觉模型的近期兴起,出现了不受这些固定类别限制的新方法.尽管这些开放词汇检测模型具有灵活性,但与传统的固定类别模型相比,仍然在准确 ...
- Xor-FWT 的另一种理解方式
Xor-FWT 的另一种理解方式 学习 \(\text{Fennec's Algorithm}\) 的额外收获,顺手记录一下. 假设我们要求两个长度为 \(n\) 的数组的异或卷积,为方便起见令 \( ...
- PCI 设备 RTX 驱动开发方法 -5565反射内存
PCI 设备 RTX 驱动开发方法 RTX 下操作外设时, 需要把设备从 Windows 移动到 RTX 下面,具体移植方法可以参考 RTX Help 文档中间 Converting a Window ...
- performance.timing:利用performance.timing进行性能分析
window.onload = function(){ setTimeout(function(){ let t = performance.timing console.log('DNS查询耗时 : ...
- ubuntu 下做反向代理给hyperf使用
使用hyperf的时候发现它监听9501端口,然后这样需要ip+port方式去访问,但是这样对用户而言有点不太友好,如果我们还有域名,可以做一个反向代理避免端口直接写出来. 找了找网上别人写的例子,感 ...