Unity TheHeretic Gawain Demo中异教徒学习有哪些技巧?
摘要:《异教徒 Heretic》是Unity在2019年GDC大会上展示的技术Demo,部分资源于2020年中旬公开下载。 通常传统基于表情基或骨骼驱动的面部动画方案,虽然能够提供较为流畅的表现,但在精度和真实感上往往存在差距。 为了追求更高的真
《异教徒 Heretic》是Unity在2019年GDC大会上展示的技术Demo,部分资源于2020年中旬公开下载。
通常传统基于表情基或骨骼驱动的面部动画方案,虽然能够提供较为流畅的表现,但在精度和真实感上往往存在差距。
为了追求更高的真实还原度,《异教徒》Demo采用了4D捕捉技术,这项技术通过硬件设备精确捕捉每一帧的面部数据,
并使用中间软件对原始数据去噪后置入Unity,从而实现了更真实的还原。
官方Blog:
https://unity.com/blog/technology/making-of-the-heretic-digital-human-character-gawain
百度网盘缓存Demo下载地址(测试所使用版本Unity2021.3.26,HDRP 12):
链接: https://pan.baidu.com/s/1Mk3X8VZpeoQq-w5SfmsE2g 提取码: f75e
1.SkinDeformation
这部分主要处理4D设备捕捉到的表情动画,到Unity这个环节的数据应该已经过Wrap3D处理,
直接播放Demo场景里的Timeline即可单独预览:
SkinDeformationClip是一个SO文件,存放烘焙好的动画信息,而SkinDeformationRenderer负责表情数据的最终渲染输出。
1.1SkinDeformationRenderer
该脚本会读取blendInputs字段中的数据并拿来进行处理,该字段的赋值在SkinDeformationTimeline中:
var inputA = playable.GetInput(inputIndexA);
var inputB = playable.GetInput(inputIndexB);
var assetA = ((ScriptPlayable<SkinDeformationPlayable>)inputA).GetBehaviour().clip;
var assetB = ((ScriptPlayable<SkinDeformationPlayable>)inputB).GetBehaviour().clip;
//赋值处:
target.SetBlendInput(0, assetA, (float)(inputA.GetTime() / assetA.Duration), inputWeightA);
target.SetBlendInput(1, assetB, (float)(inputB.GetTime() / assetB.Duration), inputWeightB);
该脚本中的数据结构有标记Lo、Hi后缀字段,看上去似乎和低频高频数据有关,但实际上储存的是
当前帧和上一帧数据,以及插值数值。
