为3D开发人员,特别是3D引擎开发人员,经常会接触到各种三维模型的数据。虽然说3dsmax已经可以导出很多格式的模型,不过总是不一定合适自己用。所以总有一种想自己写一个导出插件,让3dmax导出自己想要的数据格式。这里为大家介绍一下怎样为3dmax写导出插件的第一步:怎样配置vs和maxSdk。
这里你需要的东西有两个:
1、一个完整版的3dsMax。
2、一个Visual Studio。
为什么是要完整版的3dsMax呢?这是因为完整版本的3dsMax的安装文件自带有maxSdk。这是很重要的。不同版本的3dsMax,带的sdk会不一样。你拿了其他版本的sdk做了的插件,不一定适合你当前的3dsmax使用的。很多人写这个配置教程,会告诉你上网去找maxSdk。其实不需要这么麻烦的。下面会告诉大家怎样安装。我这里拿的是我当前使用的3dsMax2011的64位版来做示范。其他的版本做法是一样的。
那么Visual Studio有什么要求呢?有些人写的教程会告诉你,每个版本的max的sdk会对应不同版本的vs,最好对应。这样说也不算错。不过其实这个对应关系没那么严格的,我下面会告诉大家怎样跨版本配置。比如max2011的sdk对应的是vs2008,我下面将会用vs2010来配置。
好,把上面2样东西准备好之后,3dsmax正常安装,vs也正常安装,准备工作就完成了,接下来阿赵和大家就一起来装这个maxSdk:
运行完整版本的3dsMax安装文件,会看到以下界面,我们选择“安装工具和实用程序”:
在这里选择需要安装的工具,我们需要的是3ds max 2011的sdk:
安装完之后,会在安装目录找到一个howto文件夹,里面有个3dsmaxPluginWizard文件夹,在里面有个readme.txt文档,文档里面说明了怎么去配置这个sdk的。其实在安装完之后,我们可以把这个maxsdk的文件夹随便的移动到我们想要的地方的。不过在配置之前,最好先移动好,开始配置之后,就别动这个文件夹的路径了。
在配置之前,这个文件夹的属性是只读的,我们先把整个文件夹的只读取消,然后开始配置:
使用记事本打开同文件夹下的3dsmaxPluginWizard.vsz,然后找到下图用红线下划的地方。
默认的Wizard=VsWizardEngine.9.0,代表的是对应vs2008版本。我现在需要使用2010版本,所以把它改成了10.0
然后下面的ABSOLUTE_PATH改成当前的3dsmaxPluginWizard文件夹的路径:
改完之后,我们把3dsmaxPluginWizard文件夹下的这三个文件复制:
然后找到vs2010的安装文件夹,找到VC/vcprojects文件夹,把刚才复制的三个文件放到这个文件夹下:
然后我们就可以打开vs2010,创建新项目。这时候会在c++项目里面看到了3dsmax插件的类别,选择它,然后在下面的项目名称和路径里面输入自己想要的名字和路径。
如果你之前的配置正确,将会弹出设置向导,如果没有弹出,则要检查之前的步骤了。我们选择File Export:
这里是插件的详情,直接下一步就行:
这里是项目详情,第一项输入maxsdk的路径,第二项输入插件想输出的路径,比如3dsmax安装目录的plugins文件夹,第三项输入需要调试的3dsmax的安装目录。三项都是可以在项目建立之后修改的。
按finish后,由于这个版本的sdk对应的是vs2008,现在我用的是2010,所以有一个转换版本的过程(我用的vs2013,sdk2012,没有这步)
这时候,项目应该已经创建成功。如果没有创建成功,则检查之前的步骤。通常是因为3dsmaxPluginWizard.vsz里面的vs版本设置错误。如果创建成功后,我们在解决方案资源管理器里面找到你的项目的cpp,打开。
在cpp里面,修改Ext方法里面的返回,这里是你导出的模型的格式后缀名,这里我是改成了”azhao“,再改ShortDesc方法里面的返回,这里是模型的描述,我改成了”阿赵的模型格式“。
现在按调试,会弹出错误:
这是因为调试的目标没有设置正确,可以找到项目属性修改:
在配置属性里面的调试,修改命令项为你的3dsmax.exe路径:
按道理,现在我们再开始调试,你的3dsmax就会启动了。如果你是为32位的3dsmax做配置,那么整个配置过程已经完成了。
但我这里3dsmax启动后报错了,这是因为我的3dsmax是64位的,刚才调试生成的32位插件不能用。
接下来我们将要把项目改成64位的。先打开项目属性,在配置管理器里面,把Win32改成x64:
改完之后,之前我们的所有配置都没了,需要逐个去配置:
先配置调试程序路径:
然后配置输出路径
配置生成程序数据库文件的路径
好了,64位修改完成,我们再次进行调试,3dsmax应该就能正常打开了。
这里我编译有问题,提示error MSB8009:答题内容就是我的vs2013不能打开2008的东西,就是说plaeform tools不对,解决如下:
1、打开工程。
2、右击工程并选择 ‘Properties(属性)‘。在属性窗口的左边面板, 展开‘(Configuration Properties)‘ 并选择‘(General)‘.
3、右边面板中, 将“(Platform Toolset)”的值从v90 改为 v120(改成自己支持的就可以) ,点击(OK)。
4、在Solution Explorer(解决方案资源管理器)”中,打开“StdAfx.h”文件,将“_WIN32_WINNT”的值从0x0400改为0x0501,。
我们随便在场景里面建立一个茶壶,然后导出。现在我们可以在选择导出格式的地方,找到我们刚才指定的格式了,就是”阿赵的模型格式“,后缀名是”azhao“。
确定保存,会打开一个对话框,不过里面都是一些默认的东西,没有任何内容的,因为我们只是完成了配置的步骤,没有开始写导出的实际内容。
在vs里面找到DoExport方法,在里面打一个断点。再次去选择导出我们的格式,vs应该就能进入断点了。DoExport方法就是导出方法的入口了。
如果你途中发现出现问题,很有可能是以下几种问题:
1、下载的MaxSdk有问题,建议使用完整版3dsMax自带的sdk。
2、忘记取消maxSdk文件夹的只读属性,这样在新建项目或者编译的时候都会出错。
3、3dsmaxPluginWizard.vsz里面设置的vs版本不对。9.0对应的是vs2008,10.0对应的是vs2010,11.0对应的是vs2012.
4、调试的时候出错,有可能是没有设置对调试对象,要设置为3dsMax的exe。
5、调试的时候没有报错,却没有出现导出的选择。有可能是导出保存的路径不对,要保存在3dsmax的安装路径里面的插件文件夹,比如plugins或者stdplugs文件夹。
6、调试的时候3dsmax启动了,但在启动的途中报错。这有可能是使用的sdk和3dsMax版本不对应,或者是32位插件和64位软件不对应。
这个过程虽然简单,不过却会遇到很多默默奇妙的小问题,网上虽然相关的教程不少,但起码我自己对着很多个教程都没有配置成功,所以才把自己的配置过程记录下来,希望能给以后需要配置的人一个参考。