将3D模型导入3dsMAX的方法和装置与流程

文档序号:11063378阅读:755来源:国知局
将3D模型导入3dsMAX的方法和装置与制造工艺

本发明涉及3D模型处理领域,尤其涉及一种将3D模型导入3ds MAX的方法和装置。



背景技术:

3D Studio Max,通常简称为3d Max或3ds MAX,是Discreet公司开发的基于计算机操作系统的三维动画渲染和制作软件。3ds MAX已广泛应用于室内设计、建筑设计、展览展示设计、游戏动画制作、广告创意设计、多媒体制作、虚拟现实、辅助教学以及可视化表现等多个领域。

现有技术中,当设计人员需要将现有的3D模型导入3ds MAX应用程序时,操作步骤包括:打开3ds MAX应用程序,新建场景;点击“文件”菜单;再点击“文件”菜单下的“合并”按钮;最后从本地路径下查找所需的MAX文件;选定一个MAX文件,从上述过程可以看出,直接在3ds MAX应用程序中导入现有的3D模型操作步骤复杂,用户体验差。

现有技术中存在的上述技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明的目的是提供一种将3D模型导入3ds MAX的方法和装置,以减少将3D模型导入3ds MAX时的用户操作步骤,提升用户体验。

为了实现上述目的,本发明提供了一种将3D模型导入3ds MAX的方法。

该方法包括:显示3D模型对应的实体控件;响应于用户对实体控件所执行的导入操作,解析实体控件;若未解析到3D模型的本地存储路径,则根据解析到的信息获取本地存储路径,并在获取到本地存储路径后,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息;若解析到本地存储路径,则调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息;其中,WM_DROPFILES消息中携带有本地存储路径,本地存储路径用于使3ds MAX应用程序获取到3D模型的MAX文件。

进一步地,显示3D模型对应的实体控件的步骤包括:访问第一数据库,将第一数据库存储的每个3D模型的模型描述参数转化为实体控件进行显示,其中,第一数据库存储有多个3D模型的模型描述参数;或者访问第二数据库,将第二数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,其中,第二数据库存储有多个3D模型的模型描述参数和本地存储路径;或者访问第二数据库和第一数据库,将第二数据库和第一数据库进行比对,将第二数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,将第一数据库存储的且在第二数据库中不存在的每个3D模型的模型描述参数转化为实体控件进行显示。

进一步地,根据解析到的信息获取本地存储路径的步骤包括:根据解析到的信息下载3D模型的文件压缩包;调用解压缩工具对文件压缩包进行解压以得到3D模型的文件包;存储3D模型的文件包至预定资源库,其中,3D模型的文件包中包括3D模型的MAX文件;以及获取3D模型的MAX文件的路径以得到本地存储路径。

进一步地,在获取本地存储路径的步骤之后,该方法还包括:解析3D模型的MAX文件以得到3D模型的模型描述参数;采用获取到的本地存储路径和解析得到的3D模型的模型描述参数更新3D模型对应的实体控件;以及将获取到的本地存储路径和解析得到的3D模型的模型描述参数存储至第二数据库。

进一步地,3D模型的文件包存储在预定资源库中,本地存储路径为3D模型的MAX文件相对预定资源库的存储路径。

进一步地,显示3D模型对应的实体控件的步骤包括:接收3Ds MAX应用程序发送的3D模型的MAX文件的本地存储路径;按照接收到的本地存储路径获取3D模型的MAX文件;解析3D模型的MAX文件以得到3D模型的模型描述参数;将模型描述参数和本地存储路径转换为实体控件并显示,在显示3D模型对应的实体控件的步骤之后,方法还包括:存储模型描述参数和本地存储路径至第二数据库。

进一步地,显示3D模型对应的实体控件的步骤包括:响应于用户对本地3D模型执行的添加操作,获取本地3D模型的MAX文件和本地存储路径;解析本地3D模型的MAX文件以得到本地3D模型的模型描述参数;将本地3D模型的模型描述参数和本地3D模型的本地存储路径转换为实体控件并显示,在显示3D模型对应的实体控件的步骤之后,方法还包括:存储模型描述参数和本地存储路径至第二数据库。

进一步地,导入操作为拖拽实体控件至3ds MAX应用程序的显示窗口的拖拽操作,通过DoDragDrop方法实现拖拽操作,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息的步骤具体为:响应于拖拽操作完成,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

进一步地,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息的步骤包括:响应于用户对实体控件所执行的导入操作,查找并显示操作系统开启的3ds MAX应用程序;以及响应于用户对3ds MAX应用程序的选择操作,调用操作系统的API接口向用户选择的3ds MAX应用程序发送WM_DROPFILES消息。

进一步地,向3ds MAX应用程序发送WM_DROPFILES消息的步骤具体为:将本地存储路径在当前进程中初始化为一个预先定义好的结构体;计算初始化后的结构体所占用的内存大小;在3ds MAX应用程序的进程中分配一块与计算得到的内存大小同样大的空间;将结构体写入分配好的空间;以及将写入结构体的空间作为WM_DROPFILES消息发送至3ds MAX应用程序。

