一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf

上传人:62****3 文档编号:4704010 上传时间:2018-10-28 格式:PDF 页数:16 大小:2.56MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410433037.3

申请日:

2014.08.28

公开号:

CN104391683A

公开日:

2015.03.04

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20140828|||公开

IPC分类号:

G06F9/44

主分类号:

G06F9/44

申请人:

无锡梵天信息技术股份有限公司

发明人:

张翼

地址:

214000江苏省无锡市新区太科园传感网大学科技园立业楼E区711号

优先权:

专利代理机构:

北京品源专利代理有限公司11332

代理人:

邓猛烈; 孟金喆

PDF下载: PDF下载
内容摘要

本发明公开了一种基于3Dmax脚本导出三维软件中模型动画的方法及装置。所述方法包括:确定三维软件中需导出的模型动画的特征信息;将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件;将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。通过本发明的技术方案,能够有效的避免了从三维软件中导出模型时出现的模型信息不完整,或者将导出的模型文件应用到游戏引擎中出错的问题。

权利要求书

权利要求书
1.  一种基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,包括:
确定三维软件中需导出的模型动画的特征信息;
将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件;
将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。

2.  根据权利要求1所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述模型动画的特征信息包括:骨骼信息和蒙皮信息。

3.  根据权利要求2所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述骨骼信息包括:骨骼列表、骨骼层次以及骨骼的关键帧信息;
所述蒙皮信息包括:顶点信息、法线信息、权重信息、材质信息以及每个多边形的光滑组。

4.  根据权利要求3所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述顶点信息包括:各顶点受哪些骨骼的影响以及各顶点受各骨骼影响的权重值。

5.  根据权利要求3所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述骨骼列表包括:骨骼ID、骨骼名称、骨骼数量、骨骼之间的父子关系、初始状态子骨骼相对于父骨骼的相对变换信息。

6.  根据权利要求3所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述骨骼的关键帧信息包括骨骼运动信息的关键帧序列,所述关键帧序列中保存了子骨骼相对于父骨骼的平移、旋转和缩放分量。

7.  根据权利要求6所述的基于3Dmax脚本导出三维软件中模型动画的方法, 其特征在于,所述将所述特征信息写入到3Dmax编辑脚本中,包括:
将所述模型动画的坐标系转化为三维软件3DMAX的坐标系,将所述平移、旋转和缩放分量转化为符合3DMAX的标准坐标系的平移、旋转和缩放分量后写入到3Dmax编辑脚本。

8.  根据权利要求1所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件,包括:
调用XMLElementBegin函数,将所述特征信息写入到3Dmax编辑脚本中,将输出该3Dmax编辑脚本对应的.xml文件。

9.  根据权利要求1所述的基于3Dmax脚本导出三维软件中模型动画的方法,其特征在于,所述将所述.xml文件转换为对应的二进制.mmb文件之前,还包括:
提取所述.xml文件中模型的UV坐标信息、顶点信息,根据UV坐标信息、顶点信息计算模型中各顶点的法线、模型中各个面的法线、切线和副法线;
若确定出模型中相邻的两个面是同一光滑组,则不拆分所述两个面共享的顶点,将该顶点的法线赋值为所述两个面的面法线的平均值;
若确定出模型中相邻的两个面不是同一光滑组,则将所述两个面共享的顶点拆分为两个顶点,将这两个顶点的法线分别赋值为对应面的面法线的数值。

10.  一种基于3Dmax脚本导出三维软件中模型动画的装置,其特征在于,包括:
确定特征模块,用于确定三维软件中需导出的模型动画的特征信息;
导出模块,用于将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件;
转换模块,用于将所述.xml文件转换为对应的二进制.mmb文件,根据 该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。

说明书

