一种将max文件转换为glTF文件的转换方法与流程

文档序号:28624468发布日期:2022-01-22 13:51阅读:1315来源:国知局
一种将max文件转换为glTF文件的转换方法与流程
一种将max文件转换为gltf文件的转换方法
技术领域
1.本发明涉及三维模型文件格式转换技术领域,具体涉及一种将max文件转换为gltf文件的转换方法。


背景技术:

2.max文件是autodesk公司3dsmax软件的三维模型文件格式,max文件具有丰富的三维图形效果和广泛的行业应用,其文件结构包括结构数据和属性数据,用于保存模型的全部信息,但max文件的弊端是无法脱离3dsmax软件使用环境,这对于三维数字化应用而言必然会造成应用的局限性。
3.gltf文件是由khronosgroup组织定义的一种公开的图形语言交换格式,gltf是在web浏览器webgl三维应用中较为广泛的文件格式,其特性在于具有优秀的可扩展性和定制性。
4.在现有技术中,主要方法是将max文件导出为中间格式fbx文件,再将fbx文件再转换为gltf文件的转换方法,从而得到符合webgl渲染需求的gltf文件,其解析内容包括fbx文件中的三维模型节点、网格、材质、贴图、动画等。
5.以上方式虽然可以生成gltf文件,但是存在以下五个方面技术特性的转换问题:(1)无法实现对物理材质(physicalmaterial)的提取和转换;(2)无法实现对灯光贴图(lightingmap)的提取和转换;(3)无法实现自定义属性(userdefinedproperties)的提取和转换;(4)无法实现对贴图文件(texture)的压缩和转换。
6.(5)无法实现max文件节点对象(node)的自动拆分为若干个gltf文件。
7.而以上技术特性是决定3dmax三维模型在webgl渲染环境下的视觉效果和性能表现的主要因素,而现有技术对以上五个问题尚未有全面有效的解决方案。


技术实现要素:

