FBX三维模型转换为glTF三维模型的方法、设备以及系统技术方案

技术编号:21631791 阅读:46 留言:0更新日期:2019-07-17 12:03
本申请提供了一种FBX三维模型转换为glTF三维模型的方法、设备以及系统,涉及模型转换技术领域。所述方法包括:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括关系数据,贴图数据,资源数据,节点数据,网格数据,骨骼数据,材质数据,动画数据;分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。通过本申请的技术方案,可以自动将FBX模型转换为glTF模型,方便嵌入到网页中,并且能方便的用代码交互。

Method, equipment and system of converting FBX three-dimensional model into glTF three-dimensional model

【技术实现步骤摘要】
FBX三维模型转换为glTF三维模型的方法、设备以及系统
本申请属于模型转换
,尤其涉及一种FBX三维模型转换为glTF三维模型的方法、计算设备、计算机可读存储介质以及系统。
技术介绍
现有技术中,FBX是一种由Kaydara开发的专有文件格式(.fbx),自2006年以来由Autodesk拥有,是一种非常流行的三维模型格式,广泛应用于制造业、工程建设行业和传媒娱乐等行业,帮助各行业用户进行三维可视化设计。但是,设计师使用的三维模型处理软件(诸如Maya,3DSMax等),在这些软件上完成三维可视化设计以后无法直接导出glTF模型(glTF是一种可以减少三维模型格式中与渲染无关的冗余数据并且更加适合OpenGL簇加载的一种三维模型文件格式),一般导出的都是FBX模型。然而,FBX三维模型无法直接在网页上使用,无法直接嵌入至网页中,降低了工作效率,增加了设计成本,对用户进行三维可视化设计造成了不便。因此,如何研究和开发出一种新的方案以克服上述技术问题是本领域亟待解决的技术难题。
技术实现思路
有鉴于此,本申请提供一种FBX三维模型转换为glTF三维模型的方法、计算设备、计算机可读存储介质以及系统,实现了自动将FBX三维模型转换为glTF三维模型,方便嵌入到网页中。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种FBX三维模型转换为glTF三维模型的系统,包括模型解析设备、数据处理设备以及模型构建设备,其中,所述模型解析设备用于:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;所述数据处理设备用于:分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;所述模型构建设备用于:根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。根据本申请的第二方面,提出了一种FBX三维模型转换为glTF三维模型的方法,包括:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。根据本申请的第三方面,提出了一种算设备,所述计算设备包括:适于实现各指令的处理器以及存储设备,所述存储设备存储有多条指令,所述指令适于由处理器加载并执行:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。根据本申请的第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。由以上技术方案可见,本申请通过脚本解析并读取FBX模型文件中的数据,转换为glTF模型文件,可以自动将FBX模型转换为glTF模型,方便嵌入到网页中,并且能方便的用代码交互。为让本申请的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的系统的示意图;图2示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的系统中模型解析设备的示意图;图3示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的系统中数据处理设备的示意图;图4示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的系统中模型构建设备的示意图;图5示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的方法的流程图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。下面首先介绍本申请涉及的术语。三维模型:物体的多边形表示,通常用计算机或者其它视频设备进行显示。显示的物体可以是现实世界的实体,也可以是虚构的物体。任何物理自然界存在的东西都可以用三维模型表示。FBX:一种由Kaydara开发的专有文件格式(.fbx),自2006年以来由Autodesk拥有,是一种非常流行的三维模型格式。glTF:一种可以减少三维模型格式中与渲染无关的冗余数据并且在更加适合OpenGL簇加载的一种三维模型文件格式。具体的,图1示出了根据本申请一示例性实施例的一种FBX三维模型转换为glTF三维模型的系统的示意图,请参阅图1,一种FBX三维模型转换为glTF三维模型的系统包括模型解析设备100、数据处理设备200以及模型构建设备300,也即本申请实施例的技术方案在模型解析设备、数据处理设备以及模型构建设备之间实现,将FBX三维模型转换为glTF三维模型,其中:所述模型解析设备100用于:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据。在本申请的另一种实施方式中,所述属性数据包括关系数据、贴图数据、资源数据、节点数据、网格数据、骨骼数据、材质数据以及动画数据。所述数据处理设备200用于:分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中。所述模型构建设备300用于:根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。本申请实施例的技术方案可以在模型解析设备、数据处理设备以及模型构建设备之间实现。现有技术中,设计师使用的三维模型处理软件(Maya,本文档来自技高网...

【技术保护点】
1.一种FBX三维模型转换为glTF三维模型的系统,其特征在于,所述系统包括模型解析设备、数据处理设备以及模型构建设备,其中,所述模型解析设备用于:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;所述数据处理设备用于:分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;所述模型构建设备用于:根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。

【技术特征摘要】
1.一种FBX三维模型转换为glTF三维模型的系统,其特征在于,所述系统包括模型解析设备、数据处理设备以及模型构建设备,其中,所述模型解析设备用于:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数据以及动画数据;所述数据处理设备用于:分别对所述对象中的贴图数据、节点数据、网格数据以及动画数据进行处理,将处理结果保存至贴图数据对象、网格数据对象、材质数据对象、节点数据对象以及动画数据对象中;所述模型构建设备用于:根据所述处理结果构建所述FBX三维模型对应的glTF三维模型。2.根据权利要求1所述的系统,其特征在于,所述属性数据还包括关系数据、资源数据、骨骼数据以及材质数据。3.根据权利要求2所述的系统,其特征在于,当所述FBX三维模型为纯文本格式时,所述模型解析设备包括:对象获取模块,用于获取初始化的栈以及对象;属性名保存模块,用于逐行读入所述FBX三维模型,将冒号前的属性名压入所述栈;属性数据保存模块,用于判断冒号后的属性数据是否为块数据,当判断为否时,将所述属性数据根据所述栈的属性名层次保存至所述对象。4.根据权利要求3所述的系统,其特征在于,当所述FBX三维模型为二进制格式时,所述模型解析设备还包括:标识信息读取模块,用于读取所述FBX三维模型的头部标示信息;属性名保存模块,还用于按照字符串的方式读取属性名,并压入所述栈中;属性数据保存模块,还用于通过递归的方式按照块读取所述FBX三维模型的结束位置、属性数据数组长度以及属性数据总长度,当所述属性数据数组长度大于1时,读取长度个数的数据作为属性数据,将所述属性数据根据所述栈的属性名层次保存至所述对象。5.根据权利要求3或4所述的系统,其特征在于,所述数据处理设备包括:贴图对象获取模块,用于获取初始化的贴图数据对象;贴图数据遍历模块,用于遍历所述贴图数据,根据所述关系数据查找关联的资源数据,当查找到关联的资源数据且所述资源数据上有二进制数据时,将所述二进制数据保存为图片文件,当未查找到关联的资源数据或所述资源数据上没有二进制数据时,根据所述资源数据以及所述贴图数据中的相对路径信息获取贴图文件的真实路径;贴图数据保存模块,用于以所述贴图数据的ID为属性名,所述贴图文件的真实路径为值,保存至所述贴图数据对象中。6.根据权利要求5所述的系统,其特征在于,所述数据处理设备还包括:网格对象获取模块,用于获取初始化的网格数据对象以及材质数据对象;网格数据遍历模块,用于遍历所述对象中的网格数据,根据所述关系数据获取关联的节点数据、骨骼数据以及材质数据,获取所述网格数据上的顶点数据、法向量数据、贴图坐标数据以及面索引数组,根据所述骨骼数据获取骨骼索引数组以及骨骼权重数组;数组名保存模块,用于将所述骨骼索引数组、骨骼权重数组以及材质数据ID以所述网格数据的ID为属性名保存至所述网格数据对象中;参数表保存模块,用于将所述材质数据转换为模型渲染参数表,将所述模型渲染参数表以材质数据ID为属性名保存至所述材质数据对象中。7.根据权利要求6所述的系统,其特征在于,所述数据处理设备还包括:节点对象获取模块,用于获取初始化的节点数据对象;节点数据遍历模块,用于遍历所述对象中的节点数据,将所述节点数据上的缩放信息、旋转信息以及位移信息转换为变换矩阵;根据所述关系数据查找所述节点数据所有的子节点ID,保存为子节点ID数组;根据所述关系数据查找所述节点数据对应的骨骼数据ID、网格数据ID;骨骼ID保存模块,用于以所述节点数据的ID为属性名,将变换矩阵、子节点ID数组、网格数据ID以及骨骼数据ID保存至所述节点数据对象中。8.根据权利要求7所述的系统,其特征在于,所述数据处理设备还包括:动画对象获取模块,用于获取初始化的动画数据对象;动画数据遍历模块,用于遍历所述对象中的动画数据,根据所述关系数据获取关联的节点数据;节点ID保存模块,用于将所述动画数据中的时间数组、帧旋转数组、帧位移数组、帧缩放数组以及节点数据的ID以所述动画数据的ID为属性名保存至所述动画数据对象中。9.根据权利要求8所述的系统,其特征在于,所述模型构建设备包括:模型对象获取模块,用于获取初始化的glTF模型对象以及二进制数据对象;贴图数组保存模块,用于将所述贴图数据对象转换为贴图数组,保存至所述glTF模型对象的贴图数组中,并将所述贴图数据对象对应的索引保存至所述贴图数据对象;材质数据保存模块,用于将所述材质数据对象转换成为材质数组,保存至所述glTF模型对象的材质数组中,并将所述材质数据对象对应的索引保存至所述材质数据对象;网格数组保存模块,用于将所述网格数据对象转换为网格数组,保存至所述glTF模型对象的网格数组中,并将所述网格数据对象对应的索引保存至所述网格数据对象上;索引保存模块,用于将所述网格数据对象关联的材质数据ID根据所述材质数据对象转换为材质数组的索引,并将所述网格数据对象中的顶点数组、法向量数组、贴图坐标数组、面索引数组、骨骼索引数组、骨骼权重数组转换为二进制保存至所述二进制数据对象中,生成对应的二进制数据访问信息,保存到所述二进制访问信息数组中;将所述网格数据中的顶点数组、法向量数组、贴图坐标数组、面索引数组、骨骼索引数组、骨骼权重数组替换为对应的二进制访问信息数组的索引;骨骼数组保存模块,用于将所述骨骼数据转换为骨骼数组,保存至所述glTF模型对象的骨骼数组中,并将所述骨骼数据对应的索引保存至所述骨骼数据上;节点数组保存模块,用于将所述节点数据对象转换为节点数组,保存至所述glTF模型对象的节点数组中,并将所述节点数据对应的索引保存至所述节点数据对象上,根据所述节点数据对象中的骨骼数据ID查找到骨骼数据,将所述骨骼数据转换为骨骼数组中的索引,将所述网格数据ID转换为网格数组索引,将节点数组的每个节点字节的数组中的节点数据ID转换为节点数组的索引;动画数组保存模块,用于将所述动画数据对象转换为动画数组,保存至所述glTF模型对象的动画数组中,并将所述动画数据对应的索引保存至所述动画数据对象上,将所述动画数据的时间数组、帧旋转数组、帧位移数组以及帧缩放数组转换成二进制保存所述二进制数据对象中,生成对应的二进制数据访问信息,保存至所述二进制访问信息数组中,将所述动画数据中的时间数组、帧旋转数组、帧位移数组以及帧缩放数组替换为对应的二进制访问信息数组的索引;二进制文件保存模块,用于将所述二进制数据对象保存为.bin的二进制文件,将文件路径及文件字节数保存至所述glTF模型对象的二进制数据数组的第一个元素;三维模型确定模块,用于将所述glTF模型对象以JSON方式保存为.gltf后缀的文件,得到所述FBX三维模型对应的glTF三维模型。10.一种FBX三维模型转换为glTF三维模型的方法,其特征在于,所述方法包括:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性数据包括贴图数据、节点数据、网格数...

【专利技术属性】
技术研发人员:廖斌斌
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1