说明书一种基于3Dmax脚本导出三维软件中模型动画的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于3Dmax脚本导出三维软件中模型动画的方法及装置。
背景技术
随着Internet技术的、三维建模技术和虚拟现实技术的发展,越来越多的公司开发不同的三维软件来制作的模型动画,每个三维软件都有其特点,相应的三维数据类型和存储格式也多种多样。
计算机技术的发展带动了游戏产业的进步,在游戏领域通常利用三维软件来制作模型动画,然后将制作好的模型导出应用到游戏引擎中使用。在导出模型的时候通常将模型信息保存为max或者ma、mb格式的文件,然而这些类型的文件往往不能适用于自主开发的游戏引擎。一般来说,游戏引擎开发者会自定义其文件格式以存储模型信息,而只有具有对应格式的模型文件才能被游戏引擎使用。如采用Direct3D和OpenGL编写的游戏引擎,支持不同格式的模型文件。因此,需要将三维软件中制作的模型信息导出为游戏引擎支持的文件类型。
目前导出三维模型软件中模型的方法是:利用VirtoolsDev来实现模型的导出,VirtoolsDev为支持3Dmax、MAYA、LightWave三种文件格式转化的插件,由于关于这个插件的资料比较少,应用范围比较窄,只有少部分游戏引擎能够适用,且对开发者及开发环境的要求较高。还有将将三维模型软件中模型导出为.X格式的模型文件的导出方法,但是将.X格式的模型文件运用到游戏引擎中时常常有错误产生,给开发工作带来了麻烦。
发明内容
本发明的目的在于提出一种基于3Dmax脚本导出三维软件中模型动画的方法,有效的避免从三维软件中导出模型时出现的模型信息不完整,或者将导出的模型文件应用到游戏引擎中出错的问题。
为达此目的,本发明采用以下技术方案:
一种基于3Dmax脚本导出三维软件中模型动画的方法,包括:
确定三维软件中需导出的模型动画的特征信息;
将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件;
将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。
其中,所述模型动画的特征信息包括:骨骼信息和蒙皮信息。
其中,所述骨骼信息包括:骨骼列表、骨骼层次以及骨骼的关键帧信息;
所述蒙皮信息包括:顶点信息、法线信息、权重信息、材质信息以及每个多边形的光滑组。
其中,所述顶点信息包括:各顶点受哪些骨骼的影响以及各顶点受各骨骼影响的权重值。
其中,所述骨骼列表包括:骨骼ID、骨骼名称、骨骼数量、骨骼之间的父子关系、初始状态子骨骼相对于父骨骼的相对变换信息。
其中,所述骨骼的关键帧信息包括骨骼运动序列帧,所述关键帧序列中保存了子骨骼相对于父骨骼的平移、旋转和缩放分量。
其中,所述将所述特征信息写入到3Dmax编辑脚本中,包括:
将所述模型动画的坐标系转化为三维软件3DMAX的坐标系,将所述平移、旋转和缩放分量转化为符合3DMAX的标准坐标系的平移、旋转和缩放分量后写 入到3Dmax编辑脚本。
其中,所述将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件,包括:
调用XMLElementBegin函数,将所述特征信息写入到3Dmax编辑脚本中,将输出该3Dmax编辑脚本对应的.xml文件。
其中,所述将所述.xml文件转换为对应的二进制.mmb文件之前,还包括:
提取所述.xml文件中模型的UV坐标信息、顶点信息,根据UV坐标信息、顶点信息计算模型中各顶点的法线、模型中各个面的法线、切线和副法线;
若确定出模型中相邻的两个面是同一光滑组,则不拆分所述两个面共享的顶点,将该顶点的法线赋值为所述两个面的面法线的平均值;
若确定出模型中相邻的两个面不是同一光滑组,则将所述两个面共享的顶点拆分为两个顶点,将这两个顶点的法线分别赋值为对应面的面法线的数值。
一种基于3Dmax脚本导出三维软件中模型动画的装置,包括:
确定特征模块,用于确定三维软件中需导出的模型动画的特征信息;
导出模块,用于将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件;
转换模块,用于将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。
实施本发明实施例,具有如下有益效果:
本发明实施例通过3Dmax编辑脚本导出模型动画,把导出的模型信息存储到.mmb文件里,有效的避免了从三维软件中导出模型时出现的模型信息不完整,或者将导出的模型文件应用到游戏引擎中出错的问题,适用范围广,导出的模型文件能很好的被游戏引擎支持,有利于提高开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例的一种基于3Dmax脚本导出三维软件中模型动画的方法的流程示意图。
图2是本发明第二实施例的一种基于3Dmax脚本导出三维软件中模型动画的装置的结构示意图。
具体实施方式
下面结合本发明的附图对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1对本发明的第一实施例进行说明。
图1是本发明第一实施例的一种基于3Dmax脚本导出三维软件中模型动画的方法流程图,详述如下:
步骤S101,确定三维软件中需导出的模型动画的特征信息。
在第一实施例中,三维软件中制作的模型动画的特征信息包括:骨骼信息和蒙皮信息。其中骨骼信息又包括:骨骼列表、骨骼层次以及骨骼的关键帧信息;蒙皮信息又包括顶点信息、法线信息、权重信息、材质信息以及每个多边形的光滑组。
3D模型动画的基本原理是让模型中各顶点的位置随时间变化,一般都采用 关键帧技术,即只给出相邻关键帧的数据,那么关键帧之间的动画数据可以通过相邻关键帧使用插值得到。现有的3D模型动画中效果较好的是骨骼动画,骨骼动画包含骨骼(Bone)和蒙皮(Skinned Mesh)两个部分,其中骨骼为模型的框架,蒙皮是指将网格中的顶点附着(绑定)在骨骼之上,而且每个顶点可以被多个骨骼所控制。即骨骼动画的基本原理可概括为:在骨骼控制下,通过顶点混合动态计算蒙皮网格的顶点,而骨骼的运动相对于其父骨骼,并由动画关键帧数据驱动。在本实施例中,骨骼的关键帧信息包括骨骼运动关键帧序列,这些序列中保存了子骨骼相对于父骨骼的平移、旋转和缩放分量。
本实施例中,在三维软件3DMAX中,在制作好的模型上为其添加骨骼系统,例如用Bip001建立一个骨骼,导出骨骼列表,该骨骼列表包括:骨骼ID、骨骼名称、骨骼数量、骨骼之间的父子关系、初始状态子骨骼相对于父骨骼的相对变换信息。
进一步的,本实施例的蒙皮信息,本质上是模型的顶点信息,它包括每个顶点受哪些骨骼的影响,每个顶点受每块骨骼影响的权重值。具体可根据如下代码获取模型的顶点受哪些骨骼影响和影响的权重值。



