CN116958344A - 虚拟形象的动画生成方法、装置、计算机设备及存储介质 - Google Patents

虚拟形象的动画生成方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116958344A
CN116958344A CN202310613703.0A CN202310613703A CN116958344A CN 116958344 A CN116958344 A CN 116958344A CN 202310613703 A CN202310613703 A CN 202310613703A CN 116958344 A CN116958344 A CN 116958344A
Authority
CN
China
Prior art keywords
data
avatar
animation
bone
dimensional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310613703.0A
Other languages
English (en)
Inventor
赵颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310613703.0A priority Critical patent/CN116958344A/zh
Publication of CN116958344A publication Critical patent/CN116958344A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data

Abstract

本申请公开了一种虚拟形象的动画生成方法、装置、计算机设备及存储介质,属于计算机技术领域。本申请通过实体对象的视频数据,提取到实体对象的在平面坐标系中呈现的肢体姿态和表情姿态,进而对实体对象进行三维重建,得到虚拟形象在空间坐标系中呈现的肢体动作和面部表情,进而结合虚拟形象的外观资源,合成虚拟形象的动画数据,使得在视频数据的驱动下,虚拟形象能够模拟和仿真实体对象的肢体动作和面部表情,这种动画生成流程不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。

Description

虚拟形象的动画生成方法、装置、计算机设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种虚拟形象的动画生成方法、装置、计算机设备及存储介质。
背景技术
随着计算机技术的发展,虚拟形象在直播、影视、动漫、游戏、虚拟社交、人机交互等方面的应用越来越广泛。如何精准驱动虚拟形象生成流畅动画,对于虚拟形象的渲染性能至关重要。
目前,由真人按照台本进行表演,动捕(即动作捕捉)设备捕捉真人的肢体动作和面部表情,再将捕捉的数据转换成虚拟形象的3D动作数据和3D表情数据,驱动虚拟形象在连续时刻下执行类似真人的肢体动作和面部表情。
以上基于动捕的动画生成方式,受限于动捕设备造价昂贵,仅限专业影视制作中,无法推广适用到直播、游戏等通用场景,虚拟形象的动画生成效率低。
发明内容
本申请实施例提供了一种虚拟形象的动画生成方法、装置、计算机设备及存储介质,不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。该技术方案如下:
一方面,提供了一种虚拟形象的动画生成方法,所述方法包括:
获取实体对象的视频数据;
基于所述视频数据,提取所述实体对象的姿态信息,所述姿态信息表征所述实体对象在所述视频数据呈现的肢体姿态和表情姿态;
基于所述姿态信息,对所述实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,所述动作数据表征所述虚拟形象基于所述肢体姿态重建得到的肢体动作,所述表情数据表征所述虚拟形象基于所述表情姿态重建得到的面部表情;
基于所述虚拟形象的外观资源、所述动作数据和所述表情数据,合成所述虚拟形象的动画数据,所述动画数据表征所述虚拟形象穿戴所述外观资源、呈现所述面部表情且执行所述肢体动作。
一方面,提供了一种虚拟形象的动画生成装置,所述装置包括:
获取模块,用于获取实体对象的视频数据;
提取模块,用于基于所述视频数据,提取所述实体对象的姿态信息,所述姿态信息表征所述实体对象在所述视频数据呈现的肢体姿态和表情姿态;
重建模块,用于基于所述姿态信息,对所述实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,所述动作数据表征所述虚拟形象基于所述肢体姿态重建得到的肢体动作,所述表情数据表征所述虚拟形象基于所述表情姿态重建得到的面部表情;
合成模块,用于基于所述虚拟形象的外观资源、所述动作数据和所述表情数据,合成所述虚拟形象的动画数据,所述动画数据表征所述虚拟形象穿戴所述外观资源、呈现所述面部表情且执行所述肢体动作。
在一些实施例中,所述提取模块用于:
确定所述实体对象的骨骼关键点和面部关键点;
基于所述视频数据,提取所述骨骼关键点的骨骼姿态信息和所述面部关键点的面部姿态信息,所述骨骼姿态信息表征所述骨骼关键点的二维位姿,所述面部关键点表征所述面部关键点的二维位姿。
在一些实施例中,所述重建模块用于:
基于所述骨骼姿态信息,重建所述虚拟形象的骨骼关键点的动作数据,所述动作数据表征所述骨骼关键点的三维位姿;
基于所述面部姿态信息,重建所述虚拟形象的面部关键点的表情数据,所述表情数据表征所述面部关键点的三维位姿。
在一些实施例中,所述合成模块包括:
权重确定单元,用于对所述虚拟形象的骨骼蒙皮中的每个顶点,确定所述虚拟形象的每个骨骼组件相对于所述顶点的蒙皮权重,所述蒙皮权重表征所述顶点受到所述骨骼组件的影响程度;
位姿确定单元,用于基于所述动作数据和所述表情数据,确定每个骨骼组件的位姿重建数据;
位置确定单元,用于基于所述位姿重建数据和所述蒙皮权重,确定每个顶点的顶点位置;
动画合成单元,用于基于所述外观资源和所述顶点位置,合成所述动画数据。
在一些实施例中,所述装置还包括:
导出模块,用于基于所述虚拟形象的三维模型,导出所述虚拟形象的网格数据,所述三维模型执行默认肢体动作且具有默认面部表情,所述网格数据表征所述三维模型的网格化的外表面;
绑定模块,用于对所述三维模型的每个骨骼组件,绑定所述骨骼组件所关联部位的网格数据,得到所述虚拟形象的骨骼蒙皮,所述骨骼组件表征所述部位的骨架。
在一些实施例中,所述位姿确定单元用于:
对所述虚拟形象的每个骨骼组件,确定所述骨骼组件包含的重建关键点;
在所述重建关键点包含骨骼关键点的情况下,基于所述动作数据,确定所述重建关键点的三维位姿;
在所述重建关键点包含面部关键点的情况下,基于所述表情数据,确定所述重建关键点的三维位姿;
将所述骨骼组件包含的各个重建关键点的三维位姿,确定为所述骨骼组件的位姿重建数据。
在一些实施例中,所述位置确定单元用于:
对所述骨骼蒙皮的每个顶点,基于各个骨骼组件相对于所述顶点的蒙皮权重,从各个骨骼组件中确定所述顶点的关联骨骼组件;
基于所述关联骨骼组件的位姿重建数据和所述蒙皮权重,确定所述顶点的顶点位置。
在一些实施例中,所述获取模块包括:
拍摄单元,用于基于外置相机拍摄所述实体对象的视频数据;
转换单元,用于将所述视频数据从所述外置相机支持的视频格式,转换为预设视频格式,所述预设视频格式为支持实体对象三维重建的格式。
在一些实施例中,所述转换单元用于执行下述至少一项:
启动用于格式转换的子线程,通过所述子线程将所述视频数据转换成所述预设视频格式;
调用图形处理器GPU的绘制命令,通过所述GPU将所述视频数据转换成所述预设视频格式。
在一些实施例中,在所述视频数据包含多个视频帧的情况下,所述动画数据包含多个动画帧,其中,每个动画帧关联于一个视频帧,所述虚拟形象在所述动画帧中的肢体动作和面部表情与所述实体对象在所述视频帧中的肢体动作和面部表情相匹配。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器加载并执行以实现如上述虚拟形象的动画生成方法。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如上述虚拟形象的动画生成方法。
一方面,提供一种计算机程序产品,所述计算机程序产品包括一条或多条计算机程序,所述一条或多条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取所述一条或多条计算机程序,所述一个或多个处理器执行所述一条或多条计算机程序,使得计算机设备能够执行上述虚拟形象的动画生成方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过实体对象的视频数据,提取到实体对象的在平面坐标系中呈现的肢体姿态和表情姿态,进而对实体对象进行三维重建,得到虚拟形象在空间坐标系中呈现的肢体动作和面部表情,进而结合虚拟形象的外观资源,合成虚拟形象的动画数据,使得在视频数据的驱动下,虚拟形象能够模拟和仿真实体对象的肢体动作和面部表情,这种动画生成流程不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还能够根据这些附图获得其他的附图。
图1是本申请实施例提供的一种虚拟形象的动画生成方法的实施环境示意图;
图2是本申请实施例提供的一种虚拟形象的动画生成方法的流程图;
图3是本申请实施例提供的一种虚拟形象的动画生成方法的流程图;
图4是本申请实施例提供的一种虚拟形象的动画生成方案的原理性流程图;
图5是本申请实施例提供的一种视频格式转换的原理图;
图6是本申请实施例提供的一种骨骼蒙皮方式的原理图;
图7是本申请实施例提供的一种动画驱动流程的原理图;
图8是本申请实施例提供的一种动画生成方案的原理性流程图;
图9是本申请实施例提供的一种动画生成方案的逻辑原理图;
图10是本申请实施例提供的一种虚拟形象的动画生成装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图;
图12是本申请实施例提供的另一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个骨骼组件是指两个或两个以上的骨骼组件。
本申请中术语“包括A或B中至少一项”涉及如下几种情况:仅包括A,仅包括B,以及包括A和B两者。
本申请中涉及到的用户相关的信息(包括但不限于用户的设备信息、个人信息、行为信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,当以本申请实施例的方法运用到具体产品或技术中时,均为经过用户许可、同意、授权或者经过各方充分授权的,且相关信息、数据以及信号的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的实体对象的视频数据都是在充分授权的情况下获取的。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中计算机视觉(Computer Vision,CV)技术成为未来最被看好的人机交互方式之一。计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用相机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR(Optical Character Recognition,光学字符识别)、视频处理、视频语义理解、视频内容/行为识别、3D(3-Dimension,三维)技术、三维物体重建、虚拟现实(Virtual Reality,VR)、增强现实(Augmented Reality,AR)、同步定位与地图构建、自动驾驶、智慧交通等技术。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
本申请实施例提供的方案涉及人工智能的计算机视觉技术,具体涉及到利用以上计算机视觉技术在制作虚拟形象的三维动画方面的应用,将在以下的各个实施例中展开说明。
以下,对本申请实施例涉及的术语进行说明。
虚拟形象:一种在虚拟世界中可活动对象,通常,虚拟形象是虚拟世界中的一个虚拟的、拟人化的数字形象,如虚拟人物、动漫人物、虚拟角色等,虚拟形象可以是一个三维模型(即三维立体模型),该三维模型可以是基于三维人体骨骼技术构建的三维角色,可选地,虚拟形象也可以采用2.5维或2维模型来实现,本申请实施例对此不加以限定。通常,可以使用MMD(Miku Miku Dance,一种三维计算机图形软件)、Unity引擎或者UE4引擎等,来制作虚拟形象的3D模型,当然,也可以使用Live2D(一种二维计算机图形软件)来制作虚拟形象的2D模型,这里对虚拟形象的维度不进行具体限定。
元宇宙(Metaverse):也称为后设宇宙、形上宇宙、超感空间、虚空间,是聚焦于社交链接的3D虚拟世界之网络,元宇宙涉及持久化和去中心化的在线三维虚拟环境。
数字人(Digital Human):一种利用信息科学的方法对人体进行3D建模而生成的虚拟形象,达到对人体进行仿真、模拟的效果。再换一种表述,数字人是一种利用数字技术创造出来的、与人类形象接近的数字化人物形象。数字人广泛应用于视频创作、直播、行业播报、社交娱乐、语音提示等场景,例如,数字人可担任虚拟主播、虚拟化身等。其中,数字人也称为虚拟人、虚拟数字人等。
虚拟主播:指使用虚拟形象在视频网站上进行投稿活动的主播,例如虚拟YouTuber(Virtual YouTuber,VTuber)、虚拟UP主(Virtual Uploader,VUP)等。通常,虚拟主播以原创的虚拟人格设定、形象在视频网站、社交平台上进行活动,虚拟主播可以实现播报、表演、直播、对话等各种形式的人机交互。
中之人:指进行直播时候背后表演或控制虚拟主播的人,比如,借助中之人安装在头部与肢体上的传感器,通过光学动作捕捉系统捕捉中之人的肢体动作和面部表情,将动作数据同步到虚拟主播上,这样能够借助实时运动捕捉的机制,实现虚拟主播与观看直播的观众之间的实时互动。
动作捕捉(Motion Capture,MoCap):简称动捕,也称为运动捕捉。指代在运动物体或真人的关键部位上设置传感器,由动捕系统捕捉传感器位置,再经过计算机处理后得到三维空间坐标的动作数据,当动作数据被计算机识别后,可以应用在动画制作,步态分析,生物力学,人机工程等领域。常见的动捕设备包含动捕服。
插帧:是一种运动预估及运动补偿方式,能够在帧数不足的情况下扩展动画片段的动画帧数,使得动画变得连贯。例如,在动画片段原有的每两个动画帧中插入一个新的动画帧,利用新的动画帧来补充以上两个动画帧中肢体动作或者面部表情的中间变化状态。
游戏引擎:指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。游戏引擎包含以下系统:动画引擎、渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、人工智能、网络引擎以及场景管理。
虚幻4(Unreal Engine 4,UE4)引擎:一种由游戏公司EPIC开发的业界领先的3A级次世代游戏引擎,是一个面向下一代游戏机和DirectX 9个人电脑的完整的游戏开发平台,提供了游戏开发者需要的大量的核心技术、数据生成工具和基础支持。UE4引擎具有高效、全能、直接预览开发效果等能力,其编程特色是具有可视化蓝图编程,支持在游戏机、个人计算机、手机等多平台运行,可适用于游戏开发、影视制作、动漫制作等领域。
编辑器(Editor):UE4引擎的一种可视化操作工具,将UE4功能集成到可视化界面上方便用户快速编辑场景,并集成了各工具,是用户使用引擎的桥梁。
插件:在UE4引擎中,插件是开发者可在编辑器中逐项目启用或禁用的代码和数据集合。插件可添加运行时Gameplay(游戏设置)功能,修改内置引擎功能(或添加新功能),新建文件类型,及使用新菜单、工具栏命令和子模式扩展编辑器的功能。使用插件可扩展许多UE4子系统。
渲染引擎:在图像技术领域中,渲染引擎是指将针对虚拟形象建模完毕的三维模型渲染成一张二维图像,使得二维图像中仍然保持三维模型的立体效果。通常,以上从三维模型到二维图像的渲染过程,由渲染引擎驱动GPU中的渲染管线实现,从而在显示屏上对三维模型所指示的虚拟形象进行可视化呈现。
图形处理器(Graphics Processing Unit,GPU):一种用于现代个人计算机,服务器,移动设备,游戏主机等专门用于图形图像处理的专用芯片。
图形API(Application Programming Interface,应用程序编程接口):CPU(Central Processing Unit,中央处理器)向GPU进行通信的过程会按照特定标准的图形API进行,主流的图形API有OpenGL、OpenGL ES、Direct X、Metal、Vulkan等,GPU厂商在生产GPU时会实现某些规范的接口,在进行图形开发时,按照接口所定义的方法来调用GPU即可。
绘制(Draw Call,DC)命令:在图形API中通常提供有可供CPU命令GPU进行渲染的操作的一类DC命令,例如,DirectX中的DrawIndexedPrimitive命令,OpenGL中的glDrawElement命令等均属于对应图形API中支持的DC命令。
渲染管线:在GPU中运行的图形渲染流程。在图像渲染过程中,通常会涉及到如下几种渲染管线:顶点着色器、光栅化器、像素着色器,通过在着色器中编写代码,能够控制GPU对渲染组件进行绘制渲染。
顶点着色器(Vertex Shader,VS):GPU渲染管线的一个必选环节,一种增加3D特效的影像处理单元,VS具有可程序化特性,允许开发人员利用新式指令来调整特效,每个顶点(Vertex)被数据结构定义,顶点的基本属性有x、y、z三个方向上的顶点坐标,除此以外,顶点属性还可能有颜色、最初的径路、材质、光线特征等。程序会根据代码将三维模型的每个顶点进行逐个顶点计算,并将结果输出到下一个阶段。
光栅化器:GPU渲染管线的一个不可编码环节,程序自动将顶点着色器或者几何着色器输出的结果装配成三角形,并按照配置光栅化成离散像素点,输出到像素着色器。
像素着色器(Pixel Shader,PS):也被实施为片元着色器(Fragment Shader,FS),GPU渲染管线的一个必选环节,当模型顶点变换完、光栅化之后,是需要填充颜色的,FS/PS填充算法是针对屏幕上的每个像素点的:程序会根据代码将光栅化后的像素点进行着色计算,通过测试之后输出到帧缓冲区,完成一次渲染管线流程。
帧缓冲区:是一个内存缓冲区,其中包含代表某一帧完整游戏画面中所有像素点的数据,在计算机系统中专门用来存放正在合成或显示的图像。换一种表述,帧缓冲区是一个部分随机存取存储器(Random-Access Memory,RAM)含有的一个位图,其驱动计算机的显示屏。现代显卡的内核中包含帧缓冲电路,该帧缓冲电路将内存中的位图转换为可以在显示屏上显示的画面信号。
z缓冲区(即深度缓冲区):在帧缓冲区中用于存储所有像素点的深度信息的内存被称为z缓冲区或者深度缓冲区。当渲染三维虚拟场景中的对象时,每一个所生成的像素点的深度(即z坐标)就保存在z缓冲区中,z缓冲区通常组织成一个保存每个屏幕像素点深度的x-y二维数组。在z缓冲区中需要对同一像素点上出现的多个对象的点进行深度排序,并由GPU按照z缓冲区中记录的深度排序来进行计算,达到较近的对象遮挡较远的对象的深度感知效果。
颜色缓冲区:在帧缓冲区中用于存储所有像素点的颜色信息的内存被称为颜色缓冲区。当渲染三维虚拟场景中的对象时,每一个通过深度测试的点会被光栅化器装配成离散像素点,每个离散像素点的颜色就保存在颜色缓冲区中,按照颜色模式的不同,像素点的颜色向量具有不同的格式。
纹理贴图(即UV贴图):U和V分别是图片在显示屏的水平、垂直方向上的坐标,取值一般为0~1之间的数值,例如U坐标表征水平方向的第U个像素点/图片宽度,V坐标表征垂直方向的第V个像素点/图片高度。UV坐标(即纹理坐标)是将虚拟形象的UV贴图映射到虚拟形象的3D模型表面的依据,UV坐标定义了图片上每个像素点的位置的信息,这些像素点与3D模型的表面顶点是相互联系的,能够决定表面纹理投影到图片上哪个像素点的位置。UV映射能够将图片上的每个像素点都精准对应到3D模型的表面,在点与点之间的间隙位置由软件进行图像光滑插值处理,这就是所谓的UV贴图。进一步的,为了使3D模型的UV纹理在二维画布上合理分布,将三维的表面合理地平铺在二维的画布上,这一过程称为展UV。
点云(Point Cloud):指空间中一组无规则分布的、表达三维物体或三维场景的空间结构及表面属性的离散点集。根据不同的分类标准将点云划分为不同的类别,例如,按照点云的获取方式划分为密集点云和稀疏点云,又如,按照点云的时序类型划分为静态点云和动态点云。
点云数据(Point Cloud Data):点云中各个点具备的几何信息和属性信息共同组成点云数据。其中,几何信息也称为三维位置信息,点云中某个点的几何信息是指该点的空间坐标(x,y,z),包括该点在三维坐标系的各个坐标轴方向上的坐标值,例如,X轴方向上的坐标值x,Y轴方向上的坐标值y和Z轴方向上的坐标值z。点云中某个点的属性信息包括以下至少一种:颜色信息、材质信息、激光反射强度信息(也称为反射率);通常,点云中的每个点具有相同数量的属性信息,例如,点云中的每个点都具有颜色信息和激光反射强度两种属性信息,又如,点云中的每个点都具有颜色信息、材质信息和激光反射强度信息三种属性信息。
三维重建(3D重建):对三维物体建立适合计算机表示和处理的数学模型,是在计算机环境下对其进行处理、操作和分析其性质的基础,也是在计算机中建立表达客观世界的虚拟现实的关键技术。例如,对虚拟形象的3D重建,包含重建虚拟形象的三维模型,其中,重建涉及到3D骨骼重建和3D面部重建两个维度。
网格(Mesh):计算机图形学中的基础单元称为Mesh,常见的Mesh是三角形面片网格。对于3D模型来说,由于3D模型是由多边形拼接而成的,而一个复杂的多边形实际上是由多个三角面拼接而成的,因此,一个3D模型的外表面是由多个彼此相连的三角面构成的,在三维空间中,构成这些三角面的点以及三角形的边的集合就是Mesh。其中,Mesh上三角面的点称为3D模型的顶点。
动画(Animation):以时间帧的方式记录物体某一时刻的状态,然后按一定顺序与时间间隔进行切换。所有软件的动画原理都与此类似。在Unity引擎中,每个虚拟形象的行为(也称为动画行为)都由所属的动画状态机(Animator Controller)进行控制。
骨骼组件:简称“骨骼”,一种动画算法抽象出的概念,虚拟形象的骨骼组件的物理意义类比人体骨骼,通过骨骼组件来模仿人体骨骼,从而控制虚拟形象其三维模型的动画行为。
骨骼动画(Skeletal Animation):是模型动画中的一种,与顶点动画相区分。当前有两种模型动画的方式:顶点动画和骨骼动画。在骨骼动画中,三维模型具有互相连接的“骨骼组件”组成的骨架结构,技术人员预先制作好动画资源,通过动画资源来控制骨骼组件的位置变换,从而间接驱动其绑定的Mesh顶点的位置变换,进而为三维模型生成动画数据,通常适用于Mesh较多较复杂的动画生成,如虚拟形象的跑动、跳跃等。
骨骼蒙皮:选定一个骨骼组件后,就可以指定三维模型的哪些Mesh顶点受该骨骼组件的驱动,以及驱动时的权重如何。
顶点动画(Vertex Animation):是模型动画中的一种,与骨骼动画相区分。当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画亦称为逐顶点动画,即,在顶点着色器中对三维模型逐个顶点进行操作进而产生动画效果。这样,每帧动画其实就是三维模型呈现特定姿态的一个“快照”,通过在不同动画帧之间插帧的方法,动画引擎可以得到平滑的动画效果。顶点动画使三维模型的网格中每个三角形拉伸以产生更自然的动作(或表情),目前主要分为每顶点动画Morph和变形目标动画Pose。
每顶点动画(Morph动画):技术人员为网格的顶点添加动画,这些动作数据导出游戏引擎后,就能告诉引擎在运行时如何移动顶点。此技术能产生任何能想象得到的网格变形。然而,这是一种数据密集的技术,因为每个顶点随时间改变的动作信息都需要存储下来。因此,在实时游戏中很少会用上此技术。
变形目标动画(Pose动画):应用在一些实时引擎中,此方法也是有技术人员移动网格的顶点,但仅制作相对少量的固定极端姿势(Blender Shape),在运行时把两个或以上的姿势混合,就能生成动画。每个顶点的位置是把每个极端姿势的顶点位置进行线性插值而得到的。
NEON指令集:一种适用于ARM Cortex-A系列处理器的128位SIMD(SingleInstruction Multiple Data,单指令、多数据)扩展结构。
USB(Universal Serial Bus,通用串行总线)外置相机:指通过USB接口连接的外置摄像头,通过UVC协议被硬件平台识别到。
UVC(USB Video Class,USB视频类)协议:微软与另外几家设备厂商联合推出的为USB视频捕获设备(如USB外置相机)定义的协议标准,目前已成为USB org标准之一。UVC协议是USB规范协议中设备类规范的其中一种,是用作USB接口的视频设备的一个统一的数据交换规范。
以下,对本申请实施例的技术构思进行说明。
随着计算机视觉领域中三维建模、虚拟现实、增强现实、元宇宙等技术的飞速发展,虚拟形象在直播、影视、动漫、游戏、虚拟社交、人机交互等方面的应用越来越广泛。
由于用户对于图像品质(如画质、清晰度、分辨率等)的视觉要求越来越高,为了使得虚拟形象在动画过程中变得栩栩如生、逼真生动,如何精准驱动虚拟形象生成流畅动画,对于虚拟形象的渲染性能至关重要。这里的动画生成包含两重含义,一重含义是生成虚拟形象的肢体动作,另一重含义是生成虚拟形象的面部表情,肢体动作和面部表情结合构成了虚拟形象的动画行为。
以直播场景为例,虚拟形象担任主播来进行播报或者对话,为了提升虚拟形象的逼真渲染效果,涉及到虚拟形象的动画生成。同理,在视频创作场景下,如创作虚拟主播的投稿视频、创作数字人视频等,为了提升虚拟形象的逼真渲染效果,同样也会涉及到虚拟形象的动画生成。
通常,在虚拟形象的动画制作中,采用如下几类动画生成手段:
1、人体驱动:通过相机捕获真人身体行为特征,对虚拟形象的3D模型的骨骼组件进行驱动,使得3D模型能够模仿真人行为。
以上人体驱动方式,需要输入离线的数据,或者输入一段预先录制的视频,以解析真人身体行为特征,再进一步提取虚拟形象的3D模型每个关节的位置信息和旋转信息(统称位姿数据),进而通过各个关节的位姿数据来驱动虚拟形象执行动画行为,但由于计算量和复杂度的限制,实时性较差,且无法适配到UE4引擎进行高质量动画生成,动画生成效率低、实时性差,无法满足实时性较高的动画生成需求。
2、数字人驱动:UE4引擎自带有数字人系统,在数字人系统中,将数字人预先设置成多个数字人组件,通过预先设置的数字人动作数据,对预先设置的各个数字人组件进行驱动。
以上数字人驱动方式,UE4引擎的数字人系统是原生的,因此所有可供替换的数字人组件都是预先配置好的,技术人员不能自定义数字人外观资源,只能从已有的组件库中选择,而且UE4引擎的数字人驱动也是离线完成的,只能预设一些驱动动画来控制3D模型执行动画,动画生成效率低、实时性差,无法满足实时性较高的动画生成需求。
3、骨骼动画:在游戏中将虚拟形象运动起来的主要方式,通常由技术人员进行骨骼制作和蒙皮绑定,再制作虚拟形象的关键帧动画数据,让虚拟形象按照预定好的行为轨迹进行运动。
以上骨骼动画方式,技术人员必须预先制作好一系列的关键帧动画数据,才能控制虚拟形象按照预定好的行为轨迹进行运动,因为其动画生成过程也是离线的,动画生成效率低、实时性差,无法满足实时性较高的动画生成需求。
4、动捕实时驱动:由真人(或称为演员)穿戴具有全身传感器的动捕服,真人根据台本内容和台本音频进行动作表演,动捕服捕捉真人表演的肢体动作和面部表情,上报给动捕服联机的计算机,计算机将人体的肢体动作和面部表情迁移到虚拟形象的3D模型上,得到虚拟形象身体各个部位的3D动作数据和3D表情数据,驱动虚拟形象在连续时刻下执行类似真人的肢体动作和面部表情。
以上动捕驱动方式,尽管能够满足实时性要求,但动捕设备使用技术门槛高、价格昂贵,一般用于专业影视制作中,很难为普通用户服务,无法推广适用到直播、游戏等通用场景,虚拟形象的动画生成效率低。
有鉴于此,本申请实施例提出一种虚拟形象的动画生成方法,能够在如UE4等游戏引擎中,打通如下动画生成链路:从USB外置相机拍摄实体对象的视频数据,计算机设备针对实体对象进行三维重建,输出重建的动作数据和表情数据,动作数据控制虚拟形象的肢体动作,表情数据控制虚拟形象的面部表情,结合动作数据和表情数据,能够实时驱动虚拟形象的3D模型进行骨骼运动和做出表情,从而控制虚拟形象模拟实体对象进行动画行为,实现对虚拟形象的高质量动画渲染。
以上动画生成链路,无需人工介入,机器能够快速、精确的生成虚拟形象的动画数据,动画生成效率高,且能够满足较高的实时性需求。并且并不需要造价昂贵的动捕设备,只需要常规的相机就能够进行实时动画生成、制作,因此能够推广适用到直播、点播、游戏、数字人视频等各类需要虚拟形象执行动画行为的通用场景。
进一步分析,通过USB外置相机能够让虚拟形象运行在很多没有自带相机的显示设备上,并且虚拟形象的骨骼组件具有高自由度替换、实时驱动等特点,并不局限于UE4原生数字人系统的组件库中有限的数字人组件,这样能够拓展到任意体型、任意捏脸、任意外观的数字人动画驱动场景,并且也并不局限于数字人,其他的游戏、动漫、影视中涉及的虚拟形象,均能够按照此类方式来实现实时、快速的动画生成。
以下,对本申请实施例的系统架构进行说明。
图1是本申请实施例提供的一种虚拟形象的动画生成方法的实施环境示意图。参见图1,该实施环境包括终端101和服务器102。终端101和服务器102之间通过无线网络或者有线网络进行直接或间接地连接,本申请在此不做限制。
终端101上安装有支持虚拟形象的应用,终端101能够通过该应用实现虚拟形象的动画生成等功能,当然,该应用还能够具有其他功能,例如,游戏开发功能、网络社交功能、视频分享功能、视频投稿功能或者聊天功能等。其中,该应用为终端101操作系统中的原生应用,或者为第三方提供的应用。例如,该应用包括但不限于:游戏引擎、动画引擎、3D动画应用、直播应用、短视频应用、音视频应用、游戏应用、社交应用或者其他应用,在一个示例中,该应用为UE4引擎,或者Unity引擎等,本公开实施例对此不做限制。
可选地,终端101是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能电视、智能手表、车载终端等,但并不局限于此。
服务器102为终端101上支持虚拟形象的应用提供后台服务,服务器102可存储有多种虚拟形象的三维模型,其中,三维模型可以划分成3D骨骼模型和3D面部模型,用户能够在应用中按照需求为虚拟形象挑选个性化的外观资源,此外用户还能够对虚拟形象进行捏脸:按照需求调整3D面部模型中的五官配置参数(如眼距、瞳距、下颌宽度、人中长度等)。服务器102包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。可选地,服务器102承担主要动画生成计算工作,终端101承担次要动画生成计算工作;或者,服务器102承担次要动画生成计算工作,终端101承担主要动画生成计算工作;或者,服务器102和终端101之间采用分布式计算架构进行协同动画生成计算。
可选地,服务器102是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。
终端101可以泛指多个终端中的一个,本公开实施例仅以终端101来举例说明。本领域技术人员可以知晓,上述终端的数量可以更多或更少。
在一个示例性场景中,在离线动画生成过程中,用户在终端101上接入USB外置相机,授权外置相机的拍摄权限以后,终端101通过USB外置相机拍摄用户(是实体对象的一种示例)的视频数据,并向服务器102发送携带该视频数据的动画生成请求。服务器102响应于该动画生成请求,以该视频数据为基础,利用本申请实施例涉及的虚拟形象的动画生成方法,驱动生成虚拟形象的动画数据,以使虚拟形象的肢体动作和面部表情都高度仿真于用户在视频数据中做出的肢体动作和面部表情,接着服务器102将虚拟形象的动画数据返回到终端101,使得终端101播放虚拟形象的动画数据。这样,终端101侧并不需要接入造价昂贵的动捕设备,实现了视频信号驱动下的虚拟形象动画生成,动画生成效率高。
可选地,如果终端101本地安装的应用本身集成有动画生成功能,那么终端101无需请求服务器102返回动画数据,终端101可以在本地通过视频数据驱动生成虚拟形象的动画数据,进而播放虚拟形象的动画数据。这样,终端101侧节约了动画生成过程的通信开销,并不需要请求服务器102参与动画生成。
在另一个示例性场景中,在实时动画生成过程中,用户在终端101上接入USB外置相机,授权外置相机的拍摄权限以后,终端101通过USB外置相机拍摄用户(是实体对象的一种示例)的视频数据流,视频数据流中包含连续时刻下采集的各个视频帧,终端101将视频数据流可以流式推送到服务器102,以请求服务器102进行驱动实时动画生成。服务器102源源不断接收终端101推送的视频数据流,并以视频数据流中每个视频帧为基础,利用本申请实施例涉及的虚拟形象的动画生成方法,驱动生成虚拟形象一个动画帧,这样连续多个视频帧将驱动生成连续多个动画帧,从而合成虚拟形象的动画数据流,以使得在实时拍摄的视频流的驱动下,能够合成对应的动画流,并控制虚拟形象在动画流中的肢体动作和面部表情都高度仿真于用户在视频流中做出的肢体动作和面部表情,接着服务器102将虚拟形象的动画数据流返回到终端101,使得终端101播放虚拟形象的动画数据流。这样,终端101侧并不需要接入造价昂贵的动捕设备,实现了视频流信号驱动下的虚拟形象动画生成,这样方式的时延很低,能够满足较高的实时性要求,动画生成效率高,能够推广到如直播、游戏等实时性要求高的场景。
可选地,如果终端101本地安装的应用本身集成有动画生成功能,那么终端101无需请求服务器102返回动画数据流,终端101可以在本地通过视频数据流驱动生成虚拟形象的动画数据流,进而播放虚拟形象的动画数据流。这样,终端101侧节约了动画生成过程的通信开销,并不需要请求服务器102参与动画生成,能够推广到如直播、游戏等实时性要求高的场景。
本申请实施例提供的虚拟形象的动画生成方法,能够适用于任意需要生成虚拟形象动画的场景下。例如,数字人直播场景下,中之人不需要配备动捕服来进行表演,只需要一台具有相机的终端,或者终端自身不具有相机但接入USB外置相机,只要终端具有拍摄功能,那么在经过中之人的拍摄授权以后,终端通过内置相机或者外置相机采集到中之人的视频数据流(即直播视频流),进而终端本地或者请求服务器在视频数据流的驱动下,合成数字人的动画数据流,从而控制数字人能够做出模仿中之人的肢体动作和面部表情,再与数字人自身的音频及其字幕(也可能没有字幕)结合,提升了数字人直播的真实性和趣味性。又例如,还可以适用于数字人客服、动画制作、影视特效、数字人主持、数字人视频等各类需要虚拟形象动画生成的场景,本申请实施例对应用场景不进行具体限定。
以下,对本申请实施例的虚拟形象的动画生成方法的基本流程进行说明。
图2是本申请实施例提供的一种虚拟形象的动画生成方法的流程图。参见图2,该实施例由计算机设备执行,计算机设备可以是终端或者服务器,以计算机设备为终端为例进行说明,该实施例包括以下步骤。
201、终端获取实体对象的视频数据。
其中,实体对象是指现实世界中具有实体的可活动对象,如用户(真人)、机器人、动物等,本申请实施例对实体对象的类型不进行具体限定。在一个示例中,数字人直播场景下,实体对象是指控制虚拟主播的中之人,其中,中之人是指虚拟直播场景下进行直播时候背后表演或控制虚拟主播的人。
其中,视频数据是指包含实体对象的视频数据或者视频数据流。其中,视频数据可以包括至少一张视频图像,视频数据流可以包括多个视频帧,本申请实施例对视频数据是一段视频还是不断采集的视频流不进行具体限定。
在一些实施例中,终端自身具有内置相机或者外置相机,此时终端向实体对象请求拍摄权限以后,在经过实体对象的充分授权时,调用相机拍摄实体对象的视频数据。在一个示例中,外置相机是指USB外置相机,或者通过其他接口能够接入终端的外置相机。
在另一些实施例中,终端与外部的图像采集设备建立通信连接,图像采集设备经过实体对象的充分授权以后,拍摄实体对象的视频数据,并将拍摄到的视频数据通过通信连接发送到终端,以使终端接收到该视频数据,本申请实施例对终端自身拍摄还是外部的图像采集设备拍摄不进行具体限定。
在又一些实施例中,终端从本地数据库中读取实体对象的视频数据,或者,终端从云端数据库中下载实体对象的视频数据,本申请实施例对视频数据的来源不进行具体限定。
202、终端基于该视频数据,提取该实体对象的姿态信息,该姿态信息表征该实体对象在该视频数据呈现的肢体姿态和表情姿态。
其中,该姿态信息表征实体对象在视频数据中呈现的肢体姿态和表情姿态,因此,该姿态信息指代视频数据中实体对象的二维位姿。
在一些实施例中,该姿态信息包括骨骼姿态信息或者面部姿态信息中至少一者,该骨骼姿态信息指示实体对象的骨骼关键点的二维位姿,该面部姿态信息指示实体对象的面部关键点的二维位姿。
在一个示例中,上述二维位姿指示位置信息和姿态信息,那么对于任一骨骼关键点或面部关键点,二维位姿采用平面坐标系中的u坐标和v坐标来表征二维位置信息,同时还采用u方向和v方向的旋转角度来表征二维姿态信息。其中,u坐标是指视频数据中二维的视频图像(或视频帧)中的横坐标,v坐标是指视频数据中二维的视频图像(或视频帧)中的纵坐标。
在一些实施例中,在需要建模肢体动作的情况下,该姿态信息包含该骨骼姿态信息,因此,基于步骤201中获取的视频数据,提取实体对象的骨骼姿态信息,比如,提取该实体对象的多个骨骼关键点的二维位姿,将该多个骨骼关键点的二维位姿确定为该骨骼姿态信息。需要说明的是,当步骤201中获取的是视频数据流的时候,基于同理的方式,对视频数据流中的每个视频帧提取实体对象的骨骼姿态信息。
在另一些实施例中,在需要建模面部表情的情况下,该姿态信息包含该面部姿态信息,因此,基于步骤201中获取的视频数据,提取实体对象的面部姿态信息,比如,提取该实体对象的多个面部关键点的二维位姿,将该多个面部关键点的二维位姿确定为该面部姿态信息。需要说明的是,当步骤201中获取的是视频数据流的时候,基于同理的方式,对视频数据流中的每个视频帧提取实体对象的面部姿态信息。
在又一些实施例中,在需要建模肢体动作和面部表情的情况下,该姿态信息包含骨骼姿态信息和面部姿态信息,因此,基于步骤201中获取的视频数据,提取实体对象的骨骼姿态信息和面部姿态信息,比如,提取该实体对象的多个骨骼关键点的二维位姿,将该多个骨骼关键点的二维位姿确定为该骨骼姿态信息,此外,提取该实体对象的多个面部关键点的二维位姿,将该多个面部关键点的二维位姿确定为该面部姿态信息。需要说明的是,当步骤201中获取的是视频数据流的时候,基于同理的方式,对视频数据流中的每个视频帧提取实体对象的骨骼姿态信息和面部姿态信息。
203、终端基于该姿态信息,对该实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,该动作数据表征该虚拟形象基于该肢体姿态重建得到的肢体动作,该表情数据表征该虚拟形象基于该表情姿态重建得到的面部表情。
其中,该动作数据表征该虚拟形象基于实体对象的二维肢体姿态进行三维重建以后得到的三维肢体姿态,因此该动作数据指代基于实体对象进行仿真的虚拟形象的三维骨骼位姿,该三维骨骼位姿包含虚拟形象的多个骨骼关键点的三维位姿。
其中,该表情数据表征该虚拟形象基于实体对象的二维表情姿态进行三维重建以后得到的三维表情姿态,因此该表情数据指代基于实体对象进行仿真的虚拟形象的三维面部位姿,该三维面部位姿包含虚拟形象的多个面部关键点的三维位姿。
在一个示例中,上述三维位姿指示位置信息和姿态信息,那么对于任一骨骼关键点或面部关键点,可以采用6个位姿参数来表征其三维位姿,其中,3个位姿参数表征在x、y、z三维空间坐标系中的位置坐标(即位置信息),另外3个位姿参数表征在x、y、z三维空间坐标系中的旋转角度(即姿态信息)。在一个示例中,上述3个旋转角度统称为欧拉角,欧拉角包括:俯仰角Pitch、偏航角Yaw和滚转角Roll,俯仰角Pitch表示绕x轴旋转的角度,偏航角Yaw表示绕y轴旋转的角度,滚转角Roll表示绕z轴旋转的角度,对于面部关键点来说,形象来看,俯仰角Pitch可视为“点头”的角度,偏航角Yaw可视为“摇头”的角度,滚转角Roll可视为“歪头/摆头”的角度。
在一些实施例中,在需要建模肢体动作的情况下,步骤202中提取的姿态信息包含骨骼姿态信息,因此,基于步骤202中提取的骨骼姿态信息,对该实体对象进行三维骨骼重建,得到虚拟形象的动作数据,例如,该骨骼姿态信息被提供为多个骨骼关键点的二维位姿,那么该动作数据被提供为该多个骨骼关键点的三维位姿,这样,对每个骨骼关键点来说,三维骨骼重建指代根据该骨骼关键点的二维位姿来重建其三维位姿的过程。这种情况下,如果忽略面部表情重建,虚拟形象的表情数据可以配置成预设表情(如面无表情),或者,使用动画状态机来控制虚拟形象的表情数据。
需要说明的是,当步骤201中获取的是视频数据流的时候,步骤202中会逐个视频帧提取实体对象的骨骼姿态信息,从而逐帧实现三维骨骼重建,得到虚拟形象在每个动画帧中的动作数据。
在另一些实施例中,在需要建模面部表情的情况下,步骤202中提取的姿态信息包含面部姿态信息,因此,基于步骤202中提取的面部姿态信息,对该实体对象进行三维面部重建,得到虚拟形象的表情数据,例如,该面部姿态信息被提供为多个面部关键点的二维位姿,那么该表情数据被提供为该多个面部关键点的三维位姿,这样,对每个面部关键点来说,三维面部重建指代根据该面部关键点的二维位姿来重建其三维位姿的过程。这种情况下,如果忽略骨骼重建,虚拟形象的动作数据可以配置成预设动作(如站立动作),或者,使用动画状态机来控制虚拟形象的动作数据。
需要说明的是,当步骤201中获取的是视频数据流的时候,步骤202中会逐个视频帧提取实体对象的面部姿态信息,从而逐帧实现三维面部重建,得到虚拟形象在每个动画帧中的表情数据。
在又一些实施例中,在需要建模肢体动作和面部表情的情况下,步骤202中提取的姿态信息包含骨骼姿态信息和面部姿态信息,因此,基于步骤202中提取的骨骼姿态信息,对该实体对象进行三维骨骼重建,得到虚拟形象的动作数据,例如,该骨骼姿态信息被提供为多个骨骼关键点的二维位姿,那么该动作数据被提供为该多个骨骼关键点的三维位姿,这样,对每个骨骼关键点来说,三维骨骼重建指代根据该骨骼关键点的二维位姿来重建其三维位姿的过程;此外,基于步骤202中提取的面部姿态信息,对该实体对象进行三维面部重建,得到虚拟形象的表情数据,例如,该面部姿态信息被提供为多个面部关键点的二维位姿,那么该表情数据被提供为该多个面部关键点的三维位姿,这样,对每个面部关键点来说,三维面部重建指代根据该面部关键点的二维位姿来重建其三维位姿的过程。
需要说明的是,当步骤201中获取的是视频数据流的时候,步骤202中会逐个视频帧提取实体对象的骨骼姿态信息和面部姿态信息,从而逐帧实现三维骨骼重建和三维面部重建,得到虚拟形象在每个动画帧中的动作数据和表情数据。
204、终端基于该虚拟形象的外观资源、该动作数据和该表情数据,合成该虚拟形象的动画数据,该动画数据表征该虚拟形象穿戴该外观资源、呈现该面部表情且执行该肢体动作。
其中,外观资源用于控制虚拟形象的外在表现,比如,该外观资源包括但不限于:头发、皮肤、眼睛、服饰、饰物、特效等。
在一些实施例中,基于虚拟形象的形象ID(Identification,标识),查询虚拟形象的外观资源,将查询到的外观资源结合步骤203中重建的动作数据和表情数据,合成虚拟形象的动画数据,以使虚拟形象穿戴自身的外观资源,呈现出模拟实体对象的肢体动作和面部表情。
需要说明的是,当步骤201中获取的是视频数据流的时候,步骤202中会逐个视频帧提取实体对象的骨骼姿态信息和面部姿态信息,步骤203中会逐帧三维重建得到虚拟形象的动作数据和表情数据,这样在步骤204中能够逐帧合成虚拟形象的动画数据,即,对视频数据流中的每个视频帧,都能够合成一个动画帧,以使虚拟形象在动画帧中的肢体动作和面部表情都模拟出实体对象在视频帧中的肢体动作和面部表情。
在一些实施例中,在渲染虚拟形象的动画数据时,根据虚拟形象的形象ID,能够查询到虚拟形象以点云形式存储的三维模型,对点云形式的三维模型进行烘焙,能够导出三维模型的网格数据(即Mesh),再将虚拟形象的各个骨骼组件分别与网格数据中对应的部分进行绑定,实现三维模型的骨骼蒙皮。由于该三维模型包括3D骨骼模型和3D面部模型,将3D骨骼模型拆分成多个骨骼组件,再将3D面部模型视为一个特殊的控制面部表情动作的骨骼组件,这样虚拟形象的肢体动作和面部表情就能够通过全部的骨骼组件来进行控制。进一步的,步骤203中的动作数据将控制3D骨骼模型包含的各个骨骼组件来呈现某种肢体动作,步骤204中的表情数据将控制3D面部模型包含的特定骨骼组件来呈现某种面部表情。进一步地,由于骨骼蒙皮以后,骨骼组件受到动作数据或表情数据的影响,而发生位移或者旋转(即位姿变化)时,自然会影响到绑定的网格数据中顶点的顶点位置,因此,需要重新计算网格数据中每个顶点的顶点位置,这样相当于通过动作数据和表情数据,在网格数据上对设定的顶点施加形变,从而控制骨骼蒙皮中的顶点进行位置偏移,使得从顶点层面控制虚拟形象呈现的肢体动作和表情姿态,而并不局限于预先设定的某些固定的动画行为,因此肢体动作和面部表情的重建精度更高,还原度和逼真度更高。
进一步,根据重新计算了顶点位置以后的网格数据,再结合虚拟形象自身的外观资源,驱动GPU的渲染管线,对三维模型的网格数据进行顶点着色、光栅化、像素着色等一系列渲染流程,最终能够将虚拟形象的动画数据进行可视化展示,即将虚拟形象的动画数据绘制到终端的显示屏上,从而显示虚拟形象的动画数据。在实时动画生成过程中,只需要逐帧显示虚拟形象的每个动画帧,就能够实现播放虚拟形象的动画的效果,实现实时、动态的动画驱动。
在一些实施例中,终端中创建有RHI(Render Hardware Interface,渲染硬件接口)线程即RHIThread,将上述虚拟形象的外观资源和经过形变的网格数据提交到RHIThread,再由RHIThread执行图形API中的绘制命令,驱动GPU上的渲染管线来对虚拟形象进行渲染,得到虚拟形象的一个动画帧。
下面,将对任一个动画帧的GPU渲染流程进行说明,GPU的渲染管线涉及到顶点着色器、光栅化器和像素着色器,其中,顶点着色器是用于对网格顶点进行计算的渲染管线,光栅化器是用于将顶点着色器输出的结果装配成三角形网格、并按照配置光栅化成离散像素点的渲染管线,像素着色器是用于对光栅化后的每个离散像素点进行着色计算、完成像素点着色的渲染管线。
对网格数据中的每个顶点,动作数据和表情数据控制的是顶点位置,当然旋转角度这种姿态信息也可能会影响顶点的深度值,而外观资源则影响的是顶点的颜色值和深度值。首先,清空帧缓冲区的颜色和深度,接着,利用顶点着色器在z缓冲区中对网格数据的每个顶点进行深度写入,即在z缓冲区中写入每个顶点的深度值,这里还涉及到一个深度排序的过程,深度排序将影响到透明度,处理一些遮挡或者半透明的显示效果,接着,利用光栅化器进行光栅化,接着,利用像素着色器在颜色缓冲区中对每个离散化后的像素点进行颜色写入,即在颜色缓冲区中写入每个像素点的像素值,每个像素点的像素值是由位于这个像素点的各个顶点的颜色值积分而来的,颜色值积分过程通常考虑顶点的透明度,最终能够在终端的显示屏中输出虚拟形象的一个动画帧。还需要说明的是,在顶点着色阶段通常还涉及到光照计算,具体采取的光照模型由虚拟形象或者渲染引擎决定。
其中,帧缓冲区用于存放当前动画帧中所有像素点的数据,帧缓冲区中包含一个z缓冲区和一个颜色缓冲区,z缓冲区是指帧缓冲区中的深度缓冲区,用于存储当前动画帧中每个像素点的深度值,而颜色缓冲区则用于存放当前动画帧中每个像素点的颜色值。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过实体对象的视频数据,提取到实体对象的在平面坐标系中呈现的肢体姿态和表情姿态,进而对实体对象进行三维重建,得到虚拟形象在空间坐标系中呈现的肢体动作和面部表情,进而结合虚拟形象的外观资源,合成虚拟形象的动画数据,使得在视频数据的驱动下,虚拟形象能够模拟和仿真实体对象的肢体动作和面部表情,这种动画生成流程不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。
进一步地,由于动画渲染时并不依赖于骨骼动画或者UE4原生的数字人系统,因此合成的虚拟形象动画并不局限于预先设定的几种动作类别,动画呈现时也不会有机械感或者衔接死板等问题,能够逐顶点实现虚拟形象的动画控制,其肢体动作和面部表情的重建精度细致到虚拟形象的网格数据中的顶点级别,能够在高精度的前提下控制虚拟形象精准模仿实体对象的肢体动作和面部表情,提升虚拟形象的动画生成精度,具有很高的灵活性和可控性,优化虚拟形象的动画效果。
在上一实施例中,简单介绍了虚拟形象的动画生成基本流程,而在本申请实施例中,将对动画生成流程的每个步骤进行详细说明,如图3所示,图3是本申请实施例提供的一种虚拟形象的动画生成方法的流程图,该实施例由计算机设备执行,计算机设备可以是终端或者服务器,以计算机设备为终端为例进行说明,该实施例包括以下步骤。
301、终端基于外置相机拍摄实体对象的视频数据。
在一些实施例中,终端配置有外置相机的情况下,向实体对象请求拍摄权限以后,在经过实体对象的充分授权以后,通过外置相机拍摄实体对象的视频数据。在一个示例中,外置相机是指USB外置相机,或者通过其他接口能够接入终端的外置相机。
在步骤301中仅以通过外置相机拍摄视频数据为例进行说明,可选地,如果终端自身配置有内置相机,也可以使用内置相机拍摄视频数据,本申请实施例对相机类型不进行具体限定。
在一些实施例中,除了通过内置相机或外置相机拍摄视频数据以外,终端也可以与外部的图像采集设备建立通信连接,图像采集设备经过实体对象的充分授权以后,拍摄实体对象的视频数据,并将拍摄到的视频数据通过通信连接发送到终端,以使终端接收到该视频数据,本申请实施例对终端自身拍摄还是外部的图像采集设备拍摄不进行具体限定。
在另一些实施例中,除了拍摄视频数据以外,终端也可以从本地数据库中读取实体对象的视频数据,或者,终端还可以从云端数据库中下载实体对象的视频数据,本申请实施例对视频数据的来源不进行具体限定。
需要说明的是,步骤301中拍摄的视频数据是指包含实体对象的视频数据或者视频数据流。其中,视频数据可以包括至少一张视频图像,视频数据流可以包括多个视频帧,本申请实施例对视频数据是一段视频还是不断采集的视频流不进行具体限定。
在一个示例性中,以拍摄视频数据流的场景为例,外置相机是指USE外置相机,这样对终端的硬件要求较低,终端只需要具备USB插槽就能够实现本申请的动画生成方案,在将USB外置相机插入到终端的USB插槽(物理连接)以后,对USB外置相机的接入配置(驱动视频),从而建立USB外置相机和终端之间的通信连接,这样,终端在请求实体对象的拍摄权限以后,能够通过操作系统(Operating System,OS)调用相机接口(ApplicationProgramming Interface,API),通过相机接口驱动USB外置相机实时拍摄到实体对象的视频数据流,并将拍摄的视频数据流流式传输到终端。这样,只要对USB外置相机封装适用于不同操作系统的调用逻辑,就能够在任意平台的终端上完成视频数据的实时采集。而且,用户对于底层调用无感知,只需要授权拍摄权限,即可调用相机接口驱动USB外置相机完成拍摄,并获取到USB外置相机返回的视频数据流。
图4是本申请实施例提供的一种虚拟形象的动画生成方案的原理性流程图,如图4所示,针对USB外置相机来说,为保证USB外置相机和终端能够完成连接,需要USB外置相机和终端两者均支持UVC协议,这样终端才能识别到USB外置相机的连接,进而终端和USB外置相机能够通过UVC协议来实现各平台的驱动适配,在物理连接和驱动适配完成以后,终端才能通过调用相机接口,驱动USB外置相机拍摄视频数据流,USB外置相机才能向终端返回拍摄的视频数据流。其中,终端所属平台(或者说操作系统)包括但不限于:安卓(Android)、苹果(iOS)、Windows、Mac等,本申请实施例对终端的设备类型、平台类型、操作系统类型均不进行具体限定。
在一些实施例中,在各个平台层,对USB外置相机封装成一个统一的相机接口,这样终端操作系统调用相机接口的时候,能够实现无感知调用,即,不需要关心自身平台调用哪种相机接口才能驱动USB外置相机,能够提升视频数据采集效率。当然,USB外置相机针对各平台层也可以封装成不同的相机接口,这样操作系统在驱动USB外置相机的时候,需要根据所属平台来选择调用合适的相机接口,本申请实施例对此不进行具体限定。
在另一些实施例中,在驱动USB外置相机拍摄视频数据流以前,用户还可以通过终端来对USB外置相机的拍摄性能进行配置,比如配置其采集分辨率、使用长焦镜头/短焦镜头采集、相机是否开启防抖功能等,这样能够灵活配置USB外置相机的拍摄性能,有助于采集到更高质量的视频数据流。
302、终端将该视频数据从该外置相机支持的视频格式,转换为预设视频格式。
其中,该预设视频格式为支持实体对象三维重建的格式。
在一些实施例中,由于不同的外置相机拍摄的视频数据可能具有不同的视频格式,因此,为提升三维重建效率,可以将外置相机拍摄的视频数据,从原本的视频格式,统一转换成预设视频格式,便于后续针对预设视频格式的视频数据进行三维重建。步骤302也可以称为数据预处理过程,步骤302是可选步骤,如果外置相机支持的视频格式本身就是支持实体对象三维重建的格式,那么无需再花费算力进行视频格式转换,本申请实施例对此不进行具体限定。其中,视频格式主要是指视频帧或者视频图像的数据格式(或者说画面格式、图像格式)。
在上述步骤301~302中,提供了终端获取实体对象的视频数据的一种可能实施方式,通过调用外置相机拍摄视频数据,再统一转换成预设视频格式,能够适用于实时拍摄视频流以驱动实时动画流的场景,能够满足实时性较高的业务需求,也能够适用于离线录制视频以驱动动画的场景,并且预设视频格式能够很好地兼容三维重建算法,提升了三维重建效率,此外不需要配置造价昂贵的动捕设备,成本低廉适于推广应用,具有很高的通用性、适用性。
在一个示例性场景中,图5是本申请实施例提供的一种视频格式转换的原理图,如图5所示,若外置相机是USB外置相机,那么由于USB外置相机采用的视频编码方式多种多样,因此拍摄得到的视频数据的视频格式也多种多样,在数据预处理阶段,将各种视频格式的视频数据进行视频格式转换,统一转换成预设视频格式的视频数据,预设视频格式是指三维重建算法支持的数据格式。可选地,在视频格式转换时可以启用硬件加速,来降低视频格式转换的时延,提升动画生成的实时性,但硬件加速并非是必选步骤。
可选地,视频格式包括但不限于:YUV420、YUV444、RGBA、RGB等,其中,YUV是一种颜色编码方法,将像素值分解成Y(Luminance,亮度)、U(Chrominance,色度)、V(Chroma,浓度)三个通道的分量,而YUV420和YUV444均采用YUV颜色编码方法但具有不同采样方式,YUV444是指4:4:4采样,这样每一个Y对应一组UV分量,YUV420是指4:2:0采样,这样每四个Y共用一组UV分量;而RGB是另一种颜色编码方法,将像素值分解成R(Red,红)、G(Green,绿)、B(Blue,蓝)三个通道的分量,而RGBA是指在RGB三个通道的基础上额外增加一个透明度通道Alpha。
在一个示例中,假设预设视频格式是RGB或RGBA,那么如果USB外置相机拍摄的视频数据是YUV420或YUV444,那么需要将视频数据从YUV420或YUV444转换成RGB或RGBA,相当于从YUV颜色编码方法映射成RGB颜色编码方法,即将非RGB颜色格式转换成RGB颜色格式。
在另一个示例中,假设预设视频格式是YUV420或YUV444,那么如果USB外置相机拍摄的视频数据是RGB或RGBA,那么需要将视频数据从RGB或RGBA转换成YUV420或YUV444,相当于从RGB颜色编码方法映射成YUV颜色编码方法,即将RGB颜色格式转换成非RGB颜色格式。
在一些实施例中,以YUV颜色编码方法转换成RGB颜色编码方法为例,在视频格式转换时,需要通过CPU逻辑层访问视频数据,逐个像素点来读取像素值,再通过转换逻辑函数输入源编码格式像素值,输出目标编码格式像素值,在本示例中,源编码格式是指YUV颜色编码方法,目标编码格式是指RGB颜色编码方法,其中,转换逻辑函数是指用于将像素值从YUV颜色编码方法转换成RGB颜色编码方法的一个函数。
由于终端会创建一个主线程(如动画线程、渲染线程等)用于动画生成,以上示例的视频格式转换方法,会阻塞终端当前动画生成的主线程,直到所有像素点都实现颜色编码方法转换完毕,才会执行主线程的后续逻辑,因此,视频格式转换过程可能会带来一定的动画生成时延。
有鉴于此,在另一些实施例中,可以对视频格式转换进行加速,来降低这一过程的时延,保证动画生成能够满足较高的实时性需求,需要说明的是,加速操作是数据预处理阶段的可选步骤,也可以不进行视频格式转换的加速。下面将介绍两种可能视频格式转换的加速方式。
方式一、子线程并行加速
在一些实施例中,可以启动一个用于格式转换的子线程,通过该子线程将该视频数据转换成该预设视频格式。换言之,在动画生成过程中,为了避免主线程由于视频格式转换而阻塞,可以在开启视频格式转换时,执行子线程启动指令,启动一个子线程,子线程独立运行来完成视频格式转换,主线程不阻塞继续运行后续逻辑,当子线程完成所有像素点的视频格式转换以后,通知主线程视频格式转换完成,相当于提供了主线程和子线程并行处理的加速方式,能够降低动画生成时延,提升动画生成实时性。可选地,上述子线程启动指令可以是NEON指令。
在另一些实施例中,与子线程并行加速同理,还可以启动一个用于格式转换的协程,通过该协程将该视频数据转换成该预设视频格式,这里不再赘述。
方式二、GPU硬件加速
在一些实施例中,可以调用图形处理器GPU的绘制命令,通过该GPU将该视频数据转换成该预设视频格式。在一个示例中,调用GPU支持的图形API所提供的绘制命令,能够将拍摄的视频数据从CPU输入到GPU中,之后通过GPU渲染管线的着色器(Shader)代码,能够在GPU中完成每个像素点的视频格式转换,最后CPU可以读取GPU纹理,就能够将转换完成的预设视频格式的视频数据再回传到CPU。换言之,在动画生成过程中,通过GPU来进行视频格式转换,实现GPU硬件加速,这样视频格式转换从会CPU迁移到GPU中完成,而GPU本身硬件层面就适合做大批量并行化计算,计算速度高于CPU好几个数量级,因此硬件加速能够极大提升视频格式转换效率,降低动画生成时延,提升动画生成实时性。
303、终端确定该实体对象的骨骼关键点和面部关键点。
在一些实施例中,在进行实体对象的三维重建时,可以利用人体参数化模型来进行人体三维重建,这样仅需一组低维向量即可描述人体形状,换言之,只需要提取骨骼关键点和面部关键点的二维位姿,进而能够描述实体对象在二维平面坐标系中的肢体姿态和表情姿态,这种基于关键点的三维重建方式计算复杂度低,三维重建效率高。可选地,上述人体参数化模型可以是蒙皮多人线性(Skinned Multi-Person Linear,SMPL)模型、SMPL-X模型、SCAPE模型等,本申请实施例对人体参数化模型不进行具体限定。
在以上参数化的三维重建过程中,当采取的人体参数化模型不同时,对骨骼关键点和面部关键点的划分方式也可能不尽相同,因此,基于三维重建采用的人体参数化模型,可以确定出多个骨骼关键点和多个面部关键点。
304、终端基于该视频数据,提取该骨骼关键点的骨骼姿态信息和该面部关键点的面部姿态信息。
其中,该骨骼姿态信息表征该骨骼关键点的二维位姿,该面部关键点表征该面部关键点的二维位姿。
在一个示例中,上述二维位姿指示位置信息和姿态信息,那么对于任一骨骼关键点或面部关键点,二维位姿采用平面坐标系中的u坐标和v坐标来表征二维位置信息,同时还采用u方向和v方向的旋转角度来表征二维姿态信息。其中,u坐标是指视频数据中二维的视频图像(或视频帧)中的横坐标,v坐标是指视频数据中二维的视频图像(或视频帧)中的纵坐标。
在一些实施例中,由于视频数据本身蕴含的是二维平面坐标系中的关键点二维位姿,因此,在视频数据的基础上,对每个骨骼关键点可以提取到该骨骼关键点在二维平面坐标系中的二维位姿,将步骤303中各个骨骼关键点的二维位姿作为实体对象的骨骼姿态信息,同理,对每个面部关键点可以提取到该面部关键点在二维平面坐标系中的二维位姿,将步骤303中各个面部关键点的二维位姿作为实体对象的面部姿态信息。需要说明的是,当步骤301中获取的是视频数据流的时候,那么对视频数据流中的每个视频帧都提取实体对象的骨骼姿态信息和面部姿态信息。
在一个示例性场景中,以SMPL模型进行人体参数化三维重建为例,在步骤303中确定SMPL模型的多个骨骼关键点和多个面部关键点,进而,在步骤304中,对每个骨骼关键点都能够从视频数据(或一个视频帧)中提取到该骨骼关键点的二维位姿,将SMPL模型的各个骨骼关键点的二维位姿作为实体对象的骨骼姿态信息,同理,对每个面部关键点都能够从视频数据(或一个视频帧)中提取到该面部关键点的二维位姿,将SMPL模型的各个面部关键点的二维位姿作为实体对象的面部姿态信息。
在上述步骤303~304中,提供了一种基于该视频数据,提取该实体对象的姿态信息的可能实施方式,其中,该姿态信息表征实体对象在视频数据中呈现的肢体姿态和表情姿态,因此,该姿态信息指代视频数据中实体对象的二维位姿。这里是将姿态信息分解成骨骼姿态信息和面部姿态信息为例进行说明。
在另一些实施例中,如果动画生成比较关注面部表情(比如USB外置相机仅聚焦到头部、颈部),那么也可以不建模肢体动作,此时不需要提取骨骼姿态信息,或者,如果动画生成比较关注肢体动作(比如执行一些肢体表演),那么也可以不建模面部表情,此时不需要提取面部姿态信息,本申请实施例对此不进行具体限定。
在又一些实施例中,以上步骤303~304提供的一种基于参数化方法实现人体三维重建的实施方式,这样只需要提取少量参数,就能够描述高度复杂的人体Mesh,比如SMPL最少仅需72+10个参数来描述6890个顶点的人体Mesh,具有三维重建效率高的特点。当然,除了参数化方法以外,也可以使用一些非参数化方式来进行人体三维重建,此时将直接重建高维的人体Mesh,本申请实施例对三维重建方法不进行具体限定。
305、终端基于该骨骼姿态信息,重建该虚拟形象的骨骼关键点的动作数据。
其中,该动作数据表征该骨骼关键点的三维位姿,换一种表述,该动作数据表征该虚拟形象基于实体对象的二维肢体姿态进行三维重建以后得到的三维肢体姿态,因此该动作数据指代基于实体对象进行仿真的虚拟形象的三维骨骼位姿。
在一个示例中,上述三维位姿指示位置信息和姿态信息,那么对于任一骨骼关键点,可以采用6个位姿参数来表征其三维位姿,其中,3个位姿参数表征在x、y、z三维空间坐标系中的位置坐标(即位置信息),另外3个位姿参数表征在x、y、z三维空间坐标系中的旋转角度(即姿态信息)。在一个示例中,上述3个旋转角度统称为欧拉角,欧拉角包括:俯仰角Pitch、偏航角Yaw和滚转角Roll,俯仰角Pitch表示绕x轴旋转的角度,偏航角Yaw表示绕y轴旋转的角度,滚转角Roll表示绕z轴旋转的角度。
在一些实施例中,终端基于步骤304中提取到的骨骼姿态信息,对该实体对象进行三维骨骼重建,得到虚拟形象的动作数据。由于该骨骼姿态信息被提供为多个骨骼关键点的二维位姿,且该动作数据被提供为该多个骨骼关键点的三维位姿,因此,对每个骨骼关键点来说,三维骨骼重建指代根据该骨骼关键点的二维位姿来重建其三维位姿的过程。
在一些实施例中,建立从二维平面坐标系到三维空间坐标系的位姿映射关系,每个骨骼关键点,基于该位姿映射关系将该骨骼关键点的二维位姿进行映射,得到该骨骼关键点的三维位姿,进而,将步骤303中各个骨骼关键点的三维位姿作为虚拟形象的动作数据。可选地,通过一个三维重建算法来建立上述位姿映射关系,该三维重建算法可通过计算机程序或者机器学习模型实现,上述三维重建算法可以通过插件的形式集成到UE4等游戏引擎中,本申请实施例对此不进行具体限定。
需要说明的是,当步骤301中获取的是视频数据流的时候,步骤304中会逐个视频帧提取实体对象的骨骼姿态信息,从而在本步骤305中实现逐帧三维骨骼重建,得到虚拟形象在每个动画帧中的动作数据。
306、终端基于该面部姿态信息,重建该虚拟形象的面部关键点的表情数据。
其中,该表情数据表征该面部关键点的三维位姿,换一种表述,该表情数据表征该虚拟形象基于实体对象的二维表情姿态进行三维重建以后得到的三维表情姿态,因此该表情数据指代基于实体对象进行仿真的虚拟形象的三维面部位姿。
在一个示例中,上述三维位姿指示位置信息和姿态信息,那么对于任一面部关键点,可以采用6个位姿参数来表征其三维位姿,其中,3个位姿参数表征在x、y、z三维空间坐标系中的位置坐标(即位置信息),另外3个位姿参数表征在x、y、z三维空间坐标系中的旋转角度(即姿态信息)。在一个示例中,上述3个旋转角度统称为欧拉角,欧拉角包括:俯仰角Pitch、偏航角Yaw和滚转角Roll,俯仰角Pitch表示绕x轴旋转的角度,偏航角Yaw表示绕y轴旋转的角度,滚转角Roll表示绕z轴旋转的角度,对于面部关键点来说,形象来看,俯仰角Pitch可视为“点头”的角度,偏航角Yaw可视为“摇头”的角度,滚转角Roll可视为“歪头/摆头”的角度。
在一些实施例中,终端基于步骤304中提取到的面部姿态信息,对该实体对象进行三维面部重建,得到虚拟形象的表情数据。由于该面部姿态信息被提供为多个面部关键点的二维位姿,且该表情数据被提供为该多个面部关键点的三维位姿,因此,对每个面部关键点来说,三维面部重建指代根据该面部关键点的二维位姿来重建其三维位姿的过程。
在一些实施例中,建立从二维平面坐标系到三维空间坐标系的位姿映射关系,每个面部关键点,基于该位姿映射关系将该面部关键点的二维位姿进行映射,得到该面部关键点的三维位姿,进而,将步骤303中各个面部关键点的三维位姿作为虚拟形象的表情数据。可选地,通过一个三维重建算法来建立上述位姿映射关系,该三维重建算法可通过计算机程序或者机器学习模型实现,上述三维重建算法可以通过插件的形式集成到UE4等游戏引擎中,本申请实施例对此不进行具体限定。
需要说明的是,当步骤301中获取的是视频数据流的时候,步骤304中会逐个视频帧提取实体对象的面部姿态信息,从而在本步骤306中实现逐帧三维面部重建,得到虚拟形象在每个动画帧中的表情数据。
在上述步骤305~306中,提供了一种基于该实体对象的姿态信息,对该实体对象进行三维重建,得到虚拟形象的动作数据和表情数据的可能实施方式,其中,该动作数据表征该虚拟形象基于该肢体姿态重建得到的肢体动作,该表情数据表征该虚拟形象基于该表情姿态重建得到的面部表情。由于将姿态信息分解成骨骼姿态信息和面部姿态信息,因此可以根据骨骼姿态信息重建出动作数据,根据面部姿态信息重建出表情数据,从而对动作数据和表情数据分别进行了精准的3D重建,提升了动画生成的精准程度和渲染效果。
在另一些实施例中,如果动画生成比较关注面部表情(比如USB外置相机仅聚焦到头部、颈部),那么也可以不建模肢体动作,此时不需要提取骨骼姿态信息,也不需要进行3D骨骼重建,只需要将虚拟形象的动作数据配置成站立动作,或者按照动画状态机配置其动画节点的变化即可;或者,如果动画生成比较关注肢体动作(比如执行一些肢体表演),那么也可以不建模面部表情,此时不需要提取面部姿态信息,也不需要进行3D面部重建,只需要将虚拟形象的表情数据配置成面无表情,或者根据音频内容来驱动唇形变化即可,本申请实施例对此不进行具体限定。
307、终端对该虚拟形象的骨骼蒙皮中的每个顶点,确定该虚拟形象的每个骨骼组件相对于该顶点的蒙皮权重。
其中,该蒙皮权重表征该顶点受到该骨骼组件的影响程度。
在一些实施例中,终端先获取虚拟形象的网格数据,再将该网格数据和各个骨骼组件绑定,得到虚拟形象的骨骼蒙皮,骨骼蒙皮包含多个顶点,对每个顶点,都确定各个骨骼组件相对于该顶点的蒙皮权重。
在一个示例性场景中,如图6所示,图6是本申请实施例提供的一种骨骼蒙皮方式的原理图,获取虚拟形象的原始模型(即三维模型)以及骨骼组件,将原始模型和骨骼组件绑定,得到虚拟形象的骨骼蒙皮,这里的骨骼蒙皮是指绑定了骨骼组件的虚拟形象Mesh,骨骼蒙皮实际上可以表示为一组Mesh顶点集合,对于Mesh顶点集合中的每个顶点,都需要计算每个骨骼组件相对于该顶点的蒙皮权重,比如,在包含N(N≥2)个骨骼组件的情况下,对于顶点v,计算骨骼组件1对顶点v的蒙皮权重,计算骨骼组件2对顶点v的蒙皮权重,以此类推,直到计算骨骼组件N对顶点v的蒙皮权重,这样顶点v将拿到N个蒙皮权重,每个蒙皮权重都表示顶点v受到对应骨骼组件的影响程度,这样通过N个蒙皮权重能够反映出顶点v受到哪些骨骼组件的影响,以及影响的权重。
下面,将通过步骤A1~A2,对一种可能的骨骼蒙皮获取方式进行说明。
A1、终端基于该虚拟形象的三维模型,导出该虚拟形象的网格数据。
其中,该三维模型执行默认肢体动作且具有默认面部表情,例如默认肢体动作是指不执行特定含义的肢体动作,如四肢自然放置的静态站立动作,例如默认面部表情是指不具有特定情感的面部表情,如五官自然形态下静态的面无表情;其中,该网格数据表征该三维模型的网格化的外表面。
在一些实施例中,终端以点云形式存储有多种不同类型的虚拟形象各自的三维模型,因此,基于该虚拟形象的形象ID,能够查询到该虚拟形象以点云形式存储的三维模型,对该点云形式的三维模型进行烘焙,能够导出该三维模型的网格数据(即原始Mesh)。
在另一些实施例中,如果虚拟形象支持用户进行个性化的捏脸操作,即,用户通过捏脸操作可以编辑虚拟形象的五官配置参数(如眼距、瞳距、下颌宽度、人中长度等),那么终端还可以存储用户的捏脸参数,并通过捏脸参数先调整虚拟形象的三维模型中的点云位置,进而根据调整以后的三维模型来导出网格数据,保证了导出的网格数据符合用户自定义的捏脸参数。
A2、终端对该三维模型的每个骨骼组件,绑定该骨骼组件所关联部位的网格数据,得到该虚拟形象的骨骼蒙皮。
其中,该骨骼组件表征该部位的骨架。
在一些实施例中,由于该三维模型包括3D骨骼模型和3D面部模型,将3D骨骼模型拆分成多个骨骼组件,再将3D面部模型视为一个特殊的控制面部表情动作的骨骼组件,这样虚拟形象的肢体动作和面部表情就能够通过全部的骨骼组件来进行控制。因此,终端可以将虚拟形象的各个骨骼组件分别与网格数据中对应的部分进行绑定,实现三维模型的骨骼蒙皮。
在上述步骤A1~A2中,由于不同虚拟形象可能会具有不同的体型,这样只需要替换骨骼组件,就能够实现对不同虚拟形象均导出骨骼蒙皮,从而能够扩展到各自不同类型的虚拟形象,具有广泛的通用性。在另一些实施例中,终端也可以预先存储每个虚拟形象的骨骼蒙皮,这样只需要根据虚拟形象的形象ID,查询到该虚拟形象的骨骼蒙皮即可。进一步的,假设虚拟形象配置有N个骨骼组件,在获取到虚拟形象的骨骼蒙皮以后,再导出骨骼蒙皮中每个顶点的N个蒙皮权重。
308、终端基于该动作数据和该表情数据,确定每个骨骼组件的位姿重建数据。
在一些实施例中,基于步骤305中的动作数据,能够控制3D骨骼模型包含的各个骨骼组件来呈现某种肢体动作,同理,基于步骤306中的表情数据,能够控制3D面部模型包含的特定骨骼组件来呈现某种面部表情,综合虚拟形象的肢体动作和面部表情,能够合成虚拟形象的动画数据。
在一些实施例中,为了便于合成动画数据,以骨骼组件为单位,对每个骨骼组件,都确定该骨骼组件的位姿重建数据,这样方便根据蒙皮权重来对骨骼蒙皮中的每个顶点施加形变(或者说偏移)。
下面,将通过步骤B1~B4,提供一种可能实施的位姿重建数据获取方式,通过以骨骼组件为单位来获取位姿重建数据,既可以直接利用骨骼组件的位姿重建数据实现骨骼动画,提升动画生成效率,也可以进一步合成顶点精度的逐顶点动画,从而提升动画生成的精细程度,提升动画生成的灵活性。
B1、终端对该虚拟形象的每个骨骼组件,确定该骨骼组件包含的重建关键点。
在一些实施例中,对于虚拟形象的N(N≥2)个骨骼组件中的每个骨骼组件,都可以从虚拟形象的三维模型中确定出该骨骼组件包含的多个重建关键点,其中,该重建关键点包括骨骼关键点或面部关键点中至少一者,本申请实施例对此不进行具体限定。
B2、终端在该重建关键点包含骨骼关键点的情况下,基于该动作数据,确定该重建关键点的三维位姿。
在一些实施例中,如果步骤B1中的多个重建关键点中包含至少一个骨骼关键点,那么基于步骤305中的动作数据,由于该动作数据包含各个骨骼关键点的三维位姿,因此查询该动作数据能够得到该至少一个骨骼关键点的三维位姿,从而找到重建关键点中包含的每个骨骼关键点的三维位姿。当然,如果步骤B1中的多个重建关键点中不含有任何骨骼关键点,无需执行本步骤B2。
B3、终端在该重建关键点包含面部关键点的情况下,基于该表情数据,确定该重建关键点的三维位姿。
在一些实施例中,如果步骤B1中的多个重建关键点中包含至少一个面部关键点,那么基于步骤306中的表情数据,由于该表情数据包含各个面部关键点的三维位姿,因此查询该表情数据能够得到该至少一个面部关键点的三维位姿,从而找到重建关键点中包含的每个面部关键点的三维位姿。当然,如果步骤B1中的多个重建关键点中不含有任何面部关键点,无需执行本步骤B3。
B4、终端将该骨骼组件包含的各个重建关键点的三维位姿,确定为该骨骼组件的位姿重建数据。
在一些实施例中,将步骤B2~B3中获取到的各个重建关键点的三维位姿,确定为当前骨骼组件的位姿重建数据,由于每个重建关键点的三维位姿,都涉及到位置信息和旋转信息这两个维度,比如使用6个位姿参数表征每个重建关键点的三维位姿,那么其中3个位姿参数表征在x、y、z三维空间坐标系中的位置坐标(即位置信息),另外3个位姿参数表征在x、y、z三维空间坐标系中的旋转角度(即旋转信息),那么这种情况下,每个骨骼组件的位姿重建数据可以视为包含位移重建信息和旋转重建信息。
在步骤B1~B4中,提供了一种可能实施的位姿重建数据获取方式,这样不管骨骼组件是涉及面部关键点还是骨骼关键点,都能够获取到其位姿重建数据,保证了位姿重建数据的准确度。进一步的,在获取到每个骨骼组件的位姿重建数据的基础上,可以直接利用骨骼组件的位姿重建数据实现骨骼动画,提升动画生成效率,也可以执行步骤309,进一步合成顶点精度的逐顶点动画,从而提升动画生成的精细程度,提升动画生成的灵活性。
309、终端基于该位姿重建数据和该蒙皮权重,确定每个顶点的顶点位置。
在一些实施例中,由于骨骼蒙皮以后,骨骼组件受到动作数据或表情数据的影响,而发生位移或者旋转(即位姿变化)时,自然会影响到绑定的网格数据中顶点的顶点位置,因此,需要重新计算网格数据中每个顶点的顶点位置,这样相当于通过动作数据和表情数据,在网格数据上对设定的顶点施加形变,从而控制骨骼蒙皮中的顶点进行位置偏移,使得从顶点层面控制虚拟形象呈现的肢体动作和表情姿态,而并不局限于预先设定的某些固定的动画行为,因此肢体动作和面部表情的重建精度更高,还原度和逼真度更高。
下面,将通过步骤C1~C2,以骨骼蒙皮中单个顶点的位置变换过程为例,介绍单个顶点的顶点位置确定方式。
C1、终端对该骨骼蒙皮的每个顶点,基于各个骨骼组件相对于该顶点的蒙皮权重,从各个骨骼组件中确定该顶点的关联骨骼组件。
在一些实施例中,对于步骤307中获取到的骨骼蒙皮中的每个顶点,都会计算出N(N≥2)个骨骼组件相对于该顶点的N个蒙皮权重,这样可以基于该顶点的N个蒙皮权重,从N个骨骼组件中找到该顶点的至少一个关联骨骼组件。
在一些实施例中,可以预先配置一个影响阈值,如果任一骨骼组件的蒙皮权重大于该影响阈值,则将该骨骼组件确定为该顶点的一个关联骨骼组件。其中,该影响阈值是预先配置的数值或者默认值,例如该影响阈值是0,或者0.2、0.5等大于或等于0的数值,这里对影响阈值的取值不进行具体限定。进一步,如果所有骨骼组件的蒙皮权重都小于或等于该影响阈值,那么不需要对顶点重新计算顶点位置,跳过当前顶点的位置计算,对下一个顶点开启计算顶点位置。
在另一些实施例中,还可以按照蒙皮权重从大到小的顺序,对N个骨骼组件进行排序,并挑选排序位于前K位的骨骼组件作为该顶点的K个关联骨骼组件,K≥1,相当于并不需要配置影响阈值,而是优选topK个关联骨骼组件,来重新计算顶点位置,本申请实施例对关联骨骼组件的选取方式不进行具体限定。
C2、终端基于该关联骨骼组件的位姿重建数据和该蒙皮权重,确定该顶点的顶点位置。
在一些实施例中,对骨骼蒙皮中的每个顶点来说,通过步骤C1能够从N个骨骼组件中筛选出K(K≥1)个关联骨骼组件,这样,只需要利用K个关联骨骼组件在步骤308中获取的K个位姿重建数据,以及K个关联骨骼组件各自对该顶点的K个蒙皮权重,来重新计算该顶点的顶点位置。在一些实施例中,利用K个蒙皮权重分别对K个位姿重建数据进行加权求和,得到该顶点的偏移向量,将该顶点在骨骼蒙皮中的初始位置上施加该偏移向量,得到该顶点更新后的顶点位置。
在一个示例性场景中,如图7所示,图7是本申请实施例提供的一种动画驱动流程的原理图,将步骤308中获取到的N个骨骼组件的位姿重建数据视为一个骨骼运动数据集合,那么骨骼运动数据集合中包含N个骨骼组件的位姿重建数据,每个位姿重建数据都包含一个位移重建信息和一个旋转重建信息。将以上骨骼运动数据集合称为驱动数据,将驱动数据输入到虚拟形象动画系统以后,可以由虚拟形象动画系统来重新计算骨骼蒙皮中每个顶点的顶点位置,进而在骨骼蒙皮中更新每个顶点的顶点位置,再输入到步骤310中进行渲染,相当于计算在驱动数据的影响下每个顶点是否要发生形变(或者说偏移),以及形变以后的顶点位置,这样能够从顶点粒度来控制虚拟形象的动画行为。
在步骤C1~C2中,对每个顶点来说,只需要关注K个关联骨骼组件的蒙皮权重和位姿重建数据,这样降低了顶点计算的计算量和复杂度,提升了动画生成效率,在另一些实施例中也可以不过滤关联骨骼组件,直接对每个顶点都利用N个骨骼组件的蒙皮权重和位姿重建数据,来进行顶点位置的重新计算,能够充分考虑全部骨骼组件对每个顶点造成的影响,从而提升动画重建精细程度。
310、终端基于该虚拟形象的外观资源和该顶点位置,合成该虚拟形象的动画数据。
其中,外观资源用于控制虚拟形象的外在表现,比如,该外观资源包括但不限于:头发、皮肤、眼睛、服饰、饰物、特效等。
其中,该动画数据表征该虚拟形象穿戴该外观资源、呈现该面部表情且执行该肢体动作。
在一些实施例中,基于虚拟形象的形象ID(Identification,标识),查询虚拟形象的外观资源,将查询到的外观资源结合骨骼蒙皮来合成虚拟形象的动画数据,并渲染该动画数据,对该动画数据进行可视化呈现,以使虚拟形象穿戴自身的外观资源,呈现出模拟实体对象的肢体动作和面部表情。其中,骨骼蒙皮中的各个顶点都通过步骤309提供的方式完成了顶点位置的重新计算。
在一些实施例中,根据重新计算了顶点位置以后的骨骼蒙皮,再结合虚拟形象自身的外观资源,驱动GPU的渲染管线,对以上骨骼蒙皮进行顶点着色、光栅化、像素着色等一系列渲染流程,最终能够将虚拟形象的动画数据进行可视化展示,即将虚拟形象的动画数据绘制到终端的显示屏上,从而显示虚拟形象的动画数据。在实时动画生成过程中,只需要逐帧显示虚拟形象的每个动画帧,就能够实现播放虚拟形象的动画的效果,实现实时、动态的动画驱动。
在一些实施例中,终端中创建有RHI(Render Hardware Interface,渲染硬件接口)线程即RHIThread,将上述虚拟形象的外观资源和经过形变的骨骼蒙皮提交到RHIThread,再由RHIThread执行图形API中的绘制命令,驱动GPU上的渲染管线来对虚拟形象进行渲染,得到虚拟形象的一个动画帧。
下面,将对任一个动画帧的GPU渲染流程进行说明,GPU的渲染管线涉及到顶点着色器、光栅化器和像素着色器,其中,顶点着色器是用于对网格顶点进行计算的渲染管线,光栅化器是用于将顶点着色器输出的结果装配成三角形网格、并按照配置光栅化成离散像素点的渲染管线,像素着色器是用于对光栅化后的每个离散像素点进行着色计算、完成像素点着色的渲染管线。
对网格数据中的每个顶点,动作数据和表情数据控制的是顶点位置,当然旋转角度这种姿态信息也可能会影响顶点的深度值,而外观资源则影响的是顶点的颜色值和深度值。首先,清空帧缓冲区的颜色和深度,接着,利用顶点着色器在z缓冲区中对骨骼蒙皮的每个顶点进行深度写入,即在z缓冲区中写入每个顶点的深度值,这里还涉及到一个深度排序的过程,深度排序将影响到透明度,处理一些遮挡或者半透明的显示效果,接着,利用光栅化器进行光栅化,接着,利用像素着色器在颜色缓冲区中对每个离散化后的像素点进行颜色写入,即在颜色缓冲区中写入每个像素点的像素值,每个像素点的像素值是由位于这个像素点的各个顶点的颜色值积分而来的,颜色值积分过程通常考虑顶点的透明度,最终能够在终端的显示屏中输出虚拟形象的一个动画帧。还需要说明的是,在顶点着色阶段通常还涉及到光照计算,具体采取的光照模型由虚拟形象或者渲染引擎决定。
其中,帧缓冲区用于存放当前动画帧中所有像素点的数据,帧缓冲区中包含一个z缓冲区和一个颜色缓冲区,z缓冲区是指帧缓冲区中的深度缓冲区,用于存储当前动画帧中每个像素点的深度值,而颜色缓冲区则用于存放当前动画帧中每个像素点的颜色值。
在步骤307~310中,提供了基于该虚拟形象的外观资源、该动作数据和该表情数据,合成该虚拟形象的动画数据的一种可能实施方式,能够在实体对象的视频数据的基础上模拟出虚拟形象的动画数据,并满足虚拟形象自身所需穿戴的外观资源。
需要说明的是,当步骤301中获取的是视频数据流的时候,步骤304中会逐个视频帧提取实体对象的骨骼姿态信息和面部姿态信息,进而在步骤305中实现逐帧三维骨骼重建,得到虚拟形象在每个动画帧中的动作数据,同理在步骤306中实现逐帧三维面部重建,得到虚拟形象在每个动画帧中的表情数据,在步骤309中逐帧重新计算骨骼蒙皮中每个顶点的顶点位置,进一步地,在本步骤310中就能够逐帧模拟出虚拟形象在每个动画帧中的动画数据。因此,在该视频数据包含多个视频帧的情况下,该动画数据包含多个动画帧,其中,每个动画帧关联于一个视频帧,该虚拟形象在该动画帧中的肢体动作和面部表情与该实体对象在该视频帧中的肢体动作和面部表情相匹配。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过实体对象的视频数据,提取到实体对象的在平面坐标系中呈现的肢体姿态和表情姿态,进而对实体对象进行三维重建,得到虚拟形象在空间坐标系中呈现的肢体动作和面部表情,进而结合虚拟形象的外观资源,合成虚拟形象的动画数据,使得在视频数据的驱动下,虚拟形象能够模拟和仿真实体对象的肢体动作和面部表情,这种动画生成流程不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。
进一步地,由于动画渲染时并不依赖于骨骼动画或者UE4原生的数字人系统,因此合成的虚拟形象动画并不局限于预先设定的几种动作类别,动画呈现时也不会有机械感或者衔接死板等问题,能够逐顶点实现虚拟形象的动画控制,其肢体动作和面部表情的重建精度细致到虚拟形象的网格数据中的顶点级别,能够在高精度的前提下控制虚拟形象精准模仿实体对象的肢体动作和面部表情,提升虚拟形象的动画生成精度,具有很高的灵活性和可控性,优化虚拟形象的动画效果。
在上一实施例中,详细介绍了本申请动画生成方案的各个步骤的多种实施方式,而下面,将以USB外置相机拍摄视频数据流为例,介绍如何基于UE4引擎来驱动虚拟形象的实时动画生成。
图8是本申请实施例提供的一种动画生成方案的原理性流程图,如图8所示,USB外置相机接入各平台终端,各平台终端和USB外置相机在平台层进行驱动适配,完成USB外置相机和终端的通信连接;接着,UE4可以通过插件的形式调用USB外置相机,获取采集到的视频数据流;接着,UE4对视频数据流进行数据预处理(即视频格式转换),得到预设视频格式的视频数据流(简称为算法协议数据),其中视频格式转换可以使用异步线程加速或者GPU硬件加速;接着,三维重建算法以插件形式集成在UE4中,将算法协议数据输入到三维重建算法,得到每个骨骼组件的位姿重建数据,其中每个位姿重建数据包含一个位移重建信息和一个旋转重建信息,将以上各个骨骼组件的位置重建数据统称算法结果;接着,将算法结果输入到UE4虚拟形象的动画蓝图,控制虚拟形象的骨骼组件位姿变化,进而影响到骨骼蒙皮中顶点的顶点位置,各个重新计算以后的顶点位置将影响到虚拟形象的动画数据,从而对虚拟形象的动画数据进行渲染,对虚拟形象的外观资源、肢体动作和面部表情进行可视化呈现,即,显示虚拟形象的人体骨骼和面部表情的重建结果。
图9是本申请实施例提供的一种动画生成方案的逻辑原理图,如图9所示,在驱动层实现各平台适配,这样终端能够检测到USB外置相机的连接状态,设置USB外置相机的拍摄参数,如采集帧率、分辨率等,从而使得终端能够顺利驱动USB外置相机实时拍摄视频数据流;进一步,在算法层对USB外置相机采集到的视频数据流进行数据预处理,转换成三维重建算法适配的预设视频格式的视频数据流,再对预设视频格式的视频数据流提取实体对象的姿态信息,进而三维重建出来虚拟形象的动作数据和表情数据;进一步,在渲染层中根据虚拟形象的动作数据和表情数据,结合虚拟形象的外观资源,来驱动合成虚拟形象的动画数据,并对合成的动画数据进行渲染,使得最终渲染结果中虚拟形象的肢体动作、面部表情都高度模拟出实体对象做出的肢体动作、面部表情,这样能够满足任意实时性较高的场景下对虚拟形象的高质量动画渲染。
在以上动画生成方案中,通过USB外置相机采集视频数据流,而由于USB外置相机的兼容性好,易于适配到任意平台的终端,因此可以适配于各种类型的终端,如移动手机、个人计算机等,还能够适配于自带相机的显示设备,比如会议室的显示屏、投影仪、商场的显示屏等,覆盖到更多可用的普适性场景,使得数字人等虚拟形象的实时动画渲染不再局限于专业影视制作场景。进一步的,打通了UE4中USB外置相机采集视频数据、算法重建动作数据和表情数据、驱动虚拟形象模拟真人行为的一系列处理链路,拓展了虚拟形象的应用场景,并且针对各类显示设备都能够渲染驱动高质量的虚拟形象,只要终端支持UE4就能够实现用户开箱即用,使用成本低,并且跨平台,极大提升动画生成效率,而且降低动画生成的技术门槛和合成成本,改善用户体验。
图10是本申请实施例提供的一种虚拟形象的动画生成装置的结构示意图,如图10所示,该装置包括:
获取模块1001,用于获取实体对象的视频数据;
提取模块1002,用于基于该视频数据,提取该实体对象的姿态信息,该姿态信息表征该实体对象在该视频数据呈现的肢体姿态和表情姿态;
重建模块1003,用于基于该姿态信息,对该实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,该动作数据表征该虚拟形象基于该肢体姿态重建得到的肢体动作,该表情数据表征该虚拟形象基于该表情姿态重建得到的面部表情;
合成模块1004,用于基于该虚拟形象的外观资源、该动作数据和该表情数据,合成该虚拟形象的动画数据,该动画数据表征该虚拟形象穿戴该外观资源、呈现该面部表情且执行该肢体动作。
本申请实施例提供的装置,通过实体对象的视频数据,提取到实体对象的在平面坐标系中呈现的肢体姿态和表情姿态,进而对实体对象进行三维重建,得到虚拟形象在空间坐标系中呈现的肢体动作和面部表情,进而结合虚拟形象的外观资源,合成虚拟形象的动画数据,使得在视频数据的驱动下,虚拟形象能够模拟和仿真实体对象的肢体动作和面部表情,这种动画生成流程不依赖于造价昂贵的动捕设备,能够推广适用到直播、游戏等通用场景,而且可以实时重建动画,满足较高的实时性需求,动画生成的时延低,动画生成效率高。
在一些实施例中,该提取模块1002用于:
确定该实体对象的骨骼关键点和面部关键点;
基于该视频数据,提取该骨骼关键点的骨骼姿态信息和该面部关键点的面部姿态信息,该骨骼姿态信息表征该骨骼关键点的二维位姿,该面部关键点表征该面部关键点的二维位姿。
在一些实施例中,该重建模块1003用于:
基于该骨骼姿态信息,重建该虚拟形象的骨骼关键点的动作数据,该动作数据表征该骨骼关键点的三维位姿;
基于该面部姿态信息,重建该虚拟形象的面部关键点的表情数据,该表情数据表征该面部关键点的三维位姿。
在一些实施例中,基于图10的装置组成,该合成模块1004包括:
权重确定单元,用于对该虚拟形象的骨骼蒙皮中的每个顶点,确定该虚拟形象的每个骨骼组件相对于该顶点的蒙皮权重,该蒙皮权重表征该顶点受到该骨骼组件的影响程度;
位姿确定单元,用于基于该动作数据和该表情数据,确定每个骨骼组件的位姿重建数据;
位置确定单元,用于基于该位姿重建数据和该蒙皮权重,确定每个顶点的顶点位置;
动画合成单元,用于基于该外观资源和该顶点位置,合成该动画数据。
在一些实施例中,基于图10的装置组成,该装置还包括:
导出模块,用于基于该虚拟形象的三维模型,导出该虚拟形象的网格数据,该三维模型执行默认肢体动作且具有默认面部表情,该网格数据表征该三维模型的网格化的外表面;
绑定模块,用于对该三维模型的每个骨骼组件,绑定该骨骼组件所关联部位的网格数据,得到该虚拟形象的骨骼蒙皮,该骨骼组件表征该部位的骨架。
在一些实施例中,该位姿确定单元用于:
对该虚拟形象的每个骨骼组件,确定该骨骼组件包含的重建关键点;
在该重建关键点包含骨骼关键点的情况下,基于该动作数据,确定该重建关键点的三维位姿;
在该重建关键点包含面部关键点的情况下,基于该表情数据,确定该重建关键点的三维位姿;
将该骨骼组件包含的各个重建关键点的三维位姿,确定为该骨骼组件的位姿重建数据。
在一些实施例中,该位置确定单元用于:
对该骨骼蒙皮的每个顶点,基于各个骨骼组件相对于该顶点的蒙皮权重,从各个骨骼组件中确定该顶点的关联骨骼组件;
基于该关联骨骼组件的位姿重建数据和该蒙皮权重,确定该顶点的顶点位置。
在一些实施例中,基于图10的装置组成,该获取模块1001包括:
拍摄单元,用于基于外置相机拍摄该实体对象的视频数据;
转换单元,用于将该视频数据从该外置相机支持的视频格式,转换为预设视频格式,该预设视频格式为支持实体对象三维重建的格式。
在一些实施例中,该转换单元用于执行下述至少一项:
启动用于格式转换的子线程,通过该子线程将该视频数据转换成该预设视频格式;
调用图形处理器GPU的绘制命令,通过该GPU将该视频数据转换成该预设视频格式。
在一些实施例中,在该视频数据包含多个视频帧的情况下,该动画数据包含多个动画帧,其中,每个动画帧关联于一个视频帧,该虚拟形象在该动画帧中的肢体动作和面部表情与该实体对象在该视频帧中的肢体动作和面部表情相匹配。
上述所有可选技术方案,能够采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的虚拟形象的动画生成装置在生成虚拟形象的动画数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,能够根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟形象的动画生成装置与虚拟形象的动画生成方法实施例属于同一构思,其具体实现过程详见虚拟形象的动画生成方法实施例,这里不再赘述。
图11是本申请实施例提供的一种计算机设备的结构示意图,如图11所示,以计算机设备为终端为例进行说明。通常,终端1100包括有:处理器1101和存储器1102。
可选地,处理器1101包括一个或多个处理核心,比如4核心处理器、8核心处理器等。可选地,处理器1101采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable LogicArray,可编程逻辑阵列)中的至少一种硬件形式来实现。在一些实施例中,处理器1101包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
在一些实施例中,存储器1102包括一个或多个计算机可读存储介质,可选地,该计算机可读存储介质是非暂态的。可选地,存储器1102还包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1101所执行以实现本申请中各个实施例提供的虚拟形象的动画生成方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间能够通过总线或信号线相连。各个外围设备能够通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、显示屏1105、摄像头组件1106、音频电路1107和电源1108中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。可选地,射频电路1104通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。可选地,该UI包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号能够作为控制信号输入至处理器1101进行处理。可选地,显示屏1105还用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在一些实施例中,显示屏1105是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,可选地,显示屏1105设置成非矩形的不规则图形,也即异形屏。可选地,显示屏1105采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还包括闪光灯。可选地,闪光灯是单色温闪光灯,或者是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,用于不同色温下的光线补偿。
在一些实施例中,音频电路1107包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风为多个,分别设置在终端1100的不同部位。可选地,麦克风是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。可选地,扬声器是传统的薄膜扬声器,或者是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅能够将电信号转换为人类可听见的声波,也能够将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还包括耳机插孔。
电源1108用于为终端1100中的各个组件进行供电。可选地,电源1108是交流电、直流电、一次性电池或可充电电池。当电源1108包括可充电电池时,该可充电电池支持有线充电或无线充电。该可充电电池还用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、光学传感器1114以及接近传感器1115。
在一些实施例中,加速度传感器1111检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111用于检测重力加速度在三个坐标轴上的分量。可选地,处理器1101根据加速度传感器1111采集的重力加速度信号,控制显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还用于游戏或者用户的运动数据的采集。
在一些实施例中,陀螺仪传感器1112检测终端1100的机体方向及转动角度,陀螺仪传感器1112与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
可选地,压力传感器1113设置在终端1100的侧边框和/或显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,能够检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在显示屏1105的下层时,由处理器1101根据用户对显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器1114用于采集环境光强度。在一个实施例中,处理器1101根据光学传感器1114采集的环境光强度,控制显示屏1105的显示亮度。具体地,当环境光强度较高时,调高显示屏1105的显示亮度;当环境光强度较低时,调低显示屏1105的显示亮度。在另一个实施例中,处理器1101还根据光学传感器1114采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1115,也称距离传感器,通常设置在终端1100的前面板。接近传感器1115用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1115检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制显示屏1105从亮屏状态切换为息屏状态;当接近传感器1115检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员能够理解,图11中示出的结构并不构成对终端1100的限定,能够包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图12是本申请实施例提供的另一种计算机设备的结构示意图,如图12所示,以计算机设备为服务器为例,该服务器1200可因配置或性能不同而产生比较大的差异,该服务器1200包括一个或一个以上处理器(Central Processing Units,CPU)1201和一个或一个以上的存储器1202,其中,该存储器1202中存储有至少一条计算机程序,该至少一条计算机程序由该一个或一个以上处理器1201加载并执行以实现上述各个实施例提供的虚拟形象的动画生成方法。可选地,该服务器1200还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1200还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条计算机程序的存储器,上述至少一条计算机程序可由计算机设备中的处理器执行以完成上述各个实施例中的虚拟形象的动画生成方法。例如,该计算机可读存储介质包括ROM(Read-OnlyMemory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(CompactDisc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条计算机程序,该一条或多条计算机程序存储在计算机可读存储介质中。计算机设备的一个或多个处理器能够从计算机可读存储介质中读取该一条或多条计算机程序,该一个或多个处理器执行该一条或多条计算机程序,使得计算机设备能够执行以完成上述实施例中的虚拟形象的动画生成方法。
本领域普通技术人员能够理解实现上述实施例的全部或部分步骤能够通过硬件来完成,也能够通过程序来指令相关的硬件完成,可选地,该程序存储于一种计算机可读存储介质中,可选地,上述提到的存储介质是只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种虚拟形象的动画生成方法,其特征在于,所述方法包括:
获取实体对象的视频数据;
基于所述视频数据,提取所述实体对象的姿态信息,所述姿态信息表征所述实体对象在所述视频数据呈现的肢体姿态和表情姿态;
基于所述姿态信息,对所述实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,所述动作数据表征所述虚拟形象基于所述肢体姿态重建得到的肢体动作,所述表情数据表征所述虚拟形象基于所述表情姿态重建得到的面部表情;
基于所述虚拟形象的外观资源、所述动作数据和所述表情数据,合成所述虚拟形象的动画数据,所述动画数据表征所述虚拟形象穿戴所述外观资源、呈现所述面部表情且执行所述肢体动作。
2.根据权利要求1所述的方法,其特征在于,所述基于所述视频数据,提取所述实体对象的姿态信息包括:
确定所述实体对象的骨骼关键点和面部关键点;
基于所述视频数据,提取所述骨骼关键点的骨骼姿态信息和所述面部关键点的面部姿态信息,所述骨骼姿态信息表征所述骨骼关键点的二维位姿,所述面部关键点表征所述面部关键点的二维位姿。
3.根据权利要求2所述的方法,其特征在于,所述基于所述姿态信息,对所述实体对象进行三维重建,得到虚拟形象的动作数据和表情数据包括:
基于所述骨骼姿态信息,重建所述虚拟形象的骨骼关键点的动作数据,所述动作数据表征所述骨骼关键点的三维位姿;
基于所述面部姿态信息,重建所述虚拟形象的面部关键点的表情数据,所述表情数据表征所述面部关键点的三维位姿。
4.根据权利要求1所述的方法,其特征在于,所述基于所述虚拟形象的外观资源、所述动作数据和所述表情数据,合成所述虚拟形象的动画数据包括:
对所述虚拟形象的骨骼蒙皮中的每个顶点,确定所述虚拟形象的每个骨骼组件相对于所述顶点的蒙皮权重,所述蒙皮权重表征所述顶点受到所述骨骼组件的影响程度;
基于所述动作数据和所述表情数据,确定每个骨骼组件的位姿重建数据;
基于所述位姿重建数据和所述蒙皮权重,确定每个顶点的顶点位置;
基于所述外观资源和所述顶点位置,合成所述动画数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于所述虚拟形象的三维模型,导出所述虚拟形象的网格数据,所述三维模型执行默认肢体动作且具有默认面部表情,所述网格数据表征所述三维模型的网格化的外表面;
对所述三维模型的每个骨骼组件,绑定所述骨骼组件所关联部位的网格数据,得到所述虚拟形象的骨骼蒙皮,所述骨骼组件表征所述部位的骨架。
6.根据权利要求4所述的方法,其特征在于,所述基于所述动作数据和所述表情数据,确定每个骨骼组件的位姿重建数据包括:
对所述虚拟形象的每个骨骼组件,确定所述骨骼组件包含的重建关键点;
在所述重建关键点包含骨骼关键点的情况下,基于所述动作数据,确定所述重建关键点的三维位姿;
在所述重建关键点包含面部关键点的情况下,基于所述表情数据,确定所述重建关键点的三维位姿;
将所述骨骼组件包含的各个重建关键点的三维位姿,确定为所述骨骼组件的位姿重建数据。
7.根据权利要求4所述的方法,其特征在于,所述基于所述位姿重建数据和所述蒙皮权重,确定每个顶点的顶点位置包括:
对所述骨骼蒙皮的每个顶点,基于各个骨骼组件相对于所述顶点的蒙皮权重,从各个骨骼组件中确定所述顶点的关联骨骼组件;
基于所述关联骨骼组件的位姿重建数据和所述蒙皮权重,确定所述顶点的顶点位置。
8.根据权利要求1所述的方法,其特征在于,所述获取实体对象的视频数据包括:
基于外置相机拍摄所述实体对象的视频数据;
将所述视频数据从所述外置相机支持的视频格式,转换为预设视频格式,所述预设视频格式为支持实体对象三维重建的格式。
9.根据权利要求8所述的方法,其特征在于,所述将所述视频数据从所述外置相机支持的视频格式,转换为预设视频格式包括下述至少一项:
启动用于格式转换的子线程,通过所述子线程将所述视频数据转换成所述预设视频格式;
调用图形处理器GPU的绘制命令,通过所述GPU将所述视频数据转换成所述预设视频格式。
10.根据权利要求1-9中任一项所述的方法,其特征在于,在所述视频数据包含多个视频帧的情况下,所述动画数据包含多个动画帧,其中,每个动画帧关联于一个视频帧,所述虚拟形象在所述动画帧中的肢体动作和面部表情与所述实体对象在所述视频帧中的肢体动作和面部表情相匹配。
11.一种虚拟形象的动画生成装置,其特征在于,所述装置包括:
获取模块,用于获取实体对象的视频数据;
提取模块,用于基于所述视频数据,提取所述实体对象的姿态信息,所述姿态信息表征所述实体对象在所述视频数据呈现的肢体姿态和表情姿态;
重建模块,用于基于所述姿态信息,对所述实体对象进行三维重建,得到虚拟形象的动作数据和表情数据,所述动作数据表征所述虚拟形象基于所述肢体姿态重建得到的肢体动作,所述表情数据表征所述虚拟形象基于所述表情姿态重建得到的面部表情;
合成模块,用于基于所述虚拟形象的外观资源、所述动作数据和所述表情数据,合成所述虚拟形象的动画数据,所述动画数据表征所述虚拟形象穿戴所述外观资源、呈现所述面部表情且执行所述肢体动作。
12.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求10任一项所述的虚拟形象的动画生成方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求10任一项所述的虚拟形象的动画生成方法。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现如权利要求1至权利要求10任一项所述的虚拟形象的动画生成方法。
CN202310613703.0A 2023-05-26 2023-05-26 虚拟形象的动画生成方法、装置、计算机设备及存储介质 Pending CN116958344A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310613703.0A CN116958344A (zh) 2023-05-26 2023-05-26 虚拟形象的动画生成方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310613703.0A CN116958344A (zh) 2023-05-26 2023-05-26 虚拟形象的动画生成方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116958344A true CN116958344A (zh) 2023-10-27

Family

ID=88446878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310613703.0A Pending CN116958344A (zh) 2023-05-26 2023-05-26 虚拟形象的动画生成方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116958344A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349484A (zh) * 2023-12-06 2024-01-05 四川物通科技有限公司 一种基于元宇宙的虚实融合方法及其系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349484A (zh) * 2023-12-06 2024-01-05 四川物通科技有限公司 一种基于元宇宙的虚实融合方法及其系统
CN117349484B (zh) * 2023-12-06 2024-02-27 四川物通科技有限公司 一种基于元宇宙的虚实融合方法及其系统

Similar Documents

Publication Publication Date Title
Gonzalez-Franco et al. The rocketbox library and the utility of freely available rigged avatars
US10540817B2 (en) System and method for creating a full head 3D morphable model
CN112037311B (zh) 一种动画生成的方法、动画播放的方法以及相关装置
CN106575445B (zh) 毛皮虚拟化身动画
US6700586B1 (en) Low cost graphics with stitching processing hardware support for skeletal animation
KR101041723B1 (ko) 3차원 비디오게임 시스템
CN113272870A (zh) 用于逼真的实时人像动画的系统和方法
KR20220051376A (ko) 메시징 시스템에서의 3d 데이터 생성
CN112634416B (zh) 虚拟形象模型的生成方法、装置、电子设备及存储介质
CN116091676B (zh) 虚拟对象的面部渲染方法及点云特征提取模型的训练方法
EP4248413A1 (en) Multiple device sensor input based avatar
CN116228943B (zh) 虚拟对象面部重建方法、面部重建网络训练方法及装置
US20130229413A1 (en) Live editing and integrated control of image-based lighting of 3d models
CN112053370A (zh) 基于增强现实的显示方法、设备及存储介质
CN112053449A (zh) 基于增强现实的显示方法、设备及存储介质
CN115331265A (zh) 姿态检测模型的训练方法和数字人的驱动方法、装置
CN116958344A (zh) 虚拟形象的动画生成方法、装置、计算机设备及存储介质
CN115082607A (zh) 虚拟角色头发渲染方法、装置、电子设备和存储介质
KR20160134883A (ko) 영상컨텐츠 적용 디지털액터의 운용방법
Fu et al. Real-time multimodal human–avatar interaction
Soares et al. Designing a highly immersive interactive environment: The virtual mine
CN111489426B (zh) 表情生成方法、装置、设备和存储介质
CN114026524B (zh) 用于动画化人脸的方法、系统、以及计算机可读介质
JP6965439B2 (ja) 基準画像生成装置、表示画像生成装置、基準画像生成方法、および表示画像生成方法
CN112950753A (zh) 虚拟植物显示方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40099451

Country of ref document: HK