进一步地,在解析到本地存储路径或获取到本地存储路径之后,调用操作系统的API接口之前,方法还包括:查询本地存储路径下的文件;判断本地存储路径下的文件是否为3D模型的MAX文件;在方法中,仅当本地存储路径下的文件为3D模型的MAX文件时,才会执行调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息的步骤。

进一步地,向3ds MAX应用程序发送WM_DROPFILES消息包括:使用PostMessage方法向3ds MAX应用程序发送WM_DROPFILES消息;或者使用SendMessage方法向3ds MAX应用程序发送WM_DROPFILES消息。

为了实现上述目的,本发明提供了一种将3D模型导入3ds MAX的装置。

该装置包括:显示模块,用于显示3D模型对应的实体控件;解析模块,用于响应于用户对实体控件所执行的导入操作,解析实体控件;获取模块,用于在解析模块未解析到3D模型的本地存储路径时,获取本地存储路径;以及发送模块,用于在解析模块解析到本地存储路径时,或者在获取模块获取到本地存储路径时,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息,其中,WM_DROPFILES消息中携带有本地存储路径,本地存储路径用于使3ds MAX应用程序获取到3D模型的MAX文件。

本发明通过一种将3D模型导入3ds MAX的方法,首先显示3D模型对应的实体控件给用户,然后响应于用户对实体控件所执行的导入操作解析实体控件,解析得到的信息中包括有该3D模型的本地存储路径,或者解析得到的信息中不包括有该3D模型的本地存储路径,但可通过间接获取到3D模型的本地存储路径,无论通过哪种方式得到本地存储路径后,均会调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息,通过该WM_DROPFILES消息携带本地存储路径至3ds MAX应用程序,以使3ds MAX应用程序按照本地存储路径获取3D模型的MAX文件,实现3D模型导入3ds MAX应用程序的目的,从上述过程可以看出,在导入过程中,只需用户对要导入的3D模型对应的实体控件执行导入操作,即可完成导入,无需用户从本地路径下查找所需的MAX文件,与现有技术相比,减少了用户操作步骤,提升用户体验。

附图说明

图1为本申请提供的第一实施例的将3D模型导入3ds MAX的方法的流程图;

图2为本申请提供的第二实施例的将3D模型导入3ds MAX的方法的流程图;

图3为本申请提供的第三实施例的将3D模型导入3ds MAX的方法的流程图;

图4为本申请提供的第四实施例的将3D模型导入3ds MAX的方法的流程图;

图5为本申请提供的第五实施例的将3D模型导入3ds MAX的方法的流程图;

图6为本申请提供的第六实施例的将3D模型导入3ds MAX的方法的流程图;

图7为本申请提供的第七实施例的将3D模型导入3ds MAX的方法的流程图;

图8为本申请提供的第八实施例的将3D模型导入3ds MAX的方法的流程图;

图9为本申请提供的第九实施例的将3D模型导入3ds MAX的装置的框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,在下面的具体实施方式中,将对本发明作进一步详细的说明。

第一实施例

该实施例提供了一种将3D模型导入3ds MAX的方法,该方法的执行主体为应用于3ds MAX应用程序的插件,与3ds MAX应用程序安装于同一操作系统,通过该插件与3ds MAX应用程序的交互,实现3D模型导入3ds MAX应用程序。参见图1所示,该方法具体包括如下的步骤S102至步骤S108。

步骤S102:显示3D模型对应的实体控件。

该实体控件由3D模型的模型描述参数转化而成,或者由3D模型的模型描述参数和本地存储路径转化而成,对于前一种情况,插件可根据3D模型的模型描述参数获取到3D模型的本地存储路径。

一种实施例中,在远端(例如远程服务器一端)设置第一数据库,该第一数据库也即线上数据库,该线上数据库中存储有多个3D模型的模型描述参数。在该步骤中,访问该线上数据库获取到各个3D模型的模型描述参数,然后将每个3D模型的模型描述参数转化为实体控件进行显示。

另一种实施例中,在本地设置第二数据库,该第二数据库也即本地数据库,该本地数据库中存储有多个3D模型的模型描述参数和本地存储路径,当插件下载远程服务器上存储的在线3D模型至本地后,或者插件接收本地3ds MAX应用程序生成的3D模型后,或者插件接收到用户从外接存储设备中添加至本地的3D模型后,均会将3D模型的模型描述参数和本地存储路径存储至本地数据库。在该步骤中,访问该本地数据库获取到各个3D模型的模型描述参数和本地存储路径,然后将每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示。

优选地,该本地数据库采用SQLite数据库,占用资源低,内存小,并且方便用户对数据库进行管理。

