中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 5415|回复: 6

3dsmax模型导出插件调试技巧

[复制链接]
发表于 2012-12-13 00:40:37 | 显示全部楼层 |阅读模式

以前调试3dsmax的模型导出插件总是很头疼,因为3dsmax的插件是在启动的时候加载进去,在运行中是无法卸载的,这样每一次修改都得重启3dsmax,而且3dsmax的启动时间还特别长,很是郁闷.昨天晚上没事逛书店,偶然发现一本书在讲3dsmax的导出插件,提到了关于调试的一个小技巧,欣喜若狂,立马回家试验了一下,果然很爽.
       其实很简单,就是再写一个dll,实际的操作都在这个dll里面,每一次导出动作都将实时的加载这个dll,导出完毕再卸载这个dll文件,这样就不用每次都重启3dsmax而可以实时的更新了.


简单的例子:
extern "C"
{
    int Exporter( void );
     typedef int(*CallBackExporter)( const TCHAR *name, ExpInterface *ei, Interface *i,

                        BOOL suppressPrompts, DWORD options );
}
//+-------------&-------------
//+---------------------------&------------------- ------
int IGameExporter:oExport( const TCHAR *name, ExpInterface *ei, Interface *i, BOOL suppressPrompts, DWORD options )
{
     HMODULE hModule;
     hModule = :oadLibraryEx( "plugins/BMLExporter.dll", NULL, 0 );
     if( hModule == NULL )
     {
           hModule = :oadLibraryEx( "BMLExporter.dll", NULL, 0 );
           if( hModule == NULL )
            {
                 MessageBox( NULL, "加载模块BMLExporter.dll失败.", "", 0 );
                 return 0;
            }
      }

      CallBackExporter pfnExporter = NULL;
      pfnExporter = (CallBackExporter)GetProcAddress( hModule, "Exporter" );
      if( pfnExporter == NULL )
            return FALSE;
      int nRet = pfnExporter( name, ei, i, suppressPrompts, options );
     ::FreeLibrary( hModule );
     return nRet;
}


发表于 2012-12-14 12:43:40 | 显示全部楼层
还是用maxscript写插件合适啊
 楼主| 发表于 2012-12-17 11:13:18 | 显示全部楼层
SITT 发表于 2012-12-14 12:43
还是用maxscript写插件合适啊

用C++写显得有技术含量啊……
发表于 2013-3-5 23:06:17 | 显示全部楼层
很慢是不是因为你的插件有太多静态初始化
 楼主| 发表于 2013-3-6 13:06:40 | 显示全部楼层
是3dmax启动慢,每次调试都要重启。
用dll的方法就不需要了。
发表于 2013-3-6 19:54:48 | 显示全部楼层
oiram 发表于 2013-3-6 13:06
是3dmax启动慢,每次调试都要重启。
用dll的方法就不需要了。

原来你说的是调试的时候啊,那确实每次改完代码都要重起很蛋疼
发表于 2014-3-27 18:03:29 | 显示全部楼层
感谢楼主, 包一层确实爽多了, 每次F5等max都等哭了, 很痛苦. 我也回去试试.

另外今天刚注意到这个板块... 水货表示很愧疚...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-10-19 22:35 , Processed in 0.058646 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表