白羽
2018-06-13
来源 :网络
阅读 2117
评论 0
摘要:本文将带你了解Maya插件开发之如何自定义模型导出器和渲染视口,希望本文对大家学Maya有所帮助。
Maya作为一款3D建模软件,受到大多数游戏建模师和CG工作者欢迎。Maya所有的概念都建立在“节点”之上,Maya的GUI之所以能够跨平台,是采用了流行的Qt Gui框架完成的,因此,为用户(3D游戏建模师)开发插件的UI除了使用MEL脚本外,也可以直接使用Qt C++进行开发。Maya安装完成之后,自带了devKit和示例,上手比较简单。

遍历Maya场景节点
模型导出器(Translator)

模型文件导出器只要实现上图中需要override的函数即可。
定制渲染器(Viewport)

同理,Maya渲染视口插件也只需实现需要override的函数即可。
注册/反注册插件
注册插件需要实现MStatus initializePlugin( MObject obj )方法
[cpp] view plain copy
1. MStatus status = MStatus::kFailure;
2. MFnPlugin plug(obj, MAYA_PLUGIN_COMPANY, MAYA_PLUGIN_VERSION, MAYA_PLUGIN_REQUIREDAPI);
3.
4. gRenderer = new Mk3dRenderer();
5. if (gRenderer)
6. {
7. status = gRenderer->registerRenderer();
8. if (status != MStatus::kSuccess)
9. {
10. status.perror("Failed to register Kaleido3D renderer properly.");
11. }
12. }
13.
14. status = plug.registerFileTranslator(
15. MAYA_TRANSLATOR,
16. "none",
17. DCTranslator::creator
18. <span style="white-space:pre"> </span>);
19. if (status != MStatus::kSuccess)
20. {
21. status.perror("Failed to register Kaleido3D Translator properly.");
22. }
23. return status;
反注册插件需要实现MStatus uninitializePlugin( MObject obj )方法
[cpp] view plain copy
1. MFnPlugin plug( obj );
2. MStatus status = MStatus::kSuccess;
3.
4. // Deregister the renderer
5. if (gRenderer)
6. {
7. status = gRenderer->deregisterRenderer();
8. if (status != MStatus::kSuccess)
9. {
10. status.perror("Failed to deregister Kaleido3D renderer properly.");
11. }
12. }
13. gRenderer = 0;
14. status = plug.deregisterFileTranslator(MAYA_TRANSLATOR);
15. if (status != MStatus::kSuccess)
16. {
17. status.perror("Failed to deregister Kaleido3D Translator properly.");
18. }
上面两个方法需要在编译的时候导出符号,见第4小节。
用CMake创建Maya插件工程
关键代码如下
[plain] view plain copy
1. set(MAYA_PLUGIN_NAME "MayaDCC")
2. set(MAYA_DIRECTORY "C:\\Program Files\\Autodesk\\Maya2015")
3. set(MAYA_HEADERS_DIR "${MAYA_DIRECTORY}/include")
4. set(MAYA_LIBRARY_DIR "${MAYA_DIRECTORY}/lib")
5. include_directories(
6. .
7. ${MAYA_HEADERS_DIR}
8. )
9. link_directories(${MAYA_LIBRARY_DIR})
10. set(LIBRARIES Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib OpenMayaRender.lib)
11. set(MAYA_DEFINITIONS _MBCS NT_PLUGIN REQUIRE_IOSTREAM _BOOL)
12. add_library(
13. ${MAYA_PLUGIN_NAME} SHARED
14. ${PLUGIN_SRCS}
15. )
16. target_link_libraries(
17. ${MAYA_PLUGIN_NAME}
18. ${LIBRARIES}
19. )
20. set_target_properties(
21. ${MAYA_PLUGIN_NAME} PROPERTIES
22. COMPILE_DEFINITIONS "${MAYA_DEFINITIONS}"
23. )
24.
25. set_target_properties(
26. ${MAYA_PLUGIN_NAME} PROPERTIES
27. OUTPUT_NAME "${MAYA_PLUGIN_NAME}"
28. )
29.
30. set_target_properties(
31. ${MAYA_PLUGIN_NAME} PROPERTIES
32. CLEAN_DIRECT_OUTPUT 1
33. )
34. set_target_properties(
35. ${MAYA_PLUGIN_NAME} PROPERTIES
36. LINK_FLAGS "/export:initializePlugin /export:uninitializePlugin"
37. )
38.
39. set_target_properties(
40. ${MAYA_PLUGIN_NAME} PROPERTIES
41. SUFFIX ".mll"
42. )
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件之Maya频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号