three.js加载fbx并解析骨骼动画

2023-10-31

three.js加载fbx并解析骨骼动画
话不多说,上代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>My first three.js app</title>
		<style>
			body {
				margin: 0;
			}
		</style>
	</head>
	<body>
		<script src="js/three.js"></script>
		<!-- 引入fbx模型加载库FBXLoader -->
		<script src="http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/loaders/FBXLoader.js"></script>
		<!-- 辅助文件 -->
		<script src="http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/libs/inflate.min.js"></script>
		<script>
			//创建一个场景
			const scene = new THREE.Scene();
			const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
			//渲染器,若不支持WebGL,可以使用其他进行降级
			const renderer = new THREE.WebGLRenderer();
			/*渲染器的尺寸,setSize中有第三个参数,设为false,
			可以使用比较低的分辨率来渲染*/
			renderer.setSize(window.innerWidth, window.innerHeight);
			//将渲染器的dom元素添加到hmtl文档中
			document.body.appendChild(renderer.domElement);
			var mixer = null; //声明一个混合器变量
			var loader = new THREE.FBXLoader(); //创建一个FBX加载器
			loader.load("Naruto(1).fbx", function(obj) {
				// console.log(obj)
				scene.add(obj)
				obj.translateY(20);
				obj.translateZ(-160);
				// obj作为参数创建一个混合器,解析播放obj及其子对象包含的动画数据
				mixer = new THREE.AnimationMixer(obj);
				// 查看动画数据
				console.log("动画数据", obj.animations)
				// obj.animations[0]:获得剪辑对象clip
				var AnimationAction = mixer.clipAction(obj.animations[23]);
				AnimationAction.timeScale = 0.1; //默认1,可以调节播放速度
				//AnimationAction.loop = THREE.LoopOnce; //不循环播放
				//AnimationAction.clampWhenFinished=true;//暂停在最后一帧播放的状态
				AnimationAction.play(); //播放动画
			})
			// 创建一个时钟对象Clock
			var clock = new THREE.Clock();
			// 渲染函数
			function render() {
				renderer.render(scene, camera); //执行渲染操作
				requestAnimationFrame(render); //请求再次执行渲染函数render,渲染下一帧

				if (mixer !== null) {
					//clock.getDelta()方法获得两帧的时间间隔
					// 更新混合器相关的时间
					mixer.update(clock.getDelta());
				}
			}
			render();
		</script>
	</body>
</html>

在这里插入图片描述
obj.translateY(20);
obj.translateZ(-160);
是模型加载的位置,可以做适当调整,官网的数值可能看不到模型,不是没有加载,而是加载的位置你看不到。

"Naruto(1).fbx"是你的文件名。
附上中文网地址:
http://www.webgl3d.cn/Three.js/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

three.js加载fbx并解析骨骼动画 的相关文章

随机推荐

  • vue3内置组件(Teleport组件,Fragment组件)-传送组件,减少层级

    一 传送组件 Teleport组件 可将组件移动到 DOM 中 Vue app 之外的其他位置 主要是为了解决一些特殊场景下模态对话框组件 组件的渲染 例子 模拟UI框架对话框组件 App vue
  • leetcode-每日一道算法题

    字符串转换整数 atoi 请你来实现一个 myAtoi string s 函数 使其能将字符串转换成一个 32 位有符号整数 类似 C C 中的 atoi 函数 函数 myAtoi string s 的算法如下 读入字符串并丢弃无用的前导空
  • 韩信点兵问题,鸡兔同笼问题,闰年判断问题等,我用Python瞬间搞定(13)

    小朋友们好 大朋友们好 我是猫妹 一名爱上Python编程的小学生 欢迎和猫妹一起 趣味学Python 今日主题 最近猫妹一直在练习Python编程 有些习题真是经典啊 比如韩信点兵问题 比如鸡兔同笼问题等 这些问题 第一次遇到 真是没有思
  • 第0章-JDK的安装与配置

    JDK 8 的安装与配置 本系列文章参考了尚硅谷的课件文档及其他同学的学习笔记 1 安装 1 1 打开网页下载 https www oracle com 下载对应平台的合适的 JDK 版本 1 2 开始安装 双击下载的 exe 如 jdk
  • js阻止事件冒泡

    js阻止事件冒泡
  • 【ELK系列二】es的UI界面elasticsearch-head插件安装

    安装elasticsearch head插件 由于es服务启动之后 访问界面比较丑陋 为了更好的查看索引库当中的信息 我们可以通过安装elasticsearch head这个插件来实现 这个插件可以更方便快捷的看到es的管理界面 1 com
  • 爬虫学习4——Xpath爬取网页信息

    xpath是在XML文档中搜索内容的一门语言 我们常见的html是xml的一个子集 目录 安装lxml模块 获取网页数据 text 拿文本 xpath使用 1 选择同种标签的第一个 a href 根据属性href的值选择特定标签 表示后代
  • 《Docker技术入门与实战》学习笔记——第一部分 基础入门

    文章目录 0 前言 1 1 docker 镜像 1 2 docker 容器 1 3 docker 仓库 2 容器的生命周期 3 docker 命令索引 学习材料 0 前言 近期 工作中docker用的比较多 由于之前并没有怎么使用过dock
  • QT 环境搭建

    qt环境搭建 转载于 http blog csdn net gotosola article details 20397385 0 tsina 1 37407 397232819ff9a47a7b7e80a40613cfe1 Qt在Wind
  • Oracle 生成UUID

    select rawtohex sys guid from dual 文章质量建议 感谢你的创作 你可以考虑下面的改进以获得更多流量支持 增加更完备的描述 提供代码 减少外链 增加投票来和读者互动 更多建议
  • SpringBoot之bean解析(四)

    IOC思想解析 IOC 控制反转 全称为 Inverse of Control 从字面上理解就是控制反转了 将对在自身对象中的一个内置对象的控制反转 反转后不再由自己本身的对象进行控制这个内置对象的创建 而是由第三方系统去控制这个内置对象的
  • linux 配置服务开机自启动之chkconfig(Linux 运行级别)

    文章目录 linux 配置服务开机自启动 systemd 和 chkconfig add 设置开机自启动有什么区别 一 如何让一个服务或脚本开机自启动 1 三种解决方案 2 systemd 和 chkconfig 二 chkconfig 1
  • [OpenGL]射线拾取RayPicking---(2)拾取三角面

    Vries的教程是我看过的最好的可编程管线OpenGL教程 没有之一 但没有讲关于拾取 Picking 的章节 而这个功能的确很重要 就自己试着写写看了 核心代码 参考 网址如下 别问 问就是抄 https www cnblogs com
  • MATLAB自相关分析xcorr

    目录 自相关定义 xcorr的应用 举个栗子 自相关定义 信号 x t x t x t 的自相关函数定义为 其中 T为信号 x
  • 2016.5.23

    2016 5 23 news from BBC China s Science Revolution 这篇文章非常棒 推荐阅读 今天只完成4个部分 明天继续mark introduction From building the bigges
  • 将 InputStream 流转成 MultipartFile

    MultipartFile是一个接口 有一个MockMultipartFile实现类 里面有构造方法可以直接将输入流转为MutipartFile对象 MultipartFile File new MockMultipartFile file
  • @angular前端项目代码优化:构建Api Tree

    前颜 yan 在前端项目的开发过程中 往往后端会给到一份数据接口 本文简称api 为了减少后期的维护以及出错成本 我的考虑是希望能够找到这么一种方法 可以将所有的api以某种方式统一的管理起来 并且很方便的进行维护 比如当后端修改了api名
  • 三维重建(单目、双目、多目、点云、SFM、SLAM)

    1 相机几何与标定 1 1 相机模型中的坐标系 1 2 四种坐标系之间的转换 1 3 相机内参 1 4 相机标定 2 传统三维重建 2 1 RGBD三维重建 2 1 1 KinectFusion 2 1 2 BundleFusion 2 1
  • CentOS7 Failed to start LSB: Bring up/down解决方法

    刚刚装好的虚拟机突然不能上网了 报错很诡异 具体报错如下 etc init d network restart Restarting network via systemctl Job for network service failed
  • three.js加载fbx并解析骨骼动画

    three js加载fbx并解析骨骼动画 话不多说 上代码