热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

3dsMax2022插件开发Utility型空插件代码结构分析

kagula2021-10-23内容概要这里分析由3dsmaxWizard建立的Utility类型插件,空项目,它的结构,空项目指的是

kagula

2021-10-23

内容概要

        这里分析由3dsmax Wizard建立的Utility类型插件,空项目,它的结构,空项目指的是没有在向导自动生成的代码基础上添加一条有效代码。本文假设你已经在Win10上成功搭建3dsmax2022插件开发环境。具体如何搭建3dsmax2022插件开发环境,参考我的上一篇文章。

正文

 新建空项目

        在Visual Studio 2017中使用3dsmax Wizard新建Utility类型的插件,假设控件名称为maxEmptyProject,Category取kagula(你也可以随便取个其它名字)。

        在项目中排除QtPluginRollup.h、QtPluginRollup.cpp这两个文件,这两个文件对我们Build&Run空插件一点作用都没有。

        Build&Run所需要的文件有八个resouce.h、maxEmptyProject.rc、maxEmptyProject.def,DllEntry.cpp,plugin_form.ui,maxEmptyProject.h,maxEmptyProject.cpp及3dsmaxsdk_preinclude.h文件。

  • maxEmptyProject.def定义了导出函数,详细信息请查阅Win32编程手册。
  • DllEntry.cpp定义入口代码。
  • plugin_form.ui是由QT Designer生成的模板,Compile这个文件后自动产生ui_plugin_form.h文件,这个文件中的PluginRollup类,是我们的代码hook视图模板的关键。
  • maxEmptyProject的h和cpp文件,是我们空项目的核心。
  • 3dsmaxsdk_preinclude.h文件,定义了向Output窗口输出信息的宏,DllEntry.cpp用到了这些宏。
  • resource.h、maxEmptyProject.rc定义了字符串资源,没有rc文件虽然也能通过build,但是就不能正常显示字符串了。

启动顺序(只列出重要部分)


  • 第一步:DllEntry.cpp,LibClassDesc函数,返回给3dsmax类描述:static maxEmptyProjectClassDesc 。告诉3dsmax需要实例化的class,maxEmptyProject。
  • 第二步:3dsmax实例化maxEmptyProject类,这个类会链接由QT Designer制作的模板,并把前端视图加入到3dsmax Utility控制面板中。

源代码结构

图一  代码结构

整个项目以maxEmptyProject类为核心:

  • BeginEditParams,控件视图被初始化的时候,会被3dsmax调用。
  • EndEditParams,控件视图被撤销的时候,会被3dsmax调用。
  • Init、Destroy,是控件被启动或销毁的时候调用。
  • GetInstance,返回静态单实例。
  • DoSomething, 一个Qt Click事件如何链接的例子。

参考资料

【1】《Creating a Qt-based plug-in》

https://help.autodesk.com/view/MAXDEV/2022/ENU/?guid=Max_Developer_Help_writing_plug_ins_using_qt_with_3ds_max_plug_ins_creating_a_qt_based_plug_in_html


推荐阅读
author-avatar
dmcm0010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有