步骤S102,将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件。
本发明实施例中,模型的每块骨骼都有预先做的关键帧信息,即每个骨骼都有一个属于该骨骼的关键帧序列,这些关键帧是骨骼运动的时间点的组成的,需要依次循环导出这些关键帧数据。关键帧序列数据包含三种数据:平移数据,旋转数据,缩放数据,当触发该关键帧中的某一时间点时,就可以得到该时间点模型的平移、旋转、缩放数据,进而可控制模型运动。每个关键帧中对应的运动信息可以用一个矩阵直接表示,也可定义四元数表示骨骼的旋转,也可以随便定义其他以实现让骨骼运动即可。
需要说明的是,在本实施例中,由于在三维软件3Dmax坐标系统和游戏引擎Direct3D中的坐标系统操作很大的差别。3Dmax坐标系统基于右手坐标,而游戏引擎Direct3D是基于左手坐标,因此需要实现游戏引擎坐标系转换,将三维 软件3Dmax的y,z坐标系交换位置。即将关键帧的旋转、缩放、平移写入到3Dmax编辑脚本中时,需要让3Dmax将旋转、缩放、平移数据的y,z进行交换,再写入3DMAX自带的编辑脚本中。
本实施例中,确定出模型的层次、蒙皮信息、关键帧信息等特征信息之后,可通过相应的程序语言(C#,C++)调用XMLElementBegin函数,传入模型动画的特征信息,将所述特征信息写入到3Dmax编辑脚本中,输出该3Dmax编辑脚本对应的.xml文件,这个文件即模型文件。
XMLElementBegin(nTabCount+2)g_strValue false
//把这个文件转化D3D(Direct3D)格式并写入目标文件
format"%"(m_oUtil.ConvertToD3D_POS keys[i].value)to:m_fileTarget。
本实施例中,可采用如下代码将模型的平移、旋转、缩放数据写入3Dmax编辑脚本中,具体如下。
把骨骼的平移数据写入到3Dmax编辑脚本中:


对于旋转来说,采用导出旋转的四元素来代替旋转矩阵,这样可以节省资源又方便转换。把骨骼的旋转数据写入到指定的目标文件,代码如下:


把骨骼的缩放数据写入到3Dmax编辑脚本中:

步骤S103,将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画动画。
在本发明实施例中,可通过Direct3D游戏引擎的转换工具将所述.xml文件 转化为对应的二进制.mmb文件。
基于本发明上述实施例,根据.mmb文件中提取模型的UV坐标信息(用U和V两个字母定义坐标轴,用于确定如何将一个二维的纹理图像放置在三维的模型表面)、顶点信息来计算法线、切线和副法线。因为骨骼动画是基于矩阵驱动的,所以在顶点运动过程中,只需要让法线和切线也是基于同一个矩阵驱动即可,这对于计算法线贴图(Normalmap)的法线是非常有益的。
根据导出的模型文件获取三维软件中模型对应的光滑组信息是一个容易出错的问题,基于本发明上述实施例,根据导出的模型文件.mmb文件获取3Dmax模型对应的光滑组信息的办法是:由于相邻的两个面是否是同一光滑组是可以得到的,因此可根据相邻的两个面是否是同一个光滑来决定所述相邻的两个面共享的顶点是否需要拆成两个顶点。即在所述将所述.xml文件转换为对应的二进制.mmb文件之前,还包括,提取所述.xml文件中模型的UV坐标信息、顶点信息,根据UV坐标信息、顶点信息计算模型中各顶点的法线、模型中各个面的法线、切线和副法线;如果相邻的两个面是同一个光滑组,那么不需要拆分两个顶点,且顶点的法线等于这两个面的面法线求和的平均值;如果这两个面不是同一个光滑组,那么就是硬边,需要拆成两个顶点,各个面各自有各自的顶点,而且每个顶点的法线就等于对应面的面法线的数值,这样可保证游戏引擎的法线和3Dmax里的法线接近。通过此转换过程,使得从三维软件中导出的模型文件能够更好的适应于游戏引擎,保证导出的模型细节的完整性。
通过上述第一实施例,先确定三维软件中需导出的模型动画的特征信息;再将所述特征信息通过3Dmax编辑脚本导出为.xml文件;然后将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。通过3Dmax编辑脚本导出模型动画,把导出的模型 信息存储到.mmb文件里,有效的避免了从三维软件中导出模型时出现的模型信息不完整,或者将导出的模型文件应用到游戏引擎中出错的问题,灵活性强,简单实用并能适应各种程序员的使用,有利于提高开发效率。
以下为本发明实施例提供的一种基于3Dmax脚本导出三维软件中模型动画的装置的实施例。所述装置的实施例与上述的方法实施例属于同一构思,装置的实施例中未详尽描述的细节内容,可以参考上述方法实施例。
图2示出了本发明第二实施例的一种基于3Dmax脚本导出三维软件中模型动画的装置的结构示意图,下面进行详细说明。
请参见图2,所述装置包括:确定特征模块301、导出模块302和转换模块303,各模块的具体描述如下:
所述确定特征模块301,用于确定三维软件中需导出的模型动画的特征信息。
本实施例中,所述模型动画的特征信息包括:骨骼信息和蒙皮信息。其中,所述骨骼信息包括:骨骼列表、骨骼层次以及骨骼的关键帧信息;所述蒙皮信息包括:顶点信息、法线信息、权重信息、材质信息以及每个多边形的光滑组;所述骨骼的关键帧信息包括骨骼运动关键帧序列,这些序列中保存了子骨骼相对于父骨骼的平移、旋转和缩放分量。
所述导出模块302,用于将所述特征信息写入到3Dmax编辑脚本中,再将该3Dmax编辑脚本存储为.xml文件。
本实施例中,将所述模型的平移数据、旋转数据和缩放数据的y、z坐标信息进行交换,即:从模型坐标系转化为3DMAX坐标系,然后写入到3Dmax编辑脚本。具体可调用XMLElementBegin函数,将所述特征信息写入到3Dmax编辑脚本中,将输出该3Dmax编辑脚本对应的.xml文件。
所述转换模块303,用于将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。
本实施例中,可通过对应游戏引擎Direct3D的转换工具将所述.xml文件转化为对应的二进制.mmb文件。
基于本发明上述实施例导出的模型文件后,获取模型对应的光滑组信息的方法可为:根据相邻的两个面是否是同一个光滑来决定所述相邻的两个面共享的顶点是否需要拆成两个顶点。即在所述将所述.xml文件转换为对应的二进制.mmb文件之前,还包括,提取所述.xml文件中模型的UV坐标信息、顶点信息,根据UV坐标信息、顶点信息计算模型中各顶点的法线、模型中各个面的法线、切线和副法线;如果相邻的两个面是同一个光滑组,那么不需要拆分两个顶点,且顶点的法线等于这两个面的面法线求和的平均值;如果这两个面不是同一个光滑组,那么就是硬边,需要拆成两个顶点,各个面各自有各自的顶点,而且每个顶点的法线就等于对应面的面法线的数值,这样可保证游戏引擎的法线和3Dmax里的法线接近,以保证导出的模型细节的完整性。
通过上述第二实施例,确定特征模块确定三维软件中需导出的模型动画的特征信息;导出模块将所述特征信息通过3Dmax编辑脚本导出为.xml文件;转换模块将所述.xml文件转换为对应的二进制.mmb文件,根据该.mmb文件获得所述特征信息,以在游戏引擎中还原所述模型动画。有效的避免了从三维软件中导出模型时出现的模型信息不完整,或者将导出的模型文件应用到游戏引擎中出错的问题,有利于提高开发效率。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利要求范围,因此,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,仍属本发明所涵盖的范围。

一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf_第1页
第1页 / 共16页
一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf_第2页
第2页 / 共16页
一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种基于3DMAX脚本导出三维软件中模型动画的方法及装置.pdf(16页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410433037.3 (22)申请日 2014.08.28 G06F 9/44(2006.01) (71)申请人 无锡梵天信息技术股份有限公司 地址 214000 江苏省无锡市新区太科园传感 网大学科技园立业楼 E 区 711 号 (72)发明人 张翼 (74)专利代理机构 北京品源专利代理有限公司 11332 代理人 邓猛烈 孟金喆 (54) 发明名称 一种基于 3Dmax 脚本导出三维软件中模型动 画的方法及装置 (57) 摘要 本发明公开了一种基于 3Dmax 脚本导出三维 软件中模型动画的方法及装置。所述方法包括 : 确定。

2、三维软件中需导出的模型动画的特征信息 ; 将所述特征信息写入到 3Dmax 编辑脚本中, 再将 该3Dmax编辑脚本存储为.xml文件 ; 将所述.xml 文件转换为对应的二进制.mmb文件, 根据该.mmb 文件获得所述特征信息, 以在游戏引擎中还原所 述模型动画。 通过本发明的技术方案, 能够有效的 避免了从三维软件中导出模型时出现的模型信息 不完整, 或者将导出的模型文件应用到游戏引擎 中出错的问题。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书12页 附图1页 (10)申请公布号 CN 104391683 A (43)申请公。

3、布日 2015.03.04 CN 104391683 A 1/2 页 2 1. 一种基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在于, 包括 : 确定三维软件中需导出的模型动画的特征信息 ; 将所述特征信息写入到 3Dmax 编辑脚本中, 再将该 3Dmax 编辑脚本存储为 .xml 文件 ; 将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据该 .mmb 文件获得所述特征信 息, 以在游戏引擎中还原所述模型动画。 2. 根据权利要求 1 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述模型动画的特征信息包括 : 骨骼信息和蒙皮信息。

4、。 3. 根据权利要求 2 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述骨骼信息包括 : 骨骼列表、 骨骼层次以及骨骼的关键帧信息 ; 所述蒙皮信息包括 : 顶点信息、 法线信息、 权重信息、 材质信息以及每个多边形的光滑 组。 4. 根据权利要求 3 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述顶点信息包括 : 各顶点受哪些骨骼的影响以及各顶点受各骨骼影响的权重值。 5. 根据权利要求 3 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述骨骼列表包括 : 骨骼 ID、 骨骼名称、 骨骼数量。

5、、 骨骼之间的父子关系、 初始状态子骨 骼相对于父骨骼的相对变换信息。 6. 根据权利要求 3 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述骨骼的关键帧信息包括骨骼运动信息的关键帧序列, 所述关键帧序列中保存了子 骨骼相对于父骨骼的平移、 旋转和缩放分量。 7. 根据权利要求 6 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述将所述特征信息写入到 3Dmax 编辑脚本中, 包括 : 将所述模型动画的坐标系转化为三维软件 3DMAX 的坐标系, 将所述平移、 旋转和缩放 分量转化为符合 3DMAX 的标准坐标系的平移、 旋转和。

6、缩放分量后写入到 3Dmax 编辑脚本。 8. 根据权利要求 1 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述将所述特征信息写入到 3Dmax 编辑脚本中, 再将该 3Dmax 编辑脚本存储为 .xml 文 件, 包括 : 调用 XMLElementBegin 函数, 将所述特征信息写入到 3Dmax 编辑脚本中, 将输出该 3Dmax 编辑脚本对应的 .xml 文件。 9. 根据权利要求 1 所述的基于 3Dmax 脚本导出三维软件中模型动画的方法, 其特征在 于, 所述将所述 .xml 文件转换为对应的二进制 .mmb 文件之前, 还包括 : 提取所述 。

7、.xml 文件中模型的 UV 坐标信息、 顶点信息, 根据 UV 坐标信息、 顶点信息计算 模型中各顶点的法线、 模型中各个面的法线、 切线和副法线 ; 若确定出模型中相邻的两个面是同一光滑组, 则不拆分所述两个面共享的顶点, 将该 顶点的法线赋值为所述两个面的面法线的平均值 ; 若确定出模型中相邻的两个面不是同一光滑组, 则将所述两个面共享的顶点拆分为两 个顶点, 将这两个顶点的法线分别赋值为对应面的面法线的数值。 10. 一种基于 3Dmax 脚本导出三维软件中模型动画的装置, 其特征在于, 包括 : 确定特征模块, 用于确定三维软件中需导出的模型动画的特征信息 ; 导出模块, 用于将所述。

8、特征信息写入到3Dmax编辑脚本中, 再将该3Dmax编辑脚本存储 权 利 要 求 书 CN 104391683 A 2 2/2 页 3 为 .xml 文件 ; 转换模块, 用于将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据该 .mmb 文件获 得所述特征信息, 以在游戏引擎中还原所述模型动画。 权 利 要 求 书 CN 104391683 A 3 1/12 页 4 一种基于 3Dmax 脚本导出三维软件中模型动画的方法及装 置 技术领域 0001 本发明涉及计算机技术领域, 尤其涉及一种基于 3Dmax 脚本导出三维软件中模型 动画的方法及装置。 背景技术 0002 随着 。

9、Internet 技术的、 三维建模技术和虚拟现实技术的发展, 越来越多的公司开 发不同的三维软件来制作的模型动画, 每个三维软件都有其特点, 相应的三维数据类型和 存储格式也多种多样。 0003 计算机技术的发展带动了游戏产业的进步, 在游戏领域通常利用三维软件来制作 模型动画, 然后将制作好的模型导出应用到游戏引擎中使用。在导出模型的时候通常将模 型信息保存为 max 或者 ma、 mb 格式的文件, 然而这些类型的文件往往不能适用于自主开发 的游戏引擎。 一般来说, 游戏引擎开发者会自定义其文件格式以存储模型信息, 而只有具有 对应格式的模型文件才能被游戏引擎使用。如采用 Direct3。

10、D 和 OpenGL 编写的游戏引擎, 支持不同格式的模型文件。因此, 需要将三维软件中制作的模型信息导出为游戏引擎支持 的文件类型。 0004 目前导出三维模型软件中模型的方法是 : 利用 VirtoolsDev 来实现模型的导出, VirtoolsDev 为支持 3Dmax、 MAYA、 LightWave 三种文件格式转化的插件, 由于关于这个插件 的资料比较少, 应用范围比较窄, 只有少部分游戏引擎能够适用, 且对开发者及开发环境的 要求较高。 还有将将三维模型软件中模型导出为.X格式的模型文件的导出方法, 但是将.X 格式的模型文件运用到游戏引擎中时常常有错误产生, 给开发工作带来了。

11、麻烦。 发明内容 0005 本发明的目的在于提出一种基于 3Dmax 脚本导出三维软件中模型动画的方法, 有 效的避免从三维软件中导出模型时出现的模型信息不完整, 或者将导出的模型文件应用到 游戏引擎中出错的问题。 0006 为达此目的, 本发明采用以下技术方案 : 0007 一种基于 3Dmax 脚本导出三维软件中模型动画的方法, 包括 : 0008 确定三维软件中需导出的模型动画的特征信息 ; 0009 将所述特征信息写入到 3Dmax 编辑脚本中, 再将该 3Dmax 编辑脚本存储为 .xml 文 件 ; 0010 将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据该 .m。

12、mb 文件获得所述特征 信息, 以在游戏引擎中还原所述模型动画。 0011 其中, 所述模型动画的特征信息包括 : 骨骼信息和蒙皮信息。 0012 其中, 所述骨骼信息包括 : 骨骼列表、 骨骼层次以及骨骼的关键帧信息 ; 0013 所述蒙皮信息包括 : 顶点信息、 法线信息、 权重信息、 材质信息以及每个多边形的 说 明 书 CN 104391683 A 4 2/12 页 5 光滑组。 0014 其中, 所述顶点信息包括 : 各顶点受哪些骨骼的影响以及各顶点受各骨骼影响的 权重值。 0015 其中, 所述骨骼列表包括 : 骨骼 ID、 骨骼名称、 骨骼数量、 骨骼之间的父子关系、 初 始状态。

13、子骨骼相对于父骨骼的相对变换信息。 0016 其中, 所述骨骼的关键帧信息包括骨骼运动序列帧, 所述关键帧序列中保存了子 骨骼相对于父骨骼的平移、 旋转和缩放分量。 0017 其中, 所述将所述特征信息写入到 3Dmax 编辑脚本中, 包括 : 0018 将所述模型动画的坐标系转化为三维软件 3DMAX 的坐标系, 将所述平移、 旋转和 缩放分量转化为符合 3DMAX 的标准坐标系的平移、 旋转和缩放分量后写入到 3Dmax 编辑脚 本。 0019 其中, 所述将所述特征信息写入到3Dmax编辑脚本中, 再将该3Dmax编辑脚本存储 为 .xml 文件, 包括 : 0020 调用XMLElem。

14、entBegin函数, 将所述特征信息写入到3Dmax编辑脚本中, 将输出该 3Dmax 编辑脚本对应的 .xml 文件。 0021 其中, 所述将所述 .xml 文件转换为对应的二进制 .mmb 文件之前, 还包括 : 0022 提取所述 .xml 文件中模型的 UV 坐标信息、 顶点信息, 根据 UV 坐标信息、 顶点信息 计算模型中各顶点的法线、 模型中各个面的法线、 切线和副法线 ; 0023 若确定出模型中相邻的两个面是同一光滑组, 则不拆分所述两个面共享的顶点, 将该顶点的法线赋值为所述两个面的面法线的平均值 ; 0024 若确定出模型中相邻的两个面不是同一光滑组, 则将所述两个面。

15、共享的顶点拆分 为两个顶点, 将这两个顶点的法线分别赋值为对应面的面法线的数值。 0025 一种基于 3Dmax 脚本导出三维软件中模型动画的装置, 包括 : 0026 确定特征模块, 用于确定三维软件中需导出的模型动画的特征信息 ; 0027 导出模块, 用于将所述特征信息写入到3Dmax编辑脚本中, 再将该3Dmax编辑脚本 存储为 .xml 文件 ; 0028 转换模块, 用于将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据该 .mmb 文 件获得所述特征信息, 以在游戏引擎中还原所述模型动画。 0029 实施本发明实施例, 具有如下有益效果 : 0030 本发明实施例通。

16、过 3Dmax 编辑脚本导出模型动画, 把导出的模型信息存储到 .mmb 文件里, 有效的避免了从三维软件中导出模型时出现的模型信息不完整, 或者将导出的模 型文件应用到游戏引擎中出错的问题, 适用范围广, 导出的模型文件能很好的被游戏引擎 支持, 有利于提高开发效率。 附图说明 0031 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述的附图仅仅是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。 说 明 书 CN 10439168。

17、3 A 5 3/12 页 6 0032 图1是本发明第一实施例的一种基于3Dmax脚本导出三维软件中模型动画的方法 的流程示意图。 0033 图2是本发明第二实施例的一种基于3Dmax脚本导出三维软件中模型动画的装置 的结构示意图。 具体实施方式 0034 下面结合本发明的附图对本发明实施例中的技术方案进行清楚、 完整的描述, 显 然, 所描述的实施例仅仅是本发明的一部分实施例, 而不是全部的实施例。 基于本发明中的 实施例, 本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例, 都属于本发明保护的范围。 0035 结合图 1 对本发明的第一实施例进行说明。 0036 图1是。

18、本发明第一实施例的一种基于3Dmax脚本导出三维软件中模型动画的方法 流程图, 详述如下 : 0037 步骤 S101, 确定三维软件中需导出的模型动画的特征信息。 0038 在第一实施例中, 三维软件中制作的模型动画的特征信息包括 : 骨骼信息和蒙皮 信息。其中骨骼信息又包括 : 骨骼列表、 骨骼层次以及骨骼的关键帧信息 ; 蒙皮信息又包括 顶点信息、 法线信息、 权重信息、 材质信息以及每个多边形的光滑组。 0039 3D 模型动画的基本原理是让模型中各顶点的位置随时间变化, 一般都采用关键帧 技术, 即只给出相邻关键帧的数据, 那么关键帧之间的动画数据可以通过相邻关键帧使用 插值得到。现。

19、有的 3D 模型动画中效果较好的是骨骼动画, 骨骼动画包含骨骼 (Bone) 和蒙 皮 (Skinned Mesh) 两个部分, 其中骨骼为模型的框架, 蒙皮是指将网格中的顶点附着 ( 绑 定 ) 在骨骼之上, 而且每个顶点可以被多个骨骼所控制。即骨骼动画的基本原理可概括为 : 在骨骼控制下, 通过顶点混合动态计算蒙皮网格的顶点, 而骨骼的运动相对于其父骨骼, 并 由动画关键帧数据驱动。 在本实施例中, 骨骼的关键帧信息包括骨骼运动关键帧序列, 这些 序列中保存了子骨骼相对于父骨骼的平移、 旋转和缩放分量。 0040 本实施例中, 在三维软件 3DMAX 中, 在制作好的模型上为其添加骨骼系统。

20、, 例如用 Bip001 建立一个骨骼, 导出骨骼列表, 该骨骼列表包括 : 骨骼 ID、 骨骼名称、 骨骼数量、 骨骼 之间的父子关系、 初始状态子骨骼相对于父骨骼的相对变换信息。 0041 进一步的, 本实施例的蒙皮信息, 本质上是模型的顶点信息, 它包括每个顶点受哪 些骨骼的影响, 每个顶点受每块骨骼影响的权重值。具体可根据如下代码获取模型的顶点 受哪些骨骼影响和影响的权重值。 0042 说 明 书 CN 104391683 A 6 4/12 页 7 0043 说 明 书 CN 104391683 A 7 5/12 页 8 0044 说 明 书 CN 104391683 A 8 6/12。

21、 页 9 0045 步骤S102, 将所述特征信息写入到3Dmax编辑脚本中, 再将该3Dmax编辑脚本存储 为 .xml 文件。 0046 本发明实施例中, 模型的每块骨骼都有预先做的关键帧信息, 即每个骨骼都有一 个属于该骨骼的关键帧序列, 这些关键帧是骨骼运动的时间点的组成的, 需要依次循环导 出这些关键帧数据。 关键帧序列数据包含三种数据 : 平移数据, 旋转数据, 缩放数据, 当触发 该关键帧中的某一时间点时, 就可以得到该时间点模型的平移、 旋转、 缩放数据, 进而可控 制模型运动。每个关键帧中对应的运动信息可以用一个矩阵直接表示, 也可定义四元数表 示骨骼的旋转, 也可以随便定义。

22、其他以实现让骨骼运动即可。 0047 需要说明的是, 在本实施例中, 由于在三维软件 3Dmax 坐标系统和游戏引擎 Direct3D 中的坐标系统操作很大的差别。3Dmax 坐标系统基于右手坐标 , 而游戏引擎 Direct3D是基于左手坐标, 因此需要实现游戏引擎坐标系转换, 将三维软件3Dmax的y,z坐 标系交换位置。即将关键帧的旋转、 缩放、 平移写入到 3Dmax 编辑脚本中时, 需要让 3Dmax 将旋转、 缩放、 平移数据的 y,z 进行交换, 再写入 3DMAX 自带的编辑脚本中。 0048 本实施例中, 确定出模型的层次、 蒙皮信息、 关键帧信息等特征信息之后, 可通过 相。

23、应的程序语言 (C#,C+) 调用 XMLElementBegin 函数, 传入模型动画的特征信息, 将所述 特征信息写入到 3Dmax 编辑脚本中, 输出该 3Dmax 编辑脚本对应的 .xml 文件, 这个文件即 模型文件。 0049 XMLElementBegin(nTabCount+2)g_strValue false 0050 / 把这个文件转化 D3D(Direct3D) 格式并写入目标文件 0051 format“ “(m_oUtil.ConvertToD3D_POS keysi.value)to:m_fileTarget。 说 明 书 CN 104391683 A 9 7/12。

24、 页 10 0052 本实施例中, 可采用如下代码将模型的平移、 旋转、 缩放数据写入 3Dmax 编辑脚本 中, 具体如下。 0053 把骨骼的平移数据写入到 3Dmax 编辑脚本中 : 0054 0055 0056 对于旋转来说, 采用导出旋转的四元素来代替旋转矩阵, 这样可以节省资源又方 便转换。把骨骼的旋转数据写入到指定的目标文件, 代码如下 : 0057 说 明 书 CN 104391683 A 10 8/12 页 11 0058 说 明 书 CN 104391683 A 11 9/12 页 12 0059 把骨骼的缩放数据写入到 3Dmax 编辑脚本中 : 0060 说 明 书 C。

25、N 104391683 A 12 10/12 页 13 0061 步骤 S103, 将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据该 .mmb 文件获 得所述特征信息, 以在游戏引擎中还原所述模型动画动画。 0062 在本发明实施例中, 可通过 Direct3D 游戏引擎的转换工具将所述 .xml 文件转化 为对应的二进制 .mmb 文件。 0063 基于本发明上述实施例, 根据 .mmb 文件中提取模型的 UV 坐标信息 ( 用 U 和 V 两 个字母定义坐标轴, 用于确定如何将一个二维的纹理图像放置在三维的模型表面 )、 顶点信 息来计算法线、 切线和副法线。 因为骨骼动。

26、画是基于矩阵驱动的,所以在顶点运动过程中, 只需要让法线和切线也是基于同一个矩阵驱动即可, 这对于计算法线贴图 (Normalmap) 的 说 明 书 CN 104391683 A 13 11/12 页 14 法线是非常有益的。 0064 根据导出的模型文件获取三维软件中模型对应的光滑组信息是一个容易出错的 问题, 基于本发明上述实施例, 根据导出的模型文件 .mmb 文件获取 3Dmax 模型对应的光滑 组信息的办法是 : 由于相邻的两个面是否是同一光滑组是可以得到的, 因此可根据相邻的 两个面是否是同一个光滑来决定所述相邻的两个面共享的顶点是否需要拆成两个顶点。 即 在所述将所述 .xml。

27、 文件转换为对应的二进制 .mmb 文件之前, 还包括, 提取所述 .xml 文件 中模型的UV坐标信息、 顶点信息, 根据UV坐标信息、 顶点信息计算模型中各顶点的法线、 模 型中各个面的法线、 切线和副法线 ; 如果相邻的两个面是同一个光滑组, 那么不需要拆分两 个顶点, 且顶点的法线等于这两个面的面法线求和的平均值 ; 如果这两个面不是同一个光 滑组, 那么就是硬边, 需要拆成两个顶点, 各个面各自有各自的顶点, 而且每个顶点的法线 就等于对应面的面法线的数值, 这样可保证游戏引擎的法线和 3Dmax 里的法线接近。通过 此转换过程, 使得从三维软件中导出的模型文件能够更好的适应于游戏引。

28、擎, 保证导出的 模型细节的完整性。 0065 通过上述第一实施例, 先确定三维软件中需导出的模型动画的特征信息 ; 再将所 述特征信息通过 3Dmax 编辑脚本导出为 .xml 文件 ; 然后将所述 .xml 文件转换为对应的二 进制 .mmb 文件, 根据该 .mmb 文件获得所述特征信息, 以在游戏引擎中还原所述模型动画。 通过 3Dmax 编辑脚本导出模型动画, 把导出的模型信息存储到 .mmb 文件里, 有效的避免了 从三维软件中导出模型时出现的模型信息不完整, 或者将导出的模型文件应用到游戏引擎 中出错的问题, 灵活性强, 简单实用并能适应各种程序员的使用, 有利于提高开发效率。 。

29、0066 以下为本发明实施例提供的一种基于 3Dmax 脚本导出三维软件中模型动画的装 置的实施例。所述装置的实施例与上述的方法实施例属于同一构思, 装置的实施例中未详 尽描述的细节内容, 可以参考上述方法实施例。 0067 图2示出了本发明第二实施例的一种基于3Dmax脚本导出三维软件中模型动画的 装置的结构示意图, 下面进行详细说明。 0068 请参见图 2, 所述装置包括 : 确定特征模块 301、 导出模块 302 和转换模块 303, 各 模块的具体描述如下 : 0069 所述确定特征模块 301, 用于确定三维软件中需导出的模型动画的特征信息。 0070 本实施例中, 所述模型动画。

30、的特征信息包括 : 骨骼信息和蒙皮信息。其中, 所述骨 骼信息包括 : 骨骼列表、 骨骼层次以及骨骼的关键帧信息 ; 所述蒙皮信息包括 : 顶点信息、 法线信息、 权重信息、 材质信息以及每个多边形的光滑组 ; 所述骨骼的关键帧信息包括骨骼 运动关键帧序列, 这些序列中保存了子骨骼相对于父骨骼的平移、 旋转和缩放分量。 0071 所述导出模块 302, 用于将所述特征信息写入到 3Dmax 编辑脚本中, 再将该 3Dmax 编辑脚本存储为 .xml 文件。 0072 本实施例中, 将所述模型的平移数据、 旋转数据和缩放数据的 y、 z 坐标信息进行 交换, 即 : 从模型坐标系转化为 3DMA。

31、X 坐标系, 然后写入到 3Dmax 编辑脚本。具体可调用 XMLElementBegin 函数, 将所述特征信息写入到 3Dmax 编辑脚本中, 将输出该 3Dmax 编辑脚 本对应的 .xml 文件。 0073 所述转换模块 303, 用于将所述 .xml 文件转换为对应的二进制 .mmb 文件, 根据 该 .mmb 文件获得所述特征信息, 以在游戏引擎中还原所述模型动画。 说 明 书 CN 104391683 A 14 12/12 页 15 0074 本实施例中, 可通过对应游戏引擎 Direct3D 的转换工具将所述 .xml 文件转化为 对应的二进制 .mmb 文件。 0075 基于。

32、本发明上述实施例导出的模型文件后, 获取模型对应的光滑组信息的方法可 为 : 根据相邻的两个面是否是同一个光滑来决定所述相邻的两个面共享的顶点是否需要拆 成两个顶点。即在所述将所述 .xml 文件转换为对应的二进制 .mmb 文件之前, 还包括, 提取 所述 .xml 文件中模型的 UV 坐标信息、 顶点信息, 根据 UV 坐标信息、 顶点信息计算模型中各 顶点的法线、 模型中各个面的法线、 切线和副法线 ; 如果相邻的两个面是同一个光滑组, 那 么不需要拆分两个顶点, 且顶点的法线等于这两个面的面法线求和的平均值 ; 如果这两个 面不是同一个光滑组, 那么就是硬边, 需要拆成两个顶点, 各个。

33、面各自有各自的顶点, 而且 每个顶点的法线就等于对应面的面法线的数值, 这样可保证游戏引擎的法线和 3Dmax 里的 法线接近, 以保证导出的模型细节的完整性。 0076 通过上述第二实施例, 确定特征模块确定三维软件中需导出的模型动画的特征信 息 ; 导出模块将所述特征信息通过3Dmax编辑脚本导出为.xml文件 ; 转换模块将所述.xml 文件转换为对应的二进制.mmb文件, 根据该.mmb文件获得所述特征信息, 以在游戏引擎中 还原所述模型动画。有效的避免了从三维软件中导出模型时出现的模型信息不完整, 或者 将导出的模型文件应用到游戏引擎中出错的问题, 有利于提高开发效率。 0077 以上所揭露的仅为本发明较佳实施例而已, 当然不能以此来限定本发明之权利要 求范围, 因此, 凡在本发明的精神和原则之内所作的任何修改、 等同替换和改进等, 仍属本 发明所涵盖的范围。 说 明 书 CN 104391683 A 15 1/1 页 16 图 1 图 2 说 明 书 附 图 CN 104391683 A 16 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1