在 Unity 中使用 Live Link Face 进行面部捕捉
在 Unity 上用 ARKit 做面捕,官方提供了两种方式,Facial AR Remote 以及 Live Capture,https://github.com/Unity-Technologies/facial-ar-remote
https://docs.unity3d.com/Packages/com.unity.live-capture@1.0/manual/index.html
可惜两者用起来都很糟心,Live Capture 更是奇葩的无法在打包之后使用,至于其他 iFacialMocap 之类,也多少都有诸如需要收费等等的问题,今天介绍一下在 Unity 中接收虚幻的 Live Link Face 的数据从而进行面捕的方法。
用到的代码在这里,
https://github.com/SunnyViewTech/DollarsLiveLinkFace/releases
这里有个示例项目,
https://github.com/SunnyViewTech/DollarsLiveLinkFace
安装到项目后,将 /Plugins/DollarsLiveLinkFace 下的 LiveLinkFace prefab 加入场景中,其中的 Live Link Face 组件中可以指定监听的端口,默认是 11111,Blend Shape Controller 组件中主要有两个数组,分别用于指定面部表情所在的 mesh,以及 ARKit 表情名与 mesh 所含的 blendshape 之间的对应关系。
对应关系可以在 Project 视图中右键新建,
新建之后在 To 栏中填入 mesh 中对应的各个 blendshape 名就好,如果 mesh 中没有相应的 blendshape,可以保持空白,注意需要区分大小写,另外对应关系中最后几项头部以及眼睛的旋转暂时无效。
这两个数组的长度以及顺序应该是相同的。使用数组,是为了应对以下两种情况,
[*]舌头,睫毛,头部等分成了多个 mesh,
[*]在同一个 mesh 中,一个 ARKit 数值需要激活多个 blendshape
其中的第二种情况可以参照示例项目。项目中头部和舌头的 mesh 虽然是同一个,但是 blendshape 却是分开的,
此时我们可以在 mesh 数组中添加两个头部的 mesh,并且填入不同的对应关系即可。
页:
[1]