3D代表未来?

为了一盘醋,包了一顿饺子,值吗?

kinglier是从事主要领域为AI视觉数字人驱动方向,前期所做工作聚焦在2D数字人,23年开始,突然意识到2D技术好像已经到了瓶颈期,像一些情感控制任务用GAN或者diffusion model等图像生成方式很难获得理想效果,于是想借助3D BS控制面部动画的方式解决数字人情感单一问题,前期看了ExpGan、SadTalker等前人工作,也玩过LiveLink 驱动Metahuman面部动画,但受限于对BS概念理解不深,总是觉得事情并没有简单到model+big data + muti loss就能解决的地步,于是想到借助网上一些免费学习资源对BS及相关概念进行深度消化吸收。

就这一简单想法,一脚踏上驶往虚幻世界的贼船,正所谓,一入虚幻深似海,自此AI成路人。

用了两周时间狂刷了相关教程,Unreal Engine、Unity、MAYA、Blender、Metahuman,建模、材质、纹理、骨骼、绑定、蒙皮、形变BS(那年那盘醋),蓝图,渲染,灯光,过场动画,贴花,FX,lumin,nania……,OMG!这个领域到底还有多少我没接触过得新词(https://827930.ochkinterhk.tech/?p=196,这里是笔者看过的觉得相对较详细的教学视频)。

深知“纸上得来终觉浅,觉知此事要躬行”,亦深知“弱水三千,只取一瓢”,经过对比分析,kinglier决定从UE和Maya两款软件开始入手:

UE5:

第一天:参考教学视频,做了一个秃秃的山丘,由于早期以看视频为主,从没上手实践过,以Third Person教学工程为基础,创建Level,创建光,大气层,散射层,大陆等。一开始控制视野都比较困难,还好大学期间进修了“AWSD”游戏角色行为控制教程,在UE中再配合长按鼠标右键,就可实现视野控制。教学视频需要通过蓝图对大陆的材质进行设计,这里花了些功夫,主要原因是对蓝图中的各式各样note不是很熟悉,个人感觉每个note就是python中的Class,不知道这种理解是否正确。遇到另外一个问题是去bridge中下载材质时候一直提示format错误,后来发现需要去quickel bridge官网添加订阅权限,这一步估计像我这样的小白都会踩坑。从10:00搞到0:00,效果如下,材质方面还有些问题,感觉我把材质中normal节点搞错了,下次再改吧。

图1 第一天神说要有光,于是便有了光,神说光是好的

第二天,好歹弄懂了怎么区分纹理、粗糙度、法线贴图,跟着视频建了个大海,但是貌似我的陆地位置不对,海平面总是突起或者凹下去一块,山峰也像被刀切了,失去原来的形状。

图2,有了水,但水比陆地高,把山弄成斜面了

第三天,从头设计了大陆,海洋,山峰,以及材质。最后想painting个沙滩,但是每次painting都会出现灰白网格,网上有人说是纹理图不兼容或者材质蓝图有问题,在沙滩蓝图上换上石头材质,可以正常painting,排除蓝图问题。但在quickel上下了好几个sand材质都没能成功,几近崩溃,睡觉了。

图3. 修复了纹理,修复了陆地和水面,但是沙滩怎么都paint不对,不知道为啥

第四天:修复了沙滩Painting问题,初步定位是粗糙的纹理图有问题,但不知道为啥,换了个纹理图就可以修复。在此基础上加了石头,花,树等资产,没啥特别难的地方,修改了角色出生位置,接下来就是比较有意思的把小白人替换成自己用metahuman做的个性化角色。

图4. 修复了沙滩painting问题,加了石头,树,花等资产

第五天:废了老大劲把小白人替换成老吕形象,并让老吕形象继承小白人动作,本部分内容牵扯到骨骼重定向,因为小白人骨骼和metahuman骨骼定义有些区别,找了好几个教程,最终按照https://zhuanlan.zhihu.com/p/544889483这位博主的方法搞定了,虽然还是没有完全理解,但最起码老吕在虚拟世界可以自由跑动和跳跃了,就是衣服和鞋子感觉对齐出了点问题,调整了几版都没调整对,先这样把!下一步准备给老吕加些面部动画。

图5,废了老大劲把小白人替换成老吕形象,并让老吕形象继承小白人动作

Metahuman

用UE5官方MetaHuman项目尝试了下数字人从无到有,一般流程:

①捏mesh结构(单张照片用blender贴纹理到一个box,blender facebuilder,扫描都可以,metahuman 的animator还没试过,据说效果没有facebuilder好)

②UE5 MateHuman插件中制作MateHuman本体

③MateHuman Creator中雕刻mesh结构,添加身体其他部位

④通过quixel bridge将创建的matehuman导入到UE5

⑤在UE5Metahuman展示项目中,将OP_ADA的骨骼网格体替换成自己捏的骨骼网格体