带你读《2022技术人的百宝黑皮书》——虚拟数字人行业现状和技术研究(1)
https://developer.aliyun.com/article/1262088?groupCode=taobaotech
从模子中刻出来 - 美术工作流
我们最先需要确定虚拟数字人的基础形体特征,比如使用真人比例的7头身,还是卡通比例的5头身;男性,女性, 还是动物拟人等。基础形体特征确定后,可以交由3D美术来生产基础形体。整个过程,通常是在传统DCC软件里 完成,但3D美术和2D美术最大的不同是,在2D内容的美术生产中,技术可以在美术产物交付后再介入;而在3D内 容的美术生产中,技术就需要直接介入生产过程中。原因是:3D内容的美术生产流程相对较长也较复杂,美术和技 术之间需要频繁的合作才能保障交付质量或交付效率。我们也称作这个过程为3D美术工作流。
举个形象例子:艺术家开始设计并雕刻一个杯子模具,生产线需要解决模具用什么材料、如何将材料注入到模具 中、以及如何顺利脱模等“技术性问题”。通常这些就是由技术来负责,并需要提前和艺术家协商制作模具的规范 才能确保后续的工程顺利进行,最终完成模具的交付。3D美术工作流也有很多大同小异的方案,**大同是因为3D 内容生产也是有一定的工业标准的,小异是因为细节会和艺术家使用的软件、技术实现的引擎有密切的关系。**以 淘宝人生中的美术工作流举例大致经历这几个步骤:
1. 用Maya制作白模,骨骼,把过程产物暂存在OSS,并提供预览工具
2. 用Photoshop制作贴图,把贴图上传至CDN
3. 在Maya里定制GLTF Exporter插件,导出glTF(包含模型数据、骨骼数据、材质、贴图数据)
4. Web端内嵌材质编辑器进行自研材质的效果调整
5. 在EVA Figure引擎通过GLTF Importer导入人体的glTF,并定制材质Shader进行渲染。
经过前期和艺术家的磨合,最终会形成一套针对当前需求的美术工作流,并稳定运行下去。
精雕细琢 - 捏脸
完成了角色的基础形体后,我们每个人都可以用它来继续完成自己想要的那个样子。虽然不同的长相在美术环节中 也能完成,但成本相当的高,每个人喜欢的样子都不一样,那么就要很多次的美术生产或修改。所以我们为基础形 体加入了捏脸系统,你就可以轻松的完成定制化的要求。淘宝人生提供了捏脸功能,可以体验到捏脸的乐趣。捏脸 技术的的实现基础就是对已有的模型数据进行局部的修改和变化,最终达到千人千变的目的。
那是如何能通过这样的系统来达到改变基础模型的目的的呢?通常,一组模型数据就是顶点数据的集合,改变模型 通常就是改变顶点的数据,而改变顶点数据又通常有两种方式:
骨骼蒙皮
通过“外力”对顶点施加某种“变换”,简单来说就是包含了位移、旋转和缩放三种变换的一组数学公式。为了完 成这种变换,这股外力可以使用“骨骼”来完成。这里说的骨骼同样可以理解成人体的骨骼,当手指上关节的作用 发生运动变化时,手型就会发生变化。在捏脸功能中,在淘宝人生中,我们给脸部预置了大约20多种骨骼,可以改 变头围、眼球、眼角、眼眶、颧骨、脸型等等。
混合变形
骨骼带来的顶点变换很粗矿,无法完成对嘴形状的定制,因为这样一个看似简单的外表,实际上在模型中会涉及数 以万计的顶点进行不同规律的变换。于是,我们就为这一组顶点变换专门设置变形器,业界一般称为“Morph Target”或“Blend Shape”。这种变换的原理是给顶点准备一个基准位置,再提供一个”极端变化“后的最大位 置,之后乘以一定的”权重比例“,就能让这个顶点在基准位置和极端位置中的任一位置。但因为脸部需要局部变 形的地方太多,且一个变形可能涉及数以万计的顶点,所以对实时计算压力也是不小的。
两种技术比较来说,骨骼蒙皮简单高效但不够灵活,而顶点变形更加自由但制作和计算成本都较高。所以在实际开 发中,哪些用骨骼,哪些用顶点变形,这是一个权衡“效果”与“效率”的工作,需要具体去看,反复拿捏。在淘 宝人生中,”捏脸“功能小部分使用了骨骼蒙皮,大部分使用了混合变形。这也是长期磨合和经验累积的结果。
时尚穿搭 - 换装和美颜
有了基础形体和长相后,我们必须得给角色穿上时尚的衣服,画上美丽的妆容。对于人类来说,穿衣和画妆是个 “动作”,在虚拟世界中,我们仍然要能很好的完成“穿”和“画”这两件重要的事情。
换装
现实生活中,衣服穿在身上它就和皮肤紧贴着或者有一定空隙,这种想法放到虚拟世界中其实非常难实现。因为皮 肤和衣服其实就是Mesh(网格),当衣服穿在身上时实际上是两组网格“碰撞”在一起,于是会引出如下两个问 题:
如何在身体做动作时,衣服也跟着身体“做动作”。身体是拥有骨骼的,骨骼外包裹着一层“皮肤”,用同样思 路,衣服实际上也是包裹在同样骨骼上的一层“皮肤”。在淘宝人生中,我们将身体和衣服采用同一套骨骼模板, 并在渲染时实现了两份骨骼数据的实时“同步”。
如何解决身体的网格穿透到衣服外。用相同骨骼的方案解决衣服“穿”在身上的效果非常巧妙,但也容易出现问 题,比如某件衣服局部非常内凹,那么就很容易出现身体的皮肤突出在衣服之外的问题,俗称“穿模”。因为仔细 调整道具成本实在太高了,所以我们也做了个取巧的方案:通过把人体进行“切割”,并对每件衣服遮挡的人体部 位进行标记,当渲染某件衣服时,直接隐藏被遮挡部位Mesh即可。
有了这两项技术的攻坚后,我们通过和美术生产约定相关的规范和工作流程,就可以批量生产衣服,而换装仅仅只 是加载不同的模型而已,无须逐个特殊处理即可达到目的。
带你读《2022技术人的百宝黑皮书》——虚拟数字人行业现状和技术研究(3)
https://developer.aliyun.com/article/1262083?groupCode=taobaotech