用Audio2Face导出Unity面部动画

开始之前说句话,新年前最后一篇文章了
一定别轻易保存任何内容,尤其是程序员不要轻易Ctrl + S

在A2F去往Unity的路上,还要经历特殊Blender,自己电脑中已下载好的可能不是很好使。

如果想查看UE相关的可以跳转到下边这两篇链接

1. 用Audio2Face驱动UE - MetaHuman

2. 用Audio2Face导出驱动MetaHuman的面部动画

如果在操作的时候导致模板usd文件损坏,可以加QQ群(点击不能进群后,右键复制链接,在新页面复制进去就行)QQ群,获得一个新的模板

前期安装

  1. 先检查自身电脑配置看是否满足,按最小配置再带个UE可能会随时崩,按推荐来带个UE可能会略有小卡(亲身体会)。
  2. 下载 Omniverse Develop on NVIDIA Omniverse Platform | NVIDIA Developer
  3. 之后下载Audio2Face,如果在第三步找不到该应用,则到第四步搜索
  4. 接着下载Bleder Alpha USD Branch
  5. 打开OmniverseNUCLEUS面板,在Omniverse一栏下选择Add Server,并且增加一个Local Nucleus Server(按照自己所需配置就好)
  6. 安装完成后,部分机器可能需要重启,然后启动你刚下载好的Local Nucleus Server 

先导出一份记录面部动画的.USD文件

这一步骤和给UE的动画一样,不过到最后一步之后还有步骤,所以中间会的可以跳过

英语好的话可以直接看这个视频:Unity and Audio2Face FBX animation transfer workflow

  1. 打开Audio2Face,找到Al Models面板,然后选择亚洲人Claire面孔,当然因项目而异啊。
  2. 导入claire_bs_46.usd文件,选择后拖入到Stage面板下就行,记得把两个文件分开,不然叠在一起,后面看的不明显。
  3. 打开A2F Data Conversion面板,设置绑定BS的相关转换,选择BLENDSHAPE & JOINT CONVERSION模块,分别设置输入的动画网格和输出的BS网格,最后点击SET UP BLENDSHAPE SOLVE(处理),得到处理结果。
  4. 回到Audio2Face Tool面板,选择自己的音轨,设置表情之类后进行播放,可以看出二者相同了,这时候证明我们的绑定是没有任何问题的,如果有问题则返回上边重新过一遍。
  5. 重新回到A2F Data Conversion面板,设置导出路径,文件名字,以及想要的帧率,以及导出格式设置为USD,接着导出
    1. 如果报错[ Export ] No solver selected,或者弹出以下窗口,则先选择所要导出的解算器,再导出。
  6. 至此,导出USD文件完成,切记不要保存任何内容,除非你复制一份新的usd文件出来,不然你之后所用到的文件就都是你所保存的内容了。再或者加QQ群(点击不能进群后,右键复制链接,在新页面复制进去就行),群文件中有备份,你下载后替换即可。

接着保存真正的USD动画文件

  1. 此时,我们要删除场景内多余的内容,只保留我们接下来需要用到的部分,只保留transfer_dataclaire_bs_46
  2. 然后设置保存路径、文件名后另存到一份新文件中:File > Save Flattened As...  
  3. 接着我们打开新存好的这份文件:File > Open > File Path (你文件的路径),然后Window > Animation > TimeLine,然后点击播放 ( 空格也行 ), 看你的动画是否正常播放,正常则接着往下看,没有动画播放则退回之前的步骤重来。
  4. 接着在Stage面板下的joint1中,删除不需要的节点,只保留joint1你自己命名的动画文件
  5. Stage面板下选中joint1节点,接着在Property面板中的Skeletal Animation下,把Animation Source对象替换为在Stage面板下选中你自己命名的动画文件节点(也就是红框所选),接着Ctrl + S保存这份USD文件

通过Blender中转动画

  1. 通过Omniverse打开我们下载好的Blender,删除场景中原有内容然后导入刚才保存好的USD文件
  2. 接着打开动画视窗,然后点选导入进来的人物模型,接着播放面部动画,看是否成功,成功跳到下一步,不成功则返回之前重来
  3. 接着打开动作编辑器新建一个动画,在开头帧结尾帧增加两个相同的任意关键帧(我这里增加了缩放)。(因为BS动画无法被Blender导出,所以我们得添加动画,附带着BS动画导出)
  4. 导出FBX

Unity中使用BS动画

  1. 打开一个Unity工程,导入保存好的FBX文件,有的Unity可能需要手动勾选导入面部动画:选中导入后的物体 > Inspector面板下 > 勾选Import BlendShapes
  2. 接着用TimeLine,把音频和导进来的动画文件关联起来进行播放
  3. 然后和Blender中的效果对比
  4. 至此,Audio2Face中通过语音生成的面部动画,以及成功的在Unity中运行了起来,因为带有音频,所以就没给大家放GIF文件,有什么问题随时加QQ问我就行,或者QQ群也可以

  • ​​​​​​博客杂货铺
  • GoF23 种设计模式的分类和功能
  • QQ841298494

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

追觅科技发布全折叠高速吹风机Pocket

2月2日,追觅科技召开2024新品发布会,一系列年度新品亮相。现场,追觅科技发布了个护重磅新品——追觅Pocket折叠高速吹风机,这也是行业首个全折叠高速吹风机。 创新柔性折叠技术,直卷吹一机全能 追觅Pocket折叠高速吹风…

Dash :一个超漂亮的 python Web库!

你好,Dash 是一个非常方便的 Python 库,它可以非常非常帮助你构建基于 Web 的应用程序,而且最棒的是你无需使用 JavaScript! 不仅如此,Dash 还是一个专门用于创建分析 Web 应用程序的用户界面库。 如果你是一个使用 …