8.本发明实施例提供了一种将max文件转换为gltf文件的转换方法,通过对max格式的三维模型进行物理材质的提取和转换、灯光贴图的提取和转换、属性信息的提取和转换、贴图文件的压缩和转换、自动拆分一个max文件为若干个gltf文件,转换得到的gltf文件不会丢失原max文件的属性信息,能将在3dsmax软件中所定义的三维图形自定义属性一并导出并生成于gltf文件中。
9.一种将max文件直接转换为gltf文件的方法,包括以下步骤:s1,max文件三维模型解析,对max格式的三维模型进行解析,获取max格式的三维模型文件的结构数据和属性数据;s2,三维模型预处理,对所述步骤s1中获取的结构数据和属性数据执行guid数值的指定以及贴图文件统一命名;s3,节点转换与导出,对经过所述步骤s2处理后的结构数据和属性数据进行节点
转换并导出gltf文件,同时对导出的gltf文件进行拓展;s4,材质转换与导出,对max格式的三维模型进行解析,获取max格式的三维模型文件的材质并导出为经过所述步骤s3拓展后的gltf的数据结构信息中;s5,灯光贴图的转换与导出,对max格式的三维模型进行解析,获取max格式的三维模型文件的灯光贴图数据并导出为经过所述步骤s4处理后的gltf文件的数据结构信息中;s6,自定义属性的转换与导出,获取所述步骤s5中gltf文件节点的iinode节点数据对象,通过setuserpropstring和getuserpropstring来设置和获取自定义属性值;s7,贴图文件的压缩与转换,读取所述步骤s5中gltf文件贴图文件到内存为24位的位图格式,将位图转换为webp格式并存储;s8,节点导出gltf文件的拆分,采用递归方式循环读取步骤s7中gltf文件节点的信息,执行所述步骤s3节点转换与导出的操作,将gltf文件进行拆分;s9,生成资源清单信息,获取gltf文件中场景对象iigamescene,构造资源清单,包括:id、版本、节点集合、文件集合和相机集合信息。
10.进一步的,所述步骤s3中,gltf文件扩展包括:材质、贴图、图片文件、拓展插件和拓展插件使用信息数据内容的定义。
11.进一步的,所述步骤s7中的贴图文件进行webp格式压缩转换,包括:png、jpg、jpeg、dds、tga、tif、tiff、bmp和gif其中任一种格式。
12.进一步的,所述步骤s4中,材质包括物理材质,标准材质和阿诺德材质;对于多维子材质的分解和导出,首先获取子材质的数量,将子材质按照多维子材质的类型,分别按照上述的材质进行导出;物理材质的导出方法:获取材质数据对象场景材质中材质属性值第一基础颜色值、第一发射值、第一金属度值、第一粗糙度值、第一透明通道值、以及贴图属性值第二基础颜色值、透明度值、第二金属度值、第二粗糙度值、遮蔽值、第二透明通道值和文件路径,将其转换为gltf文件的数据结构信息;标准材质的导出方法:获取材质数据对象场景材质中材质属性值第一环境光值、第一高光值、高光强度值、第一发射值、以及贴图属性值漫反射值、不透明度值、透明通道、透明度值、第二环境光值、第二高光值、第二发射值、凹凸值、反射值,将其转换为gltf文件的数据结构信息;阿诺德材质的导出方法,获取材质数据对象场景材质中材质属性值涂层权重值、第二基础颜色值、第一发射值、第一金属度值、第一粗糙度值、第一透明通道值以及贴图属性值第二基础颜色、透明度值、第二金属度值、第二粗糙度值、遮蔽值、第二透明通道和文件路径,将其转换为gltf文件的数据结构信息。
13.进一步的,对于阿诺德材质的转换,还包括以下属性的提取:折射索引、粗糙度、强度倍增、着色色彩、着色厚度、凹凸图像信息。
14.本发明实施例提供的上述技术方案的有益效果至少包括:本发明通过对max格式的三维模型进行物理材质的提取和转换、灯光贴图的提取和转换、属性信息的提取和转换、贴图文件的压缩和转换、自动拆分一个max文件为若干个gltf文件,转换得到的gltf文件不会丢失原max文件的属性信息,能将在3dsmax软件中所定义的三维图形自定义属性一并导出并生成于gltf文件中。
15.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
16.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
17.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:图1为本发明实施例公开的一种将max文件转换为gltf文件的转换方法的流程示意图。
具体实施例
18.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例
19.如图1所示,本发明实施例提供一种将max文件直接转换为gltf文件的方法,包括以下步骤:s1,max文件三维模型解析,对max格式的三维模型进行解析,获取max格式的三维模型文件的结构数据和属性数据;s2,三维模型预处理,对所述步骤s1中获取的结构数据和属性数据执行guid数值的指定以及贴图文件统一命名;s3,节点转换与导出,对经过所述步骤s2处理后的结构数据和属性数据进行节点转换并导出gltf文件,同时对导出的gltf文件进行拓展,gltf文件扩展包括:材质(materials)、贴图(textures)、贴图文件(images)、拓展插件(extensions)和拓展插件使用信息(extensionsused)数据内容的定义;具体的,包括:网格数据;节点类型的识别,根据节点类型的不同执行不同的数据读取和数据构造方法,节点坐标可根据选项配置进行坐标点的归零或保持原始坐标不变;对于网格节点,执行导出网格(mesh)操作,构造网格(mesh)集合对象,并在内存中缓存网格(mesh)清单,将网格导出为主网格(mastermesh),并判断不同网格是否共享材质,对于非共享材质,导出为实例网格(instancemesh),对于共享材质,导出为克隆网格(clonemesh);主网格mastermesh导出模式,获取节点对象的id、名称等基本属性信息,导出网格的坐标(position)、旋转(rotation)、缩放(scaling)、层级(hierarchy)信息,导出网格的扩展属性定义(extraattributes),导出用户标记数据(metadata);网格的导出需要进行面数的判断,对于单个网格的三角面数大于65536的给予警
告提示信息,超过65536面数的网格可能存在渲染错误;导出节点所包含的扩展声音绑定文件信息(mofangjs_sound_filename),自动播放属性(mofangjs_sound_autoplay),可循环播放属性(mofangjs_sound_loop),音量大小属性(mofangjs_sound_volume);在内存中缓存网格的图形数据(geometry),具体包括:位移(offse), 顶点(vertices), uv属性(hasuv), uv2属性(hasuv2), 颜色(hascolor),透明(hasalpha), 导出顶点(verticesalreadyexported), 索引数量(indexcount), 最小顶点(minvertexindex), 最大顶点(maxvertexindex), 面数(face),其中两个主要的数据结构为位移(offse)和面数(face);位移(offse)结构的定义如下:面数(face)结构的定义如下:
s4,材质转换与导出,对max格式的三维模型进行解析,获取max格式的三维模型文件的材质并导出为经过所述步骤s3拓展后的gltf的数据结构信息中;具体的,材质包括物理材质(physicalmaterial),标准材质(standardmaterial),阿诺德材质(arnoldmaterial);对于多维子材质(submaterial)的分解和导出,首先获取子材质的数量(submaterialcount),将子材质按照多维子材质的类型,分别按照上述的材质进行导出;物理材质(physicalmaterial)的导出方法:获取材质数据对象场景材质(iigamematerial)中材质属性值第一基础颜色值(float[]basecolor)、第一发射值(float[]emissive)、第一金属度值(floatmetallic)、第一粗糙度值(float roughness)、第一透明通道(floatalpha)以及贴图属性值第二基础颜色值(basecolor)、透明度值(transparency)、第二金属度值(metallic)、第二粗糙度值(roughness)、遮蔽值(occlusion)、第二透明通道值(alpha)和文件路径,将其转换为gltf文件的数据结构信息;标准材质(standardmaterial)的导出方法:获取材质数据对象场景材质(iigamematerial)中材质属性值第一环境光值(float[]ambient)、第一高光值(float[]specular)、高光强度值(floatspecularpower)、第一发射值(float[]emissive)以及贴图属性值漫反射值(diffuse)、不透明度值(opacity)、第二透明通道值(alpha)、透明度值(transparency)、第二环境光值(ambient)、第二高光值(specular)、第二发射值(emissive)、凹凸值(bump)、反射值(reflection),将其转换为gltf文件的数据结构信息;阿诺德材质(arnoldmaterial)的导出方法,获取材质数据对象场景材质(iigamematerial)中材质属性值涂层权重值(floatcoatweight)、第二基础颜色值(basecolor)、第一发射值(float[]emissive)、第一金属度值(floatmetallic)、第一粗糙
度值(float roughness)、第一透明通道(floatalpha)以及贴图属性值第二基础颜色值(basecolor)、透明度值(transparency)、第二金属度值(metallic)、第二粗糙度值(roughness)、遮蔽值(occlusion)、第二透明通道值(alpha)和文件路径,将其转换为gltf文件的数据结构信息;对于阿诺德材质的转换,还包括以下属性的提取:折射索引(floatindexofrefraction)、粗糙度值(floatroughness)、强度倍增(floatintensity)、着色色彩(float[]tintcolor)、着色厚度(floattintthickness)、凹凸图像信息(imagebump)。
[0020]
s5,灯光贴图的转换与导出,对max格式的三维模型进行解析,获取max格式的三维模型文件的灯光贴图数据并导出为经过所述步骤s4处理后的gltf文件的数据结构信息中;具体的,灯光贴图是材质球的一个属性值,其包括贴图文件的路径信息,标准的gltf文件是不支持3dsmax光照贴图的,利用gltf的extras扩展功能,新增灯光贴图(lightmaptexture)扩展器,该扩展器用于存储灯光贴图的索引(index)和texcoord属性值;其中index的计算公式为:index=sum(贴图数量)+1。
[0021]
s6,自定义属性的转换与导出,获取所述步骤s5中gltf文件节点的数据对象iinode,通过setuserpropstring和getuserpropstring来设置和获取自定义属性值;具体的,自定义属性包括对模型的自定义属性参数设置信息,标准的gltf文件是不支持存储3ds max自定义属性的,利用gltf的extras扩展功能,新增自定义属性(customproperties)扩展器,该扩展器用于存储灯光贴图的属性(propkey)和属性值(propvalue)。
[0022]
s7,贴图文件的压缩与转换,读取所述步骤s5中gltf文件贴图文件到内存为24位的位图格式,将位图转换为webp格式并存储。
[0023]
s8,节点导出gltf文件的拆分,采用递归方式循环读取步骤s7中gltf文件节点的信息,执行所述步骤s3节点转换与导出的操作,将gltf文件进行拆分,根据节点进行导出gltf文件的拆分,是指按照节点对象为划分依据,每个对象对应一个gltf文件;具体的,常见的贴图文件格式包括:png、jpg、jpeg、dds、tga、tif、tiff、bmp、gif等,读取贴图文件到内存为24位的位图格式,将位图转换为webp格式并存储。
[0024]
要提取的贴图文件主要的数据结构定义如下:
s9,生成资源清单信息,获取gltf文件中场景对象iigamescene,构造资源清单(manifest),包括:id、版本、节点集合、文件集合和相机集合信息。
[0025]
本发明提供的一种将max文件转换为gltf文件的转换方法,通过对max格式的三维模型进行物理材质的提取和转换、灯光贴图的提取和转换、属性信息的提取和转换、贴图文件的压缩和转换、自动拆分一个max文件为若干个gltf文件,转换得到的gltf文件不会丢失原max文件的属性信息,能将在3dsmax软件中所定义的三维图形自定义属性一并导出并生成于gltf文件中。
[0026]
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0027]
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0028]
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个
系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
[0029]
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd-rom或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。该asic可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
[0030]
对于软件实现,本技术中描述的技术可用执行本技术所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
[0031]
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所述可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所述这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1