我们理解的数字人
近几年数字人的概念在互联网中异常火热,业界也出现了很多热门虚拟数字人或虚拟偶像,比如Lil Miquela,洛天依、初音、鹿鸣、暖暖、AYAYI等。这些数字人的商业模式或市场价值通常是:通过运营积攒流量,依靠流量变现。例如:
- 品牌代言(IP、事件)
- 粉丝经济(二次元)
- 虚拟主播(游戏、带货)
本文为接下来讲到的数字人,定义了三个核心要素:
一、形 - 具备人或拟人的外观,具有特定的相貌等人物特征。
二、动 - 拥有和人相似的行为,具有用语言、表情和肢体等表达的能力。
三、神 - 拥有比拟人的思想,具有识别外界环境、并能与人交流互动的能力。
这三条要素对于虚拟数字人的“完成度”来说是一个递进的关系。
市场现状
近几年,虚拟数字人在电商、金融、影视、游戏和金融等行业都拥有不同大小的市场规模。例如:虚拟偶像行业2020年中国的市场规模为34.6亿元,预计2021年将达到62.2亿元。
市场规模增长,也印证了技术的发展:制作成本逐年降低、形象外貌更加真实、语言交流更加自然。从出现虚拟数字人至今,已经渡过了3个重要的时期:
- 初创期:市场初见增长,技术不确定性,入行门槛高。
- 发展期:市场竞争者增多,技术逐渐成型,入行门槛低。
- 平台期:市场红海到来,平台化成熟,领头羊 + 小众。
解决方案
在如今的平台时期中,各个厂商也聚集在一起提供不同层次的解决方案:
基础层:为虚拟数字人提供基础软硬件支撑,硬件包括显示设备、光学器件、传感器、芯片等,基础软件包括建模软件、渲染引擎。 仅有少数几个顶尖科技公司才具备优秀的软硬件实力。
平台层:包括软硬件系统、生产技术服务平台、AI 能力平台,为虚拟形象的制作及开发提供技术能力。提供平台服务的企业非常多,通过出售服务和技术来服务其他企业。
应用层:除了最终的企业用户,一些具备出色营销和运营能力的公司或团队也为这个行业带来了不错的想法和创意。
我们在做什么
在今年年初,在阿里前端委员会的互动图形方向中成立了虚拟角色小组,这个小组有这几只团队组成:大淘宝互动团队、达摩院智慧数字人团队、优酷数字人制播团队、考拉互动&内容导购团队、蚂蚁数字与金融内容社区团队。他们一起分享和研究虚拟数字人领域的技术和应用。业务涉及游戏、视频、直播三个主要的场景。
游戏:虚拟数字人在游戏行业基本是标配,非常多的游戏都会需要塑造人物,其中能让玩家通过自定义塑造人物形象功能的这一类游戏,自定义塑造人物形象的功能也称为“捏人”。
- 淘宝人生:这是手淘App内一款可以打造虚拟形象的游戏,包含了捏脸、穿搭、美颜、拍照等功能,逛街、家园等玩法。
- 养考拉:这是考拉海购App内的一款可以养成考拉的游戏,包含了装扮功能,喂养等玩法。
- 它们均采用Web为主的技术方案,通过自研的引擎完成渲染、表情、动作等人物的形和行。
视频:虚拟数字人的短视频可以给用户带来感官上的优秀体验,还能给业务带来增量的收益。在制作虚拟数字人的视频时,可以通过动作捕捉、智能识别、导演系统等方案,让虚拟数字人栩栩如生。
- 直播:直播和虚拟数字人的结合仍然处于早期的探索阶段,因为两种现象级的产业需要结合且形成新的或增量的商业模式并不容易。这其中涉及到的技术也有实时动作捕捉、算法训练合成、在直播场景下的云渲染推流等等。
我们一起来创作
随着应用场景专业和深入,技术研究也会涵盖工程和算法等多种综合性的解决方案,且在不同的应用场景下,侧重点也会不太一样。接下来以大淘宝互动团队的淘宝人生业务为例子,分别从美术生产、渲染风格、捏脸换装、表情动作、导演系统和语音合成六大主题为大家呈现如何打造超级虚拟偶像。
形
这个章节我们来完成虚拟数字人的形 - “具备人或拟人的外观,具有特定的相貌等人物特征”。
从模子中刻出来 - 美术工作流
我们最先需要确定虚拟数字人的基础形体特征,比如使用真人比例的7头身,还是卡通比例的5头身;男性,女性,还是动物拟人等。基础形体特征确定后,可以交由3D美术来生产基础形体。整个过程,通常是在传统DCC软件里完成,但3D美术和2D美术最大的不同是,在2D内容的美术生产中,技术可以在美术产物交付后再介入;而在3D内容的美术生产中,技术就需要直接介入生产过程中。原因是:3D内容的美术生产流程相对较长也较复杂,美术和技术之间需要频繁的合作才能保障交付质量或交付效率。我们也称作这个过程为3D美术工作流。
举个形象例子:艺术家开始设计并雕刻一个杯子模具,生产线需要解决模具用什么材料、如何将材料注入到模具中、以及如何顺利脱模等“技术性问题”。通常这些就是由技术来负责,并需要提前和艺术家协商制作模具的规范才能确保后续的工程顺利进行,最终完成模具的交付。3D美术工作流也有很多大同小异的方案,大同是因为3D内容生产也是有一定的工业标准的,小异是因为细节会和艺术家使用的软件、技术实现的引擎有密切的关系。以淘宝人生中的美术工作流举例大致经历这几个步骤:
- 用Maya制作白模,骨骼,把过程产物暂存在OSS,并提供预览工具
- 用Photoshop制作贴图,把贴图上传至CDN
- 在Maya里定制GLTF Exporter插件,导出glTF(包含模型数据、骨骼数据、材质、贴图数据)
- Web端内嵌材质编辑器进行自研材质的效果调整
- 在EVA Figure引擎通过GLTF Importer导入人体的glTF,并定制材质Shader进行渲染。
经过前期和艺术家的磨合,最终会形成一套针对当前需求的美术工作流,并稳定运行下去。
精雕细琢 - 捏脸
完成了角色的基础形体后,我们每个人都可以用它来继续完成自己想要的那个样子。虽然不同的长相在美术环节中也能完成,但成本相当的高,每个人喜欢的样子都不一样,那么就要很多次的美术生产或修改。所以我们为基础形体加入了捏脸系统,你就可以轻松的完成定制化的要求。淘宝人生提供了捏脸功能,可以体验到捏脸的乐趣。捏脸技术的的实现基础就是对已有的模型数据进行局部的修改和变化,最终达到千人千变的目的。
那是如何能通过这样的系统来达到改变基础模型的目的的呢?通常,一组模型数据就是顶点数据的集合,改变模型通常就是改变顶点的数据,而改变顶点数据又通常有两种方式:
骨骼蒙皮
通过“外力”对顶点施加某种“变换”,简单来说就是包含了位移、旋转和缩放三种变换的一组数学公式。为了完成这种变换,这股外力可以使用“骨骼”来完成。这里说的骨骼同样可以理解成人体的骨骼,当手指上关节的作用发生运动变化时,手型就会发生变化。在捏脸功能中,在淘宝人生中,我们给脸部预置了大约20多种骨骼,可以改变头围、眼球、眼角、眼眶、颧骨、脸型等等。
混合变形
骨骼带来的顶点变换很粗矿,无法完成对嘴形状的定制,因为这样一个看似简的外表,实际上在模型中会涉及数以万计的顶点进行不同规律的变换。于是,我们就为这一组顶点变换专门设置变形器,业界一般称为“Morph Target”或“Blend Shape”。这种变换的原理是给顶点准备一个基准位置,再提供一个”极端变化“后的最大位置,之后乘以一定的”权重比例“,就能让这个顶点在基准位置和极端位置中的任一位置。但因为脸部需要局部变形的地方太多,且一个变形可能涉及数以万计的顶点,所以对实时计算压力也是不小的。
两种技术比较来说,骨骼蒙皮简单高效但不够灵活,而顶点变形更加自由但制作和计算成本都较高。所以在实际开发中,哪些用骨骼,哪些用顶点变形,这是一个权衡“效果”与“效率”的工作,需要具体去看,反复拿捏。在淘宝人生中,”捏脸“功能小部分使用了骨骼蒙皮,大部分使用了混合变形。这也是长期磨合和经验累积的结果。
时尚穿搭 - 换装和美颜
有了基础形体和长相后,我们必须得给角色穿上时尚的衣服,画上美丽的妆容。对于人类来说,穿衣和画妆是个“动作”,在虚拟世界中,我们仍然要能很好的完成“穿”和“画”这两件重要的事情。
换装
现实生活中,衣服穿在身上它就和皮肤紧贴着或者有一定空隙,这种想法放到虚拟世界中其实非常难实现。因为皮肤和衣服其实就是Mesh(网格),当衣服穿在身上时实际上是两组网格“碰撞”在一起,于是会引出如下两个问题:
如何在身体做动作时,衣服也跟着身体“做动作”。身体是拥有骨骼的,骨骼外包裹着一层“皮肤”,用同样思路,衣服实际上也是包裹在同样骨骼上的一层“皮肤”。在淘宝人生中,我们将身体和衣服采用同一套骨骼模板,并在渲染时实现了两份骨骼数据的实时“同步”。
如何解决身体的网格穿透到衣服外。用相同骨骼的方案解决衣服“穿”在身上的效果非常巧妙,但也容易出现问题,比如某件衣服局部非常内凹,那么就很容易出现身体的皮肤突出在衣服之外的问题,俗称“穿模”。因为仔细调整道具成本实在太高了,所以我们也做了个取巧的方案:通过把人体进行“切割”,并对每件衣服遮挡的人体部位进行标记,当渲染某件衣服时,直接隐藏被遮挡部位Mesh即可。
有了这两项技术的攻坚后,我们通过和美术生产约定相关的规范和工作流程,就可以批量生产衣服,而换装仅仅只是加载不同的模型而已,无须逐个特殊处理即可达到目的。
美颜
妆容的细节要求非常多,所以最便捷的方式就是使用贴图。基础形体的脸部已经有一张基础贴图了,可以简单理解成“素颜”;要在素颜上画不同的妆容,我们做法是“动态合成纹理”。整个过程分为两步。
- 渲染到纹理(Render To Texture):第一步创建一个可渲染对象(Render Target),把基础纹理贴图渲染到这个可渲染对象上,再把妆容纹理贴图渲染到同一个可渲染对象上。这一步需要注意艺术家在绘制妆容纹理时,需要和基础纹理的UV是一一对应的。
- 使用可渲染纹理:第二步就是把合成好的纹理渲染到模型上。
二次元还是三次元 - 渲染风格
最后到了给它设定风格的时候。有人会喜欢真实系,有人也会喜欢卡通系,也会有人喜欢朋克风,也会有人喜欢纯欲风,这些不同的风格需要依靠渲染功能来完成。当我们说到渲染时,都会提到图形渲染管线,它可以根据不同的需求做很多组合和调整,比如最简单的渲染管线是:加载模型 ---> 顶点着色 ---> 片元着色 ---> 光栅化。其中片元着色的步骤,就是用来完成材质纹理的绘制使之达到想要的角色风格。对材质纹理的绘制通常分为两大类:
PBR
全称Physically Based Rendering,顾名思义是基于物理的渲染,既然是基于物理的,那么它渲染的最终结果会非常接近我们的真实世界。所以也就很好理解,这类材质可以决定人物是写实或超写实风格的。此技术由8大核心理论和几个重要的光照模型组成,在此不一一列举,有兴趣的同学可以去阅读《Real-Time Rendering》中的PBR相关章节,或是SIGGRAPH的《Physically Based Shading in Theory and Practice》系列文章。例如在淘宝人生中,根据不同部位选取渐变贴图上采样色的方式模拟了次表面散射的技术,实现了人脸皮肤的红润通透感。
NPR
全称Non-photorealistic Rendering,即非真实感绘制。其最主要的应用之一,就是非常盛行的二次元风格,特别是日式卡通风格。和PBR不一样,NPR不会去追求各种物理学模拟,而是从油画、素描、卡通动画中得到启发和灵感。比如,经常被使用的人物描边、卡通着色、边缘光、头发高光等。这些特殊的材质渲染也都能在找到专业的论文和例子,大家可以自行搜索。
动
这个章节我们来完成虚拟数字人的动 - “拥有和人相似的行为,具有用语言、表情和肢体等表达的能力”。
表情和动作
成功塑造虚拟数字人的关键之一是真实且细腻的表情和动作。真人的表情和动作是依靠骨骼和肌肉相互作用而呈现的,在虚拟世界中,我们同样用数字技术来模拟这些骨骼和肌肉的作用,呈现表情和动作。在上面“形”的章节里,已经提到了脸部使用了骨骼蒙皮和混合变形的方式来改变顶点,在“动”的章节里,仍然会使用这两项技术,并且通过动画的方式让顶点“动”起来,从而完成相应的表情和动作。
手K动画
在脸部表情的刻画中,顶点动画(也就是Morph Target Animation)是主要实现技术之一。在淘宝人生的“捏脸”功能中骨骼蒙皮是用来确定脸的大小和五官的位置的。混合变形则是用来完成五官包括脸颊、额头部位的变形,其中用于表情动画的BlendShape多达50个,它和苹果的Animoji使用的BlendShape非常接近,这也是业界公认的可以做到绝大多数表情(当然很多微表情非常难达到)的设定。
在肢体动作的制作中,骨骼动画(也就是Skeletal Animation)是主要实现技术之一。骨骼动画包含了骨骼(Skeleton)和蒙皮(Skin)两种数据。首先把Mesh的顶点绑定在骨骼上生成蒙皮,这些顶点会受到多个不同权重骨骼的影响,然后通过改变骨骼的朝向和位置来生成动画,这时蒙皮就会跟着骨骼一起动起来。
动作捕捉
制作动画的成本相对都比较高,原因是上述两种动画技术通常是关键帧动画。假设一个人抬起手肘,那么手臂和手腕也会因此而产生连贯性的动作。如果要实现这样一段动画,关键帧将会非常之多,制作起来也会异常困难。为了有效降低制作成本,我们需要用到动作捕捉的技术,通常我们把动作捕捉技术分为2大方向4个类别,可以用四象限图来描述:
我们用手机摄像头完成的AR互动游戏、AR面具等功能实际就是光学识别+无穿戴设备这一象限内的技术。
编排 - 导演系统
我们再来对比下几种方式制作的成本和灵活度。
手K动画的制作成本无疑是最高的,灵活度和效果也是最好的,同时也要求经验丰富的绑定师和动画师才能完成。动作捕捉的制作需要一套专业的动捕设备,一个能容纳这些设备和能满足做所需动作的场地,一个动作制作周期少则几个小时,多则几天。在面临诸如众多舞蹈场景的运营需求下,最适合的方案是把多个已经制作完成的动作,自由或智能编排成一个剧本,就像拍戏时剧本是导演提前设计好的,演员只需依照剧本表演出来就行,故也称为“导演系统”。
动作的串联需要解决一个问题:动作1到动作2如何过渡衔接。这便需要用到混合动画(Blending Animation)技术。混合动画的基础原理是以动作1当前状态为起点、动作2的指定状态为终点,计算关键帧的插值。简单的可以使用线性插值,复杂的也可以使用贝塞尔曲线插值等。关于混合动画的知识点和方案非常多,也适用于不同的场景和需求,大家可以自行搜索,例如Unity和Unreal也都提供了很多不同的混合方案。
有了导演系统后,就可以提供自由的组合能力,比如想举行一场虚拟演唱会,也可以通过导演系统完成表演。
神
这个章节我们来探索虚拟数字人的神 - “拥有比拟人的思想,具有识别外界环境、并能与人交流互动的能力”。我们在对“神”的研究上,仍然处于非常初级的阶段,一方面它需要大数据的支撑,另一方面它对于前端这个岗位来说已经有相当的距离了。为了让虚拟数字人更加真实,“神”会是未来重点的研究方向。
性格流露 - 自然语音合成
虚拟数字人的语言表达能力需要用到语音合成技术,比如TTS(Text To Speech)。阿里达摩院有着非常完善的TTS引擎,用它就能让虚拟数字人开口说话。不过这也仅仅是开口说话,大家其实都能感受到这样的语言非常苍白无力,毫无“情感”,无法在不同性格和情感时表达出来的不同语气。在业界可以看到一些优秀的成果:YAMAHA的歌声合成系统“VOCALOID”(初音未来和洛天依均在使用),谷歌基于深度学习的端到端语音合成系统“Tacotron”,以及讯飞的语音合成系统等。阿里达摩院也在持续研究更加符合自然表达的语音合成系统,通过为虚拟数字人设定性格,并借助大数据的深度学习来产生风格迥异的情感型语气。
至此,在现有的技术下我们完成了一个超级虚拟偶像的登场。
我们向往的数字人
淘宝人生是基于Web技术打造的数字人,在经历了2年的技术打磨和升级改造,我们也遇到了Web数字人技术的困境。在性能方面,Web应用和原生应用存在无可忽视的差距。WebGL(基于OpenGL ES 2.0)作为Web主要的图形接口在Vulkan、DirectX、Metal面前无论是能力还是性能上都无法追赶。再加上不同的移动设备在软硬件上仍会出现奇奇怪怪的兼容性问题。这一系列困境已经成为了Web中的数字人一个很难跨越的天花板。
反观行业中的数字人技术,超写实渲染、微表情、肌肉模拟、物理材质、光线追踪等等,让身处Web技术中的我们望尘莫及。同时,阿里的虚拟数字人技术也才刚刚起步,其中基础软硬件、中台技术、大数据支撑等也都起步较晚,这些都给我们带来了不小的困难和阻力。
面对这些困境和差距,我们针对淘宝人生中虚拟数字人技术的发展也会从各个方向上去做努力和尝试。
首先是基于Web技术的优化:在Serverless渲染云服务基础上,在EVA Figure(虚拟人像渲染引擎)和Puppeteer技术的结合下,借助最新的WebGPU/WASM等,让虚拟数字人的渲染效果和质量得到提升。我们也在积极同阿里云云服务团队、大淘宝Node架构团队一起合作建设Web技术下的云渲染流程。计划把它应用在一些非实时的渲染任务上,例如生产淘宝人生用户形象的全身照片、短视频、动作帧图等等。这些产物也能被淘宝人生业务或其他业务所使用。
其次是对业务能力的升级,在业务和技术相互滋养的土壤中,不断将业务能力积累成平台服务,为阿里的虚拟数字人技术贡献点点滴滴的经验,并将部分解决方案通过商业化上云的方式服务大众。
然后在元宇宙、超写实、XR/6G、脑机接口等等行业风向标的辐射下,畅想未来Web数字人技术可能性。
文末特别感谢下阿里前端委员会图形互动虚拟角色小组成员的出色工作,让我能完成此文章内容。也欢迎大家持续关注虚拟角色小组和各个团队的成果。
参考文献
· 《艾媒咨询|2021中国虚拟偶像行业发展及网民调查研究报告》https://www.iimedia.cn/c400/79469.html
· 《三维软件知多少》http://www.bgteach.com/article/40
· 《三维文件格式知多少》https://www.bgteach.com/article/132
· 《glTFTutorial》https://github.com/KhronosGroup/glTF-Tutorials/tree/master/gltfTutorial
· 《Vertex Transformation》https://www.khronos.org/opengl/wiki/Vertex_Transformation
· 《WebGL Skinning》https://webglfundamentals.org/webgl/lessons/webgl-skinning.html
· 《MorphTarget》https://en.wikipedia.org/wiki/Morph_target_animation
· 《Real-time Rendering》https://www.realtimerendering.com/
· 《MovingFrostbite toPBR3.0》https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
· 《StylizedRenderinginGame》http://stylized.realtimerendering.com/
· 《基于物理的渲染(PBR)白皮书》https://zhuanlan.zhihu.com/p/53086060
· 《ARkitFaceBlendshapes》https://arkit-face-blendshapes.com/
· 《OpenGLSkeletalAnimation》https://www.khronos.org/opengl/wiki/Skeletal_Animation
· 《类卡通效果与写实人脸的52个blendshape效果对比及变化说明》https://www.bilibili.com/read/cv11763241
· 《MotionCapture》https://en.wikipedia.org/wiki/Motion_capture
· 《MotionCaptureSystem》https://scholar.google.com/scholar?q=Motion+capture+system&hl=zh-CN&as_sdt=0&as_vis=1&oi=scholart
· 《GameEngineArchitecture3rd-AnimationBlending》https://www.gameenginebook.com/toc.html
· 《游戏引擎动画系统阅读笔记》https://zhuanlan.zhihu.com/p/374343190
· 《MetaHuman》https://www.unrealengine.com/en-US/digital-humans