CN111275826B - 一种适用于ar情景的三维模型自动转换方法 - Google Patents
一种适用于ar情景的三维模型自动转换方法 Download PDFInfo
- Publication number
- CN111275826B CN111275826B CN202010112975.9A CN202010112975A CN111275826B CN 111275826 B CN111275826 B CN 111275826B CN 202010112975 A CN202010112975 A CN 202010112975A CN 111275826 B CN111275826 B CN 111275826B
- Authority
- CN
- China
- Prior art keywords
- file
- model
- nodes
- node
- scene
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明属于三维制作技术领域,公开了一种适用于AR情景的三维模型自动转换方法,包括如下步骤:S1:获取目标三维模型的压缩包文件;S2:从压缩包文件中解压出当前三维制作工具的源文件,在三维制作工具中建立初始三维模型,并在三维制作工具中对初始三维模型进行处理,然后导出该初始三维模型的模型资料;S3:将模型资料导入AR开发工具,在AR开发工具中建立适用于AR情景的最终三维模型并导出最终三维模型的资源包。本发明解决了现有技术存在的缺少成熟的将三维制作软件中的三维模型自动转换为适用于AR情景的三维模型的技术方案的问题。
Description
技术领域
本发明属于三维制作技术领域,具体涉及一种适用于AR情景的三维模型自动转换方法。
背景技术
AR:是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,侧重的是现实世界与虚拟事物之间的交互。
3dsMax:全称3D Studio Max,常简称为3d Max或3ds MAX,是Discreet公司开发的(后被Autodesk公司合并)基于PC系统的三维动画渲染和制作软件,利用3ds Max可以创建3D场景和角色、对象以及任何类型的主题。被广泛应用在建筑、室内、工业制造、电影、游戏、动画等各个行业的三维制作上。
Unity3D:是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型AR开发工具,是一个全面整合的专业游戏引擎。
目前,在传统三维制作行业中广泛使用3dsMax作为三维模型制作的主要制作软件,而由类似于3dsMax等传统三维软件制作的三维模型,在最终效果的展示方面采用的是离线渲染的方式,即将最终结果输出为静帧图像或者视频。但在AR情景中,制作内容多采用实时渲染的方式来获得画面效果,以获得更加真实的,更符合物理空间规则的使用体验和操作逻辑。由于两者在最终输出方式上的巨大差异,同时也促使了三维场景在制作流程上的诸多不同,加上目前作为AR内容的主流开放平台Unity3D,与三维制作软件3dsMax作为两个不同的软件之间的文件格式、制作方法、实现方式等等本身存在的差异。使现有的由传统三维软件制作的面向离线渲染的三维模型完好地应用到AR情景中,存在着不可忽视的困难以及不可避免的人力物力的损耗,急需通过自动化的方式来解决上述问题;
综上所述,现有技术缺少成熟的将三维制作软件3dsMax模型自动转换为游戏引擎Unity3D中的适用于AR情景的三维模型的技术方案。
发明内容
为了解决现有技术存在的上述问题,本发明目的在于提供适用于AR情景的三维模型自动转换方法,用于解决现有技术存在的缺少成熟的将三维制作软件3dsMax模型自动转换为游戏引擎Unity3D中的适用于AR情景的三维模型的技术方案的问题。
本发明所采用的技术方案为:
一种适用于AR情景的三维模型自动转换方法,包括如下步骤:
S1:获取目标三维模型的压缩包文件;
S2:从压缩包文件中解压出当前三维制作工具的源文件,在三维制作工具中建立初始三维模型,并在三维制作工具中对初始三维模型进行处理,然后导出该初始三维模型的模型资料;
S3:将模型资料导入AR开发工具,在AR开发工具中建立适用于AR情景的最终三维模型并导出最终三维模型的资源包。
进一步地,三维制作工具为3dsMax;所述AR开发工具为游戏引擎Unity3D。
进一步地,步骤S2的具体方法,包括如下步骤:
S2-1:对压缩包文件进行转换,即从压缩包文件中解压出当前三维制作工具的源文件;
S2-2:使用控制台对所有源文件进行文件检查,确认获得当前三维制作工具所需的专属源文件并启动三维制作工具;
S2-3:使用三维制作工具打开专属源文件,在三维制作工具内部进行处理并导出专属源文件内部包括的模型资源。
进一步地,步骤S2-3中,由预先装载在三维制作工具上的相关插件执行,包括如下步骤:
S2-3-1:使用三维制作工具打开专属源文件,并建立初始三维模型;
S2-3-2:获取当前场景中初始三维模型所有的灯光类型的节点,将对应的名称和灯光属性以及参数有序的输出并保存至文本文件中,并进行场景清理;
S2-3-3:将场景中初始三维模型具有不少于一个材质节点的模型节点按照其对应的材质节点拆分为对应数量的只有单个材质节点的模型节点;
S2-3-4:将经过上述步骤处理的场景中的初始三维模型进行面数精简处理;
S2-3-5:转换场景中的初始三维模型的所有材质节点类型,并为场景中的初始三维模型、材质节点、贴图根据场景名字进行统一的重新命名;
S2-3-6:将场景中的初始三维模型的由多节点合成的树状结构的贴图网络合并为一张贴图;
S2-3-7:根据场景中的初始三维模型导出FBX文件,并对初始三维模型进行破坏性减面;
S2-3-8:通过收集场景中的初始三维模型的模型资源信息,将场景模型节点逐个导出为glTF文件,将FBX文件和glTF文件作为模型资源。
进一步地,步骤S2-3-2中,进行场景清理包括:
将已经成组或者形成父子关系的模型节点分解为单独个体;
删除不支持的或多余的节点;
删除掉隐藏节点;
塌陷所有附着在模型节点上的修改器并将所有网格转换为可编辑多边体Editable_Poly类型的网格;
删除孤立顶点;
删除空节点;
删除摄影机和灯光;
重置模型节点的坐标中心和缩放比例;
重命名模型节点、材质节点以及贴图节点。
进一步地,步骤S2-3-4包括如下步骤:
S2-3-4-1:将初始三维模型的模型节点逐一导出为FBX文件并存放至模型资源文件夹;
S2-3-4-2:对模型资源文件夹中的FBX文件进行模型面数精简操作;
S2-3-4-3:将经过模型面数精简的FBX文件逐一导回至三维制作工具内部的原场景;
S2-3-4-4:获取高面数的模型节点上的材质节点,使经过面数精简处理的模型节点与相对应的高面数的模型节点上的材质节点进行关联,并删除掉高面数的模型节点。
进一步地,步骤S2-3-5中,转换场景中模型的所有材质节点类型的具体方法,包括如下步骤:
S2-3-5-1:对场景中初始三维模型所有与模型节点关联的材质节点进行分类;
S2-3-5-2:将材质节点为混合类型的材质节点通过VRayColor贴图节点将其子材质节点的属性进行混合,并创建一个新的非混合类型的材质节点,替代原有的混合类型的材质节点,使用VRayColor贴图节点继承原有混合类型节点的属性;
S2-3-5-3:将使用当前三维制作工具内置类型的材质节点全部转换为Standard类型的材质节点,将VRay渲染器类型的材质节点转换为VRayMtl类型的材质节点,将Anorld渲染器类型的材质节点转换为PhysicalMaterial类型的材质节点;
S2-3-5-4:获取所有材质节点上关联的各项材质属性,对所有属性进行调整,使材质节点在转换后与转换前所呈现的画面效果保持一致;
S2-3-5-5:比较所有材质节点的属性参数,并清理场景完全相同的材质节点;
S2-3-5-6:合并共用同个材质节点的模型节点,完成场景中初始三维模型的所有材质节点类型的转换。
进一步地,步骤S2-3-6包括如下步骤:
S2-3-6-1:清理当前场景文件中已经丢失位图路径的位图贴图节点;
S2-3-6-2:判断当前材质节点的材质类型,根据不同类型的材质节点获取对应属性的通道索引序号,根据其索引至对应的贴图节点;
S2-3-6-3:判断贴图的节点树是否只有一个贴图节点,若是则进入步骤S2-3-6-4,否则进入步骤S2-3-6-5;
S2-3-6-4:判断当前贴图节点是否为位图贴图节点,若是则根据位图分辨率大小将贴图导出为位图,并结束方法,否则根据512x512分辨率大小将贴图导出为位图,并结束方法;
S2-3-6-5:判断贴图节点树中是否存在位图贴图节点,若是则根据最后一张位图贴图节点的分辨率大小将贴图导出为位图,否则根据512X512分辨率大小将贴图导出为位图。
进一步地,步骤S2-3-8包括如下步骤:
S2-3-8-1:访问场景中初始三维模型的根节点,获取根节点下的所有子节点;
S2-3-8-2:获取各子节点的节点类型,将节点类型为模型类型的子节点作为导出对象进行单个导出,并在glTF文件的输出目录中根据模型节点的名称创建对应的gltf文件;
S2-3-8-3:获取模型节点关联的网格节点,将网格节点的相关信息记录至gltf文件,将模型顶点的位置、法线以及UV数据保持至bin文件中,将bin文件的索引记录至gltf文件;
S2-3-8-4:获取模型节点关联的材质节点,判断该材质节点的类型,并根据材质节点的类型进行转换,将材质节点属性记录至gltf文件;
S2-3-8-5:获取材质节点关联的贴图节点,将贴图节点信息及贴图文件路径索引记录至gltf文件;
S2-3-8-6:将gltf文件、bin文件以及位图文件合并为glTF文件并进行导出。
进一步地,步骤S3包括如下步骤:
S3-1:使用Python脚本,将模型资源中的凹凸贴图转换为法线贴图;
S3-2:启动AR开发工具并打开对应的工程文件,获取模型资源路径,并根据其导入经过上述处理后的模型资源;
S3-3:根据导入的模型资源,在AR开发工具内部建立适用于AR情景的最终三维模型并导出包含最终资源文件的资源包。
进一步地,步骤S3-2中,所述模型资源包括glTF文件和FBX文件。
进一步地,步骤S3-3中由预先装载在AR开发工具对应的工程文件上的相关插件执行,包括如下步骤:
S3-3-1:导入glTF文件,生成预置物体,根据工作流程预设信息,判断是否将glTF文件中的模型网格作为当前模型网格,若是直接进入步骤S3-3-2,否则导入FBX文件,将FBX文件中的模型网格作为当前模型网格,并进入步骤S3-3-2;
S3-3-2:在AR开发工具的场景中创建一个父游戏对象,从对应工程文件中获取根据生成的预置物体,将预置物体实例化为游戏对象,并作为父游戏对象的子对象;
S3-3-3:根据包含有三维制作工具的专属源文件中模型的灯光节点名称和对应灯光属性的文本文件,在AR开发工具的场景中创建灯光对象;
S3-3-4:根据当前场景中实例化的父游戏对象的物体位置和大小,创建环境反射球,并根据其和预设好的灯光烘培参数,为场景中的灯光对象烘培光照贴图和环境反射贴图;
S3-3-5:根据父游戏对象、子对象以及灯光对象生成AR开发工具的预置物体,即建立适用于AR情景的最终三维模型,并导出包含最终资源文件的资源包。
进一步地,步骤S3-3-1中,导入glTF文件时包括如下步骤:
A1:从保存glTF文件的路径中获取glTF文件,根据glTF文件名称在AR开发工具的工程文件中创建同名文件夹;
A2:根据glTF文件中记录的模型网格节点信息在AR开发工具中创建具有相同位置、大小以及方向的游戏对象;
A3:根据glTF文件中记录的模型网格索引以及bin文件中记录的网格顶点、法线以及UV数据,生成AR开发工具的模型网格;
A4:根据glTF文件中记录的模型材质类型和属性在AR开发工具中创建材质球;
A5:根据glTF文件中记录的与材质节点关联的贴图索引取得相关位图得文件路径,并导入到AR开发工具的工程文件中;
A6:根据glTF文件中记录的模型各节点的相关性,将模型的网格、材质球以及贴图关联到游戏对象上,生成glTF文件的预置物体,并导入到AR开发工具的工程文件中。
进一步地,步骤S3-3-1中,导入FBX文件,包括如下步骤:
B1:从保存FBX文件的路径中获取FBX文件,根据FBX文件名称在AR开发工具的工程文件中创建同名文件夹;
B2:根据模型名称与材质球名称匹配原则,导入FBX模型文件并与步骤A4中建立的材质球进行关联。
进一步地,步骤S3-3-3的具体方法,包括如下步骤:
S3-3-3-1:读取包含有三维制作工具的专属源文件中模型的文本文件,根据文本文件中提供的灯光名称、位置方向信息在AR开发工具的场景中创建灯光对象;
S3-3-3-2:根据文本文件获取灯光的类型和相关属性,对灯光对象进行赋值;
S3-3-3-3:根据灯光对象在三维制作工具和AR开发工具最终呈现效果的影响和差异,对灯光对象的参数进行换算和调整;
S3-3-3-4:将所有灯光对象的渲染方式设置为待烘培。
本发明的有益效果为:
在保持画面效果的前提下将3dsMax等三维制作工具制作的三维模型转换为能够被Unity3D等AR开发工具支持的三维模型,并在发布到AR应用设备时能够保持良好的画面效果,从而节省使用人工方法进行相同的三维模型转换过程中需要耗费的大量精力和时间;同时,本发明为不具备AR三维模型开发经验的三维模制作人员提供了一种有效可行的生产方式,也为具有一定AR三维模型开发经验的行业人员提供了更加高效的生产方式,填补了三维模型从行业惯用三维制作工具转换到AR开发工具的缺失环节,在提供有效AR三维模型转换方法的同时极大地加快AR三维模型的开发生产和迭代。
本发明的其他有益效果将在具体实施方式中进行详细说明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是实施例1的流程框图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本发明公开的功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本发明阐述的实施例中。
应当理解,本发明使用的术语仅用于描述特定实施例,并不意在限制本发明的示例实施例。若术语“包括”、“包括了”、“包含”和/或“包含了”在本发明中被使用时,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
应当理解,还应当注意到在一些备选实施例中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以不必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清楚。
需要说明的是,实施例1中,三维制作工具以3dsMax为例,AR开发工具以游戏引擎Unity3D为例,举例说明本发明的最优实施方案。
实施例1
如图1所示,本实施例提供一种适用于AR情景的三维模型自动转换方法,包括如下步骤:
S1:获取目标三维模型的压缩包文件;
本实施例中,作为其中一种优选的实施方式,获取目标三维模型的压缩包文件时,可以但不仅限于采用控制台实现,控制台接收来自服务器开始命令后,获取目标三维模型的压缩包文件。
作为另外一种优选的实施方式,控制台的功能可以但不仅限于包括以下内容:
1)与服务器的通讯,收发信息和文件,以及控制流程的开始、中止、结束;
2)进行三维制作工具源文件、导出的模型资源文件、包含最终资源文件的资源包以及消息日志文件的管理,以及分配文件路径;
3)调用解压工具解压压缩包并获取当前三维制作工具所需的专属源文件,以及发送资源包给服务器;
4)监控流程上各步骤的状态并反馈消息给服务器,支撑整个流程的顺利执行;
5)通过发送指令启动三维制作工具并打开当前三维制作工具所需的专属源文件,同时告知三维制作工具打开专属源文件之后执行的对应的脚本,以及控制三维制作工具内部处理和导出开始;
6)通过发送指令执行Python脚本,并控制寻找到资源路径下的凹凸贴图并批量转换为法线贴图;
7)通过发送指令启动AR开发工具并打开事先配置好的目标工程文件,以及控制当AR开发工具启动并打开工程文件时便自动开始AR开发工具内部对模型资源的处理和导出。
S2:从压缩包文件中解压出当前3dsMax的源文件,在3dsMax内部建立初始三维模型,并在三维制作工具中对初始三维模型进行处理,然后导出该初始三维模型的模型资料,包括如下步骤:
S2-1:对压缩包文件进行转换,即从压缩包文件中解压出当前3dsMax的源文件;
S2-2:使用控制台对所有源文件进行文件检查,确认获得当前3dsMax所需的专属源文件并启动3dsMax;当前三维制作工具所需的专属源文件为后缀名为.max的专属源文件;
S2-3:使用3dsMax打开专属源文件,控制台通过指令要求计算机启动由3dsMax提供的3dsMaxBatch.exe,以后台运行模式运行3dsMax,指令中附带有将被用于转换流程的(.max)文件的文件路径,在3dsMax启动后将加载该文件,指令中附带由本方法提供的MaxScript脚本文件的文件路径,脚本中包含反射动态链接库的方法,用来调用本方法为3dsMax预装载的动态链接库,在3dsMax内部进行处理并导出专属源文件内部包括的模型资源,由预先装载在3dsMax上的相关插件执行,包括如下步骤:
S2-3-1:使用3dsMax打开专属源文件,并建立初始三维模型;
S2-3-2:获取当前场景中初始三维模型所有的灯光类型的节点,将对应的名称和灯光属性以及参数有序的输出并保存至文本文件中,并进行场景清理;
进行场景清理包括:
将已经成组或者形成父子关系的模型节点分解为单独个体;
删除不支持的或多余的节点;
删除掉隐藏节点;
塌陷所有附着在模型节点上的修改器并将所有网格转换为可编辑多边体Editable_Poly类型的网格;
删除孤立顶点;
删除空节点;
删除摄影机和灯光;
重置模型节点的坐标中心和缩放比例;
重命名模型节点、材质节点以及贴图节点;
S2-3-3:将场景中初始三维模型具有不少于一个材质节点的模型节点按照其对应的材质节点拆分为对应数量的只有单个材质节点的模型节点;
S2-3-4:将经过上述步骤处理的场景中的初始三维模型进行面数精简处理,包括如下步骤:
S2-3-4-1:使用3dsMax的FBX导出功能将模型节点逐一导出为FBX文件并存放至模型资源文件夹;
S2-3-4-2:通过控制台发送指令启动三维模型面数精简软件PolygonCruncher,通过PolygonCruncher对目录下的FBX文件进行模型面数精简操作;
S2-3-4-3:等待PolygonCruncher进程结束,通过3dsMax的FBX导入功能将经过模型面数精简的FBX文件逐一导回至原场景;
S2-3-4-4:获取高面数的模型节点上的材质节点,使经过面数精简处理的模型节点与相对应的高面数的模型节点上的材质节点进行关联,并删除掉高面数的模型节点;
S2-3-5:转换场景中的初始三维模型的所有材质节点类型,并为场景中的初始三维模型、材质节点、贴图根据场景名字进行统一的重新命名,转换场景中模型的所有材质节点类型的具体方法,包括如下步骤:
S2-3-5-1:对场景中初始三维模型所有与模型节点关联的材质节点进行分类;
S2-3-5-2:将材质节点为混合类型的材质节点通过VRayColor贴图节点将其子材质节点的属性进行混合,并创建一个新的非混合类型的材质节点,替代原有的混合类型的材质节点,使用VRayColor贴图节点继承原有混合类型节点的属性;
S2-3-5-3:将使用3dsMax内置类型的材质节点全部转换为Standard类型的材质节点,将VRay渲染器类型的材质节点转换为VRayMtl类型的材质节点,将Anorld渲染器类型的材质节点转换为PhysicalMaterial类型的材质节点;
S2-3-5-4:获取所有材质节点上关联的各项材质属性,对所有属性进行调整,使材质节点在转换后与转换前所呈现的画面效果保持一致;
S2-3-5-5:比较所有材质节点的属性参数,并清理场景完全相同的材质节点;
S2-3-5-6:合并共用同个材质节点的模型节点,完成场景中初始三维模型的所有材质节点类型的转换;
S2-3-6:将场景中的初始三维模型的由多节点合成的树状结构的贴图网络合并为一张贴图,包括如下步骤:
S2-3-6-1:清理当前场景文件中已经丢失位图路径的位图贴图节点;
S2-3-6-2:判断当前材质节点的材质类型,根据“Standard”、“VRayMtl”、“PhysicalMaterial”三种不同类型的材质节点获取对应属性的通道索引序号,根据其索引至对应的贴图节点;
S2-3-6-3:判断贴图的节点树是否只有一个贴图节点,若是则进入步骤S2-3-6-4,否则进入步骤S2-3-6-5;
S2-3-6-4:判断当前贴图节点是否为位图贴图节点,若是则根据位图分辨率大小将贴图导出为位图,并结束方法,否则根据512x512分辨率大小将贴图导出为位图,并结束方法;
S2-3-6-5:判断贴图节点树中是否存在位图贴图节点,若是则根据最后一张位图贴图节点的分辨率大小将贴图导出为位图,否则根据512X512分辨率大小将贴图导出为位图;
S2-3-7:根据场景中的初始三维模型导出FBX文件,并对初始三维模型进行破坏性减面;
S2-3-8:通过收集场景中的初始三维模型的模型资源信息,将场景模型节点逐个导出为glTF文件,将FBX文件和glTF文件作为模型资源,包括如下步骤:
S2-3-8-1:访问场景中初始三维模型的根节点,获取根节点下的所有子节点;
S2-3-8-2:获取各子节点的节点类型,将节点类型为模型类型的子节点作为导出对象进行单个导出,并在glTF文件的输出目录中根据模型节点的名称创建对应的gltf文件即后缀名为(.gltf)的文件;
S2-3-8-3:获取模型节点关联的网格节点,将网格节点的相关信息记录至gltf文件,将模型顶点的位置、法线以及UV数据保持至bin文件中,将bin文件即后缀名为(.bin)的文件的索引记录至gltf文件;
S2-3-8-4:获取模型节点关联的材质节点,判断该材质节点的类型,并根据材质节点的类型进行转换,将材质节点属性记录至gltf文件;
S2-3-8-5:获取材质节点关联的贴图节点,将贴图节点信息及贴图文件路径索引记录至gltf文件;
S2-3-8-6:将gltf文件、bin文件以及位图文件合并为glTF文件并进行导出;
S3:将模型资料导入游戏引擎Unity3D,在游戏引擎Unity3D内部建立适用于AR情景的最终三维模型并导出资源包,包括如下步骤:
S3-1:使用Python脚本,将模型资源中的bump贴图转换为法线贴图;
S3-2:启动游戏引擎Unity3D并打开对应的工程文件,获取模型资源路径,并根据其导入经过上述处理后的模型资源,模型资源包括glTF文件和FBX文件;
S3-3:启动AR开发工具游戏引擎Unity3D并打开对应的工程文件,控制台通过指令要求计算机启动Unity.exe,指令中附带有预先配置好的Unity工程文件夹的文件路径,当Unity启动时将以该文件夹作为当前工程,获取3dsMax中模型资源路径,预先配置好的Unity工程文件夹中包含本方法提供的与Unity对接的C#代码,作为本方法为Unity提供的插件,编写了关于对模型资源进行导入、处理和导出的方法,C#代码中包含一个Unity提供的初始化方法,当前工程文件被启动的同时从这个方法开始执行后续步骤,即导入经过上述处理后的模型资源,包括如下步骤:
S3-3-1:导入glTF文件,生成预置物体,根据工作流程预设信息,判断是否将glTF文件中的模型网格作为当前模型网格,若是直接进入步骤S3-3-2,否则导入FBX文件,将FBX文件中的模型网格作为当前模型网格,并进入步骤S3-3-2;
导入glTF文件时包括如下步骤:
A1:从保存glTF文件的路径中获取glTF文件,根据glTF文件名称在游戏引擎Unity3D的工程文件中创建同名文件夹;
A2:根据glTF文件中记录的模型网格节点信息在游戏引擎Unity3D中创建具有相同位置、大小以及方向的游戏对象;
A3:根据glTF文件中记录的模型网格索引以及bin文件中记录的网格顶点、法线以及UV数据,生成游戏引擎Unity3D的模型网格;
A4:根据glTF文件中记录的模型材质类型和属性在游戏引擎Unity3D中创建材质球;
A5:根据glTF文件中记录的与材质节点关联的贴图索引取得相关位图得文件路径,并导入到游戏引擎Unity3D的工程文件中。
A6:根据glTF文件中记录的模型各节点的相关性,将模型的网格、材质球以及贴图关联到游戏对象上,生成glTF文件的预置物体,并导入到游戏引擎Unity3D的工程文件中;
导入FBX文件,包括如下步骤:
B1:从保存FBX文件的路径中获取FBX文件,根据FBX文件名称在游戏引擎Unity3D的工程文件中创建同名文件夹;
B2:根据模型名称与材质球名称匹配原则,导入FBX模型文件并与步骤A4中建立的材质球进行关联;
S3-3-2:在游戏引擎Unity3D的场景中创建一个父游戏对象,从对应工程文件中获取根据生成的预置物体,将预置物体实例化为游戏对象,并作为父游戏对象的子对象;
S3-3-3:根据包含有3dsMax的专属源文件中模型的灯光节点名称和对应灯光属性的文本文件,在游戏引擎Unity3D的场景中创建灯光对象,包括如下步骤:
S3-3-3-1:读取包含有3dsMax的专属源文件中模型的文本文件,根据文本文件中提供的灯光名称、位置方向信息在游戏引擎Unity3D的场景中创建灯光对象;
S3-3-3-2:根据文本文件获取灯光的类型和相关属性,对灯光对象进行赋值;
S3-3-3-3:根据灯光对象在3dsMax和游戏引擎Unity3D最终呈现效果的影响和差异,对灯光对象的参数进行换算和调整;
S3-3-3-4:将所有灯光对象的渲染方式设置为待烘培;
S3-3-4:根据当前场景中实例化的父游戏对象的物体位置和大小,创建环境反射球,并根据其和预设好的灯光烘培参数,为场景中的灯光对象烘培光照贴图和环境反射贴图;
S3-3-5:根据父游戏对象、子对象以及灯光对象生成游戏引擎Unity3D的预置物体,即建立适用于AR情景的最终三维模型,并导出包含最终资源文件的资源包UnityPackage;最终资源文件的资源包UnityPackage即为发布到AR应用设备的AR三维模型资源包。
本实施例中的适用于AR情景的三维模型自动转换方法将三维制作软件3dsMax中的三维模型自动化转换为游戏引擎Unity3D中的适用于AR情景的三维模型,本实施例中的适用于AR情景的三维模型自动转换方法自动化完成,所有环节和步骤无需人工参与,在保持画面效果的前提下将(.max)格式的三维模型转换为受到游戏引擎Unity3D支持的三维模型,并在发布到AR应用设备时能够保持良好的画面效果,从而节省使用人工方法进行相同的三维模型转换过程中需要耗费的大量精力和时间;本实施例中的适用于AR情景的三维模型自动转换方法为不具备AR三维模型开发经验的三维模制作人员提供了一种有效可行的生产方式,也为具有一定AR三维模型开发经验的行业人员提供了更加高效的生产方式,填补了三维模型从行业惯用三维制作工具转换到AR开发工具的缺失环节,在提供有效AR三维模型转换方法的同时极大地加快AR三维模型的开发生产和迭代。
以上所描述的实施例仅仅是示意性的,若涉及到作为分离部件说明的单元,其可以是或者也可以不是物理上分开的;若涉及到作为单元显示的部件,其可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
Claims (13)
1.一种适用于AR情景的三维模型自动转换方法,其特征在于:包括如下步骤:
S1:获取目标三维模型的压缩包文件;
S2:从压缩包文件中解压出当前三维制作工具的源文件,在三维制作工具中建立初始三维模型,并在三维制作工具中对初始三维模型进行处理,然后导出该初始三维模型的模型资料;
S3:将模型资料导入AR开发工具,在AR开发工具中建立适用于AR情景的最终三维模型并导出最终三维模型的资源包;
所述步骤S2的具体方法,包括如下步骤:
S2-1:对压缩包文件进行转换,即从压缩包文件中解压出当前三维制作工具的源文件;
S2-2:使用控制台对所有源文件进行文件检查,确认获得当前三维制作工具所需的专属源文件并启动三维制作工具;
S2-3:使用三维制作工具打开专属源文件,在三维制作工具内部进行处理并导出专属源文件内部包括的模型资源;
所述步骤S2-3中,由预先装载在三维制作工具上的相关插件执行,包括如下步骤:
S2-3-1:使用三维制作工具打开专属源文件,并建立初始三维模型;
S2-3-2:获取当前场景中初始三维模型所有的灯光类型的节点,将对应的名称和灯光属性以及参数有序的输出并保存至文本文件中,并进行场景清理;
S2-3-3:将场景中初始三维模型具有不少于一个材质节点的模型节点按照其对应的材质节点拆分为对应数量的只有单个材质节点的模型节点;
S2-3-4:将经过上述步骤处理的场景中的初始三维模型进行面数精简处理;
S2-3-5:转换场景中的初始三维模型的所有材质节点类型,并为场景中的初始三维模型、材质节点、贴图根据场景名字进行统一的重新命名;
S2-3-6:将场景中的初始三维模型的由多节点合成的树状结构的贴图网络合并为一张贴图;
S2-3-7:根据场景中的初始三维模型导出FBX文件,并对初始三维模型进行破坏性减面;
S2-3-8:通过收集场景中的初始三维模型的模型资源信息,将场景模型节点逐个导出为glTF文件,将FBX文件和glTF文件作为模型资源。
2.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述三维制作工具为3dsMax;所述AR开发工具为游戏引擎Unity3D。
3.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S2-3-2中,进行场景清理包括:
将已经成组或者形成父子关系的模型节点分解为单独个体;
删除不支持的或多余的节点;
删除掉隐藏节点;
塌陷所有附着在模型节点上的修改器并将所有网格转换为可编辑多边体Editable_Poly类型的网格;
删除孤立顶点;
删除空节点;
删除摄影机和灯光;
重置模型节点的坐标中心和缩放比例;
重命名模型节点、材质节点以及贴图节点。
4.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S2-3-4包括如下步骤:
S2-3-4-1:将初始三维模型的模型节点逐一导出为FBX文件并存放至模型资源文件夹;
S2-3-4-2:对模型资源文件夹中的FBX文件进行模型面数精简操作;
S2-3-4-3:将经过模型面数精简的FBX文件逐一导回至三维制作工具内部的原场景;
S2-3-4-4:获取高面数的模型节点上的材质节点,使经过面数精简处理的模型节点与相对应的高面数的模型节点上的材质节点进行关联,并删除掉高面数的模型节点。
5.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S2-3-5中,转换场景中模型的所有材质节点类型的具体方法,包括如下步骤:
S2-3-5-1:对场景中初始三维模型所有与模型节点关联的材质节点进行分类;
S2-3-5-2:将材质节点为混合类型的材质节点通过VRayColor贴图节点将其子材质节点的属性进行混合,并创建一个新的非混合类型的材质节点,替代原有的混合类型的材质节点,使用VRayColor贴图节点继承原有混合类型节点的属性;
S2-3-5-3:将使用当前三维制作工具内置类型的材质节点全部转换为Standard类型的材质节点,将VRay渲染器类型的材质节点转换为VRayMtl类型的材质节点,将Anorld渲染器类型的材质节点转换为PhysicalMaterial类型的材质节点;
S2-3-5-4:获取所有材质节点上关联的各项材质属性,对所有属性进行调整,使材质节点在转换后与转换前所呈现的画面效果保持一致;
S2-3-5-5:比较所有材质节点的属性参数,并清理场景完全相同的材质节点;
S2-3-5-6:合并共用同个材质节点的模型节点,完成场景中初始三维模型的所有材质节点类型的转换。
6.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S2-3-6包括如下步骤:
S2-3-6-1:清理当前场景文件中已经丢失位图路径的位图贴图节点;
S2-3-6-2:判断当前材质节点的材质类型,根据不同类型的材质节点获取对应属性的通道索引序号,根据其索引至对应的贴图节点;
S2-3-6-3:判断贴图的节点树是否只有一个贴图节点,若是则进入步骤S2-3-6-4,否则进入步骤S2-3-6-5;
S2-3-6-4:判断当前贴图节点是否为位图贴图节点,若是则根据位图分辨率大小将贴图导出为位图,并结束方法,否则根据512x512分辨率大小将贴图导出为位图,并结束方法;
S2-3-6-5:判断贴图节点树中是否存在位图贴图节点,若是则根据最后一张位图贴图节点的分辨率大小将贴图导出为位图,否则根据512X512分辨率大小将贴图导出为位图。
7.根据权利要求1所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S2-3-8包括如下步骤:
S2-3-8-1:访问场景中初始三维模型的根节点,获取根节点下的所有子节点;
S2-3-8-2:获取各子节点的节点类型,将节点类型为模型类型的子节点作为导出对象进行单个导出,并在glTF文件的输出目录中根据模型节点的名称创建对应的gltf文件;
S2-3-8-3:获取模型节点关联的网格节点,将网格节点的相关信息记录至gltf文件,将模型顶点的位置、法线以及UV数据保持至bin文件中,将bin文件的索引记录至gltf文件;
S2-3-8-4:获取模型节点关联的材质节点,判断该材质节点的类型,并根据材质节点的类型进行转换,将材质节点属性记录至gltf文件;
S2-3-8-5:获取材质节点关联的贴图节点,将贴图节点信息及贴图文件路径索引记录至gltf文件;
S2-3-8-6:将gltf文件、bin文件以及位图文件合并为glTF文件并进行导出。
8.根据权利要求2所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3包括如下步骤:
S3-1:使用Python脚本,将模型资源中的凹凸贴图转换为法线贴图;
S3-2:启动AR开发工具并打开对应的工程文件,获取模型资源路径,并根据其导入经过上述处理后的模型资源;
S3-3:根据导入的模型资源,在AR开发工具内部建立适用于AR情景的最终三维模型并导出包含最终资源文件的资源包。
9.根据权利要求8所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3-2中,所述模型资源包括glTF文件和FBX文件。
10.根据权利要求8所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3-3中由预先装载在AR开发工具对应的工程文件上的相关插件执行,包括如下步骤:
S3-3-1:导入glTF文件,生成预置物体,根据工作流程预设信息,判断是否将glTF文件中的模型网格作为当前模型网格,若是直接进入步骤S3-3-2,否则导入FBX文件,将FBX文件中的模型网格作为当前模型网格,并进入步骤S3-3-2;
S3-3-2:在AR开发工具的场景中创建一个父游戏对象,从对应工程文件中获取根据生成的预置物体,将预置物体实例化为游戏对象,并作为父游戏对象的子对象;
S3-3-3:根据包含有三维制作工具的专属源文件中模型的灯光节点名称和对应灯光属性的文本文件,在AR开发工具的场景中创建灯光对象;
S3-3-4:根据当前场景中实例化的父游戏对象的物体位置和大小,创建环境反射球,并根据其和预设好的灯光烘培参数,为场景中的灯光对象烘培光照贴图和环境反射贴图;
S3-3-5:根据父游戏对象、子对象以及灯光对象生成AR开发工具的预置物体,即建立适用于AR情景的最终三维模型,并导出包含最终资源文件的资源包。
11.根据权利要求10所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3-3-1中,导入glTF文件时包括如下步骤:
A1:从保存glTF文件的路径中获取glTF文件,根据glTF文件名称在AR开发工具的工程文件中创建同名文件夹;
A2:根据glTF文件中记录的模型网格节点信息在AR开发工具中创建具有相同位置、大小以及方向的游戏对象;
A3:根据glTF文件中记录的模型网格索引以及bin文件中记录的网格顶点、法线以及UV数据,生成AR开发工具的模型网格;
A4:根据glTF文件中记录的模型材质类型和属性在AR开发工具中创建材质球;
A5:根据glTF文件中记录的与材质节点关联的贴图索引取得相关位图得文件路径,并导入到AR开发工具的工程文件中;
A6:根据glTF文件中记录的模型各节点的相关性,将模型的网格、材质球以及贴图关联到游戏对象上,生成glTF文件的预置物体,并导入到AR开发工具的工程文件中。
12.根据权利要求11所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3-3-1中,导入FBX文件,包括如下步骤:
B1:从保存FBX文件的路径中获取FBX文件,根据FBX文件名称在AR开发工具的工程文件中创建同名文件夹;
B2:根据模型名称与材质球名称匹配原则,导入FBX模型文件并与步骤A4中建立的材质球进行关联。
13.根据权利要求10所述的适用于AR情景的三维模型自动转换方法,其特征在于:所述步骤S3-3-3的具体方法,包括如下步骤:
S3-3-3-1:读取包含有三维制作工具的专属源文件中模型的文本文件,根据文本文件中提供的灯光名称、位置方向信息在AR开发工具的场景中创建灯光对象;
S3-3-3-2:根据文本文件获取灯光的类型和相关属性,对灯光对象进行赋值;
S3-3-3-3:根据灯光对象在三维制作工具和AR开发工具最终呈现效果的影响和差异,对灯光对象的参数进行换算和调整;
S3-3-3-4:将所有灯光对象的渲染方式设置为待烘培。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010112975.9A CN111275826B (zh) | 2020-02-24 | 2020-02-24 | 一种适用于ar情景的三维模型自动转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010112975.9A CN111275826B (zh) | 2020-02-24 | 2020-02-24 | 一种适用于ar情景的三维模型自动转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111275826A CN111275826A (zh) | 2020-06-12 |
CN111275826B true CN111275826B (zh) | 2021-02-19 |
Family
ID=71002288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010112975.9A Active CN111275826B (zh) | 2020-02-24 | 2020-02-24 | 一种适用于ar情景的三维模型自动转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111275826B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112734624A (zh) * | 2020-12-16 | 2021-04-30 | 江苏火米互动科技有限公司 | 基于Unity3D引擎的高精度模型优化 |
CN112685429B (zh) * | 2021-03-16 | 2021-06-08 | 北京知优科技有限公司 | 树状结构模型生成及加载方法、装置、存储介质及设备 |
CN113961512B (zh) * | 2021-12-23 | 2022-03-08 | 武汉方拓数字科技有限公司 | 一种将max文件转换为glTF文件的转换方法 |
CN116991795B (zh) * | 2023-06-27 | 2024-05-17 | 中国船舶集团有限公司第七一九研究所 | 一种三维模型自动轻量化处理方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559384A (zh) * | 2018-11-19 | 2019-04-02 | 长沙眸瑞网络科技有限公司 | 一种基于WebGL的网页端三维模型编辑方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105139453B (zh) * | 2015-07-30 | 2016-09-14 | 中国石油化工股份有限公司 | 一种三维模型展示系统 |
US10826786B2 (en) * | 2018-04-11 | 2020-11-03 | Nvidia Corporation | Fast multi-scale point cloud registration with a hierarchical gaussian mixture |
-
2020
- 2020-02-24 CN CN202010112975.9A patent/CN111275826B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559384A (zh) * | 2018-11-19 | 2019-04-02 | 长沙眸瑞网络科技有限公司 | 一种基于WebGL的网页端三维模型编辑方法 |
Non-Patent Citations (1)
Title |
---|
实现虚拟校园三维场景关键技术研究;朱喜基等;《科技经济导刊》;20180331;第26卷(第9期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111275826A (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111275826B (zh) | 一种适用于ar情景的三维模型自动转换方法 | |
CN105354872B (zh) | 一种基于3d网页游戏的渲染引擎、实现方法及制作工具 | |
CN108597032B (zh) | 将建筑信息模型导入Unity3D中显示方法及系统 | |
US9240073B2 (en) | File format for representing a scene | |
CN110717963B (zh) | 一种基于WebGL的可替换模型的混合渲染展示方法、系统及存储介质 | |
US8026910B2 (en) | Offline optimization pipeline for 3D content in embedded devices | |
CN108537891A (zh) | 三维材质和贴图数据自动转换到ue4的方法 | |
CN107273543B (zh) | 一种dgn数据格式的转换方法 | |
CN110738720B (zh) | 特效渲染方法、装置、终端及存储介质 | |
CN111583378B (zh) | 一种虚拟资产处理的方法及装置、电子设备、存储介质 | |
CN111179391A (zh) | 一种三维动画制作方法、系统及存储介质 | |
CN111739150B (zh) | 贵金属三维模型构建方法及装置 | |
CN116340260A (zh) | 建筑模型数据渲染方法、装置、电子设备及可读存储介质 | |
CN113450463A (zh) | 预制体的转换方法和装置 | |
CN112150592A (zh) | 动画文件的生成方法和装置、存储介质及电子设备 | |
CN117372602B (zh) | 一种异构三维多对象融合渲染方法、设备及系统 | |
US20230316626A1 (en) | Image rendering method and apparatus, computer device, and computer-readable storage medium | |
CN112418781A (zh) | 一种bim轻量化的方法、装置、设备和介质 | |
CN112001018A (zh) | 一种基于云渲染的高效虚拟仿真实验平台测试方法 | |
CN112989458B (zh) | 一种BIM模型到3DTiles文件的转换方法 | |
CN111462343B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN109509253A (zh) | 电力系统三维仿真视觉体验vr设计方法 | |
Ding et al. | Lightweight display of railway four-electricity BIM model based on glTF format and WebGL technology | |
WO2023168999A1 (zh) | 一种虚拟场景的渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN113778905B (zh) | Ui设计验收方法、装置、设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |