Threejs 导入动态模型 - 兔子岛

news2024/9/21 16:35:12

Threejs 动画模型

GLTF加载器(GLTFLoader)

glTF(gl传输格式)是一种开放格式的规范 (open format specification), 用于更高效地传输、加载3D内容。该类文件以JSON(.gltf)格式或二进制(.glb)格式提供, 外部文件存储贴图(.jpg、.png)和额外的二进制数据(.bin)。一个glTF组件可传输一个或多个场景, 包括网格、材质、贴图、蒙皮、骨架、变形目标、动画、灯光以及摄像机。

const loader = new GLTFLoader();

点击查看:例子

导入兔子模型

		const loader = new GLTFLoader();
		//兔子
		loader.load(
			Rabbit1, //import 兔子模型
			function (gltf) {
				console.log('兔子1', gltf);
				gltf.scene.scale.set(10, 10, 10);
				gltf.scene.position.set(10, 7, -125);
				gltf.scene.rotation.y = - 4;

				mixer = startAnimation( // 执行动画操作
					gltf.scene,
					gltf.animations,
					gltf.animations[3].name
				);

				scene.add(gltf.scene);
				animate();
			},
		);

打印查看兔子模型的动画有哪些:

在这里插入图片描述

通过startAnimation()执行动画操作:

function startAnimation(skinnedMesh, animations, animationName) {
			const m_mixer = new THREE.AnimationMixer(skinnedMesh);
			const clip = THREE.AnimationClip.findByName(animations, animationName);
			if (clip) {
				const action = m_mixer.clipAction(clip);
				action.play();
			}
			return m_mixer;
		};

AnimationMixer

动画混合器是用于场景中特定对象的动画的播放器。当场景中的多个对象独立动画时,每个对象都可以使用同一个动画混合器。

AnimationMixer( rootObject : Object3D )
  • rootObject - 混合器播放的动画所属的对象
  • time - 全局的混合器时间
  • timeScale - 全局时间(mixer time)的比例因子

一些方法:

  • .clipAction (clip : AnimationClip, optionalRoot : Object3D) :返回所传入的剪辑参数的AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。第一个参数可以是动画剪辑(AnimationClip)对象或者动画剪辑的名称。
  • .existingAction (clip : AnimationClip, optionalRoot : Object3D) :返回传入剪辑的已有AnimationAction, 根对象参数可选,默认值为混合器的默认根对象。
  • .getRoot () :返回混合器的根对象
  • .stopAllAction () :停用混合器上所有预定的动作
  • .update (deltaTimeInSeconds : Number) :推进混合器时间并更新动画
  • .setTime (timeInSeconds : Number) :设置全局混合器到一个给定的时间,并相应地更新动画。
  • .uncacheClip (clip : AnimationClip):释放剪辑的所有内存资源
  • .uncacheRoot (root : Object3D) :释放根对象的所有内存资源
  • .uncacheAction (clip : AnimationClip, optionalRoot : Object3D) :释放动作的所有内存资源

源码体验地址

github:动画兔子岛
在线体验:https://threejs-rabbit-island.vercel.app/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产品心理学:福格行为模型详解与应用

​Fogg说人的行为由动机,能力和触发条件这三要素组成,这三个同时都满足时行为才会发生。用一个等式来简化就是: BMAT 其中B是Behavior行为,M是Motivation 动机,A是Ability能力,T是Triggers触发。 行为的发…

“华为杯”研究生数学建模竞赛2004年-【华为杯】B题:实用下料的数学模型(附优秀论文)

赛题描述 “下料问题(cutting stock problem)”是把相同形状的一些原材料分割加工成若干个不同规格大小的零件的问题,此类问题在工程技术和工业生产中有着重要和广泛的应用. 这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。 一个好的下料方案首先…

JavaEE4-Spring使用

目录 1.存储Bean对象到Spring容器中 1.1.创建Bean 1.2.将Bean注册到Spring容器中 1.2.1.第一次存储Bean(可选,如果是第二次及以后,此步骤忽略) 1.2.2.添加Bean标签 2.从Spring容器中获取并使用Bean对象 2.1.创建Spring上下…

ADC架构_Flash

ADC架构_Flash 比较器做1位ADC Vin > Vref Vout High&#xff08;1&#xff09; Vin < Vref Vout Low&#xff08;0&#xff09; 比较器是组建集成ADC的内部基本而又关键的模块&#xff1b;在比较器应用在ADC中一般要求很高的分辨率&#xff0c;也就是很小的差分输…

Spring Security 认证研究

2 Spring Security 认证研究 2.1 Spring Security介绍 认证功能几乎是每个项目都要具备的功能&#xff0c;并且它与业务无关&#xff0c;市面上有很多认证框架&#xff0c;如&#xff1a;Apache Shiro、CAS、Spring Security等。由于本项目基于Spring Cloud技术构建&#xff…

java数组2023014

数组&#xff1a;首先数组也是一种类型 Java的数组要求所有的数组元素具有相同的数据类型。因此&#xff0c;在 一个数组中&#xff0c;数组元素的类型是唯一的&#xff0c;即一个数组里只能存储一种数据类型的数据&#xff0c;不能存储多种数据类型的数据。 注意&#xff1a; …

MySQL数据库约束(主键约束,外键约束详解)

关系型数据库的一个重要功能:需要保证数据的"完整性",可以通过人工的方式来观察确认数据的正确性,这种方式是可行的,但是不合适,因为人为控制的方式势必会存在疏忽,导致一些错误没有被检查出来,所以MySQL数据库定义了一些约束来帮助程序员更好的检查数据的正确系!一,…

git cherry-pick 教程

对于多分支的代码库&#xff0c;将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是&#xff0c;你需要另一个分支的所有代码变动&#xff0c;那么就采用合并&#xff08;git merge&#xff09;。另一种情况是&#xff0c;你只需要部分代码变动&#x…

目标检测-yolov1的详细理解(代码和原理)

目标检测算法&#xff0c;主要分为两类&#xff1a; 一类是以R-CNN为代表的两阶段检测算法&#xff0c;将目标检测任务分为边界框回归和物体分类两个模块二是yolo系列算法&#xff0c;是将目标检测任务看作是回归任务。 原理 yolov1将图像划分为S*S的网格&#xff0c;如果检测…

计网必会:应用层结构体系

文章目录什么是应用层应用层原理P2P模式C/S模式进程的通信原理客户和服务器进程进程发生运输服务类型TCP服务UDP服务服务选择什么是应用层 应用层原理 P2P模式 两台主机相互通信互为服务器&#xff0c;互为主机&#xff0c;可以发现&#xff0c;这样的模式下&#xff0c;如果是…

【Java寒假打卡】JavaWeb-TomCat发布动态资源

【Java寒假打卡】JavaWeb-TomCat发布动态资源Servlet的介绍实现步骤Servlet的执行流程Servlet的介绍 Servlet是运行在Java服务器端的程序&#xff0c;用于接受和响应来自客户端基于HTTP协议的请求如果想实现Servlet的功能&#xff0c;可以通过实现javax.servlet.Servlet接口或…

三、QML开发之qml 语言基础

QML就是用来编辑和生成Quick界面的语言&#xff0c;所以在开发界面之前一定要了解基础的QML语言基础知识&#xff0c;接下来从介绍qml语法如何编写&#xff0c;变量和属性 对象的简要说明&#xff0c;通过本节的学习能够达到简单的加载图片 和设置lable标签存放位置&#xff0c…

【零基础】学python数据结构与算法笔记14-动态规划

文章目录前言88.动态规划介绍89.钢条切割问题90.钢条切割问题&#xff1a;自顶向下实现91.钢条切割问题&#xff1a;自底向上实现92.钢条切割问题&#xff1a;重构解93.最长公共子序列最长公共子序列&#xff1a;实现总结前言 学习python数据结构与算法&#xff0c;学习常用的…

CSS+JS 弹窗

弹窗 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>弹窗</title><style type"text/css">.alert {display: none;justify-content: center;align-items: center;width: 100%;height: 100vh;backgro…

输入一个url后发生了什么 js性能优化

文章目录从一道题开始&#xff1a;输入一个url后发生了什么&#xff1f;1.请求协议可聊点1&#xff1a;http协议相关> 追问: http与TCP可聊点2&#xff1a; https协议相关> 追问&#xff1a;http与https2.域名解析3.web服务器4.服务(2、3)涉及到 网络优化5.浏览器渲染6.脚…

【Zookeeper】关于windows安装问题整理汇总

文章目录常规安装&#xff1a;1、windows配置zoo.cfg之后&#xff0c;提示&#xff1a;JAVA_HOME is not set.1.1 本地没有安装JDK或者没有配置JAVA_HOME解决方案&#xff0c;参考JDK安装下载办法1.2 本地配置的JDK但是环境变量JDK路劲不叫名字“JAVA_HOME”解决方案&#xff1…

docker容器将系统盘空间占满的解决办法

最近遇到一个问题&#xff0c;线上服务器的系统盘空间被占满了&#xff0c;导致服务不能正常运行了。docker启动时会报出下面这个错误no space left on device排查用到的命令&#xff0c;显示当前路径下占用空间超过1G的文件或文件夹du -h --max-depth1|grep G|sort -n经过一番…

SAP FICO 详细解析新总账功能 - 平行分类账配置

平行分类账配置 其作用简单来说就是&#xff0c;同时一笔记账&#xff0c;会产生多个账套的凭证。 【配置流程】 1、定义总账会计核算的分类账 账套可以有多个&#xff0c;但是主分类账有且只有一个。 表FAGLFLEXT就是存储所有财务分类账发生额数据的汇总表。 勾选多个“主…

CSS知识梳理

CSS的三大特性 一 . 层叠性 : 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要解决样式冲突的问题 层叠性原则 : 样式冲突&#xff0c;遵循的原则是就近原则&#xff0c;哪个样式离结构近&#xff0c…

在Azure应用程序按指定时区的时间来输出日志(NLog)

部署在Azure应用程序使用NLog组件进行日志输出&#xff0c;如购买的Azure云是国际版&#xff08;非中国版Azure&#xff09;&#xff0c;默认使用国标时间&#xff08;即&#xff1a;UTC&#xff09;来输出日志时间&#xff0c;与中国地区的时间相差8小时&#xff08;即&#x…