基于应用程序框架的3D图像实现系统及方法转让专利

申请号 : CN202210814006.7

文献号 : CN115170707B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 上海哔哩哔哩科技有限公司

摘要 :

本申请公开了一种3D图像实现方法,所述方法包括:加载目标格式文件;根据所述目标格式文件,获取用于构建包括3D图像的数据;提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,通过提供的各项能力或对外的接口导出所述新增属性对应的功能代码/效果数据。本申请实施例还提供基于应用程序框架的3D图像实现系统、装置、设备及计算机可读存储介质。本申请可以构建3D图像,兼容GLTF格式的文件,通过服务层提供多个功能性的扩展,从而可以支持目标格式文件包括新增属性在内的各个属性。

权利要求 :

1.一种基于应用程序框架的3D图像实现系统,其特征在于,包括:Runtime层,用于加载目标格式文件;

数据提供层,用于根据所述目标格式文件,获取用于构建包括3D图像的数据;

服务层,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;

其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务层用于导出所述新增属性对应的功能代码/效果数据;

所述Runtime层还用于:

驱动角色的面捕表情和肢体动作、场景构建;

对多个场景进行管理;其中,目标格式文件包括多个场景;

所述服务层还用于:

导入/导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;其中,所述角色数据包括:所述新增属性对应的功能代码,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据;

为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互;

提供文件生产服务,用于生成已经导入所述3D图像数据的目标格式文件。

2.根据权利要求1所述的系统,其特征在于,所述Runtime层还用于:对多个场景进行管理;其中,所述管理包括延迟加载主场景之外的其他场景。

3.根据权利要求1至2任意一项所述的系统,其特征在于,还包括输入操作层,用于:定义物体的交互属性,所述交互属性用于指示物体是否可交互;

定义用于外部输入及其绑定的事件,所述外部输入包括键盘操作和/或鼠标操作;

定义3D场景中的物体动作以其绑定的事件;

定义预设监测接口的输入行为,以及与该预设监测接口的输入行为绑定的自定义事件。

4.根据权利要求3所述的系统,其特征在于,所述输入操作还定义有:物体与事件之间的绑定关系,所述绑定关系为全局属性或局部属性;

当监测到针对所述物体所产生的目标事件,则执行与所述目标事件对应的响应。

5.根据权利要求1至2任意一项所述的系统,其特征在于,还包括工具集层,用于:用于提供多个工具,所述多个工具用于新增所述目标格式支持的组件数据和材质数据。

6.一种3D图像实现方法,其特征在于,包括:加载目标格式文件;

根据所述目标格式文件,获取用于构建包括3D图像的数据;

提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;

其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,通过提供的各项能力或对外的接口导出所述新增属性对应的功能代码/效果数据;

驱动角色的面捕表情和肢体动作、场景构建;

对多个场景进行管理;其中,目标格式文件包括多个场景;

导入/导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;其中,所述角色数据包括:所述新增属性对应的功能代码,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据;

为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互;

提供文件生产服务,用于生成已经导入所述3D图像数据的目标格式文件。

7.一种3D图像实现装置,其特征在于,所述装置包括:加载模块,用于加载目标格式文件;

获取模块,用于根据所述目标格式文件,获取用于构建包括3D图像的数据;

服务模块,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;

其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务模块用于导出所述新增属性对应的功能代码/效果数据;

所述装置还用于驱动角色的面捕表情和肢体动作、场景构建;

所述装置还包括:

管理模块,用于对多个场景进行管理;其中,目标格式文件包括多个场景;

导出模块,用于导入/导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;其中,所述角色数据包括:所述新增属性对应的功能代码,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据;

适配模块,用于为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互;

生成模块,用于提供文件生产服务,用于生成已经导入所述3D图像数据的目标格式文件。

8.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求6所述的3D图像实现方法的步骤。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求6所述的3D图像实现方法的步骤。

说明书 :

基于应用程序框架的3D图像实现系统及方法

技术领域

[0001] 本申请实施例涉及图像处理领域,尤其涉及一种基于应用程序框架的3D图像实现系统,以一种3D图像实现方法、装置、计算机设备和计算机可读存储介质。

背景技术

[0002] 随着计算机技术的发展,三维画面越来越受到广大的用户的青睐。因此,三维模型格式被提出,并广泛应用于直播、游戏等各场景中,实现各种三维可视化设计。然而,现有的三维模型格式不能满足各类场景的应用,且扩展支持差。

发明内容

[0003] 本申请实施例的目的是提供一种基于应用程序框架的3D图像实现系统,以一种3D图像实现方法、装置、计算机设备和计算机可读存储介质,用于解决上述问题。
[0004] 本申请实施例的一个方面提供了一种基于应用程序框架的3D图像实现系统,包括:
[0005] Runtime层,用于加载目标格式文件;
[0006] 数据提供层,用于根据所述目标格式文件,获取用于构建包括3D图像的数据;
[0007] 服务层,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;
[0008] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务层用于导出所述新增属性对应的功能代码/效果数据。
[0009] 可选的,所述Runtime层还用于:
[0010] 对多个场景进行管理;其中,所述管理包括延迟加载主场景之外的其他场景。
[0011] 可选的,所述服务层用于:
[0012] 导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;
[0013] 其中,所述角色数据包括:所述新增属性对应的功能代码;
[0014] 其中,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据。
[0015] 可选的,所述服务层用于:
[0016] 为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互。
[0017] 可选的,所述服务层用于:
[0018] 提供文件生产服务,用于已经导入所述3D图像数据的目标格式文件。
[0019] 可选的,还包括输入操作层,用于:
[0020] 定义物体的交互属性,所述交互属性用于指示物体是否可交互;
[0021] 定义用于外部输入及其绑定的事件,所述外部输入包括键盘操作和/或鼠标操作;
[0022] 定义3D场景中的物体动作以其绑定的事件;
[0023] 定义预设监测接口的输入行为,以及与该预设监测接口的输入行为绑定的自定义事件。
[0024] 可选的,所述输入操作还定义有:物体与事件之间的绑定关系,所述绑定关系为全局属性或局部属性;
[0025] 当监测到针对所述物体所产生的目标事件,则执行与所述目标事件对应的响应。
[0026] 可选的,还包括工具集层,用于:
[0027] 用于提供多个工具,所述多个工具用于新增所述目标格式支持的组件数据和材质数据。
[0028] 本申请实施例的一个方面又提供了一种3D图像实现方法,包括:
[0029] 加载目标格式文件;
[0030] 根据所述目标格式文件,获取用于构建包括3D图像的数据;
[0031] 提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;
[0032] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,通过提供的各项能力或对外的接口导出所述新增属性对应的功能代码/效果数据。
[0033] 本申请实施例的一个方面又提供了一种3D图像实现装置,所述装置包括[0034] 加载模块,用于加载目标格式文件;
[0035] 获取模块,用于根据所述目标格式文件,获取用于构建包括3D图像的数据;
[0036] 服务模块,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;
[0037] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务模块用于导出所述新增属性对应的功能代码/效果数据。
[0038] 本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上述3D图像实现方法的步骤。
[0039] 本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上述3D图像实现方法的步骤。
[0040] 本申请实施例提供的系统、方法、装置、设备及计算机可读存储介质,包括如下优点:
[0041] 基于目标格式文件构建3D图像,可以兼容GLTF格式的文件,通过服务层提供多个功能性的扩展,从而可以支持目标格式文件包括新增属性在内的各个属性。

附图说明

[0042] 图1示意性示出了根据本申请实施例的3D图像实现方法的应用环境图;
[0043] 图2示意性示出了软件框架图;
[0044] 图3示意性示出了应用程序框架图;
[0045] 图4示意性示出了根据本申请实施例二的3D图像实现装置的流程图;
[0046] 图5示意性示出了根据本申请实施例三的3D图像实现装置的框图;
[0047] 图6示意性示出了根据本申请实施例四的适于实现3D图像实现方法的计算机设备的硬件架构示意图。

具体实施方式

[0048] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0049] 需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
[0050] 在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
[0051] 为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
[0052] 当前了解到的几种3D文件格式有:FBX、DAZ、USD、AssetBundle、Pak、MMD、VRM等。
[0053] FBX、DAZ、USD等格式:不能运行时加载,使用它们需要预先在游戏引擎生成中间数据用于运行时渲染,无法直接作为传播载体给到用户端,更适合作为生产工具而不是消费载体仅限于专业领域用专业工具作为生产力的媒介,不适合作为消费载体。
[0054] AssetBundle、Pak等格式:与引擎版本强绑定,升级引擎版本会导致所有资源需要重新打包,无法适用于以玩家创作为创意主题的产品。与操作系统强相关,不同平台的资源包不通用,需分别生成。无法作为独立资源进行传播、交易,无法被赋予虚拟资产的价值。无法运行时导出,无法进行再创作修改等,资源不能复用。
[0055] MMD(MikuMikuDance)格式:用于3D动画电影场景,仅支持在独家提供的工具中作为工程导出视频,有商用许可限制,无生态链支持其在游戏或vTuber(Virtual YouTuber,虚拟UP主)中的应用。
[0056] VRM格式:用于虚拟直播和社交类VR游戏中,但仅包含角色部分数据,无法扩展更大的使用场景,渲染效果差,有区域性限制,如口型适配只有日文,Shader(着色器)仅支持MToon(具有全局照明的卡通着色器)、Unlit(不受光材质的着色器)和PBR(Physicallly‑Based Rendering,物理渲染),扩展灵活度差,如不支持动画、不支持场景加载、第三方也无法功能扩展,从而阻碍了vTuber发展。
[0057] 如上所述,上述几种3D文件格式均具有某些局限性。为了支持玩家创作高自由度的3D场景,并进行分享交易,且使用不受操作系统、工具类型、工具版本等技术因素的影响,本申请提供了一种新文件格式。该格式不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时进行加载和导出。
[0058] 新文件格式(目标格式)包括GLTF格式的原规范,并在Extensions和Extras字段来开发功能,兼容已有的GLTF文件,确保不破坏标准GLTF的Json Scheme,以使其能被其他工具打开并修改;保留常规GLTF工具对该文件的预览性,使得非专用工具也能在一定程度上保留预览和编辑的能力,并且保证文件最小的数据结构,支持字段使用缺省数据;不需要大量复用的数据在Extra字段中保存,具备很强通用性和复用性的数据保存在Extension,且为了优化文件加载速度和降低对内存的占用,提供了两套不同的加载机制,用于适配不同的使用场景。
[0059] 本申请旨在提供支持上述新文件格式的应用程序框架,以展示和编辑新文件格式的3D图像。
[0060] 以下为本申请的术语解释:
[0061] 3D(ThreeDimensional,三维)图像,是图像文件的其中一种,用于存储关于三维模型的信息。3D图像包括三维模型、3D动画、3D项目文件。3D图像可以包括三维软件所解释的三维空间中的多边形和顶点组成的模型信息,其中,可能还包含颜色、纹理、几何形状、光源以及阴影等信息。3D图像文件格式可以用于VR、3D打印、游戏、电影特效、建筑、医药以及其它相关场景中。
[0062] GLTF(Graphics Language Transmission Format,图形语言交换格式):三维计算机图形格式和标准,其支持储存三维模型、外观、场景及动画,是用于3D资产(Asset)的简化的、可互操作的格式,最大限度地减少应用程序的文件大小和处理难度。GLTF资产是JSON文件加上支持的外部数据。具体来说,GLTF资产包含完整场景描述的JSON格式文件(.GLTF):节点层次结构、材质、相机以及网格、动画和其他构造的描述符信息;包含几何和动画数据以及其他基于缓冲区的数据的二进制文件(.bin);和纹理(.jpg、.png)。场景中3D对象是使用连接到节点的meshes(网格)定义的。材质则用于定义对象的外观。Animations(动画)描述3D对象如何随着时间的推移转换3D对象。Skins(蒙皮)定义了对物体的几何形状的方式基于骨架姿势变形。Cameras(相机)描述了渲染器的视图配置。
[0063] 资源:可以包括图片、Shader(着色代码)、材质、模型、动画等。
[0064] 材质(Material),为表现物体对光的交互,供渲染器读取的数据集,包括贴图、光照算法等。
[0065] 纹理(Texture),为一段有规律、可重复的位图,是基本的数据输入单位。
[0066] 贴图(Map),包括纹理以及其他很多信息,如纹理坐标集、贴图输入输出控制等。贴图包括多种形式,如光照贴图、环境贴图、反射贴图等。其中,光照贴图用于模拟物体表面的光照效果。环境贴图包括六个纹理,以及对应的纹理坐标集。
[0067] 纹理贴图(Texture mapping),通过坐标集(如UV坐标)将纹理映射到三维物体的表面。
[0068] AssetBundle:Unity支持的一种文件储存格式,也是Unity官方推荐的资源存储与更新方式,它可以对资源(Asset)进行压缩,分组打包,动态加载,以及实现热更新。
[0069] FBX:是FilmBoX软件所使用的格式,后改称Motionbuilder。FBX可以用在诸如Max、Maya、Softimage等软件间进行模型、材质、动作和摄影机信息的互导。
[0070] DAZ:是由建模程序DAZ Studio创建的3D场景的文件格式。
[0071] USD(Universal Scene Description,通用场景描述),是Pixar提供的基于动画制作电影全流程的文件格式。
[0072] VRM(Virtual Reality Modeling,虚拟现实建模):为一种虚拟3D人形的模型格式。
[0073] Avatar:为人形态的3D角色模型。
[0074] Metaverse:元宇宙,或称为后设宇宙、形上宇宙、超感空间、虚空间,是聚焦于社交链接的3D虚拟世界之网络。元宇宙可以涉及持久化和去中心化的在线三维虚拟环境。
[0075] 游戏引擎:指一些已编写好的可编辑电脑游戏系统或交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、MacOS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含2D图形引擎和3D图形引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
[0076] 事件(Event),包括系统事件和用户事件。系统事件由系统激发。用户事件由用户激发,如用户点击按钮,在文本框中显示特定的文本。事件驱动控件执行某项功能。
[0077] 下面通过示例性的应用环境说明本申请各个实施例提供的技术方案。
[0078] 请参考图1,其示出了根据本申请实施例的3D图像实现方法的应用环境图。计算机设备2可以被配置为运行和处理3D文件。计算机设备2可以包括可以任何类型的计算设备,如:智能手机、平板设备、膝上型计算机、虚拟机等。
[0079] 计算机设备2可以运行Windows系统、安卓(AndroidTM)系统或iOS系统等操作系统。
[0080] 如图2所示,以下提供计算机设备2的示例性软件架构框图。
[0081] 在软件架构中,分为若干个层,每一层负责不同的任务。层与层之间通过软件接口通信。在一些实施例中,可以将软件架构分为四层,从上到下分别为应用程序层、应用程序框架层、系统库,以及内核层。下面对这四层进行介绍。
[0082] 应用程序层,可以包括各式各样的应用程序,如视频应用程序、3D游戏应用程序等。
[0083] 应用程序框架层,用于应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如,为用于构建和展示3D图形的各个应用程序提供功能性的扩展和支持。
[0084] 系统库可以包括多个功能模块,如,三维图形处理软件(如Unity引擎),2D图形引擎(如SGL)等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0085] 内核层是硬件层和软件之间的层。内核层包括显示驱动、摄像头驱动、音频驱动、显卡驱动等。
[0086] 下面将以计算机设备2为硬件主体,提供若干个适配新文件格式的3D实现方案。
[0087] 实施例一
[0088] 图3示意性示出了根据本申请实施例一的基于应用程序框架的3D图像实现系统的架构图。
[0089] 所述应用程序框架可以包括:
[0090] (一)输入操作(Input actions)层。
[0091] (二)数据提供(Data provider)层。
[0092] (三)服务(Service)层。
[0093] (四)Runtime层。
[0094] (五)工具集(Toolset)层。
[0095] 其中:
[0096] 输入操作层,用于提供交互,如接受输入反馈并与场景内的物体产生交互。
[0097] Runtime层,用于在程序运行时加载目标格式文件。
[0098] 数据提供层,用于根据所述目标格式文件,获取用于构建包括3D图像的数据,还可以包括音频、视频、等额外的数据等。
[0099] 服务层,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持。
[0100] 工具集层,提供面向第三方开发者或者创作者的工具。
[0101] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务层用于导出所述新增属性对应的功能代码和/或效果数据。
[0102] 以下对各层分别进行介绍。
[0103] (一)输入操作(Input actions)层。
[0104] 输入操作层,用于:
[0105] 提供交互控制层。具体的,定义物体的交互属性,所述交互属性用于指示物体是否可交互。
[0106] 提供外部输入(键盘、鼠标等)绑定。具体的,定义用于外部输入及其绑定的事件,所述外部输入包括键盘操作和/或鼠标操作。
[0107] 提供场景内事件绑定。具体的,定义3D场景中的物体动作以其绑定的事件。
[0108] 提供自定义事件的监听接口。具体的,定义预设监测接口的输入行为,以及与该预设监测接口的输入行为绑定的自定义事件。所述自定义事件对应自定义的事件类型,如人物卡bug掉出地图抛出一个自定义事件。
[0109] 在可选的实施例中,所述输入操作层还定义有:物体与事件之间的绑定关系,所述绑定关系为全局属性或局部属性;其中,所述局部属性指在指定场景或范围有效。
[0110] 当监测到针对所述物体所产生的目标事件,则执行与所述目标事件对应的响应。
[0111] 所述事件,可以是外部输入触发,也可以是内部交互触发。
[0112] 在一个示例性应用中,所述输入操作层可以定义监听接口,用于实时监听外部输入。其中,所述外部输入可以通过鼠标、触控屏、触控板或其他感应元件实现。
[0113] 所述输入操作层可以在物体和外部输入之间建立关联关系。
[0114] 例如,所述输出操作层定义有物体和键盘操作之间的关联关系。
[0115] 该键盘操作可以是某单个按键的单次或多次敲击、长时间按压,也可以是多个按键组合操作。
[0116] 再如,所述输入操作层定义有事件和鼠标操作之间的关联关系。
[0117] 该鼠标操作可以是单次或多次点击、拖曳、区域内停留一端时间等。
[0118] 举例而言,当鼠标接收到点击,相应的硬件产生中断。该中断可以以消息/原始事件的形式经由内核层通知给应用程序框架中的输入操作层。所述输入操作层识别该消息/原始事件,确定所述鼠标操作是否作用于在目标物体上。当作用在所述目标物体上,且目标物体上定义有鼠标点击即触发的事件,则触发该事件。
[0119] 如上述所述,基于外部输入,可以产生与对应物体关联的事件,进而相应的响应。
[0120] 以下提供场景中某个物体的部分事件的响应示例。
[0121] 例如,针对物体的移动操作,若该物体支持移动,则产生移动事件并进行移动。
[0122] 例如,某个物体为一个开关按钮,若所述外部输入为针对这个开关按钮的开关动作,则产生开关事件,并基于该开关事件生成开关按钮所在房间里的灯光效果。
[0123] 例如,某个物体具有被抓起后抛出的属性,若所述外部输入为针对该物体的操作时,则产生一个相应的事件,并基于该相应的事件将该物体抓起并抛出去。
[0124] 在另一个示例性应用中,所述输入操作层可以定义3D场景中的物体进行交互产生的事件。
[0125] 例如,角色到达某个场景内,物体(灯光)自动打开。
[0126] 例如,场景内的物体(沙发)周围有个区域,角色移动到指定的范围内就可以点击坐下。
[0127] 例如,某个物体具有碰撞体属性。基于碰撞体的触发器,若这个物体被场景内的另一个物体碰撞时,则产生碰撞事件,进而基于该碰撞事件产生相应的碰撞体效果。
[0128] 在另一个示例性应用中,所述输入操作层可以定义自定义事件,在自定义事件上添加脚本。
[0129] 例如,人物卡bug掉出地图。基于自定义事件,可以增加所述输入操作层的扩展性。
[0130] 通过输入操作层,场景中的物体可以与角色进行交互,且支持导出自定义UI和脚本。
[0131] (二)数据提供(Data provider)层。
[0132] 用于根据所述目标格式文件,获取用于构建包括3D图像的数据。
[0133] 如,提供构建3D角色,场景的能力,包括多媒体、网格、材质、贴图、动画等数据。
[0134] GLTF Compatible File:与GLTF标准兼容的3D模型数据。
[0135] Multi‑Media:多媒体数据,包括音频和视频。
[0136] Others:功能性数据(天空盒数据、GUI、脚本)。
[0137] URL Reference:链接外部引用,可以是本地URL或者网络URL。
[0138] 由于目标格式兼容GLTF格式,因此可以提供与与GLTF标准兼容的3D模型数据。
[0139] (三)服务(Service)层。
[0140] 用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持。
[0141] 用于文件载入、适配、导出等整个3D文件使用流程。如根据所述目标格式文件和所述数据提供层获取的数据,提供针对开发者层面的文件导入导出功能,也提供一种标准化的适配机制用于各项功能与数据层的适配,以便于应用层提供实际应用。
[0142] 在本实施例中,服务层包括多个SDK,SDK可更换。示例性的,可以根据不同的3D引擎(如Unity)更换不同的SDK,以增加本系统的扩展性,并增加对各种3D引擎的适配范围。
[0143] 所述服务层提供数据的导入导出能力。
[0144] 在可选的实施例中,所述服务层用于:
[0145] 导入/导出角色(Avatar)数据、场景(Scene)数据、天空盒(Skybox)数据、UI数据和/或脚本(Script);
[0146] 其中,所述角色数据包括:所述新增属性对应的功能代码;
[0147] 其中,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据。
[0148] 在目标格式文件的新增属性的情形下,可以支持物理系统、换装系统、人形骨骼等,及支持更多类型的数据,例如支持立方体贴图、自定义材质、天空盒数据、后处理功能等,实现比GLTF格式更丰富的画面表现,渲染效果可以被更好地还原。
[0149] 在本实施例中,提供了兼容GLTF格式的目标格式文件,该目标格式文件提供多个新增属性,实现对上述各种属性和系统的支持,从而可以将上述各种数据导出到目标格式文件,提供更逼真的物理效果,支持基于模型和材质切换的换装系统,并且网格、材质、贴图可以包括多个变量,运行时可以进行切换。
[0150] 在可选的实施例中,所述服务层用于:
[0151] 服务于3D直播或游戏,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,并且可与场景进行交互。
[0152] 在本实施例中,通过目标格式文件的新增属性,可以支持人形骨骼、物理动力学等功能,从而实现对角色模型的规范,进而可以直接让载入的角色直接适配面部捕捉和动作捕捉,也可以用于各类VR游戏中作为玩家操控的被操作对象(Avatar)。
[0153] 在可选的实施例中,所述服务层用于:
[0154] 提供文件生产服务,用于生成已经导入所述3D图像数据的目标格式文件。
[0155] 由于目标格式基于GLTF格式之上开发,因此继承了GLTF格式良好的跨平台性和生态支持。不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时加载和导出。因此,可以通过3D分析功能代码实现文件的分享。
[0156] 另外,所述服务层还用于提供Runtime下的加载和导出,和提供Editor编辑模式下的导入作为工程使用的资源,可同时满足专业美术人员,开发人员的生产需求,也可以让开发者基于Runtime部分开发相关的应用以满足普通用户的使用需求。
[0157] (四)Runtime运行层。
[0158] 用于加载目标格式文件,即在运行时提供加载使用该文件的能力。
[0159] 所述Runtime层,还用于:Avartar Driving(如驱动角色的面捕表情和肢体动作)、Scene Construction(场景构建)等。
[0160] 在可选的实施例中,支持目标格式文件包括多个场景,并对多个目标场景进行管理。
[0161] 所述多个场景可以包括主场景以及所述主场景之外的其他场景。
[0162] 其他场景并不一定会被使用。有鉴于此,所述Runtime层还用于:
[0163] 对多个场景进行管理;其中,所述管理包括延迟加载主场景之外的其他场景。即:先加载主场景,在需要使用某个其他场景时再加载该其他场景,以降低资源占用率。
[0164] (五)工具集层。
[0165] 用于提供多个工具,所述多个工具用于新增所述目标格式支持的组件数据和材质数据。
[0166] 如,可以提供各种代码生成工具服务服务层,这些工具具备导出导入功能,方便代码生成功能等。
[0167] 举例来说:
[0168] 用于文件(场景)导入导出的工具。
[0169] 用于时间轴展示的工具,如提供基于时间轴的回放,比如声音,动画,灯光开关,物体显示等放到一个时间轴上进行展示。如可以把剧情动画加入到文件里,音频、物体、动画、相机、灯光等放在同一个时间轴下进行动态参数设定。
[0170] 用于动画转换的工具,如将Unity的Humanoid动画转换成骨骼蒙皮动画,以实现对GLTF标准动画的兼容。
[0171] Component CodeGen,3D引擎组件上的数据序列化与反序列化的代码生成工具。
[0172] Material CodeGen,材质参数序列化与反序列化的代码生成工具。
[0173] Physics Simulation,基于动态骨骼调整的一套物理系统,可以模拟头发,衣服的物理飘动。
[0174] Avater Builder,辅助用户去导出符合标准的角色模型。
[0175] Data Compression,网格支持Draco压缩,贴图支持KTX2压缩,文件支持使用Zip压缩分散的GLTF文件。
[0176] 在本实施例中,通过工具集层使第三方开发者可以使用代码生成工具快速添加新组件数据,材质参数的导入导出,快速提供非标准化的数据导出及导入时所需的代码,并且文件本身完全没有破坏GLTF的标准,从而确保已有的GLTF格式的文件是依旧可以被标准的GLTF工具加载和编辑的。
[0177] 下面对本实施例中的目标格式文件进行介绍。
[0178] 目标格式文件的属性扩展字段中被定义新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到。
[0179] 在示例性应用中,所述新增属性包括:定义在所述扩展字段中并用于被节点指向的属性;定义在所述扩展字段中并无节点指向的属性;和/或定义在节点中的属性。
[0180] GLTF格式中,定义有构成3D图像的多种元素,如:场景(Scene)、节点(Node)、网格(Mesh)、相机(Camera)、材质(Material)、纹理(Texture)、蒙皮(Skin)。
[0181] 场景,为场景结构描述条目,通过引用一个或多个节点定义场景图。
[0182] 节点,挂载在场景下。节点可以引用子节点、网格、相机,以及描述网格变换的蒙皮等。
[0183] 网格,用于描述场景中出现的3D对象的网格数据,
[0184] 相机,为用于渲染场景的视锥体配置。
[0185] 上述这些元素均有一个或多个属性。属性用于定义相应元素的性质、特征、特性、描述等。
[0186] 以节点为例,其属性表可以包括:相机、子节点、蒙皮、矩阵、网格、四元数旋转、缩放比、位置信息、网格的权重数组、名称、属性扩展字段、属性附加字段。
[0187] 在该目标格式中,继承了GLTF格式支持的全部功能及效果,并在不破坏GLTF格式结构的前提下,利用属性扩展字段和属性附加字段定义所述目标格式的新增属性。另外,该目标格式文件支持字段使用缺省数据。不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时加载和导出。需要说明是,为了优化目标格式文件的加载速度和降低对内存的占用,提供了两套不同的加载机制,用于适配不同的使用场景,即:不需要大量复用的属性信息在属性附加字段中保存,具备通用性和很强复用性的保存在属性扩展字段中保存。
[0188] 在示例性应用中,所述新增属性可以包括音频文件属性、音频行为属性、表情变换属性、碰撞体属性、人形骨骼属性、换装属性、光照贴图属性、元数据属性、骨骼动力学属性、后期处理属性、动态脚本属性、场景渲染属性、天空盒属性、立方体贴图属性、剧情时间轴属性、精灵属性、流媒体属性、资源变量属性、导出属性等。当然,还可以包括引擎或web支持的其他属性,支持更多功能。
[0189] 本申请实施例中的应用程序框架,用于适配该目标格式文件,从而具有如下优势:
[0190] (1)可以兼容GLTF格式的文件。
[0191] (2)提供多个功能性的扩展,从而可以支持目标格式文件包括新增属性在内的各个属性。
[0192] 以下对目标格式文件的各个新增属性进行介绍。
[0193] 目标格式文件的属性扩展字段定义有音频文件属性;
[0194] 其中,所述音频文件属性用于提供音频片段的文件信息,用于所述音频片段的还原。
[0195] 所述音频文件属性可以被节点指向,从而被节点所使用。
[0196] 如表1所示,定义在属性扩展字段中的音频文件属性(服务层基于该属性提供相应的能力)包括如下信息:
[0197]
[0198] 表1
[0199] 目标格式文件的导出格式有两种后缀格式可供选择:.gltf和.glb。在导出单独的.gltf文件时,uri被使用到;在导出为.glb文件,则将通过bufferView字段存储信息。需要说明的是,后续可以针对不同的导出类型定义更多的后缀,如根据纯人物模型或者场景,去给文件定义不同的后缀,以此作为功能性的区分。
[0200] 目标格式文件的属性扩展字段定义有定义音频行为属性;
[0201] 其中,所述音频行为属性包括一个或多个播放参数,用于控制所述音频片段的播放。
[0202] 节点在引用所述音频文件属性的基础之上,还可以进一步引用所述音频行为属性。
[0203] 如表2所示,定义在属性扩展字段中的音频行为属性(服务层基于该属性提供相应的能力)包括如下信息:
[0204]
[0205]
[0206] 表2
[0207] 目标格式文件的属性扩展字段定义有表情变换属性;
[0208] 其中,所述表情变换属性包括材质信息以及用于设置网格混合形状的标表情文件信息。
[0209] 所述表情变换属性可以被节点指向,从而被节点所使用。
[0210] 如表3所示,定义在属性扩展字段中的表情变换属性(服务层基于该属性提供相应的能力)包括如下信息:
[0211]
[0212] 表3
[0213] 其中,blendShapeValues定义一映射表,记录有多个网格变换对表情变换的权重。materialVector4Values定义一个列表,记录有四个分量矢量(如,网格切线、着色器)的多组材质参数。materialColorValues定义另一列表,记录有表示颜色的多组材质参数。
materialFloatValues定义另一列表,其包括float类型的多组材质参数。
[0214] 目标格式文件的属性扩展字段定义有碰撞体属性;
[0215] 其中,所述碰撞体属性包括针对碰撞体的一个或多个参数,用于支持碰撞交互。
[0216] 所述碰撞体属性可以被节点指向,从而被节点所使用。
[0217] 如表4所示,定义在属性扩展字段中的碰撞体属性(服务层基于该属性提供相应的能力)包括如下信息:
[0218]
[0219]
[0220] 表4
[0221] 目标格式文件的属性扩展字段定义有人形骨骼属性;
[0222] 其中,所述人形骨骼属性包括多个人形骨骼的参数及人形骨骼之间的关系与动作约束。
[0223] 所述人形骨骼属性可以被节点指向,从而被节点所使用,该节点对应实际的人形骨骼点。
[0224] 该人形骨骼属性定义了Humanoid(人形)模型使用的Avatar(虚拟人物)。
[0225] 任何作为Humanoid动画类型导入的模型都可以生成Avatar资源,其中存储驱动Animator的信息。
[0226] Avatar系统用于告诉游戏引擎如何识别特定的动画模型在布局上是人形,以及模型的哪些部分对应于腿、手臂、头部和身体,在这一步之后,动画数据可以被“重用”。需要说明的是,由于不同人形角色之间骨骼结构的相似性,可以将动画从一个人形角色映射到另一个人形角色,从而实现重定位和反向运动学。
[0227] 如表5所示,定义在属性扩展字段中的人形骨骼属性(服务层基于该属性提供相应的能力)包括如下信息:
[0228]
[0229]
[0230] 表5
[0231] 其中,humanBones记录多个关节,以及各个关节(如颈、头)之间连接和空间变换关系。
[0232] 节点在引用所述人形骨骼属性的基础之上,还可以进一步引用所述骨骼变化属性。
[0233] 所述骨骼变化属性(服务层基于该属性提供相应的能力)还包括如表6所示内容。
[0234]
[0235]
[0236] 表6
[0237] 目标格式文件的属性扩展字段定义有定义换装属性;
[0238] 其中,所述换装属性包括不同换装方案的列表以及各换装方案的材质参数列表。
[0239] 所述换装属性可以被节点指向,从而被节点所使用。
[0240] 在有Avatar的前提下,节点可以引用/指向所述换装属性,从而支持人物的换装。
[0241] 换装系统是通过更改网格可见性或网格上的材质来实现的。
[0242] 如表7‑9所示,定义在属性扩展字段中的换装属性(服务层基于该属性提供相应的能力)包括如下信息:
[0243]  类型 描述 是否必需
dressUpConfigs GLTFDress 换装方案集合 是
[0244] 表7
[0245]
[0246] 表8
[0247]
[0248]
[0249] 表9
[0250] 其中,表7为换装方案集合,表8为每个换装方案的信息,表9为单个换装包含的改动。
[0251] 目标格式文件的属性扩展字段定义有光照贴图属性;
[0252] 其中,所述光照贴图属性用于指示引擎预先计算场景中的表面亮度的变化。所述光照贴图属性在所述属性扩展字段中定义,不需要在其他对象中指向。
[0253] 如表10所示,定义在属性扩展字段中的光照贴图属性(服务层基于该属性提供相应的能力)包括如下信息:
[0254]
[0255] 表10
[0256] 其中,每个贴图存储有用户场景照明的不同信息。
[0257] 如,LightmapTextureInfo[]包括:入射光颜色(必需)、入射光主要方向(必需)、每个灯的遮挡遮罩(必需)等。
[0258] 目标格式文件的属性扩展字段定义有元数据属性;
[0259] 其中,所述元数据属性包括资源描述信息、资源管理信息、法律信息和/或内容参考信息。所述元数据属性在所述属性扩展字段中定义,不需要在其他对象中指向。
[0260] 资源描述信息:用于发现和识别,可以包括标题、摘要、作者和关键字等元素。按顺序排列以形成章节。它描述了数字资料的类型、版本、关系和其他特征。
[0261] 资源管理信息:用于管理资源的信息,如资源类型、权限。
[0262] 法律信息:提供有关创建者、版权所有者和公共许可的信息。
[0263] 内容参考信息:关于内容的信息。
[0264] 如表11所示,定义在属性扩展字段中的元数据属性(服务层基于该属性提供相应的能力)包括如下信息:
[0265]
[0266] 表11
[0267] 目标格式文件的属性扩展字段定义有骨骼动力学属性;
[0268] 其中,所述骨骼动力学属性用于支持模拟绑定骨骼的物体的动态运动。
[0269] 在示例性应用中,可以模拟裙子、头发、挂坠等跟随骨骼、身体的运动而运动。
[0270] 目标格式文件的属性扩展字段定义有后期处理属性;
[0271] 其中,所述后期处理属性包括体积组件的属性和支持的后期处理效果的属性。
[0272] 所述后期处理属性可以被节点指向,从而被节点所使用。
[0273] 体积组件包括控制它们如何影响相机以及如何与其他体积交互的属性。它是一种作用于全屏的效果,用于3D渲染,可以改善渲染效果,并且只需很少的时间设置。
[0274] 以下描述了一个体积组件的属性:
[0275] 如表12所示,一个体积组件的属性(服务层基于该属性提供相应的能力)包括如下信息:
[0276]
[0277] 表12
[0278] 通过配置文件ID,可以指定用哪个效果。
[0279] 无论全局生成还是局部生效,均需要被节点指向,以服务于指定该后期处理属性的节点。
[0280] 其中,支持的后期处理效果可以包括:环境光遮蔽、绽放、混音器、色差、颜色调整、颜色曲线、景深、胶片颗粒、镜头失真、提升、伽玛和增益、运动模糊、帕尼尼(Panini)投影、阴影中间调亮点、分割色调、色调映射、渐晕、白平衡。
[0281] 各个后期处理效果可以在属性扩展字段定义相应的属性。
[0282] 以渐晕为例,渐晕是指与中心相比,图像边缘变暗和/或去饱和。渐晕包括表13中的属性。
[0283]
[0284]
[0285] 表13
[0286] 目标格式文件的属性扩展字段定义有动态脚本属性(服务层基于该属性提供相应的能力);
[0287] 其中,所述动态脚本属性包括供引擎执行的字符串,以支持解释运行外部脚本。所述动态脚本属性在所述属性扩展字段中定义,不需要在其他对象中指向。
[0288] 在示例性应用中,上述字符串可以指向外部脚本,如Puerts、Lua脚本等。
[0289] 接收渲染事件和来自输入设备的事件,脚本引擎在接收到相应的事件后执行脚本。
[0290] 所述事件可以包括:物体渲染第一帧、物体组件开启、物体组件关闭、销毁、每一帧更新、所有物体更新之后、按照时间定期调用。
[0291] 再者,所述事件还可以包括手动触发的事件,例如由以下设备触发的事件:键盘、鼠标、操纵杆、控制器、触摸屏、运动感应功能(如加速度计或陀螺仪)、VR(Virtual Reality,虚拟现实)和AR(Augmented Reality,增强现实)控制器等。
[0292] 目标格式文件在所述属性扩展字段中定义有全局的场景渲染属性;其中,所述场景渲染属性包括用于影响所述场景的一个或多个渲染效果参数。所述场景渲染属性在所述属性扩展字段中定义,不需要在其他对象中指向。如表14所示,定义在属性扩展字段中的场景渲染属性(服务层基于该属性提供相应的能力)包括如下信息:
[0293]
[0294]
[0295] 表14
[0296] 目标格式文件在所述属性扩展字段中定义有天空盒属性;其中,所述天空盒属性用于指示引擎创建无边际的背景显示,以对指向的材质进行着色。所述天空盒属性在所述属性扩展字段中定义,不需要在其他对象中指向。如表15所示,定义在属性扩展字段中的天空盒属性(服务层基于该属性提供相应的能力)包括如下信息:
[0297]   类型 描述 是否必需material id 使用天空盒着色器的材质 是
[0298] 表15
[0299] 以视频游戏关卡为例,当使用天空盒时,关卡被封闭在一个长方体中。天空、远处的山脉、远处的建筑物和其他无法到达的物体被投影到立方体的表面上,创造出远处3D环境的错觉。天穹等同理,使用球体或半球体而不是立方体。
[0300] 目标格式文件在属性扩展字段中定义有立方体贴图属性;其中,所述立方体贴图属性包括立方体贴图的布局、纹理映射、各个面的纹理。所述立方体贴图属性不是被节点所指向,而是在材质里作为一种特殊贴图类型指向使用。如表16所示,定义在属性扩展字段中的立方体贴图属性(服务层基于该属性提供相应的能力)可以包括如下信息:
[0301]
[0302] 表16
[0303] 立方体贴图是六个方形纹理的集合,代表环境中的反射。六个正方形组成了一个围绕一个物体的假想立方体的面;每个面代表沿世界轴方向(上、下、左、右、前、后)的视图。图像类型(imageType)包括:一行或一列中的6个正方形拼接而成纹理(宽高比6:1或1:6)、全景图像(宽高比2:1)3种。
[0304] 目标格式文件的属性扩展字段定义有剧情时间轴属性(服务层基于该属性提供相应的能力);
[0305] 其中,所述剧情时间轴属性用于排列对象的轨道以及创建过场动画和游戏序列。
[0306] 所述剧情时间轴属性可以被节点指向,从而被节点所使用。
[0307] 所述剧情时间轴属性可以包括如下信息:
[0308] 轨道资源的名称;
[0309] 动画轨道组,描述动画轨道;
[0310] 音频轨道组,描述音频轨道;
[0311] 表情变换的轨道组(通常用于面捕表情的动画),描述表情变换;
[0312] 材质参数曲线轨道组,曲线会随着时间进行输出值的变化(float浮点数类型的参数),描述材质变化;
[0313] 材质参数曲线轨道组,曲线会随着时间进行输出值的变化(Color颜色类型的参数),描述颜色变化;
[0314] 材质参数轨道组(int整数类型的参数),描述材质;
[0315] 材质参数轨道组(Color类型的参数),描述颜色;
[0316] 材质参数轨道组(Vector4类型的参数),描述Vector4;
[0317] 材质参数轨道组(Texture2D贴图类型的参数),描述Texture2D(纹理);
[0318] 物体是否激活,bool类型,描述物体是否激活;
[0319] 组件是否激活,bool类型,描述组件是否激活;
[0320] 整个轨道的长度,浮点类型,描述轨道长度。
[0321] 其中,所有的轨道都包括以下几个参数:资源名称、开始时间、结束时间、资源ID。其中,资源ID用于指定数据源的下标位置,可能是动画,贴图,音频等数据。
[0322] 其中,轨道参数可以包括:轨道名称(string类型,非必需)、开始时间(浮点类型、必需)、结束时间(浮点类型、必需)。
[0323] 其中,可以通过一个泛型类型表示每一个类别的轨道组里包含的子轨道数据,如描述一个类别下的所有子轨道集合。
[0324] 继承指定泛型的类型后即可得到不同类型的轨道数据类,如表示动画和音频的两个轨道组。
[0325] 对于材质Curve曲线参数类,可以均继承自泛型类型,例如:指定了使用渲染器上多个材质的其中一个材质、是否在执行结束后再反向执行一遍、曲线数据。
[0326] 表情变换的曲线,用于平滑的进行人物面捕表情转换。
[0327] 材质的浮点参数曲线,可以基于时间不停更新材质的浮点类型参数,包括:要设置的材质参数名。
[0328] 材质的颜色参数曲线,基于时间不停更新材质的颜色类型参数,继承自上述类,如可以包括:开始和结束时的颜色值。基于时间进行插值运算,持续更新进行每一帧颜色。
[0329] 获取到指定节点上的动画组件,只有节点ID会被导出,其余变量在加载时创建。
[0330] 在节点使用所述剧情时间轴属性中的参数时,可以指定该述剧情时间轴的播放行为,其中,控制播放行为的播放参数可以包括:ID(描述轨道名称、必需)、是否加载后即自动进行播放(bool类型,非必需)、是否循环播放(bool类型,非必需)。
[0331] 目标格式文件的属性扩展字段定义有精灵属性;
[0332] 其中,所述精灵属性包括布局、纹理引用、纹理位置、边框、物理形状和/或空间位置。
[0333] 所述精灵属性可以被节点指向,从而被节点所使用。
[0334] 如表17所示,定义在属性扩展字段中的精灵属性(服务层基于该属性提供相应的能力)可以包括如下信息:
[0335]
[0336]
[0337] 表17
[0338] 精灵(Sprite)是二维图形对象。在三维场景下,精灵一般为标准纹理。通过上述精灵属性可以组合和管理纹理,以便在开发过程中提高效率和便利性。
[0339] 目标格式文件在节点中定义有流媒体属性;
[0340] 其中,所述流媒体属性包括流媒体的URL(uniform resource locator,统一资源定位符)名称、URL地址以及流媒体格式。
[0341] 如表18所示,定义在属性扩展字段中的流媒体属性(服务层基于该属性提供相应的能力)可以包括如下信息:
[0342]  类型 描述 是否必需
name string URL名称 否
url string URL地址 是
mimeType string 视频格式 否
alternate List 备用地址 否
[0343] 表18
[0344] 目标格式文件在节点中定义有资源变量属性;
[0345] 其中,所述资源变体属性包括变量类型和指向引用字段索引的集合,以支持资源的使用。
[0346] 如表19所示,定义在属性扩展字段中的资源变量属性(服务层基于该属性提供相应的能力)可以包括如下信息:
[0347]   类型 描述 是否必需type enum 变量类型 否
collections List 指向引用字段索引的集合 是
[0348] 表19
[0349] 资源变量属性,用于支持将一些当前不使用,但将来可能会使用到的资源。示例性的,这些资源可以是纹理、立方体贴图、材质、音频片段、动画片段、光照贴图。
[0350] 目标格式文件在属性附加字段中定义部分非通用参数,所述属性附件字段挂载在节点或对象下。
[0351] 所述非通用参数是相对于通用参数,是指诸如不具有全局性、更新迭代频繁的参数。
[0352] 在目标格式中,除常规字段之外,包括属性扩展字段(Extensions)和属性附加字段(Extras)。所述目标格式中的常规字段与GLTF格式的字段相同,确保所述目标格式对GLTF格式的兼容。属性附加字段用于添加非通用化的一些信息。属性扩展字段为全局性,属性附加字段为局性。属性附件字段通常挂载在某个节点或对象下面,提供定制化的功能性补充。如以下这些属性信息可以记录到Extras中,如少数引擎支持的组件的属性,或经常更新的组件的属性(部分组件更新后,其属性命名更改或添加新字段)。并提供代码生成器快速生成代码,为了使用该SDK(软件开发工具包)的用户定制功能性补充。所述属性扩展字段,则用于记录强通用性的信息。即,所述属性扩展字段中记录的属性比所述属性附加字段中记录的属性更通用,复用性更强。
[0353] 举例而言,以下这些属性信息可以记录到Extras中:
[0354] (1)人形骨骼的属性(名称)。
[0355] (2)相机的其余的必要信息,以便更好的支持实际场景的还原。
[0356] (3)自定义材质的信息,以保证能被其他工具使用。
[0357] (4)UI信息。
[0358] 目前受支持的信息有动画,声音,相机,灯光,材质,物理,渲染等类型的组件均有信息导出,自定义的脚本公开访问的变量也支持使用代码生成工具导出。
[0359] 作为可选的实施例,所述目标格式文件可以实现自定义的导入导出。
[0360] 所述目标格式文件包括节点,将导出属性挂载在节点下,以扩展导出功能等。
[0361] 目标格式文件还定义导入导出方式;
[0362] 其中,所述导出方式用于定义提供材质参数的导出和/或提供组件参数的导出。
[0363] 例如:指定类型(如,着色器类型),以及定义导出的各项材质参数信息。
[0364] 再如:在节点下导出为附加字段信息,如:指定组件类型(如,动画),以及导出的各项公共参数信息。
[0365] 根据上文内容可知,相对于GLTF格式,目标格式定义大量新增属性,以支持大量功能或效果的实现,如下:
[0366] (1)兼容GLTF格式,即支持Scene,Node,Mesh,Material,Texture等信息记录。
[0367] (2)支持标准GLTF格式的扩展,如KHR_materials_pbrSpecularGlossiness,KHR_materials_unlit,KHR_materials_clearcoat等官方材质扩展。
[0368] (3)支持标准GLTF格式的灯光导入导出等官方功能扩展。
[0369] (4)相机导入导出添加额外的引擎特定数据,但仍保留GLTF格式中相机的支持。
[0370] (5)支持碰撞体,如:球形、方形、圆柱形、胶囊形等碰撞。
[0371] (6)支持自定义材质类型的导入导出扩展。
[0372] (7)支持骨骼蒙皮数据导出。
[0373] (8)支持表情变换的网格形变,可用于Avatar面部表情捕捉的变换。
[0374] (9)支持动画,包含物体的空间位置(位置,旋转,大小)和表情变换的变换。
[0375] (10)支持记录人体骨架数据,用于通用的人形动画和动作捕捉。
[0376] (11)支持换装。
[0377] (12)支持音频。
[0378] (13)添加URL数据导出。
[0379] (14)支持流媒体视频播放,URL引用各种外部资源(包括网络文件,流媒体,本地文件)。
[0380] (15)支持元数据管理等,用于决定可以在哪些用途下使用该模型,比如是否允许使用在轻微不适当活动上。
[0381] (16)支持表情混合输出。
[0382] (17)支持剧情时间轴,可以基于时间轴实现各种动画的混合,包括动画、声音、表情控制,物体的可见性,材质参数等。
[0383] (18)支持天空盒。
[0384] (19)支持后期处理。
[0385] (20)支持骨骼动力学(头发和衣服物理系统)。
[0386] (21)支持制作喷漆、贴花。
[0387] (22)支持基于网格的文字显示
[0388] (23)支持Draco,Draco是一个开源网格压缩标准。
[0389] (24)支持立方体贴图。
[0390] (25)支持精灵,用于2D渲染或者UI。
[0391] (26)支持光照贴图。
[0392] (27)支持事件系统。
[0393] 为了使得本申请的优势更加清晰明白,以下提供VRM格式和目标格式的对照。
[0394] VRM(virtual reality modeling,虚拟现实模型),也是基于GLTF发展而来的一种3D文件格式。VRM文件允许所有支持的应用程序运行相同的虚拟化身数据(3D模型)。
[0395] 作为均是基于GLTF格式发展而来的新格式,目标格式相对于VRM格式有如下优势:
[0396] 兼容GLTF格式,可以在各个游戏引擎,WebGL上使用,可被专业设计软件打开编辑(如Maya、Blender、C4D等)。
[0397] 支持场景导出,动画,多媒体,天空盒,网格压缩,自定义材质参数和脚本参数等均支持,功能性可以不断扩展。
[0398] 跨系统,工具,版本兼容支持,一个文件兼容所有的设备,只需拥有Runtime,不受引擎版本,目标运行设备影响,非常适合作为交换介质在商店上架,打造生态。
[0399] 材质可以自行选择,确立属于自己的标准规范,且包含了代码生成工具,可以应对快速的变换需求。
[0400] 可针对业务灵活定制组件或用户端自定义逻辑,这些数据也可以导出到文件,例如可以将一个VR女友的应用放到文件里被程序框架加载,而非独立生成应用,便于长远的业务发展和生态建设。
[0401] 详细如下表20。
[0402]
[0403]
[0404] 表20
[0405] 实施例二
[0406] 本实施例基于实施例一的应用程序框架实现,具体细节和优点可参考实施例一。
[0407] 图4示意性示出了根据本申请实施例二的3D图像实现方法的流程图。
[0408] 如图4所示,该3D图像实现方法可以包括步骤S200~S204,其中:
[0409] 步骤S400,加载目标格式文件。
[0410] 步骤S402,根据所述目标格式文件,获取用于构建包括3D图像的数据。
[0411] 步骤S404,提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持。
[0412] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,通过提供的各项能力或对外的接口用于导出所述新增属性对应的功能代码/效果数据。
[0413] 在可选的实施例中,所述方法还包括:
[0414] 对多个场景进行管理;其中,所述管理包括延迟加载主场景之外的其他场景。
[0415] 在可选的实施例中,所述步骤S404包括如下步骤:
[0416] 导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;
[0417] 其中,所述角色数据包括:所述新增属性对应的功能代码;
[0418] 其中,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据。
[0419] 在可选的实施例中,所述步骤S404还包括如下步骤:
[0420] 为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互。
[0421] 在可选的实施例中,所述步骤S404还包括如下步骤:
[0422] 提供文件生产服务,生成已经导入所述3D图像数据的目标格式文件。
[0423] 在可选的实施例中,所述方法还包括:
[0424] 定义物体的交互属性,所述交互属性用于指示物体是否可交互;
[0425] 定义用于外部输入及其绑定的事件,所述外部输入包括键盘操作和/或鼠标操作;
[0426] 定义3D场景中的物体动作以其绑定的事件;
[0427] 定义预设监测接口的输入行为,以及与该预设监测接口的输入行为绑定的自定义事件。
[0428] 在可选的实施例中,所述方法还包括:
[0429] 定义物体与事件之间的绑定关系,所述绑定关系为全局属性或局部属性;
[0430] 当监测到针对所述物体所产生的目标事件,则执行与所述目标事件对应的响应。
[0431] 在可选的实施例中,所述方法还包括:
[0432] 用于提供多个工具,所述多个工具用于新增所述目标格式支持的组件数据和材质数据。
[0433] 实施例三
[0434] 图5示意性示出了根据本申请实施例三的3D图像实现装置的框图。该3D图像实现装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
[0435] 如图5所示,该3D图像实现装置500可以包括加载模块510、获取模块520和服务模块530,其中:
[0436] 加载模块510,用于加载目标格式文件;
[0437] 获取模块520,用于根据所述目标格式文件,获取用于构建包括3D图像的数据;
[0438] 服务模块530,用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持;
[0439] 其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到,所述服务模块530用于导出所述新增属性对应的功能代码/效果数据。
[0440] 在可选的实施例中,所述装置还包括管理模块,用于:
[0441] 对多个场景进行管理;其中,所述管理包括延迟加载主场景之外的其他场景。
[0442] 在可选的实施例中,所述导出模块530还用于:
[0443] 导出角色数据、场景数据、天空盒数据、UI数据和/或脚本;
[0444] 其中,所述角色数据包括:所述新增属性对应的功能代码;
[0445] 其中,所述场景数据包括:所述新增属性对应的场景内各个元素的效果数据。
[0446] 在可选的实施例中,所述装置还包括适配模块(未标识),用于:
[0447] 为3D直播或游戏服务,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,用于与场景进行交互。
[0448] 在可选的实施例中,所述装置还包括生成模块(未标识),用于:
[0449] 提供文件生产服务,生成已经导入所述3D图像数据的目标格式文件。
[0450] 在可选的实施例中,所述装置还包括定义模块,用于:
[0451] 定义物体的交互属性,所述交互属性用于指示物体是否可交互;
[0452] 定义用于外部输入及其绑定的事件,所述外部输入包括键盘操作和/或鼠标操作;
[0453] 定义3D场景中的物体动作以其绑定的事件;
[0454] 定义预设监测接口的输入行为,以及与该预设监测接口的输入行为绑定的自定义事件。
[0455] 在可选的实施例中,所述方法还包括:
[0456] 定义物体与事件之间的绑定关系,所述绑定关系为全局属性或局部属性;
[0457] 当监测到针对所述物体所产生的目标事件,则执行与所述目标事件对应的响应。
[0458] 在可选的实施例中,所述装置还包括提供模块,用于:
[0459] 用于提供多个工具,所述多个工具用于新增所述目标格式支持的组件数据和材质数据。
[0460] 实施例四
[0461] 图6示意性示出了根据本申请实施例四的适于实现3D图像实现方法的计算机设备2的硬件架构示意图。本实施例中,计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板设备、膝上型计算机、虚拟机等。如图6所示,计算机设备2至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
[0462] 存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备2的内部存储模块,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备2的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如3D图像实现方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0463] 处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备2的总体操作,例如执行与计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
[0464] 网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备2与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备2与外部终端相连,在计算机设备2与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi‑Fi等无线或有线网络。
[0465] 需要指出的是,图6仅示出了具有部件10010‑10030的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0466] 在本实施例中,存储于存储器10010中的3D图像实现方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请实施例。
[0467] 实施例五
[0468] 本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的3D图像实现方法的步骤。
[0469] 本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中3D图像实现方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0470] 显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0471] 需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。