基于惯性动捕的动画应用解决方案——Unity篇

2023-12-06 07:59

本文主要是介绍基于惯性动捕的动画应用解决方案——Unity篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解决方案流程:
在这里插入图片描述

一、穿戴动捕设备

此教程以VDSuit Full为例,具体穿戴请观看对应的穿戴视频或使用说明。
在这里插入图片描述

图1.1

二、连接设备并进行标定

2.1设备与软件连接
选择VDSuit Full类型,然后点击连接按钮连接软件,如下图2.1-2.2。
在这里插入图片描述

图2.1
在这里插入图片描述

图2.2

2.2标定
连接软件后进行姿态标定,使用前必须根据提示严格依据标定动作进行标定,否则会影响使用的姿态效果。
在这里插入图片描述

图2.3

三、根据需求记录动作数据

3.1点击记录按钮,记录文件的文件属性,下图所示
按钮“灰色”状态时为未记录数据,按钮为“红色”状态时为数据记录中,如下图3.1所示
在这里插入图片描述

图3.1

3.2保存动作数据
再次点击“记录”按钮,按钮由“红色”变为“灰色”时,数据即被保存。
在这里插入图片描述

图3.2

四、导出FBX动捕数据文件

点击数据导出按钮,设置需要导出的数据文件的属性,此处建议直接选择FBX,本教程是基于标准骨骼绑定的模型示范的,导出的步骤如下图4.1-4.2。
在这里插入图片描述

图4.1
在这里插入图片描述

图4.2

五、将模型与数据导入Unity

5.1导入模型到Unity中,并对其设置相关参数。
在Rig 面板中更改 Animation Type 为 Humanoid,Avatar Definition 为 Create From This Model,如下图5.1。
在这里插入图片描述

图5.1

5.1将FBX数据导入Unity中,并对其设置相关参数。
在Rig 面板中更改 Animation Type 为 Humanoid,Avatar Definition 为 Create From This Model,如下图5.2。
在这里插入图片描述

图5.2

六、创建动画控制器Animator Controller

对FBX动捕数据创建动画控制器,并将控制器拖入动画控制面板中,如下图6.1-6.2。
在这里插入图片描述

图6.1
在这里插入图片描述

图6.2

七、预览动画

将动画控制器的拖入场景模型中的动画选项卡中,然后运行即可查看动画效果,如下图7.1-7.2。
在这里插入图片描述

图7.1
在这里插入图片描述

图7.2

八、修改数据骨骼位置

若预览动画的时模型手部的手指姿态不正确,修改FBX数据与模型的骨骼节点的位置,使其一一对应。Unity骨骼标准手指为三节,所以匹配时须注意大拇指外其余四指的三节手指不能匹配在掌心上方(特别注意是FBX数据的匹配),且FBX数据的关节点与模型的关节点要保持一致且都为三节。

8.1匹配模型关节
在这里插入图片描述

图8.1
在这里插入图片描述

图8.2

8.2匹配FBX数据中骨骼位置
在这里插入图片描述

图8.3
在这里插入图片描述

图8.4

九、Unity特效

部分模型头发或裙子若需要飘动等碰撞效果,可添加动力学。V Chan裙子以权重方式实现,所以这里以头发作为示范例子。

9.1给头发添加动力学脚本,并调节相关的参数
在这里插入图片描述

图9.1

9.2对身体或其他关节需要与头发接触的关节添加碰撞体,并设置碰撞体大小等相关参数
在这里插入图片描述

图9.2

这篇关于基于惯性动捕的动画应用解决方案——Unity篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/461056

相关文章

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null