Maya插件开发之如何自定义模型导出器和渲染视口
白羽 2018-06-13 来源 :网络 阅读 1569 评论 0

摘要:本文将带你了解Maya插件开发之如何自定义模型导出器和渲染视口,希望本文对大家学Maya有所帮助。





 

Maya作为一款3D建模软件,受到大多数游戏建模师和CG工作者欢迎。Maya所有的概念都建立在“节点”之上,Maya的GUI之所以能够跨平台,是采用了流行的Qt Gui框架完成的,因此,为用户(3D游戏建模师)开发插件的UI除了使用MEL脚本外,也可以直接使用Qt C++进行开发。Maya安装完成之后,自带了devKit和示例,上手比较简单。

 Maya插件开发之如何自定义模型导出器和渲染视口

 

遍历Maya场景节点

 

 

 

模型导出器(Translator)

 Maya插件开发之如何自定义模型导出器和渲染视口

模型文件导出器只要实现上图中需要override的函数即可。

 

 

定制渲染器(Viewport)

 Maya插件开发之如何自定义模型导出器和渲染视口

 

同理,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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程