本文来自 Oasis 团队核心开发桐伦于第八届中国图学大会分论坛--Web3D 引擎分论坛的分享文字稿
个人简介
蚂蚁开源图形引擎 Oasis 核心开发者,主要负责物理和光照渲染等核心方向,热爱探索前沿引擎与数字人技术。Oasis 团队具备多年引擎与 Web 编辑器的开发经验,致力于打造移动为先,前端友好的互动创作平台。借助端 + 云服务一体化的模式,打造新一代的互动开发工作流,赋能前端业务新形态,迎接传统业务的数字化转型,将互动技术普惠行业。
摘要
数字人技术作为文化和科技深度融合的代表,已经在新闻,电商,直播等诸多场景中逐步推广开来。但是传统的数字人技术一般基于 Unity 和 Unreal 等大型游戏引擎,同时需要美术花费大量时间雕刻人物细节,最终呈现的往往是一段视频,很难在网络空间中进行传播和互动。我们基于 Oasis 引擎打造了现代化的数字人创作平台,使得数字人可以基于 Web3D 技术进行创作,分享以及互动。 Oasis 提供的基于物理的真实感渲染,脚本,动画组件以及通过 WebAssembly 编译的 PhysX 为构建这一高效创作平台提供了可能。该平台直接对接美术资产,以低代码的方式集成了动画编排,逆向动力学,物理引擎等高级动画能力,并且可以直接输出为 XR 互动场景或者前端开发组件。通过这种端到端的方式,降低了美术与开发之间的沟通成本。为非图形开发者在新的业务场景应用数字人技术创造了机会。
引入
大家好,我是来自 Oasis 引擎团队的杨丰,今天我带来的题目是《基于 Oasis 的轻量化虚拟人(MetaAvatar)创作平台》,因为今天在座的各位专家都是图形方面的专家,所以我希望这次的报告不只是分享我们做了什么东西以及我们怎么去做的,而是更多地介绍我们到底为什么要做这些事情。讲清楚了为什么,那么其他的内容可以放在后面的问答环节或者大家可以自行从我们的官网了解。首先,我们这个虚拟人平台是基于 Oasis 引擎开发的,我们的全名叫做 Ant Galaxy Oasis Engine,这个名字是这几个月确定下来的。我们这个引擎是去年一月份开源,是比较年轻的,但到现在已经积累了超过 3.3k 的 star 数量。在我们的官网上介绍引擎的时候提到三个特点:组件化设计,移动优先,前端友好。我这里是倒过来列的,因为我觉得对于组件化设计和移动优先,在座各位专家在设计引擎的时候也会考虑到,但我们很大的一个特点是前端友好。我们的很多用户并不是专业的游戏开发者,他们对于例如“相机”这样的概念都是比较陌生的,因此我们必须考虑很容易融入到前端业务开发的生态当中去,比如提供 React 组件的封装,小程序的适配,以及更加有助于他们理解的文档等等。那么今天介绍数字人平台也是一样,我们针对前端的业务诉求提供了一些方便的调用,使得他们在不用理解复杂的引擎概念的基础上,完成所需要的业务开发。
虚拟人创作平台
好了,那我们进入今天的正题:数字人。现在有关数字人的需求是越来越大,但数字人其实代表的是一系列技术的集合,从最基础的形象写实,动作协调,到算法驱动和智能交互。愈发智能的数字人就越能够和用户产生更加强烈的情感连接。
我们在 Oasis 在线的编辑器基础上,开发了 Ant Avatar 虚拟人创作平台。通过平台沉淀一系列的数字人的资产。
有关这个平台我想多讲一点。这个平台最早其实叫做 Ark,再早也有叫 yinfu,在数字人这个概念火爆之前,集团内的一个核心诉求其实很简单,那就是生产角色海报。因此每年都需要生产大量的角色海报,每一张都需要耗费预算给外包去做。那么这么平台就是希望可以整合一些算法的技术,编辑器的能力去给人物摆姿势,捏表情,最后导出一个静态图。所以这个平台从最早就是给设计师去用的,所有的模型基本上都是走烘焙的材质。那么在数字人这个概念逐步发展之后,Ant Avatar 平台开始真正转换到实时渲染的技术上来,走标准的 PBR 工作流,不仅为设计师服务,也为前端的业务开发同学服务。
在这个平台上可以基于上传的模型资产进行组合,也可以做动画的编排:
动画能力一直是 Oasis 非常重视发展的一块能力,其实时常有开发者问我们 Oasis 和 Threejs 有什么区别,很大的一块就是在动画能力上。我们的动画组件支持对任意的组件属性进行编排,并且在编辑器当中构建动画状态机,以组合多个动画的切换流程。对于数字人来说,这也是一项非常重要的核心能力。
当然对于状态机这样的概念来说,还是有点难以理解,因此我们在编辑器中整合了 SSML 编辑的能力,大家在右侧可以看到有一段文本输入。我们可以对文本输入进行 SSML(Speech Synthesis Markup Language)打标,并且插入绿色的动作标签,使得人物不仅通过 TTSA 服务(Text-to-Speech and Animation)输出语音,还可以在到达特定语句时播放特定动作。这方面我后面会做更加详细的介绍。
最后,我们可以导出整个编辑器项目,下载 React 包到本地进行业务逻辑的开发。一般来说,编辑器项目可以交给设计师进行维护,前端开发者在设计师更新完场景后,只需要重新生产一个 URL 在项目当中更新一下,就可以马上替换最新的模型和动画素材。而前端开发者只需要用他最习惯的开发工具,编写业务逻辑的代码就可以了。
针对数字人,我们提供了非常便捷的 SDK 供前端开发者调用,可以实现一键换装等捏脸数字人的相应能力。以上,就是我们围绕着 Ant Avatar 打造的数字人创作平台。这个平台不仅是为了支持设计师的一些需求,更重要的是考虑了前端业务开发针对播报型数字人,捏脸数字人等场景的需求,为支持特定业务诉求做了一系列的设计。
AI 能力整合
正如前面介绍的,我们还整合文字驱动语音(TTSA)等 AI 的技术能力。对于 AI 来说,有两个主要的方向,一方面是图像驱动,另外一个是语音驱动。
TTSA
TTSA(Text-to-Speech and Animation)是一种可以基于文字合成语音,并且同时输出对应角色动画的一种算法。我们日常的口型最核心的是针对元音发音的口型:
算法只需要输出针对 AIUEO 这五个元音的口型播放的时间和 Blendshape 的权重,就可以驱动数字人的口型按照特定的语句进行运动。结合 SSML(Speech Synthesis Markup Language) 的打标就可以整合骨骼动画的驱动,让数字人能够按照语音播报的同时,表现自然的动作。
Arkit
在图像方面,我们借助 iOS 的前置深度摄像头,在 Arkit 框架的帮助下输出 52 个 Blendshape 的权重。通过 WebSocket 将他发送到我们的桌面端,和编辑器进行整合,就可以让设计师使用手机对特定角色进行捏脸的编排。
图形技术沉淀
我们虽然在用户体验上花了很多功夫,但这并不意味着我们不重视图形技术的沉淀,其实我们更多的是希望这些技术对于开发者来说是比较无感的。他们不太需要关注算法的细节,非常方便进行调用。我们针对渲染,动画,物理模拟都积累了大量的技术沉淀,这些技术要么被整合到引擎内部,要被整合到 Ant Avatar 的 SDK 内。
我们这里就举几个例子来看一下,首先是例如 Kajiya+ 的各向异性头发渲染:
使用 ClearCoat 渲染眼睛以及 Cascade Stable Shadow Map 渲染阴影:
Oasis 引擎使用 GPU 处理骨骼和形变动画:
其他相关技术大家可以通过我们的官网进行了解,总的来说我们针对数字人,在渲染,动画,物理这三个主要图形学的方向上都做一系列的积累和探索,这些技术在经过完整的 API 设计和编辑器整合后会逐步开发给社区的用户进行使用。
总结
在这次的报告中,围绕着 Oasis 引擎我们介绍了数字人相关的技术实践。虽然我们已经有了一系列的技术沉淀,但其实还是在一个非常早期的阶段,在这里面超写实数字人,卡通数字人;播报数字人,捏脸数字人等等应用都涉及到各种不同的技术,需要引擎,编辑器,美术工作流的配合才能产出更好的技术解决方案。
作为开源的图形引擎,我们也希望基于图学大会的平台和开发者们多多交流,一同推动相关的方案落地,升级。为赋能行业做出我们的贡献。
如何联系我们
网站
官网地址
oasisengine.cn
Engine 源码地址
github.com/oasis-engin…
Engine Toolkit 源码地址
github.com/oasis-engin…