Maya教程之开发自定义模型导出器和渲染视口
凌雪 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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

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

我知道了

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

请输入正确的手机号码

请输入正确的验证码

获取验证码

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

提交

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

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

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

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved