【技术实现步骤摘要】
FBX三维模型转换为glTF三维模型的方法、设备以及系统
本申请属于模型转换
,尤其涉及一种FBX三维模型转换为glTF三维模型的方法、计算设备、计算机可读存储介质以及系统。
技术介绍
现有技术中,FBX是一种由Kaydara开发的专有文件格式(.fbx),自2006年以来由Autodesk拥有,是一种非常流行的三维模型格式,广泛应用于制造业、工程建设行业和传媒娱乐等行业,帮助各行业用户进行三维可视化设计。但是,设计师使用的三维模型处理软件(诸如Maya,3DSMax等),在这些软件上完成三维可视化设计以后无法直接导出glTF模型(glTF是一种可以减少三维模型格式中与渲染无关的冗余数据并且更加适合OpenGL簇加载的一种三维模型文件格式),一般导出的都是FBX模型。然而,FBX三维模型无法直接在网页上使用,无法直接嵌入至网页中,降低了工作效率,增加了设计成本,对用户进行三维可视化设计造成了不便。因此,如何研究和开发出一种新的方案以克服上述技术问题是本领域亟待解决的技术难题。
技术实现思路
有鉴于此,本申请提供一种FBX三维模型转换为glTF三维模型的方法、计算设备、计算机可读存储介质以及系统,实现了自动将FBX三维模型转换为glTF三维模型,方便嵌入到网页中。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种FBX三维模型转换为glTF三维模型的系统,包括模型解析设备、数据处理设备以及模型构建设备,其中,所述模型解析设备用于:对待转换的FBX三维模型进行解析,将解析得到的属性名保存至栈中,将解析得到的属性数据保存至对象中,所述属性 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。