当前位置: 首页 > article >正文

Threejs合并模型动画(上)

本文目录

  • 前言
  • 一、素材准备
    • 1.1 素材展示
    • 1.2 素材下载
    • 1.3 素材转换
  • 二、模型动画合并
    • 2.1 GLTF导出器
      • 2.1.1 简介
      • 2.1.2 构造函数及方法
    • 2.2 代码
      • 2.2.1 代码解析
    • 2.3 效果

前言

我们常常会遇到相同的模型具有不同的动画,那么我们想把不同的动画都给到一个相同的模型,让这个模型具有许多动画,通常这都是3d设计师给到你的,但是如果我们自己也不熟悉3d编辑器,我们又想模型有不同的动画,我们这个时候就可以使用Three.js来完成这样的合并,并且运用动画。接下来本篇文章将介绍。

一、素材准备

1.1 素材展示

在这里将介绍一个免费的模型以及给模型自动生成骨架及动画的网页https://www.mixamo.com/,我们注册登陆这个网站:
在这里插入图片描述
我们会发现左上角有CharactersAnimations两个按钮,分别是选择模型以及给模型加上动画,我们这里点击Characters选择一个模型:
在这里插入图片描述
接着点击Animations给这个模型添加动画:
在这里插入图片描述
请添加图片描述
可以看到这是一个攻击的动作。

1.2 素材下载

接着我们点击DOWNLOAD下载这个模型及动画:
在这里插入图片描述
接着我们再选择一个动画:
在这里插入图片描述
请添加图片描述
可以看到是一个原地休息的动作,我们也把这个模型下载下来,这个时候我们就有两个模型了:
在这里插入图片描述

1.3 素材转换

将模型一个一个导入到建模软件blender或者其他建模软件中再一个一个导出为glb格式如下:
在这里插入图片描述
这样我们就得到了glb格式的两个模型了:
在这里插入图片描述


二、模型动画合并

2.1 GLTF导出器

2.1.1 简介

GLTF导出器(GLTFExporter):一个专为glTF 2.0设计的导出工具。
glTF (GL Transmission Format) ,即图形传输格式,乃高效流转与载入3D资源的开放标准。资源支持JSON格式(.gltf)及二进制封装(.glb)。纹理数据(.jpg, .png)及附加二进制(.bin)存于外部文件。glTF资产集,场景多元,涵盖网格构建、材质定义、纹理贴图、骨骼绑定、变形效果、动画演绎、光影设置及镜头视角等丰富元素。

2.1.2 构造函数及方法

  1. 构造函数:GLTFExporter()
    创建一个新的 GLTFExporter 实例:const exporter = new GLTFExporter();
  2. 方法parse:导出的场景或对象
    .parse ( input : Object3D, onCompleted : Function, onError : Function, options : Object ) : undefined

2.2 代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        html,
        body {
     
            margin: 0;
            padding: 0;
            width: 100%;
            height: 100%;
        }
    

http://www.kler.cn/a/305598.html

相关文章:

  • dapp获取钱包地址,及签名
  • java操作ES(一)RestHighLevelClient(2)集成与demo
  • vue elementui el-dropdown-item设置@click无效的解决方案
  • C++数据结构算法学习
  • ELK-Logstash配置
  • Linux入门:环境变量与进程地址空间
  • quartz 搭配SQL Server时出现deadlock的解决方案
  • ClickHouse总结
  • 如何使用 Vue 3 的 Composition API
  • C++ | Leetcode C++题解之第406题根据身高重建队列
  • 阿里部分集团内部中间件简介
  • 【Elasticsearch系列四】ELK Stack
  • DroidBot-GPT: GPT-powered UI Automation for Android论文学习
  • C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(2)
  • 【编程基础知识】Java语言中字面字符和转义字符的区别
  • 自建,前端sdk库(react-utils-dev-sdk)
  • Pytorch2.4.0自动安装cudnn9.1??? pip安装cudnn方法
  • 使用SQLAlchemy进行数据库操作:编写一个高效的Python函数
  • SpringBoot和SpringMVC是什么关系?SpringBoot替代SpringMVC了吗?
  • 继图书管理项目遗留的问题修改
  • Google宣布所有英语语种的Gemini Live用户现可免费使用
  • 对游戏语音软件Oopz遭遇DDoS攻击后的一些建议
  • 深入了解 Python 的 argparse 模块:命令行参数处理的艺术
  • 828华为云征文 | 华为云X实例服务器上部署知识图谱项目的详细指南
  • 企微机器人:企业数字化转型的得力助手
  • dubbo一