OMNIVERSE AUDIO2FACE AND REALLUSION
Nvidia OMNIVERSE
老黄推出的元宇宙系列,其中Audio2Face可直接通过音频精准获取3d角色的面部动画。
下载NVIDIA Omniverse Launcher,安装Audio2Face*(但是现在找不到了?维护?下架?收费?)*
Nvidia官网、Youtube、B站都有很多相关的教程。本文简单记录一下我个人使用时踩到的一些坑。
- 简单填写一些信息即可下载,下载的时候可能需要科学上网,莫得办法…
初始页面:
其中若希望使用Nvidia提供的一些示例或素材,需安装Local Nucleus Service。
人脸模型驱动
以Nvidia提供的46位bs人脸模型为例,对其进行语音驱动。(苹果公司主推的ARKit 2面部追踪为52位bs,这个下文再说)。
首先隐藏char_male_model_hi,然后将如下路径的male_bs_46.usd文件拖入stage。
于Character Transfer选项卡下的Tools,点击MALE TEMPLATE,获取charTransfer,将两个新得到的人脸模型左右平移到适当位置。
选择Target Mesh,随后OpenMouth A2F Mesh会自动选定到右侧张嘴的人脸模型。
点击Character Transfer选项卡下MESH FITTING中的ADD MODE,手动进行锚点,简单的锚定眼眶,鼻尖,嘴部,下巴,双耳。点击DONE ADDING - PRESS ESC KEY结束锚点。若不满意可对锚点进行编辑与增删。
依次点击Begin Mesh Fitting、Begin Post Wrap进行拟合,得到如下结果:
回到Audio2Face选项卡,在ATTACHED MESHS下选择我们新添加的人物模型。点击播放音频,即可看到我们的46位bs模型已被成功驱动。(我锚点锚的不太好,效果可能受了点影响)
- 如果初始页面有问题,例如找不到Audio2Face选项卡,可尝试退出NVIDIA Omniverse Launcher后重新打开;再不行就重启大法。(我当时就是这么淦的…)
bs导出
成功驱动人脸模型后,可将bs系数以json文件形式导出。上文中我们使用的是Nvidia提供的46位bs模型,若导出则是46位bs的json文件。这里我们使用Reallusion Character Creator 3生成的模型来导出bs系数的json文件,该模型可以较好地契合ARKit 2面部追踪的52位bs。
File -> New新建一个工程,从OMNIVERSE AUDIO2FACE的示例工程中即可获取该模型,双击打开。若有弹窗选择Open Original File即可。
可以看到,该半兽人模型的bs系数有很多带有A开头的bs,这些bs是与ARKit 2面部追踪的52位bs相对应的。
同样,点击Character Transfer选项卡,MESHS内如下选择,MESH FITTING这里Preset我们选择Reallusion CCS Plus模型,弹出对话框点击ok。
无需点击Begin Mesh Fitting,直接点击Begin Post Wrap。
点击Audio2Face选项卡,且于左侧选中灰色的人物模型。点击**+ A2F PIPELINE**,对话框选择YES,ATTACH.
点击播放音频,此时已可成功驱动半兽人模型。
在stage中可以手动显示或隐藏各个人物模型,在Viewport中可对各人物模型进行拖动、缩放、旋转
接下来,点击A2F Data Conversion选项卡,在BLENDSHAPE CONVERSION中按如下选择网络模型后,点击SET UP BLENDSHAPE SOLVE。
Audio2Face会为我们完成bs的映射。现在播放音频会发现CC_Base_Body与CC_Base_Body_result两个网络模型都已被成功驱动。
现在我们可以在A2F Data Conversion选项卡中勾选或取消部分Pose,其中TOGGLE USE为反选,按住Shift可多选。勾选或取消部分Pose后,可在Audio2Face选项卡点击音频播放以实时查看效果。
举例,勾选全部Pose时,CC_Base_Body与CC_Base_Body_result效果一致;全部取消Pose时,CC_Base_Body面部将无任何表情动作,CC_Base_Body_result效果不变;勾选部分Pose时,如仅勾选A开头的Pose,CC_Base_Body与CC_Base_Body_result效果几乎保持一致,但仔细观察会有细微的差别。(个人觉得A中的Pose不勾选A25_Jaw_Open,同时额外勾选Jaw_Open,此时CC_Base_Body与CC_Base_Body_result效果较为接近,且仍满足ARKit 2的52位bs)
在COMMON SETTINGS中修改json文件保存路径和json文件名,设定帧率(帧率越高,后续消耗资源越大)。点击EXPORT AS JSON,此时你就可以获得bs的json文件。
Character Creator 3创建人物模型
上文中我们用到的CC3模型是Nvidia官方示例给出的,当然我们也可以自己使用Reallusion Character Creator 3 创建并导出想要的模型。(CC3可免费试用30天,免费导出15次,后续就需要花钱了…)
打开CC3,创建你想要的人物模型,这里我们直接使用CC3给出的示例模型,右侧Modify选项卡中点击Convert CC3 to CC3+(如果你创建的人物模型本身就已经是CC3+模型,则无需此转换)
可以看到,此时该模型符合ARKit 2的bs规则。
以.usd格式导出该模型(可能需要安装插件,文末相关教程的链接会有涉及)
导出的内容如下:
打开Audio2Face,删除初始的char_male_model_hi,选择**+ MALE TEMPLATE**,将导出的模型拖入到stage
在这里可以旋转模型的角度
这里我使用的是说唱的音频,根据路径可获取该音频
老套路,驱动模型,获取json文件
此时我们手中有如下这些文件:
启动iClone 7 (也是Reallusion旗下的产品,试用30天),将Character Creator 3中的模型传入iClone 7
此时iClone 7内已有我们的CC3模型。这里我们需要安装一个插件,详细可参考:参考链接,这个插件是免费的。
按下图导入相关文件,点击播放按钮,成功驱动我们的人物模型。
另外,我们还可以使用iphone的手机摄像头来实时捕捉我们的面部表情并驱动我们在iClone 7上的人物模型 ,详细方法可参考:参考链接1,参考链接2。(我用的是iphone 12,下载的软件是LIVE Face(免费的),Android阵营貌似不可用…)(关于如何连接到手机:首先开启iphone热点并打开你的无线局域网,PC连接你的手机热点。这种方式亲测有效!)
参考链接:
- https://docs.metahuman.unrealengine.com/zh-CN/HowTos/ExportingMetaHumans/index.html
- https://www.bilibili.com/video/BV1CF411a76g?spm_id_from=333.999.0.0
- https://courses.reallusion.com/home/character-creator
- https://blog.csdn.net/Cool_Da/article/details/122064627
- https://www.youtube.com/watch?v=cYexMlvGHlE
- https://www.nvidia.com/en-us/on-demand/session/omniverse2020-om1354/
- https://www.reallusion.com/cn/character-creator/character-base.html
- https://manual.reallusion.com/Motion_LIVE_Plugin/ENU/Content/iClone_7/Pro_7.0/29_Plug_in/Motion_Live/Connecting_to_LIVE_Face.htm?_gl=1*1cd8qkx*_ga*NjA1NDAxNTQzLjE2NDYwMzE2NzU.*_ga_Q3FS71VPKC*MTY0NjcwMzQ3NC4yMS4wLjE2NDY3MDM0NzQuNjA.
- https://www.bilibili.com/video/BV1T54y1i7AP?from=search&seid=11816739025786499809&spm_id_from=333.337.0.0
- https://www.bilibili.com/video/BV1q7411d7xb?p=1
- https://www.bilibili.com/video/BV164411Y732?p=60
- https://www.youtube.com/watch?v=cYexMlvGHlE&list=RDCMUCgigyhFYBO-trin-NBtJWeQ&start_radio=1&rv=cYexMlvGHlE&t=13
- https://www.youtube.com/watch?v=O5HtkgNm-dk
- https://www.reallusion.com/character-creator/nvidia-omniverse/
- https://courses.reallusion.com/home/iclone/
- https://www.reallusion.com/iclone/plug-in.html#pipeline
- https://www.reallusion.com/FeedBackTracker/Issue/Motion-Live-Error-Failed-to-connect-live-face