作者:卢立祎
发布关键字:3D3dsmax7插件maxscript3dmaxSDK游戏开发
发布在游戏开发过程中需要大量的模型数据来描述人物、建筑、场景,如果开发编辑器来编辑网格、顶点,代价太大,因此往往利用一些现成的3D建模软件来代替。
发布使用3dsMax7进行模型、动画数据导出是3D引擎开发过程中的一个必然环节(或者使用Maya等类似的3D建模工具)。然而discreet公司在指导用户进行二次开发的方面做得并不是太好,有一些问题是在开发过程中会常常遇到。
发布美术工作人员在3dsMax环境中编辑好了三维人物或物体,加入了动作动画,指定了渲染方式,编辑了贴图和UV坐标之后,我们就必须想方设法把这类数据从编辑环境中导出成文件以供引擎使用。一般来说,最主要有三种方式来取得需要的数据:
发布1.利用已有的导出格式取得数据
发布2.制作max的export插件输出数据
发布3.编写maxscript输出数据
发布利用已有的导出格式取得数据
发布使用3ds文件和xml文件作为导出源文件,然后直接在引擎中读取数据转化为自己定义的数据格式。一般来说会使用一些转换工具转换为更加高效的文件格式。比如在早期的MSDirectXSDK中,就有一个convert3DS的工具,把3ds格式的文件转换为D3DX使用的X文件。由于这种方式受到源文件信息固定的限制,渐渐的不被采用。DirectXSDK也开始使用插件的方式导出数据。
发布Max7中,在菜单文件中选择导出,可以看到“IGameExporter”,可以导出XML格式的文本文件,由于现在解析XML文件已经非常简单,甚至可以用序列化直接映射到数据结构,因此此方法有一定的使用价值。
发布制作max的export插件输出数据
发布使用maxSDK进行插件开发是大家普遍采用的方法,网上也可以查到相关的很多资料。在3dsmax7的目录中,可以找到maxsdk的目录,其中的help目录可以找到一些使用和开发帮助:
发布1.Sdk.chm
发布SDK的帮助文件。版本为6。个人感觉无论从整体结构还是编排都很糟糕,很难再非常快的时间内找到你想要的资料。
发布如果要使用CS(CharacterStudio)的功能,就必须包含IncludeCS目录下的头文件,以前max版本必须先安装CS的SDK才可以使用此功能,在max7中,CS已经成为了max的一个标准组件,因此CSSDK的部分也已经在maxSDK中包含。
发布Max7包含的CS的版本号为4.2。
发布2.IGameHelp.chm
发布Discreet提供了一套IGame的接口用来导出一般游戏制作需要导出的数据。“IGameExporter”就是使用了此接口。可以在maxsdksamples目录下找到这个插件的源代码。
发布DirectX9提供的max插件也是使用了IGame接口导出数据,可以在DirectXSDK中的UtilitiesSourceMax找到此插件的源代码以供参考。
发布IGameHelp.chm是使用Doxygen:rg/)自动生成的文档文件,因此使用和查找习惯于Doxygen通用生成格式相同。
发布其中的IGameSkin已经自动包含了Skin和Physique两种Modifier,无须分别写两套处理代码。
发布Max7自带的IGameInterface版本号为1.121。
发布3.sparks_archive.chm
发布sparks是max的一个讨论站点,在里面可以找到很多你需要的问题的答案,sparks_archive.chm可以自动更新到最新,但是我从来没有更新成功过。
发布此外,max7依旧提供了一套RaviKKarra编写的VC6的3dsmaxPluginWizard,可以自动生成所需要的插件框架,很可惜,版本还是R5,搭配max7的SDK会有一些小问题。把文件MAXSDKHELPSDKAPWZ.ZIP拷贝到VistualStudio的模版目录中(比如:MicrosoftVisualStudioCommonMSDev98Tempte),解压缩zip文件,VC6的新建模版中就会出现maxPluginWizard这一项。
发布如果要在VC6上编译max7的插件,还需要对一个头文件作一点小小的修改:在文件includeistdplug.h文件的第1685行:
发布typedefstruct{改为:typedefstructOptions{
Copyright 2021宝石小说All Rights Reserved