第三种实施例中,同时在远端设置上述第一数据库,在本地设置上述第二数据库,在该步骤中,同时访问所述第二数据库和所述第一数据库,将两数据库进行比对,在显示实体控件时,将第二数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,将第一数据库存储的且在第二数据库中不存在的每个3D模型的模型描述参数转化为实体控件进行显示。

在上述三种实施例的任一实施例中,进一步地,用户通过3Ds MAX应用程序生成新的3D模型后,可发送至插件进行统一管理,此时,该步骤S102还可包括如下的步骤:接收3Ds MAX应用程序发送的3D模型的MAX文件的本地存储路径,然后按照接收到的本地存储路径获取3D模型的MAX文件,解析3D模型的MAX文件以得到3D模型的模型描述参数,将模型描述参数和本地存储路径转换为实体控件并显示。

进一步地,用户将外接存储设备或者远程存储设备(例如云盘)等位置的3D模型获取到本地后,可添加至插件进行统一管理,此时,该步骤S102还可包括如下的步骤:响应于用户对本地3D模型执行的添加操作,获取本地3D模型的MAX文件和本地存储路径,解析本地3D模型的MAX文件以得到本地3D模型的模型描述参数,将本地3D模型的模型描述参数和本地3D模型的本地存储路径转换为实体控件并显示。

3D模型的模型描述参数可包括3D模型的标识信息,例如3D模型ID、名称等,优选地,还可包括3D模型的属性信息,例如缩略图地址、版本信息、点面数信息、贴图信息、关键字描述和/或压缩包大小等。转化后的实体控件上显示有3D模型的标识信息,从而用户能够从3D模型的实体控件上区分和识别出一个具体的实体控件对应的是哪个3D模型。

优选地,通过缩略图地址获取到3D模型的缩略图,使得转化后的实体控件上显示有缩略图,从而用户能够直观的识别出3D模型,在导入3D模型之前,用户通过插件的显示窗口内即可对3D模型进行预览,与现有技术中在本地路径下逐层查找MAX文件进行预览相比,极大地提升了用户体验。

优选地,转化后的实体控件上还显示有3D模型的版本信息,从而用户能够选择适合已安装的3ds MAX应用程序的3D模型。

步骤S104:响应于用户对实体控件所执行的导入操作,解析实体控件。

通过上述步骤S102,插件一般显示有多个实体控件,用户选择要导入3ds MAX的3D模型对应的实体控件,并对其执行导入操作后,插件解析被用户操作的实体控件。对于由模型描述参数转化而成的实体控件,通过解析实体控件,即可获得该实体控件对应的3D模型的模型描述参数;对于由模型描述参数和本地存储路径转化而成的实体控件,通过解析实体控件,即可获得该实体控件对应的3D模型的模型描述参数和本地存储路径。

导入操作为预定的操作,例如用鼠标双击实体控件的操作,或者选中实体控件将实体控件拖入3ds MAX应用程序窗口的操作,或者单击实体控件,在显示的菜单中选择“导入”的操作等,本申请对此并不做限定。

步骤S106:若未解析到3D模型的本地存储路径,则根据解析到的信息获取本地存储路径,并在获取到本地存储路径后,执行下述步骤S108。

若解析到本地存储路径,则跳过上述步骤S106,直接执行下述步骤S108。

对于未解析到3D模型的本地存储路径的情况,通过解析到的信息来获取本地存储路径,例如,对于3D模型的文件包存储于预定的运营服务器端、还未下载到本地的情况,当用户对实体控件进行导入时,显示窗口询问用户是否要下载,当用户确定要下载时,先通过解析到的信息下载3D模型的文件包,然后将下载的文件包存储至本地,即可得到该3D模型的本地存储路径;又如,对于3D模型的文件包存储于远程存储设备中时,当用户对实体控件进行导入时,显示窗口询问用户是否要登陆远程存储设备进行获取,当用户确定要获取时,先登陆至远程存储设备,并在远程存储设备中通过解析到的信息查询并下载3D模型的文件包,然后将下载的文件包存储至本地,即可得到该3D模型的本地存储路径。

本申请并不限定于此,只要能够根据解析到的信息获取到本地存储路径即可,均在本申请的保护范围之内。

步骤S108:调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

本申请中,无论解析得到本地存储路径,还是根据解析得到的信息获取到本地存储路径,总之在得到本地存储路经之后,均通过WM_DROPFILES消息将本地存储路径发送至3ds MAX应用程序。3ds MAX应用程序从WM_DROPFILES消息中获取到本地存储路径后,能够根据该本地存储路径进一步获取到3D模型的MAX文件,其中,MAX文件为后缀为.max的模型文件,或者为MaxScript脚本文件,3ds MAX应用程序获取到MAX文件后也即完成对max文件的调用。

具体地,在发送WM_DROPFILES消息时,可以使用PostMessage方法向3ds MAX应用程序发送WM_DROPFILES消息,PostMessage负责将消息放到消息队列中并立即返回。或者,也可以使用SendMessage方法向3ds MAX应用程序发送WM_DROPFILES消息,SendMessage在完成消息发送后,等到消息处理完成后返回。

采用该实施例提供的将3D模型导入3ds MAX的方法,从用户操作步骤上来讲,只需用户对要导入的3D模型对应的实体控件执行预定的导入操作,3ds MAX应用程序的插件自动与3ds MAX应用程序交互,将3D模型的MAX文件的本地存储路径发送给3ds MAX应用程序,即可完成3D模型的导入,与现有技术相比,无需用户从本地路径下逐层查找所需的MAX文件,减少用户操作步骤,提升用户体验。

在一种优选实施例中,存入本地的3D模型的文件包,包括从远程服务器获取的3D模型的文件包、由3ds MAX应用程序生成的3D模型的文件包、从外接存储设备中导入的3D模型的文件包,均将文件包存入本地的预定资源库中,3D模型的本地存储路径设置为3D模型的MAX文件相对该预定资源库的存储路径,例如,预定资源库的物理路径为“D/3ds MAX/资源库”,3D模型的MAX文件的物理存储路径为“D/3ds MAX/资源库/交通工具类/汽车/002.max”,则设置本地存储路径为“交通工具类/汽车/002.max”。

采用该种相对路径的方式,一种情况下,可将插件获取本地存储路径后,将本地存储路径和预定资源库的物理路径组合,得到3D模型的MAX文件的实际物理存储路径,将该物理存储路径,携带在WM_DROPFILES消息中发送至3ds MAX应用程序;另一种情况下,也可直接将本地存储路径携带在WM_DROPFILES消息中发送至3ds MAX应用程序,由3ds MAX应用程序将WM_DROPFILES消息中的本地存储路径和预定资源库的物理路径组合获取3D模型的MAX文件。

采用该优选实施例,当预定资源库整体迁移时,例如从C盘移动到D盘,或不同电脑间的转移,无需改动实体控件,只需在插件或3ds MAX应用程序中重新设置预定资源库的物理路径即可。

第二实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同。在该优选实施例中,用户先从远程服务器下载3D模型,然后再导入3ds MAX应用程序,具体参见图2所示,该方法包括如下的步骤S202至步骤S218。

步骤S202:响应于用户对某个分类执行的显示操作,访问位于服务器的线上数据库。

服务器在满足预定条件时,主动向安装插件的客户端下发类别信息;也可以为客户端响应于用户的操作,向服务器请求3D模型的类别信息后,服务器响应请求而下发类别信息,在一种实施例中,在插件安装于客户端后首次打开,并且当前处于连网状态时,插件自动发送模型分类请求至服务器,服务器接收到模型分类请求后,下发3D模型的多个分类的类别信息,例如,设置两级分类,一级分类为动物、植物、人物、户外建筑、交通工具等分类,二级分类是在一级分类下进一步的分类,如动物分类下又分为爬行类、水生类、飞行类、其它等分类。插件接收到上述类别信息后,将一级分类显示在第一级窗体,二级分类显示在第二级窗体。

插件在接收到类别信息后显示多个分类,用户可对任意一个分类执行显示操作。当用户对某一个分类执行显示操作后,插件响应该操作访问线上数据库,获取信息实现显示。

设置线上数据库存储有所有类别的3D模型的模型描述参数,在访问该线上数据库时,获取用户执行显示操作的分类下的全部3D模型的模型描述参数。

模型描述参数包括3D模型ID、名称、缩略图地址、版本信息、点面数信息、贴图信息、关键字描述和压缩包大小等。

优选地,每个3D模型的模型描述参数均被封装为JSON数据,例如一个鸵鸟3d模型的模型描述参数如下:

步骤S204:将从线上数据库获取的3D模型的模型描述参数转换为实体控件并显示。

插件将接收到的各个3D模型的模型描述参数均转换为一一对应的实体控件并显示给用户。

步骤S206:响应于用户对实体控件所执行的下载操作,下载3D模型的文件压缩包。

具体地,用户从显示的实体控件中找到要获取的3D模型后,点击该实体控件。点击后显示可针对该实体控件所进行的操作,例如显示一个下拉菜单,菜单中包括“获取”选项,用户点击该“获取”选项时,也即对该实体控件执行了下载操作;或者,在实体控件上设置“下载”按钮,用户点击“下载按钮”时,也即对该实体控件执行了下载操作。此时,插件响应于该操作,解析实体控件,得到3D模型的模型描述参数,然后将解析得到的模型描述参数携带在向服务器发送的下载3D模型的请求中,例如3D模型名称,3D模型ID号等,服务器解析该请求获取到模型描述参数,然后将对应于模型描述参数的3D模型的下载地址下发至插件,插件请求该下载地址,可获得3D模型的文件压缩包。

步骤S208:调用解压缩工具对文件压缩包进行解压以得到3D模型的文件包。

插件在获得3D模型的文件包后,自动调用解压缩工具对文件压缩包解压缩,解压缩后得到3D模型的文件包。例如,调用ICSharpCode.SharpZipLib实现对文件压缩包进行解压缩。

步骤S210:存储3D模型的文件包至预定资源库。

在插件中设置好预定资源库的物理存储路径,将解压缩后得到的3D模型的文件包存储至预定资源库,其中,3D模型的文件包中包括3D模型的MAX文件。

步骤S212:解析3D模型的MAX文件以得到3D模型的模型描述参数,获取3D模型的MAX文件的路径以得到本地存储路径。

步骤S214:采用解析得到的模型描述参数和获取到的本地存储路径更新3D模型对应的实体控件。

优选地,在更新3D模型对应的实体控件后,插件解析该实体控件时可得到3D模型的模型描述参数和本地存储路径。同时,还可修改实体控件的显示方式,例如,对于实体控件上显示有缩略图的情况,可以将缩略图的颜色由灰色修改为绿色,从而用户能够从实体控件的显示方式上判断出该实体控件对应的3D模型是否已经被下载到本地。

步骤S216:响应于用户对实体控件所执行的导入操作,解析实体控件。

具体地,用户从显示的实体控件中找到要导入的3D模型后,点击该实体控件。点击后显示可针对该实体控件所进行的操作,例如显示一个下拉菜单,菜单中包括“导入”选项,用户点击该“导入”选项时,也即对该实体控件执行了导入操作,此时,插件响应于该操作,解析实体控件获得3D模型的模型描述参数和本地存储路径。下述步骤S218参照上述第一实施例,此处不再赘述。

步骤S218:调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

采用该实施例提供的将3D模型导入3ds MAX的方法,能够将在线3D模型导入3ds MAX应用程序,同时,基于对在线3D模型资源进行的集中整合,用户获取一个在线3D模型时,只需在插件中找到该在线3D模型所属的分类,然后插件会自动显示该分类下的3D模型的实体控件,用户选定要下载的3D模型后,即可完成下载和解压缩,与现有技术中在大量的在线信息中搜索在线3D模型相比,节省用户时间,进一步提升用户体验。

第三实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,用户将3Ds MAX应用程序生成的3D模型发送至插件,再由插件导入3Ds MAX应用程序,该实施例的应用场景包括用户在第一时间操作3Ds MAX应用程序生成的3D模型后先发送至插件,然后在第二时间再由插件导入3Ds MAX应用程序进行进一步操作。还包括用户在操作第一3Ds MAX应用程序生成的3D模型后先发送至插件,然后再由插件导入第二3Ds MAX应用程序进行进一步操作。具体参见图3所示,该方法包括如下的步骤S302至步骤S314。

步骤S302:接收3Ds MAX应用程序发送的3D模型的MAX文件的本地存储路径。

用户可以将正在制作或打开的3D模型通过“另存为”等操作,将3D模型的文件包存入预定资源库,同时,3Ds MAX应用程序响应该操作将3D模型的MAX文件的本地存储路径发送至插件,实现将3Ds MAX应用程序生成的3D模型添加到本插件。

步骤S304:按照接收到的本地存储路径获取3D模型的MAX文件。

插件接收到3Ds MAX应用程序发送的本地存储路径后,按照该路径可获取到3D模型的MAX文件,如上述实施例一指出的,该本地存储路径为3D模型的MAX文件相对本地预定资源库的存储路径,插件在接收到本地存储路径后,再组合本地预定资源库的物理路径,进而可获得3D模型的MAX文件。

步骤S306:解析3D模型的MAX文件以得到3D模型的模型描述参数。

步骤S308:将3D模型的模型描述参数转换为实体控件并显示。

步骤S310:将3D模型的模型描述参数和本地存储路径转换为实体控件并显示。

通过上述的各个步骤,完成将3Ds MAX应用程序生成的3D模型添加到本插件的过程,下述步骤S312和步骤S314,实现将3Ds MAX应用程序生成的3D模型的反向导入至3Ds MAX应用程序,该导入过程与上述第二实施例的步骤S216和步骤S218相同,此处不再赘述。例如,将用户的项目文件拆分成独立的模型文件,作为一个3D模型添加到本插件后,后续可通过下述步骤S312和步骤S314再次调用,方便用户对3D模型的使用和管理。

步骤S312:响应于用户对实体控件所执行的导入操作,解析实体控件。

步骤S314:调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

第四实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,用户对实体控件进行拖拽操作,即可完成3D模型的导入,具体参见图4所示,该方法包括如下的步骤S402至步骤S408。

步骤S402:显示3D模型对应的实体控件。

其中,实体控件由3D模型的模型描述参数或者由3D模型的模型描述参数和本地存储路径转化而成,具体显示过程参照本申请各个实施例的相关部分,该处不再赘述。

步骤S404:响应于用户拖拽实体控件至3ds MAX应用程序的显示窗口的拖拽操作,解析实体控件。

用户从显示的实体控件中找到要导入的3D模型后,选中该实体控件,实施拖拽操作,优选地,通过DoDragDrop方法实现拖拽操作,当用户完成拖放操作时,触发插件执行该步骤S404。

解析实体控件后的导入过程参见各个实施例的相关部分,此处不再赘述。

步骤S406:若未解析到3D模型的本地存储路径,则根据解析到的模型描述参数获取本地存储路径,并在获取到本地存储路径后,执行下述步骤S408。

若解析到本地存储路径,则跳过该步骤S406,直接执行下述步骤S408。

步骤S408:响应于拖拽操作完成,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

第五实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,插件自动查找已经开启的3ds MAX应用程序,并将3D模型导入,具体参见图5所示,该方法包括如下的步骤S502至步骤S510。

步骤S502:显示3D模型对应的实体控件。

其中,实体控件由3D模型的模型描述参数或者由3D模型的模型描述参数和本地存储路径转化而成,具体显示过程参照本申请各个实施例的相关部分,该处不再赘述。

步骤S504:响应于用户对实体控件所执行的导入操作,解析实体控件,。

用户从显示的实体控件中找到要导入的3D模型后,点击该实体控件,从显示的菜单中选择“发送至MAX”选项时,触发插件执行该步骤。

解析实体控件后的导入过程参见各个实施例的相关部分,此处不再赘述。

步骤S506:若未解析到3D模型的本地存储路径,则根据解析到的模型描述参数获取本地存储路径,并在获取到本地存储路径后,执行下述步骤S508。

若解析到本地存储路径,则跳过该步骤S506,直接执行下述步骤S508。

步骤S508:查找和显示操作系统开启的3ds MAX应用程序。

插件通过查找当前系统所开启的3ds MAX程序,并将相应标题展示给用户选择。当用户单击某一标题时,插件响应该选择操作,执行下述步骤S510,实现插件与3ds MAX应用程序之间的交互操作,将3D模型发送至3ds MAX应用程序,完成导入。

步骤S510:响应于用户对3ds MAX应用程序的选择操作,调用操作系统的API接口向用户选择的3ds MAX应用程序发送WM_DROPFILES消息。

第六实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,插件通过结构体的方式实现与3ds MAX应用程序的交互,具体参见图6所示,该方法包括如下的步骤S602至步骤S622。

步骤S602:显示3D模型对应的实体控件。

其中,实体控件由3D模型的模型描述参数或者由3D模型的模型描述参数和本地存储路径转化而成,具体显示过程参照本申请各个实施例的相关部分,该处不再赘述。

步骤S604:响应于用户对实体控件所执行的导入操作,解析实体控件。

该导入操作可以为上述第四实施例或者上述第五实施例中描述的操作,此处不再赘述。

步骤S606:若未解析到3D模型的本地存储路径,则根据解析到的模型描述参数获取本地存储路径,并在获取到本地存储路径后,执行下述步骤S608。

若解析到本地存储路径,则跳过该步骤S606,直接执行下述步骤S608。

步骤S608:查询本地存储路径下的文件。

步骤S610:判断本地存储路径下的文件是否为3D模型的MAX文件。

步骤S612:当本地存储路径下的文件为3D模型的MAX文件时,将本地存储路径在当前进程中初始化为一个预先定义好的结构体。

步骤S614:当本地存储路径下的文件不为3D模型的MAX文件时,返回MAX文件不存在的提示信息,流程结束。

通过上述步骤S608至步骤S614,在3D模型导入3ds MAX应用程序之前,会对本地存储路径下的文件进行筛查,以确保3D模型存在并真实可用,减少后续不必要的步骤。

步骤S616:计算初始化后的结构体所占用的内存大小。

步骤S618:在3ds MAX应用程序的进程中分配一块与计算得到的内存大小同样大的空间。

步骤S620:将结构体写入分配好的空间。

步骤S622:调用操作系统的API接口,将写入结构体的空间作为WM_DROPFILES消息发送至3ds MAX应用程序。

第七实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,用户将位于本地的3D模型添加至插件,再由插件导入3Ds MAX应用程序,该实施例的应用场景包括用户将外接存储设备中的3D模型拷贝至本地后,将其添加至插件,再由插件导入3Ds MAX应用程序,具体参见图7所示,该方法包括如下的步骤S702至步骤S710。

步骤S702:响应于用户对本地3D模型执行的添加操作,获取本地3D模型的MAX文件和本地存储路径。

用户可以将位于本地的3D模型通过“从插件查找”或“将3D模型的文件包直接拖拽至插件”等执行添加操作,插件响应该操作获取该本地3D模型的MAX文件和MAX文件的本地存储路径。

步骤S704:解析本地3D模型的MAX文件以得到本地3D模型的模型描述参数;

步骤S706:将本地3D模型的模型描述参数和本地3D模型的本地存储路径转换为实体控件并显示。

在插件中显示实体控件后,用户通过操作该实体控件可实现3D模型至3Ds MAX应用程序的导入,见下述步骤S708至步骤S710。该导入过程与上述第二实施例和第三实施例的相关步骤相同,此处不再赘述。

步骤S708:响应于用户对实体控件所执行的导入操作,解析实体控件。

步骤S710:调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

第八实施例

该实施例为在上述第一实施例基础上提供的一种将3D模型导入3ds MAX的方法的优选实施例,该优选实施例中方法的执行主体与上述第一实施例方法的执行主体相同,在该优选实施例中,显示实体控件时同时访问在线数据库和本地数据库,具体参见图8所示,该方法包括如下的步骤S802至步骤S812。

步骤S802:响应于用户对某个分类执行的显示操作,访问位于服务器的线上数据库和位于本地的本地数据库。

其中,线上数据库与本地数据库的相关描述见上述第一实施例。其中,在本地数据库中存储的3D模型的模型描述参数和本地存储路径,可以是经上述第二实施例中步骤S206至步骤S212后,将得到的模型描述参数和本地存储路径存储至本地数据库中;也可以是经上述第三实施例中步骤S302至步骤S306后,将得到的模型描述参数和本地存储路径存储至本地数据库中;也可以为是经上述第七实施例中步骤S702至步骤S704后,将得到的模型描述参数和本地存储路径存储至本地数据库中。

步骤S804:将线上数据库和本地数据库进行比对。

步骤S806:将本地数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,将线上数据库存储的且在本地数据库中不存在的每个3D模型的模型描述参数转化为实体控件进行显示。

步骤S808:响应于用户对所述实体控件所执行的导入操作,解析所述实体控件。

其中,执行的导入操作可以为上述第四实施例中描述的导入操作,也可以是上述第五实施例中描述的导入操作。

步骤S810:若未解析到3D模型的本地存储路径,则根据解析到的信息获取本地存储路径,并在获取到本地存储路径后,执行下述步骤S812。

当用户执行导入操作的实体控件是由3D模型的模型描述参数转化而成的,也即,是由线上数据库中存储的模型描述参数转化而成的,解析实体控件后仅得到模型描述参数,在该步骤中,获取本地存储路径时,先根据模型描述参数从服务器下载3D模型的文件压缩包,并在下载后解压存储至本地,以获得本地存储路径,相关过程可参照上述第二实施例中步骤S206至步骤S212。

优选地,在获得本地存储路径后,可采用解析得到的模型描述参数和获取到的本地存储路径更新3D模型对应的实体控件,保证再次导入时直接通过解析实体控件获得本地存储路径。

进一步优选地,将获取到的本地存储路径和解析得到的3D模型的模型描述参数存储至本地数据库,以保证下次执行步骤S802至步骤S806时,显示的实体控件由本地存储路径和模型描述参数转化而成。

当用户执行导入操作的实体控件是由3D模型的模型描述参数和本地存储路径转化而成的,也即,是由本地数据库中存储的模型描述参数和本地存储路径转化而成的,解析实体控件后可得到本地存储路径,此时跳过上述步骤S810,直接执行下述步骤S812。

步骤S812:查询和判断本地存储路径下的文件的情况,在本地存储路径下的文件为3D模型的MAX文件时,调用操作系统的API接口向用户选择的3ds MAX应用程序发送WM_DROPFILES消息。

其中,该步骤具体可参见上述第六实施例中的步骤S608至步骤S622,此处不再赘述。

以上为本申请提供的将3D模型导入3ds MAX的方法的实施例,本申请还提供了将3D模型导入3ds MAX的装置,该将3D模型导入3ds MAX的装置用于执行上述任意一种将3D模型导入3ds MAX的方法。

第九实施例

该实施例提供了一种将3D模型导入3ds MAX的装置,该装置为应用于3ds MAX应用程序的插件,与3ds MAX应用程序安装于同一操作系统,通过该插件与3ds MAX应用程序的交互,实现3D模型导入3ds MAX应用程序。参见图9所示,该装置具体包括显示模块90、解析模块92、获取模块94和发送模块96。

其中,显示模块90用于显示3D模型对应的实体控件。

解析模块92用于响应于用户对实体控件所执行的导入操作,解析实体控件。

获取模块94用于在解析模块92未解析到3D模型的本地存储路径时,获取本地存储路径。

发送模块96用于在解析模块92解析到本地存储路径时,或者在获取模块94获取到本地存储路径时,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

其中,WM_DROPFILES消息中携带有本地存储路径,该本地存储路径用于使3ds MAX应用程序获取3D模型的MAX文件。

优选地,显示模块90在显示3D模型对应的实体控件时,可具体执行以下步骤:

访问第一数据库,将第一数据库存储的每个3D模型的模型描述参数转化为实体控件进行显示,其中,第一数据库存储有多个3D模型的模型描述参数;或者

访问第二数据库,将第二数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,其中,第二数据库存储有多个3D模型的模型描述参数和本地存储路径;或者

