首页 > 其他分享 >ThreeJs-083D动画系统详解

ThreeJs-083D动画系统详解

时间:2024-12-25 23:41:27浏览次数:3  
标签:083D ThreeJs 这个 关键帧 模型 动画 详解 values children

一.动画原理和应用

three的动画大概就是通过不同时间的关键帧来实现

加载一个手机模型

image-20241212221732540

在这个对象里面,注意后期都是直接通过可视化软件Blender编辑好关键帧就能实现动画,这也是个已经编辑好的动画模型,在这个对象里面有一个animations就是动画集,也就是这个物体可以有很多个动画

其中animationclip表示剪辑动画,duration表示动画时长,tracks轨道表示各种关键帧,比如第一个关键帧里面,name什么group1 2 3等等都是一个部位,最后position表示这个关键帧是移动了位置,times表示时间,values是顶点,三维向量,一个时间对应values三个向量也就是一个顶点,表示这个时间段0.03999999910593033秒,第一个点移动到了-0.009195199236273766, -0.021173708140850067, -0.05099957436323166这个位置,所以times x3 等于values

image-20241212222453057

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

image-20241212222621020

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

image-20241212222854525

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

image-20241212223135001

GIF

1.1 代码实现keyframme关键帧动画

简单创建一个立方体

image-20241212225048222

GIF

1.2 四元数与欧拉角转换设置关键帧

主要就是旋转动画,刚才是位移动画,旋转动画就要用到QuaternionKeyframeTrack

四元数就是利用一系列公式算出角度可以避免旋转过程中轴心偏向的问题

当然这个three已经帮我们处理好了,我们不用去算直接用她的一个数学库来解决

image-20241212225754896

image-20241212230821934

GIF

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

image-20241212231005456

1.3 布尔关键帧动画

就是控制显示隐藏,类似于星星闪烁效果

image-20241216223401567

GIF

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

image-20241216224216777

GIF

1.4 颜色关键帧

可以根据时间设置不同的颜色

注意颜色支持rgb但是是0-1的写法

而且是对材质设置

image-20241216224947012

GIF

4.5 数值关键帧

就是想对这个3D物体某些属性进行数值上的单独修改可以用这个

比如透明度

注意要找到模型的材质,可以一直往这个gltf.scene的children下面找,找到最后一级会有mesh此时就带有材质

image-20241216230249032

GIF

二.混合器

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

image-20241216231118768

GIF

三.人物多动作丝滑切换

加载模型进来,可以看到这是一个已经做好动画的模型

image-20241218224523258

image-20241218224640414

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

image-20241218225630353

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

image-20241218225730300

首先来一个站着不动呼吸的动画

其他效果类似

image-20241218231151726

GIF

标签:083D,ThreeJs,这个,关键帧,模型,动画,详解,values,children
From: https://www.cnblogs.com/heymar/p/18631662

相关文章

  • Go init()使用详解
    持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第1天,点击查看活动详情1.init()的使用见名知意,init()是Go中的初始化函数。我们都知道,main()函数是Go程序启动的入口,而init()函数就是在main()之前,起到一个初始化的作用。 Go代码解读复制代码packag......
  • CSRF跨站请求伪造攻击详解
    一、CSRF攻击概述1.1CSRF攻击定义用户浏览器加载恶意网站时,浏览器中的恶意网站页面向另一目标网站自主发起一个恶意HTTP请求,该攻击方式即为CSRF攻击。1.2CSRF攻击的本质在CSRF攻击中,攻击者诱使用户的浏览器发起一个恶意请求,本质上是借助用户的凭证,以用户的身份去执行特......
  • 嵌入式单片机中串口通信实现详解
    串口通信的概念通信的概念通信指的是CPU和外部设备之间或者计算机与计算机之间的数据交互。                  通信的种类处理器与外部设备之间的通信方式有两种:   串行通信            并行通信      ......
  • Transformers 框架 Pipeline 任务详解(六):填充蒙版(fill-mask)
    在自然语言处理(NLP)领域,填空或填补句子中的缺失部分是一项重要的任务。它不仅考验了模型对语言的理解能力,还展示了其生成合理且语义连贯的文本的能力。HuggingFace的Transformers框架通过其PipelineAPI提供了强大的fill-mask功能,允许开发者和研究者轻松构建并应用这种填空技......
  • Spring Boot 知识体系详解:原理、配置与开发实战
    一、概述目的SpringBoot的主要目的是简化Spring应用程序的初始搭建以及开发过程。它采用了“约定优于配置”的原则,减少了开发人员需要编写的样板代码(如配置文件)数量。例如,在传统的Spring应用中,要配置一个数据源,需要在XML配置文件或者Java配置类中进行大量的配置,包括数据库连......
  • 【开源-详解】基于51单片机的智能闹钟设计 - 第二节 - 硬件连接与模块函数解析
    51单片机智能闹钟--硬件连接与模块函数解析硬件准备:模块函数解析OLED驱动模块(调用部分)DHT11温湿度传感器(调用部分)DS1302时钟模块(调用部分)蜂鸣器模块(此处是无源蜂鸣器)空气质量检测模块(DO)按键模块小节总结硬件准备:使用到的模块:–DHT11温湿度传感器x1–MQ135空气......
  • 项目管理专业人员PMP认证超全详解,打造职场核心竞争力!
    PMP认证介绍PMP®指的是项目管理专业人士资格认证,它是由美国计算机协会(ProjectManagementInstitute,简称PMI®)发起的,PMP®认证是严格评估项目管理人员知识技能是否具有高品质的资格认证考试。是目前全球项目管理方面含金量最高的资格认证,也是项目管理专业人士身份的象征。......
  • Linux常用选项之tr命令详解
    tr(translate)是Linux系统中一个非常实用的命令行工具,主要用于字符转换或删除操作。它从标准输入读取数据,执行指定的转换处理,并将结果输出到标准输出。tr命令的主要功能包括但不限于大小写转换、删除特定字符、压缩重复字符等。功能与特性字符替换:可以将一组字符替换成另一......
  • 全面解析基数排序:定义、原理、复杂度、稳定性及实现步骤详解
    定义基数排序(RadixSort)是一种非比较型整数排序算法,它是根据数字的每一位来排序。它的基本思想是将整数按位数切割成不同的数字,然后按每个位数分别比较。对于有d位的整数,需要进行d趟排序。工作原理以最低有效位(Least-Significant-Digit,LSD)为例首先,考虑待排序的整数......
  • 冒泡排序全攻略:概念、原理、复杂度与代码详解
    一、冒泡排序的基本概念冒泡排序(BubbleSort)是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢......