CN115205430A - 针对3d文件的导入导出方法及装置 - Google Patents

针对3d文件的导入导出方法及装置 Download PDF

Info

Publication number
CN115205430A
CN115205430A CN202210813989.2A CN202210813989A CN115205430A CN 115205430 A CN115205430 A CN 115205430A CN 202210813989 A CN202210813989 A CN 202210813989A CN 115205430 A CN115205430 A CN 115205430A
Authority
CN
China
Prior art keywords
file
mode
attribute
importing
runtime
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
CN202210813989.2A
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.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology 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 Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202210813989.2A priority Critical patent/CN115205430A/zh
Publication of CN115205430A publication Critical patent/CN115205430A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本申请公开了一种针对3D文件的导入导出方法,所述方法包括:确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。本申请提供的技术方案,提供引擎内的编辑模式和runtime模式,以满足用户需求,提升用户体验。

Description

针对3D文件的导入导出方法及装置
技术领域
本申请涉及计算机领域,尤其涉及一种针对3D文件的导入导出方法、装置、计算机设备和计算机可读存储介质。
背景技术
随着计算机技术的发展,三维画面越来越受到广大的用户的青睐。因此,三维模型格式被提出,并广泛应用于直播、游戏等各场景中,实现各种三维可视化设计。然而,现有的三维模型格式不能提供符合需要的导入导出功能,影响用户体验。
发明内容
本申请实施例的目的是提供一种针对3D文件的导入导出方法、装置、计算机设备和计算机可读存储介质,用于解决上述问题。
本申请实施例的一个方面提供了一种针对3D文件的导入导出方法,包括:
确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;
响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及
响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
可选地,所述响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件,包括:
将所述3D文件导入到编辑器中;
通过GLTFSceneImporter将导入的3D文件加载到内存或显存中;
通过GLTFImporter导入所述内存或显存中的3D文件,以将3D文件的部分资源以独立文件形式保存到磁盘中。
可选地,针对3D文件的导入导出方法还包括:
将3D文件的部分资源与所述3D文件本身关联。
可选地,针对3D文件的导入导出方法还包括:
将引用重指向所述磁盘中的所述部分资源,以建立在游戏引擎下的编辑状态的引用;
根据在游戏引擎下的编辑状态的引用,在所述编辑模式下进行3D文件的导出。
可选地,所述响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件,包括:
通过runtime层选择述3D文件进行载入;
通过GLTFSceneImporter将载入的3D文件加载到内存或显存中;
通过GLTFSceneImporter构建所述3D文件的场景,并在所述场景中展示各个资源。
可选地,针对3D文件的导入导出方法还包括:
将所述Runtime层的数据用于第三方应用引入,以进行目标格式的载入与导出。
可选地:所述3D文件为目标格式文件;
其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到;
其中,所述目标格式文件包括节点,将导入导出属性挂载在节点下,以扩展导入导出功能。
本申请实施例的一个方面又提供了一种针对3D文件的导入导出装置,所述装置包括确定模块,用于确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;
第一响应模块,用于响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及
第二响应模块,用于响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上述针对3D文件的导入导出方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上述针对3D文件的导入导出方法的步骤。
本申请实施例提供的系统、方法、装置、设备及计算机可读存储介质,包括如下优点:
提供引擎内的编辑模式和runtime下的不同使用机制。
在编辑模式下,将3D文件(如gltf/glb文件)导入编辑器,使用户通过编辑器进行多样化编辑,以及在编辑模式下完成文件导出,使用第三方应用实现全面的导出功能。
在runtime模式下,操作不在编辑器进行,选择3D文件导入后仅能做简单编辑,然后运行显示。
因此,基于不同的使用模式提供不同的导入导出,具体的:提供编辑模式下的导入作为工程使用的资源,可同时满足专业美术人员,开发人员的生产需求,也可以让开发者基于Runtime部分开发相关的应用以满足普通用户的使用需求。
附图说明
图1示意性示出了根据本申请实施例的针对3D文件的导入导出方法的应用环境图;
图2示意性示出了软件框架图;
图3示意性示出了应用程序框架图;
图4示意性示出了根据本申请实施例一的针对3D文件的导入导出方法的流程图;
图5示意性示出了根据本申请实施例一的针对3D文件的导入导出操作的流向图;
图6示意性示出了图4中步骤S402的子流程图;
图7-8示意性示出了根据本申请实施例一的针对3D文件的导入导出方法的新增流程图;
图9示意性示出了图4中步骤S404的子流程图;
图10示意性示出了根据本申请实施例一的针对3D文件的导入导出方法的新增流程图;
图11示意性示出了根据本申请实施例二的针对3D文件的导入导出装置的框图;
图12示意性示出了根据本申请实施例三的适于实现针对3D文件的导入导出方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
当前了解到的几种3D文件格式有:FBX、DAZ、USD、AssetBundle、Pak、MMD、VRM等。
FBX、DAZ、USD等格式:不适合在运行时直接加载,通常使用它们需要预先在游戏引擎生成中间数据用于运行时渲染,无法直接作为传播载体给到用户端,更适合作为生产工具而不是消费载体仅限于专业领域用专业工具作为生产力的媒介,不适合作为消费载体。
AssetBundle、Pak等格式:与引擎版本强绑定,升级引擎版本会导致所有资源需要重新打包,无法适用于以玩家创作为创意主题的产品。与操作系统强相关,不同平台的资源包不通用,需分别生成。无法作为独立资源进行传播、交易,无法被赋予虚拟资产的价值。无法运行时导出,无法进行再创作修改等,资源不能复用。
MMD(MikuMikuDance)格式:用于3D动画电影场景,仅支持在独家提供的工具中作为工程导出视频,有商用许可限制,无生态链支持其在游戏或vTuber(Virtual YouTuber,虚拟开播)中的应用。
VRM格式:用于虚拟直播和社交类VR游戏中,但仅包含角色部分数据,无法扩展更大的使用场景,渲染效果差,有区域性限制,如口型适配只有日文,Shader(着色器)仅支持MToon(具有全局照明的卡通着色器)、Unlit(不受光材质的着色器)和PBR(Physicallly-Based Rendering,物理渲染),扩展灵活度差,如不支持动画、不支持场景加载、第三方也无法功能扩展,从而阻碍了vTuber发展。
如上所述,上述几种3D文件格式均具有某些局限性。为了支持玩家创作高自由度的3D场景,并进行分享交易,且使用不受操作系统、工具类型、工具版本等技术因素的影响,本申请提供了一种新文件格式。该格式不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时进行加载和导出。
新文件格式(目标格式)包括GLTF格式的原规范,并在Extensions和Extras字段来开发功能,兼容已有的GLTF文件,确保不破坏标准GLTF的Json Scheme,以使其能被其他工具打开并修改;保留常规GLTF工具对该文件的预览性,使得非专用工具也能在一定程度上保留预览和编辑的能力,并且保证文件最小的数据结构,支持字段使用缺省数据;不需要大量复用的数据在Extra字段中保存,具备很强通用性和复用性的数据保存在Extension,且为了优化文件加载速度和降低对内存的占用,提供了两套不同的加载机制,用于适配不同的使用场景。
本申请旨在基于配置的新3D格式(目标格式),为不同的使用模式配置不同的导入导出机制。具体的,本申请基于GLTF格式本身预留的Extensions(属性扩展字段)和Extras(属性附加字段)来开发功能,提供一种应用于3D虚拟资产的优化格式。基于此格式,配置引擎内的编辑模式和runtime下的不同使用机制。
以下为本申请的术语解释:
3D(ThreeDimensional,三维)图像,是图像文件的其中一种,用于存储关于三维模型的信息。3D图像包括三维模型、3D动画、3D项目文件。3D图像可以包括三维软件所解释的三维空间中的多边形和顶点组成的模型信息,其中,可能还包含颜色、纹理、几何形状、光源以及阴影等信息。3D图像文件格式可以用于VR、3D打印、游戏、电影特效、建筑、医药以及其它相关场景中。
GLTF(Graphics Language Transmission Format,图形语言交换格式):三维计算机图形格式和标准,其支持储存三维模型、外观、场景及动画,是用于3D资产(Asset)的简化的、可互操作的格式,最大限度地减少应用程序的文件大小和处理难度。GLTF资产是JSON文件加上支持的外部数据。具体来说,GLTF资产包含完整场景描述的JSON格式文件(.GLTF):节点层次结构、材质、相机以及网格、动画和其他构造的描述符信息;包含几何和动画数据以及其他基于缓冲区的数据的二进制文件(.bin);和纹理(.jpg、.png)。场景中3D对象是使用连接到节点的meshes(网格)定义的。材质则用于定义对象的外观。Animations(动画)描述3D对象如何随着时间的推移转换3D对象。Skins(蒙皮)定义了对物体的几何形状的方式基于骨架姿势变形。Cameras(相机)描述了渲染器的视图配置。
资源:可以包括图片、Shader(着色代码)、材质、模型、动画等。
材质(Material),为表现物体对光的交互,供渲染器读取的数据集,包括贴图、光照算法等。
纹理(Texture),为一段有规律、可重复的位图,是基本的数据输入单位。
贴图(Map),包括纹理以及其他很多信息,如纹理坐标集、贴图输入输出控制等。贴图包括多种形式,如光照贴图、环境贴图、反射贴图等。其中,光照贴图用于模拟物体表面的光照效果。环境贴图包括六个纹理,以及对应的纹理坐标集。
纹理贴图(Texture mapping),通过坐标集(如UV坐标)将纹理映射到三维物体的表面。
AssetBundle:Unity支持的一种文件储存格式,也是Unity官方推荐的资源存储与更新方式,它可以对资源(Asset)进行压缩,分组打包,动态加载,以及实现热更新。
FBX:是FilmBoX软件所使用的格式,后改称Motionbuilder。FBX可以用在诸如Max、Maya、Softimage等软件间进行模型、材质、动作和摄影机信息的互导。
DAZ:是由建模程序DAZ Studio创建的3D场景的文件格式。
USD(Universal Scene Description,通用场景描述),是Pixar提供的基于动画制作电影全流程的文件格式。
VRM(Virtual Reality Modeling,虚拟现实建模):为一种虚拟3D人形的模型格式。
Avatar:为人形态的3D角色模型。
Metaverse:元宇宙,或称为后设宇宙、形上宇宙、超感空间、虚空间,是聚焦于社交链接的3D虚拟世界之网络。元宇宙可以涉及持久化和去中心化的在线三维虚拟环境。
游戏引擎:指一些已编写好的可编辑电脑游戏系统或交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、MacOS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含2D图形引擎和3D图形引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。
下面通过示例性的应用环境说明本申请各个实施例提供的技术方案。
请参考图1,其示出了根据本申请实施例的针对3D文件的导入导出方法的应用环境图。计算机设备2可以被配置为运行和处理3D文件。计算机设备2可以包括可以任何类型的计算设备,如:智能手机、平板设备、膝上型计算机、虚拟机等。
计算机设备2可以运行Windows系统、安卓(AndroidTM)系统或iOS系统等操作系统。
如图2所示,以下提供计算机设备2的示例性软件架构框图。
在软件架构中,可以被分为若干个层,每一层负责不同的任务。层与层之间通过软件接口通信。在一些实施例中,可以将软件架构分为四层,从上到下分别为应用程序层、应用程序框架层、系统库,以及内核层。下面对这四层进行介绍。
应用程序层,可以包括各式各样的应用程序,如视频应用程序、3D游戏程序、编辑器等。
应用程序框架层,用于应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如,为用于构建和展示3D图形的各个应用程序提供功能性的扩展和支持。
系统库可以包括多个功能模块,如,三维图形处理软件(如Unity引擎),2D图形引擎(如SGL)等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
内核层是硬件层和软件之间的层。内核层包括显示驱动、摄像头驱动、音频驱动、显卡驱动等。
如图3所示,所述应用程序框架可以包括:
输入操作(Input actions)层。
用于提供交互,如接受输入反馈并与场景内的物体产生交互。
(二)数据提供(Data provider)层。
用于根据所述目标格式文件,获取用于构建包括3D图像的数据,以及音频、视频等额外数据。
如,提供构建3D角色,场景的能力,包括多媒体、网格、材质、贴图、动画等数据。
GLTF Compatible File:与GLTF标准兼容的3D模型数据。
Multi-Media:多媒体数据,包括音频和视频。
Others:功能性数据(天空盒数据、GUI、脚本)。
URL Reference:链接外部引用,可以是本地URL或者网络URL。
由于目标格式兼容GLTF格式,因此可以提供与与GLTF标准兼容的3D模型数据。
(三)服务(Service)层。
用于提供与数据相匹配的各项能力或对外的接口,并为Runtime提供基本能力支持。
用于文件载入、适配、导出等整个3D文件使用流程。如根据所述目标格式文件和所述数据提供层获取的数据,提供针对开发者层面的文件导入导出功能,也提供一种标准化的适配机制用于各项功能与数据层的适配,以便于应用层提供实际应用。
服务层包括多个SDK,SDK可更换。示例性的,可以根据不同的3D引擎(如Unity)更换不同的SDK,以增加本系统的扩展性,并增加对各种3D引擎的适配范围。
所述服务层提供数据的导入导出能力。如,导入/导出角色(Avatar)数据、场景(Scene)数据、天空盒(Skybox)数据、UI数据和/或脚本(Script);服务于3D直播或游戏,为角色适配面部捕捉和动作捕捉,或将角色作为被操控对象,并且可与场景进行交互;提供文件生产服务,用于生成已经导入所述3D图像数据的目标格式文件;由于目标格式基于GLTF格式之上开发,因此继承了GLTF格式良好的跨平台性和生态支持。不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时加载和导出。因此,可以通过3D分析功能代码实现文件的分享。
另外,所述服务层还用于提供Runtime下的加载和导出,和提供Editor编辑模式下的导入作为工程使用的资源,可同时满足专业美术人员,开发人员的生产需求,也可以让开发者基于Runtime部分开发相关的应用以满足普通用户的使用需求。
(四)Runtime层。
用于在程序运行时加载目标格式文件。
(五)工具集(Toolset)层。
提供面向第三方开发者或者创作者的多个工具(第三方应用)。通过工具集层使第三方开发者可以使用代码生成工具快速添加新组件数据,材质参数的导入导出,快速提供非标准化的数据导出及导入时所需的代码,并且文件本身完全没有破坏GLTF的标准,从而确保已有的GLTF格式的文件是依旧可以被标准的GLTF工具加载和编辑的。
所述多个工具用于新增所述目标格式支持的组件数据和材质数据。
如,可以提供各种代码生成工具服务服务层,这些工具具备导出导入功能,方便代码生成功能等。
举例来说:
用于文件(场景)导入导出的工具。
用于时间轴展示的工具,如提供基于时间轴的回放,比如声音,动画,灯光开关,物体显示等放到一个时间轴上进行展示。如可以把剧情动画加入到文件里,音频、物体、动画、相机、灯光等放在同一个时间轴下进行动态参数设定。
用于动画转换的工具,如将Unity的Humanoid动画转换成骨骼蒙皮动画,以实现对GLTF标准动画的兼容。
Component CodeGen,3D引擎组件上的数据序列化与反序列化的代码生成工具。
Material CodeGen,材质参数序列化与反序列化的代码生成工具。
Physics Simulation,基于动态骨骼调整的一套物理系统,可以模拟头发,衣服的物理飘动。
Avater Builder,辅助用户去导出符合标准的角色模型。
Data Compression,网格支持Draco压缩,贴图支持KTX2压缩,文件支持使用Zip压缩分散的GLTF文件。
下面将以计算机设备2为硬件执行主体,提供若干个3D文件的导入导出方案。
实施例一
图4示意性示出了根据本申请实施例一的针对3D文件的导入导出方法的流程图。
如图4所示,该3D文件加载方法可以包括步骤S400~S404,其中:
步骤S400:确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式。
步骤S402:响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件。
步骤S404:响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
在本实施例中,提供引擎内的编辑模式和runtime下的不同使用机制。
在编辑模式下,将3D文件(如gltf/glb文件)导入编辑器,使用户通过编辑器进行多样化编辑,以及在编辑模式下完成文件导出,使用第三方应用实现全面的导出功能。
在runtime模式下,操作不在编辑器进行,选择3D文件导入后仅能做简单编辑,然后运行显示。需要说明的是,相对于编辑模式,runtime模式也可以使用大部分的导出功能,用户可以在此之上添加各种内容生成工具,如卡通捏人工具。
因此,基于不同的使用模式提供不同的导入导出,具体的:提供编辑模式下的导入作为工程使用的资源,可同时满足专业美术人员,开发人员的生产需求,也可以让开发者基于Runtime部分开发相关的应用以满足普通用户的使用需求。
结合图5,以下对步骤S400~S404中各步骤进行详细阐述。
步骤S400:确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式。
在本实施例中,可以提供导入导出界面。在该导入导出界面设置有不同的组件。例如,设置对应于编辑模式的导入导出组件、对应于runtime模式的导入导出组件。这些组件可以是选择组件、也可以是文件选择选择组件、或文件导入框等。
步骤S402:响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件。
所述3D文件可以是gltf/glb文件,也可以是其他格式的3D文件。
在可选的实施例中,为优化可编辑功能,如图6所示,所述步骤S402“响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件”可以包括如下步骤:步骤S600,将所述3D文件导入到编辑器中;步骤S602,通过GLTFSceneImporter将导入的3D文件加载到内存或显存中;步骤S604,通过GLTFImporter导入所述内存或显存中的3D文件,以将3D文件的部分资源以独立文件形式保存到磁盘中。
GLTFSceneImporter为GLTF文件的场景导入组件。GLTFImporter为GLTF文件的导入组件。
在示例性应用中,可以将3D文件拖入到所述编辑器中,之后使用GLTFSceneImporter将拖入到所述编辑器中的3D文件加载到内存或显存,最后使用GLTFImporter进行导入,把需要创建的文件(部分资源)创建到磁盘里。举例而言:可以调用GLTFSceneImporter构建场景,然后遍历该场景中的网格、动画、材质、纹理等资源,最后将这些资源通过写入到工程的本地文件(位于磁盘)里。
在可选的实施例中,如图7所示,所述方法还包括:步骤S700,将引用重指向所述磁盘中的所述部分资源,以建立在游戏引擎下的编辑状态的引用;步骤S702,根据在游戏引擎下的编辑状态的引用,在所述编辑模式下进行3D文件的导出。
由于资源原先资源均被加载在内存或显存中,直接引用内存或显存中的资源会导致资源不可用(如报空)。本可选的实施例将内存或显存中的资源写入到工程的本地文件后会进行资源的引用重指向,把引用指向磁盘中的本地文件,以建立在游戏引擎下的编辑状态的引用,在编辑模式下具备全面的文件导出配置功能。
在可选的实施例中,为了减少本地文件的创建,如图8所示,所述方法还可以包括:步骤S800,将3D文件的部分资源与所述3D文件本身关联。在示例性应用中,通过AssetImportContext(资源导入内容)组件可以直接将某些资源,如网格、人物模型、动画等资源直接与3D文件本身进行关联,而不需要以独立的本地文件存在于工程中,点击导入的3D文件本身即可展开该3D文件即可看到这些内容。
步骤S404:响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
在runtime模式下,操作不在编辑器进行,选择3D文件导入后仅能做简单编辑,然后运行显示。
在可选的实施例中,为提供程序运行时的导入,如图9所示,所述步骤S404“响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件”可以通过如下步骤实现:步骤S900,通过runtime层选择述3D文件进行载入;步骤S902,通过GLTFSceneImporter将载入的3D文件加载到内存或显存中;步骤S904,通过GLTFSceneImporter构建所述3D文件的场景,并在所述场景中展示各个资源。
在可选的实施例中,为了方便导入导出,如图10所示,所述方法还可以包括:步骤S1000,将所述Runtime层的数据用于第三方应用引入,以进行目标格式的载入与导出。
在Runtime模式下,SDK(Software Development Kit,软件开发工具包)中Runtime层的数据被用于第三方应用引入后,将支持该3D文件的文件格式的载入与导出功能,例如第三方应用在引入该SDK后可以将任意创建的3D资源导出为该格式。
在可选的实施例中,所述3D文件为目标格式文件。
其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到。
其中,所述目标格式文件包括节点,将导入导出属性挂载在节点下,以扩展导入导出功能。
需要说明的是,本实施例中的目标格式包括GLTF格式的原规范,并在Extensions和Extras字段来开发功能,兼容已有的GLTF文件,确保不破坏标准GLTF的Json Scheme,以使其能被其他工具打开并修改;保留常规GLTF工具对该文件的预览性,使得非专用工具也能在一定程度上保留预览和编辑的能力,并且保证文件最小的数据结构,支持字段使用缺省数据;不需要大量复用的数据在Extra字段中保存,具备很强通用性和复用性的数据保存在Extension。
基于该目标格式,配置引擎(如Unity)内的编辑模式和Runtime下的不同使用机制。
通过配置SDK支持加载该目标格式与标准gltf格式文件,而VRM、MMD这类资源借助第三方库也能实现加载。任何方式加载到场景中的资源,均可以被导出,只要是受支持的导出类型。编辑模式:将文件导入编辑器(以gltf/glb文件为例),方便个人创作者在编辑器中实现更多样化的编辑操作,以及在编辑模式下完成文件导出,使用SDK可以实现全面的导出功能。Runtime模式:操作不在编辑器进行,选择文件导入后仅能做简单编辑,然后运行显示。也可以使用大部分的导出功能,第三方开发者可以在此之上打造各种内容生成工具,例如卡通捏人工具。
下面对本实施例中的目标格式文件进行介绍。
目标格式文件的属性扩展字段中被定义新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到。
在示例性应用中,所述新增属性包括:定义在所述扩展字段中并用于被节点指向的属性;定义在所述扩展字段中并无节点指向的属性;和/或定义在节点中的属性。
GLTF格式中,定义有构成3D图像的多种元素,如:场景(Scene)、节点(Node)、网格(Mesh)、相机(Camera)、材质(Material)、纹理(Texture)、蒙皮(Skin)。
场景,为场景结构描述条目,通过引用一个或多个节点定义场景图。
节点,挂载在场景下。节点可以引用子节点、网格、相机,以及描述网格变换的蒙皮等。
网格,用于描述场景中出现的3D对象的网格数据,
相机,为用于渲染场景的视锥体配置。
上述这些元素均有一个或多个属性。属性用于定义相应元素的性质、特征、特性、描述等。
以节点为例,其属性表可以包括:相机、子节点、蒙皮、矩阵、网格、四元数旋转、缩放比、位置信息、网格的权重数组、名称、属性扩展字段、属性附加字段。
在该目标格式中,继承了GLTF格式支持的全部功能及效果,并在不破坏GLTF格式结构的前提下,利用属性扩展字段和属性附加字段定义所述目标格式的新增属性。另外,该目标格式文件支持字段使用缺省数据。不受操作系统、工具类型和版本影响,易于使用和创建修改等,方便在运行时加载和导出。需要说明是,为了优化目标格式文件的加载速度和降低对内存的占用,提供了两套不同的加载机制,用于适配不同的使用场景,即:不需要大量复用的属性信息在属性附加字段中保存,具备通用性和很强复用性的保存在属性扩展字段中保存。
在示例性应用中,所述新增属性可以包括音频文件属性、音频行为属性、表情变换属性、碰撞体属性、人形骨骼属性、换装属性、光照贴图属性、元数据属性、骨骼动力学属性、后期处理属性、动态脚本属性、场景渲染属性、天空盒属性、立方体贴图属性、剧情时间轴属性、精灵属性、流媒体属性、资源变量属性、导出属性等。当然,还可以包括引擎或web支持的其他属性,支持更多功能。
本申请实施例中的应用程序框架,用于适配该目标格式文件,从而具有如下优势:
(1)可以兼容GLTF格式的文件。
(2)提供多个功能性的扩展,从而可以支持目标格式文件包括新增属性在内的各个属性。
以下对目标格式文件的各个新增属性进行介绍。
目标格式文件的属性扩展字段定义有音频文件属性;
其中,所述音频文件属性用于提供音频片段的文件信息,用于所述音频片段的还原。
所述音频文件属性可以被节点指向,从而被节点所使用。
如表1所示,定义在属性扩展字段中的音频文件属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000091
Figure BDA0003740360530000101
表1
目标格式文件的导出格式有两种后缀格式可供选择:.gltf和.glb。在导出单独的.gltf文件时,uri被使用到;在导出为.glb文件,则将通过bufferView字段存储信息。需要说明的是,后续可以针对不同的导出类型定义更多的后缀,如根据纯人物模型或者场景,去给文件定义不同的后缀,以此作为功能性的区分。
目标格式文件的属性扩展字段定义有定义音频行为属性;
其中,所述音频行为属性包括一个或多个播放参数,用于控制所述音频片段的播放。
节点在引用所述音频文件属性的基础之上,还可以进一步引用所述音频行为属性。
如表2所示,定义在属性扩展字段中的音频行为属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000102
Figure BDA0003740360530000111
表2
目标格式文件的属性扩展字段定义有表情变换属性;
其中,所述表情变换属性包括材质信息以及用于设置网格混合形状的标表情文件信息。
所述表情变换属性可以被节点指向,从而被节点所使用。
如表3所示,定义在属性扩展字段中的表情变换属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000112
Figure BDA0003740360530000121
表3
其中,blendShapeValues定义一映射表,记录有多个网格变换对表情变换的权重。materialVector4Values定义一个列表,记录有四个分量矢量(如,网格切线、着色器)的多组材质参数。materialColorValues定义另一列表,记录有表示颜色的多组材质参数。materialFloatValues定义另一列表,其包括float类型的多组材质参数。
目标格式文件的属性扩展字段定义有碰撞体属性;
其中,所述碰撞体属性包括针对碰撞体的一个或多个参数,用于支持碰撞交互。
所述碰撞体属性可以被节点指向,从而被节点所使用。
如表4所示,定义在属性扩展字段中的碰撞体属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000122
Figure BDA0003740360530000131
表4
目标格式文件的属性扩展字段定义有人形骨骼属性;
其中,所述人形骨骼属性包括多个人形骨骼的参数及人形骨骼之间的关系与动作约束。
所述人形骨骼属性可以被节点指向,从而被节点所使用,该节点对应实际的人形骨骼点。
该人形骨骼属性定义了Humanoid(人形)模型使用的Avatar(虚拟人物)。
任何作为Humanoid动画类型导入的模型都可以生成Avatar资源,其中存储驱动Animator的信息。
Avatar系统用于告诉游戏引擎如何识别特定的动画模型在布局上是人形,以及模型的哪些部分对应于腿、手臂、头部和身体,在这一步之后,动画数据可以被“重用”。需要说明的是,由于不同人形角色之间骨骼结构的相似性,可以将动画从一个人形角色映射到另一个人形角色,从而实现重定位和反向运动学。
如表5所示,定义在属性扩展字段中的人形骨骼属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000132
Figure BDA0003740360530000141
表5
其中,humanBones记录多个关节,以及各个关节(如颈、头)之间连接和空间变换关系。
节点在引用所述人形骨骼属性的基础之上,还可以进一步引用所述骨骼变化属性。
所述骨骼变化属性(服务层基于该属性提供相应的能力)还包括如表6所示内容。
Figure BDA0003740360530000142
Figure BDA0003740360530000151
表6
目标格式文件的属性扩展字段定义有定义换装属性;
其中,所述换装属性包括不同换装方案的列表以及各换装方案的材质参数列表。
所述换装属性可以被节点指向,从而被节点所使用。
在有Avatar的前提下,节点可以引用/指向所述换装属性,从而支持人物的换装。
换装系统是通过更改网格可见性或网格上的材质来实现的。
如表7-9所示,定义在属性扩展字段中的换装属性(服务层基于该属性提供相应的能力)包括如下信息:
类型 描述 是否必需
dressUpConfigs GLTFDress 换装方案集合
表7
Figure BDA0003740360530000152
表8
Figure BDA0003740360530000153
表9
其中,表7为换装方案集合,表8为每个换装方案的信息,表9为单个换装包含的改动。
目标格式文件的属性扩展字段定义有光照贴图属性;
其中,所述光照贴图属性用于指示引擎预先计算场景中的表面亮度的变化。所述光照贴图属性在所述属性扩展字段中定义,不需要在其他对象中指向。
如表10所示,定义在属性扩展字段中的光照贴图属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000161
表10
其中,每个贴图存储有用户场景照明的不同信息。
如,LightmapTextureInfo[]包括:入射光颜色(必需)、入射光主要方向(必需)、每个灯的遮挡遮罩(必需)等。
目标格式文件的属性扩展字段定义有元数据属性;
其中,所述元数据属性包括资源描述信息、资源管理信息、法律信息和/或内容参考信息。所述元数据属性在所述属性扩展字段中定义,不需要在其他对象中指向。
资源描述信息:用于发现和识别,可以包括标题、摘要、作者和关键字等元素。按顺序排列以形成章节。它描述了数字资料的类型、版本、关系和其他特征。
资源管理信息:用于管理资源的信息,如资源类型、权限。
法律信息:提供有关创建者、版权所有者和公共许可的信息。
内容参考信息:关于内容的信息。
如表11所示,定义在属性扩展字段中的元数据属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000162
Figure BDA0003740360530000171
表11
目标格式文件的属性扩展字段定义有骨骼动力学属性;
其中,所述骨骼动力学属性用于支持模拟绑定骨骼的物体的动态运动。
在示例性应用中,可以模拟裙子、头发、挂坠等跟随骨骼、身体的运动而运动。
目标格式文件的属性扩展字段定义有后期处理属性;
其中,所述后期处理属性包括体积组件的属性和支持的后期处理效果的属性。
所述后期处理属性可以被节点指向,从而被节点所使用。
体积组件包括控制它们如何影响相机以及如何与其他体积交互的属性。它是一种作用于全屏的效果,用于3D渲染,可以改善渲染效果,并且只需很少的时间设置。
以下描述了一个体积组件的属性:
如表12所示,一个体积组件的属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000181
表12
通过配置文件ID,可以指定用哪个效果。
无论全局生成还是局部生效,均需要被节点指向,以服务于指定该后期处理属性的节点。
其中,支持的后期处理效果可以包括:环境光遮蔽、绽放、混音器、色差、颜色调整、颜色曲线、景深、胶片颗粒、镜头失真、提升、伽玛和增益、运动模糊、帕尼尼(Panini)投影、阴影中间调亮点、分割色调、色调映射、渐晕、白平衡。
各个后期处理效果可以在属性扩展字段定义相应的属性。
以渐晕为例,渐晕是指与中心相比,图像边缘变暗和/或去饱和。渐晕包括表13中的属性。
Figure BDA0003740360530000182
表13
目标格式文件的属性扩展字段定义有动态脚本属性(服务层基于该属性提供相应的能力);
其中,所述动态脚本属性包括供引擎执行的字符串,以支持解释运行外部脚本。所述动态脚本属性在所述属性扩展字段中定义,不需要在其他对象中指向。
在示例性应用中,上述字符串可以指向外部脚本,如Puerts、Lua脚本等。
接收渲染事件和来自输入设备的事件,脚本引擎在接收到相应的事件后执行脚本。
所述事件可以包括:物体渲染第一帧、物体组件开启、物体组件关闭、销毁、每一帧更新、所有物体更新之后、按照时间定期调用。
再者,所述事件还可以包括手动触发的事件,例如由以下设备触发的事件:键盘、鼠标、操纵杆、控制器、触摸屏、运动感应功能(如加速度计或陀螺仪)、VR(VirtualReality,虚拟现实)和AR(Augmented Reality,增强现实)控制器等。
目标格式文件在所述属性扩展字段中定义有全局的场景渲染属性;其中,所述场景渲染属性包括用于影响所述场景的一个或多个渲染效果参数。所述场景渲染属性在所述属性扩展字段中定义,不需要在其他对象中指向。如表14所示,定义在属性扩展字段中的场景渲染属性(服务层基于该属性提供相应的能力)包括如下信息:
Figure BDA0003740360530000191
Figure BDA0003740360530000201
表14
目标格式文件在所述属性扩展字段中定义有天空盒属性;其中,所述天空盒属性用于指示引擎创建无边际的背景显示,以对指向的材质进行着色。所述天空盒属性在所述属性扩展字段中定义,不需要在其他对象中指向。如表15所示,定义在属性扩展字段中的天空盒属性(服务层基于该属性提供相应的能力)包括如下信息:
类型 描述 是否必需
material id 使用天空盒着色器的材质
表15
以视频游戏关卡为例,当使用天空盒时,关卡被封闭在一个长方体中。天空、远处的山脉、远处的建筑物和其他无法到达的物体被投影到立方体的表面上,创造出远处3D环境的错觉。天穹等同理,使用球体或半球体而不是立方体。
目标格式文件在属性扩展字段中定义有立方体贴图属性;其中,所述立方体贴图属性包括立方体贴图的布局、纹理映射、各个面的纹理。所述立方体贴图属性不是被节点所指向,而是在材质里作为一种特殊贴图类型指向使用。如表16所示,定义在属性扩展字段中的立方体贴图属性(服务层基于该属性提供相应的能力)可以包括如下信息:
Figure BDA0003740360530000211
表16
立方体贴图是六个方形纹理的集合,代表环境中的反射。六个正方形组成了一个围绕一个物体的假想立方体的面;每个面代表沿世界轴方向(上、下、左、右、前、后)的视图。图像类型(imageType)包括:一行或一列中的6个正方形拼接而成纹理(宽高比6:1或1:6)、全景图像(宽高比2:1)3种。
目标格式文件的属性扩展字段定义有剧情时间轴属性(服务层基于该属性提供相应的能力);
其中,所述剧情时间轴属性用于排列对象的轨道以及创建过场动画和游戏序列。
所述剧情时间轴属性可以被节点指向,从而被节点所使用。
所述剧情时间轴属性可以包括如下信息:
轨道资源的名称;
动画轨道组,描述动画轨道;
音频轨道组,描述音频轨道;
表情变换的轨道组(通常用于面捕表情的动画),描述表情变换;
材质参数曲线轨道组,曲线会随着时间进行输出值的变化(float浮点数类型的参数),描述材质变化;
材质参数曲线轨道组,曲线会随着时间进行输出值的变化(Color颜色类型的参数),描述颜色变化;
材质参数轨道组(int整数类型的参数),描述材质;
材质参数轨道组(Color类型的参数),描述颜色;
材质参数轨道组(Vector4类型的参数),描述Vector4;
材质参数轨道组(Texture2D贴图类型的参数),描述Texture2D(纹理);
物体是否激活,bool类型,描述物体是否激活;
组件是否激活,bool类型,描述组件是否激活;
整个轨道的长度,浮点类型,描述轨道长度。
其中,所有的轨道都包括以下几个参数:资源名称、开始时间、结束时间、资源ID。其中,资源ID用于指定数据源的下标位置,可能是动画,贴图,音频等数据。
其中,轨道参数可以包括:轨道名称(string类型,非必需)、开始时间(浮点类型、必需)、结束时间(浮点类型、必需)。
其中,可以通过一个泛型类型表示每一个类别的轨道组里包含的子轨道数据,如描述一个类别下的所有子轨道集合。
继承指定泛型的类型后即可得到不同类型的轨道数据类,如表示动画和音频的两个轨道组。
对于材质Curve曲线参数类,可以均继承自泛型类型,例如:指定了使用渲染器上多个材质的其中一个材质、是否在执行结束后再反向执行一遍、曲线数据。
表情变换的曲线,用于平滑的进行人物面捕表情转换。
材质的浮点参数曲线,可以基于时间不停更新材质的浮点类型参数,包括:要设置的材质参数名。
材质的颜色参数曲线,基于时间不停更新材质的颜色类型参数,继承自上述类,如可以包括:开始和结束时的颜色值。基于时间进行插值运算,持续更新进行每一帧颜色。
获取到指定节点上的动画组件,只有节点ID会被导出,其余变量在加载时创建。
在节点使用所述剧情时间轴属性中的参数时,可以指定该述剧情时间轴的播放行为,其中,控制播放行为的播放参数可以包括:ID(描述轨道名称、必需)、是否加载后即自动进行播放(bool类型,非必需)、是否循环播放(bool类型,非必需)。
目标格式文件的属性扩展字段定义有精灵属性;
其中,所述精灵属性包括布局、纹理引用、纹理位置、边框、物理形状和/或空间位置。
所述精灵属性可以被节点指向,从而被节点所使用。
如表17所示,定义在属性扩展字段中的精灵属性(服务层基于该属性提供相应的能力)可以包括如下信息:
Figure BDA0003740360530000221
Figure BDA0003740360530000231
表17
精灵(Sprite)是二维图形对象。在三维场景下,精灵一般为标准纹理。通过上述精灵属性可以组合和管理纹理,以便在开发过程中提高效率和便利性。
目标格式文件在节点中定义有流媒体属性;
其中,所述流媒体属性包括流媒体的URL(uniform resource locator,统一资源定位符)名称、URL地址以及流媒体格式。
如表18所示,定义在属性扩展字段中的流媒体属性(服务层基于该属性提供相应的能力)可以包括如下信息:
类型 描述 是否必需
name string URL名称
url string URL地址
mimeType string 视频格式
alternate List<string> 备用地址
表18
目标格式文件在节点中定义有资源变量属性;
其中,所述资源变体属性包括变量类型和指向引用字段索引的集合,以支持资源的使用。
如表19所示,定义在属性扩展字段中的资源变量属性(服务层基于该属性提供相应的能力)可以包括如下信息:
类型 描述 是否必需
type enum 变量类型
collections List<id> 指向引用字段索引的集合
表19
资源变量属性,用于支持将一些当前不使用,但将来可能会使用到的资源。示例性的,这些资源可以是纹理、立方体贴图、材质、音频片段、动画片段、光照贴图。
目标格式文件在属性附加字段中定义部分非通用参数,所述属性附件字段挂载在节点或对象下。
所述非通用参数是相对于通用参数,是指诸如不具有全局性、更新迭代频繁的参数。
在目标格式中,除常规字段之外,包括属性扩展字段(Extensions)和属性附加字段(Extras)。所述目标格式中的常规字段与GLTF格式的字段相同,确保所述目标格式对GLTF格式的兼容。属性附加字段用于添加非通用化的一些信息。属性扩展字段为全局性,属性附加字段为局性。属性附件字段通常挂载在某个节点或对象下面,提供定制化的功能性补充。如以下这些属性信息可以记录到Extras中,如少数引擎支持的组件的属性,或经常更新的组件的属性(部分组件更新后,其属性命名更改或添加新字段)。并提供代码生成器快速生成代码,为了使用该SDK(软件开发工具包)的用户定制功能性补充。所述属性扩展字段,则用于记录强通用性的信息。即,所述属性扩展字段中记录的属性比所述属性附加字段中记录的属性更通用,复用性更强。
举例而言,以下这些属性信息可以记录到Extras中:
(1)人形骨骼的属性(名称)。
(2)相机的其余的必要信息,以便更好的支持实际场景的还原。
(3)自定义材质的信息,以保证能被其他工具使用。
(4)UI信息。
目前受支持的信息有动画,声音,相机,灯光,材质,物理,渲染等类型的组件均有信息导出,自定义的脚本公开访问的变量也支持使用代码生成工具导出。
作为可选的实施例,所述目标格式文件可以实现自定义的导入导出。
所述目标格式文件包括节点,将导出属性挂载在节点下,以扩展导出功能等。
目标格式文件还定义导入导出方式;
其中,所述导出方式用于定义提供材质参数的导出和/或提供组件参数的导出。
例如:指定类型(如,着色器类型),以及定义导出的各项材质参数信息。
再如:在节点下导出为附加字段信息,如:指定组件类型(如,动画),以及导出的各项公共参数信息。
根据上文内容可知,相对于GLTF格式,目标格式定义大量新增属性,以支持大量功能或效果的实现,如下:
(1)兼容GLTF格式,即支持Scene,Node,Mesh,Material,Texture等信息记录。
(2)支持标准GLTF格式的扩展,如KHR_materials_pbrSpecularGlossiness,KHR_materials_unlit,KHR_materials_clearcoat等官方材质扩展。
(3)支持标准GLTF格式的灯光导入导出等官方功能扩展。
(4)相机导入导出添加额外的引擎特定数据,但仍保留GLTF格式中相机的支持。
(5)支持碰撞体,如:球形、方形、圆柱形、胶囊形等碰撞。
(6)支持自定义材质类型的导入导出扩展。
(7)支持骨骼蒙皮数据导出。
(8)支持表情变换的网格形变,可用于Avatar面部表情捕捉的变换。
(9)支持动画,包含物体的空间位置(位置,旋转,大小)和表情变换的变换。
(10)支持记录人体骨架数据,用于通用的人形动画和动作捕捉。
(11)支持换装。
(12)支持音频。
(13)添加URL数据导出。
(14)支持流媒体视频播放,URL引用各种外部资源(包括网络文件,流媒体,本地文件)。
(15)支持元数据管理等,用于决定可以在哪些用途下使用该模型,比如是否允许使用在轻微色情或暴力活动上。
(16)支持表情混合输出。
(17)支持剧情时间轴,可以基于时间轴实现各种动画的混合,包括动画、声音、表情控制,物体的可见性,材质参数等。
(18)支持天空盒。
(19)支持后期处理。
(20)支持骨骼动力学(头发和衣服物理系统)。
(21)支持制作喷漆、贴花。
(22)支持基于网格的文字显示
(23)支持Draco,Draco是一个开源网格压缩标准。
(24)支持立方体贴图。
(25)支持精灵,用于2D渲染或者UI。
(26)支持光照贴图。
(27)支持事件系统。
为了使得本申请的优势更加清晰明白,以下提供VRM格式和目标格式的对照。
VRM(virtual reality modeling,虚拟现实模型),也是基于GLTF发展而来的一种3D文件格式。VRM文件允许所有支持的应用程序运行相同的虚拟化身数据(3D模型)。
作为均是基于GLTF格式发展而来的新格式,目标格式相对于VRM格式有如下优势:
兼容GLTF格式,可以在各个游戏引擎,WebGL上使用,可被专业设计软件打开编辑(如Maya、Blender、C4D等)。
支持场景导出,动画,多媒体,天空盒,网格压缩,自定义材质参数和脚本参数等均支持,功能性可以不断扩展。
跨系统,工具,版本兼容支持,一个文件兼容所有的设备,只需拥有Runtime,不受引擎版本,目标运行设备影响,非常适合作为交换介质在商店上架,打造生态。
材质可以自行选择,确立属于自己的标准规范,且包含了代码生成工具,可以应对快速的变换需求。
可针对业务灵活定制组件或用户端自定义逻辑,这些数据也可以导出到文件,例如可以将一个VR女友的应用放到文件里被程序框架加载,而非独立生成应用,便于长远的业务发展和生态建设。
详细如下表20。
Figure BDA0003740360530000251
Figure BDA0003740360530000261
Figure BDA0003740360530000271
表20
实施例二
图11示意性示出了根据本申请实施例二的针对3D文件的导入导出装置的框图。该针对3D文件的导入导出装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。如图11所示,该针对3D文件的导入导出装置1100可以包括确定模块1110、第一响应模块1120和第二响应模块1130,其中:
确定模块1110,用于确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;
第一响应模块1120,用于响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及
第二响应模块1130,用于响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
在可选的实施例中,第一响应模块1120,还用于:
将所述3D文件导入到编辑器中;
通过GLTFSceneImporter将导入的3D文件加载到内存或显存中;
通过GLTFImporter导入所述内存或显存中的3D文件,以将3D文件的部分资源以独立文件形式保存到磁盘中。
在可选的实施例中,所述装置还可以包括关联模块,用于:
将3D文件的部分资源与所述3D文件本身关联。
在可选的实施例中,所述装置还可以包括引入模块,用于:
将引用重指向所述磁盘中的所述部分资源,以建立在游戏引擎下的编辑状态的引用;
根据在游戏引擎下的编辑状态的引用,在所述编辑模式下进行3D文件的导出。
在可选的实施例中,第二响应模块1130,还用于:
通过runtime层选择述3D文件进行载入;
通过GLTFSceneImporter将载入的3D文件加载到内存或显存中;
通过GLTFSceneImporter构建所述3D文件的场景,并在所述场景中展示各个资源。
在可选的实施例中,所述装置还可以包括引入模块,用于:
将所述Runtime层的数据用于第三方应用引入,以进行目标格式的载入与导出。
在可选的实施例中,所述3D文件为目标格式文件;
其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到;
其中,所述目标格式文件包括节点,将导入导出属性挂载在节点下,以扩展导入导出功能。
实施例三
图12示意性示出了根据本申请实施例三的适于实现针对3D文件的导入导出方法的计算机设备2的硬件架构示意图。本实施例中,计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板设备、膝上型计算机、虚拟机等。如图12所示,计算机设备2至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备2的内部存储模块,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(FlashCard)等。当然,存储器10010还可以既包括计算机设备2的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如针对3D文件的导入导出方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备2的总体操作,例如执行与计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备2与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备2与外部终端相连,在计算机设备2与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图12仅示出了具有部件10010-10030的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的针对3D文件的导入导出方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请实施例。
实施例四
本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的针对3D文件的导入导出方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中针对3D文件的导入导出方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种针对3D文件的导入导出方法,其特征在于,包括:
确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;
响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及
响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
2.根据权利要求1所述针对3D文件的导入导出的方法,其特征在于,所述响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件,包括:
将所述3D文件导入到编辑器中;
通过GLTFSceneImporter将导入的3D文件加载到内存或显存中;
通过GLTFImporter导入所述内存或显存中的3D文件,以将3D文件的部分资源以独立文件形式保存到磁盘中。
3.根据权利要求2所述针对3D文件的导入导出的方法,其特征在于,还包括:
将3D文件的部分资源与所述3D文件本身关联。
4.根据权利要求1所述针对3D文件的导入导出的方法,其特征在于,还包括:
将引用重指向所述磁盘中的所述部分资源,以建立在游戏引擎下的编辑状态的引用;
根据在游戏引擎下的编辑状态的引用,在所述编辑模式下进行3D文件的导出。
5.根据权利要求1所述针对3D文件的导入导出的方法,其特征在于,所述响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件,包括:
通过runtime层选择述3D文件进行载入;
通过GLTFSceneImporter将载入的3D文件加载到内存或显存中;
通过GLTFSceneImporter构建所述3D文件的场景,并在所述场景中展示各个资源。
6.根据权利要求5所述针对3D文件的导入导出的方法,其特征在于,还包括:
将所述Runtime层的数据用于第三方应用引入,以进行目标格式的载入与导出。
7.根据权利要求1至6任意一项所述针对3D文件的导入导出的方法,其特征在于:
所述3D文件为目标格式文件;
其中,所述目标格式文件的属性扩展字段定义有新增属性,所述目标格式文件关联兼容GLTF格式的目标格式,所述目标格式通过定义GLTF格式的扩展字段信息得到;
其中,所述目标格式文件包括节点,将导入导出属性挂载在节点下,以扩展导入导出功能。
8.一种针对3D文件的导入导出装置,其特征在于,所述装置包括
确定模块,用于确定3D文件的使用模式,所述使用模式包括编辑模式和runtime模式;
第一响应模块,用于响应于所述使用模式为所述编辑模式,以所述编辑模式导入所述3D文件;及
第二响应模块,用于响应于所述使用模式为所述runtime模式,以所述runtime模式导入所述3D文件。
9.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7中任意一项所述的针对3D文件的导入导出方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至7中任意一项所述的针对3D文件的导入导出方法的步骤。
CN202210813989.2A 2022-07-11 2022-07-11 针对3d文件的导入导出方法及装置 Pending CN115205430A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210813989.2A CN115205430A (zh) 2022-07-11 2022-07-11 针对3d文件的导入导出方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210813989.2A CN115205430A (zh) 2022-07-11 2022-07-11 针对3d文件的导入导出方法及装置

