凌雪
2018-07-30
来源 :网络
阅读 1990
评论 0
摘要:本文将带你了解Maya教程之开发自定义模型导出器和渲染视口,希望本文对大家学Maya有所帮助
本文将带你了解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 )方法
MStatus status = MStatus::kFailure; MFnPlugin plug(obj, MAYA_PLUGIN_COMPANY, MAYA_PLUGIN_VERSION, MAYA_PLUGIN_REQUIREDAPI); gRenderer = new Mk3dRenderer(); if (gRenderer) { status = gRenderer->registerRenderer(); if (status != MStatus::kSuccess) { status.perror("Failed to register Kaleido3D renderer properly."); } } status = plug.registerFileTranslator( MAYA_TRANSLATOR, "none", DCTranslator::creator ); if (status != MStatus::kSuccess) { status.perror("Failed to register Kaleido3D Translator properly."); } return status;
反注册插件需要实现MStatus uninitializePlugin( MObject obj )方法
MFnPlugin plug( obj ); MStatus status = MStatus::kSuccess; // Deregister the renderer if (gRenderer) { status = gRenderer->deregisterRenderer(); if (status != MStatus::kSuccess) { status.perror("Failed to deregister Kaleido3D renderer properly."); } } gRenderer = 0; status = plug.deregisterFileTranslator(MAYA_TRANSLATOR); if (status != MStatus::kSuccess) { status.perror("Failed to deregister Kaleido3D Translator properly."); }上面两个方法需要在编译的时候导出符号,见第4小节。
用CMake创建Maya插件工程
关键代码如下
set(MAYA_PLUGIN_NAME "MayaDCC")set(MAYA_DIRECTORY "C:\\Program Files\\Autodesk\\Maya2015")set(MAYA_HEADERS_DIR "${MAYA_DIRECTORY}/include")set(MAYA_LIBRARY_DIR "${MAYA_DIRECTORY}/lib")include_directories( . ${MAYA_HEADERS_DIR})link_directories(${MAYA_LIBRARY_DIR})set(LIBRARIES Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib OpenMayaRender.lib)set(MAYA_DEFINITIONS _MBCS NT_PLUGIN REQUIRE_IOSTREAM _BOOL)add_library( ${MAYA_PLUGIN_NAME} SHARED ${PLUGIN_SRCS})target_link_libraries( ${MAYA_PLUGIN_NAME} ${LIBRARIES})set_target_properties( ${MAYA_PLUGIN_NAME} PROPERTIES COMPILE_DEFINITIONS "${MAYA_DEFINITIONS}") set_target_properties( ${MAYA_PLUGIN_NAME} PROPERTIES OUTPUT_NAME "${MAYA_PLUGIN_NAME}") set_target_properties( ${MAYA_PLUGIN_NAME} PROPERTIES CLEAN_DIRECT_OUTPUT 1)set_target_properties( ${MAYA_PLUGIN_NAME} PROPERTIES LINK_FLAGS "/export:initializePlugin /export:uninitializePlugin") set_target_properties( ${MAYA_PLUGIN_NAME} PROPERTIES SUFFIX ".mll")
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Maya频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

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