沟通管理和相关方管理核心考点梳理

个人总结,仅供参考,欢迎加好友一起讨论 PMP - 沟通管理和相关方管理核心考点梳理 沟通管理和相关方(干系人)管理这两章放在一起进行梳理,这两章很多的考点很容易混淆,经常会纠结于一些题目,究竟…

三层架构思想

(一)回顾 面向对象设计原则: 各司其职(单一职责):每个Java对象的职责尽可能单一,每个Java对象只负责做某一件事,目的是为了简单化。 解耦合(开闭原则)&…

深度学习入门笔记(一)必备数学基础知识

本节中,我们先来介绍一些深度学习中必备的数学知识,有些是大学课堂讲过的,还有些可能没有,对于第一次见到的知识,可以先不用深究,了解概念即可,再后面应用的时候可以翻过头再看。 1.1 线性代数…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

OpenAI 悄悄升级 ChatGPT;王腾:小米手机用户忠诚度安卓第一丨 RTE 开发者日报 Vol.140

开发者朋友们大家好: 这里是「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

Java中的常用API

常用API Object类浅克隆与深克隆 ObjectsObjects中的equals 包装类StringBuilder和StringBufferStringBuilder是可变字符串对象StringBuffer线程安全案例![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/87649c20e6464113a42aee5f16f1ee22.png) StringJoiner Object…

鸿蒙harmony--自定义组件

今天是2月1日,星期四,二月的第一条祝福送给你,愿你目之所及皆是欢喜,心之所想皆能如愿,希望在新的一年里,我们都能越来越好。 目录 一,定义 二,自定义组件的基本用法 三,…

生产问题排查系列——未知404状态接口请求

引言 我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服…

【FPGA VerilogModelsim】 8bitBCD码60计数器

可私信获取整个项目文件 8bit 即有8位二进制 BCD码 ,全称Binary-Coded Decimal,简称BCD码或者二-十进制代码 利用四位二进制(0000-1111)16个中选择10个作为十进制0-9; 常见的BCD码是8421码 本项目使用两组BCD码(每组4bit,共8bit,故称为8bitBCD)(高位0-5,低位0-9…

【Java网络编程04】网络原理进阶(二)

1. 前言 在网络原理进阶(一)部分我们详细介绍了UDP/TCP两大协议及其相关特性,本章我们会讨论网络层、数据链路层、物理层相关协议。但是需要注意的是,如果有小伙伴们未来是想成为Java后端开发工程师的,那么未来工作中…

随着网络的快速发展,网络安全问题也日益凸显,遇到攻击该如何处理,如何抉择合适的防护方案

DexunCloud 经过研究发现当今世界,随着网络的快速发展,网络安全问题也日益凸显。其中,DDoS(分布式拒绝服务)攻击被认为是网络安全领域里最为严重的威胁之一。毫无疑问,DDoS攻击不仅可以导致网络服务中断&am…

LCR 156. 序列化与反序列化二叉树

w 解题思路&#xff1a; 序列化 反序列化 public class Codec {public String serialize(TreeNode root) {if(root null) return "[]";StringBuilder res new StringBuilder("[");Queue<TreeNode> queue new LinkedList<>() {{ add(root)…

RK3326系统中集成思必驰音频适配文件

前言 最近本人在RK3326 8.1系统上做定制化&#xff0c;需要对接思必驰平台音频相关接口&#xff0c;同时在系统中集成音频适配文件&#xff0c;踩了很多坑&#xff0c;写这篇文章记录一下。 一、为什么要集成音频适配文件&#xff1f; 当APP&#xff08;集成…

【C语言】通讯录实现(下)

目录 1.进阶通讯录特点&#xff08;下&#xff09; 2.实现步骤 &#xff08;1&#xff09;保存增加的联系人数据到文件中 &#xff08;2&#xff09;加载保存的联系人数据 3.完整C语言通讯录代码 &#xff08;1&#xff09;contact.h (2)test.c (3)contact.c 4.结语 1.…

【Qt加密播放器】登录窗口功能补充

输入框小设计 目的&#xff1a;实现鼠标点击输入框时的聚焦效果。 首先在LoginForm构造函数中为账号和密码输入框添加事件过滤器。关于事件过滤器的具体介绍可以参考这篇博文&#xff1a;Qt消息机制和事件 ui->nameEdit->installEventFilter(this); ui->pwdEdit->…

文字超长显示省略号...坑(如果盒子本身是弹性盒子flex布局会不支持)

如果盒子是弹性盒子 样式会失效 #item-title{font-size: 28rpx;font-weight: 800;color: #2D3748;width: 100%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}&:nth-child(2){width: calc(100% - 172rpx);margin-left: 40rpx;>view{&:not(:first-…

人工智能基础-Numpy矩阵运算-聚合操作

加、减、乘、除、整除 幂、取余、倒数、绝对值 三角函数 e的x次方、3的x次方、logx、log2为底、log10为底 矩阵运算 加、减、乘&#xff08;对应数相乘&#xff09;、矩阵相乘运算、转至 向量和矩阵的运算 加法 对应相加 改变维度后相加 乘法 矩阵的逆 聚合操作 …

Java基础数据结构之Lambda表达式

一.语法 基本语法&#xff1a;(parameters)->expression或者(parameters)->{statements;} parameters&#xff1a;类似方法中的形参列表&#xff0c;这里的参数是函数式接口里面的参数。这里的参数可以明确说明&#xff0c;也可以不声明而由JVM隐含的推断。当只有一个推…