摘要:本文将带你了解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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号