Publications (1)

Publication Number Publication Date
CN115205430A true CN115205430A (zh) 2022-10-18

Family

ID=83579964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210813989.2A Pending CN115205430A (zh) 2022-07-11 2022-07-11 针对3d文件的导入导出方法及装置

Country Status (1)

Country Link
CN (1) CN115205430A (zh)

Similar Documents

Publication Publication Date Title
CA2795739C (en) File format for representing a scene
US7336280B2 (en) Coordinating animations and media in computer display output
US7836086B2 (en) Layering and referencing of scene description
US8566736B1 (en) Visualization of value resolution for multidimensional parameterized data
CN107393013A (zh) 虚拟漫游文件生成、显示方法、装置、介质、设备和系统
MXPA06012368A (es) Integracion de jerarquia de escena tridimensional en sistema de composicion bidimensional.
WO2022183519A1 (zh) 一种可实时交互的三维图形图像播放器
Palmer Essential Java 3D fast: developing 3D graphics applications in Java
CN113721905A (zh) 一种三维数字化软件开发的无码化编程系统及编程方法
CN111179391A (zh) 一种三维动画制作方法、系统及存储介质
CN113689534B (zh) 物理特效渲染方法、装置、计算机设备和存储介质
US11625900B2 (en) Broker for instancing
Eid et al. HAMLAT: A HAML-based authoring tool for haptic application development
CN115167940A (zh) 3d文件加载方法及装置
CN115170707B (zh) 基于应用程序框架的3d图像实现系统及方法
CN115205430A (zh) 针对3d文件的导入导出方法及装置
US11393180B2 (en) Applying non-destructive edits to nested instances for efficient rendering
CN115170708B (zh) 3d图像实现方法及系统
Schechter et al. Functional 3D graphics in C++—with an object-oriented, multiple dispatching implementation
US20240009560A1 (en) 3D Image Implementation
Ko et al. Interactive web-based virtual reality with java 3d
US20240111496A1 (en) Method for running instance, computer device, and storage medium
Luis-Tello et al. Interaction According to Immersion in Virtual Environments: Graphic Development and PBRS in Environments with Real-Time Rendering and Virtual Reality
Mendoza Guevarra et al. The Finale
CN116600173A (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