访问第二数据库和第一数据库,将第二数据库和第一数据库进行比对,将第二数据库存储的每个3D模型的模型描述参数和本地存储路径转化为实体控件进行显示,将第一数据库存储的且在第二数据库中不存在的每个3D模型的模型描述参数转化为实体控件进行显示。

优选地,获取模块94包括:压缩包下载模块,用于下载3D模型的文件压缩包;解压工具调用模块,用于调用解压缩工具对文件压缩包进行解压以得到3D模型的文件包;第一存储模块,用于存储3D模型的文件包至预定资源库,其中,3D模型的文件包中包括3D模型的MAX文件;路径获取模块,用于获取3D模型的MAX文件的路径以得到本地存储路径。

优选地,该装置还包括,第一参数解析模块,用于解析3D模型的MAX文件以得到3D模型的模型描述参数;第一控件转换显示模块,用于采用获取到的本地存储路径和解析得到的3D模型的模型描述参数更新3D模型对应的实体控件。该装置还包括第二存储模块,用于将获取到的本地存储路径和解析得到的3D模型的模型描述参数存储至第二数据库。

优选地,显示模块包括:服务器接收模块,用于接收服务器发送的3D模型的模型描述参数;以及实体控件转换模块,用于将3D模型的模型描述参数转换为实体控件并显示。

优选地,3D模型的文件包存储在预定资源库中,本地存储路径为3D模型的MAX文件相对预定资源库的存储路径。

优选地,显示模块包括:应用程序接收模块,用于接收3Ds MAX应用程序发送的3D模型的MAX文件的本地存储路径;MAX文件获取模块,用于按照接收到的本地存储路径获取3D模型的MAX文件;第二参数解析模块,用于解析3D模型的MAX文件以得到3D模型的模型描述参数;第二控件转换显示模块,用于将3D模型的模型描述参数和本地存储路径转换为实体控件并显示。该装置还包括第三存储模块,用于在第二控件转换显示模块显示3D模型对应的实体控件之后,存储模型描述参数和MAX文件的本地存储路径至第二数据库。

优选地,显示模块包括:本地添加模块,用于响应于用户对本地3D模型执行的添加操作,获取本地3D模型的MAX文件和本地存储路径;第三参数解析模块,用于解析本地3D模型的MAX文件以得到本地3D模型的模型描述参数;第三控件转换显示模块,用于将本地3D模型的模型描述参数和本地3D模型的本地存储路径转换为实体控件并显示。该装置还包括第四存储模块,用于在第二控件转换显示模块显示3D模型对应的实体控件之后,存储模型描述参数和MAX文件的本地存储路径至第二数据库。

在显示3D模型对应的实体控件的步骤之后,方法还包括:存储模型描述参数和本地存储路径至第二数据库。

优选地,导入操作为拖拽实体控件至3ds MAX应用程序的显示窗口的拖拽操作,通过DoDragDrop方法实现拖拽操作,发送模块执行的步骤具体为响应于拖拽操作完成,调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

优选地,发送模块包括:程序查找显示模块,用于响应于用户对实体控件所执行的导入操作,查找并显示操作系统开启的3ds MAX应用程序;接口调用模块,用于响应于用户对3ds MAX应用程序的选择操作,调用操作系统的API接口向用户选择的3ds MAX应用程序发送WM_DROPFILES消息。

优选地,发送模块包括:结构体初始化模块,用于将本地存储路径在当前进程中初始化为一个预先定义好的结构体;内存计算模块,用于计算初始化后的结构体所占用的内存大小;空间分配模块,用于在3ds MAX应用程序的进程中分配一块与计算得到的内存大小同样大的空间;空间写入模块,用于将结构体写入分配好的空间;以及调用操作系统的API接口将写入结构体的空间作为WM_DROPFILES消息发送至3ds MAX应用程序。

优选地,该装置还包括:查询模块,用于在解析模块解析到本地存储路径或获取模块获取到本地存储路径之后,调用操作系统的API接口之前,查询本地存储路径下的文件;判断模块,用于判断本地存储路径下的文件是否为3D模型的MAX文件;其中,仅当本地存储路径下的文件为3D模型的MAX文件时,发送模块才会调用操作系统的API接口向3ds MAX应用程序发送WM_DROPFILES消息。

优选地,发送模块在向3ds MAX应用程序发送WM_DROPFILES消息时,使用PostMessage方法向3ds MAX应用程序发送WM_DROPFILES消息;或者使用SendMessage方法向3ds MAX应用程序发送WM_DROPFILES消息。

优选地,数据库为SQLite数据库。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域的技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺去或同时执行;其次,本领域技术人员也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

对于前述的各装置实施例,为了简单描述,故将其都表述为一系列的模块组合,但是本领域的技术人员应该知悉,本发明并不受所描述的模块组合的限制,因为根据本发明,某些模块可以采用其他模块执行;其次,本领域技术人员也应该知悉,上述装置实施例均属于优选实施例,所涉及的模块并不一定是本发明所必须的。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上对本发明所提供的一种将3D模型导入3ds MAX的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1