最近在学习maya api相关知识,书和教程看了不少,今天正好来练兵,也算是进入csdn的第一篇博文吧。

</pre><p></p><p></p><p>最近项目里要用一个查找x轴对称点的功能。分别写了三段代码:</p><p></p><p>maya.cmds:</p><pre name="code" class="python">def getOppsiteVertex_mayacmds():sel = cmds.filterExpand( ex=True, sm=31 )obj = sel[0].split('.')[0]verNum = cmds.polyEvaluate(obj,vertex=1)ret = []for i in sel:pos = cmds.pointPosition(i,l=1)for j in xrange(verNum):pos_1 = cmds.pointPosition(obj+'.vtx['+str(j)+']')if math.fabs(-pos_1[0]-pos[0])<0.01 and math.fabs(pos_1[1]-pos[1])<0.01 and math.fabs(pos_1[2]-pos[2])<0.01:ret.append(j)breakreturn ret    

maya python api :

def findOpoVertex_pythonApi():ret = []mSel = om.MSelectionList()om.MGlobal.getActiveSelectionList(mSel)mDagPath = om.MDagPath()component = om.MObject()mSel.getDagPath(0,mDagPath,component)meshIter = om.MItMeshVertex(mDagPath,component)while(not meshIter.isDone()):pt = om.MPoint()pt = meshIter.position(om.MSpace.kObject)meshIter_1 = om.MItMeshVertex(mDagPath)while(not meshIter_1.isDone()):pt_1 = om.MPoint()pt_1 = meshIter_1.position(om.MSpace.kObject)if math.fabs(-pt.x-pt_1.x)<0.01 and math.fabs(pt.y-pt_1.y) <0.01 and math.fabs(pt.z-pt_1.z)<0.01 :ret.append(meshIter_1.index())breakmeshIter_1.next()meshIter.next()return ret    

c++ api:

#include <maya/MSimple.h>
#include<maya/MGlobal.h>
#include<maya/MDagPath.h>
#include<maya/MSelectionList.h>
#include<maya/MFnDagNode.h>
#include<maya/MIOStream.h>
#include<maya/MFnMesh.h>
#include<maya/MFloatPointArray.h>
#include<maya/MString.h>
#include<maya/MItSelectionList.h>
#include<maya/MItMeshVertex.h>
#include<maya/MStringArray.h>DeclareSimpleCommand(pickExample,"xdh","1.0");
MStatus pickExample::doIt(const MArgList &args)
{MStatus stat = MS::kSuccess;MSelectionList selection;MGlobal::getActiveSelectionList(selection);MDagPath dagPath,dagPath_1;MObject component,component_1;MItSelectionList iter(selection);selection.getDagPath(0,dagPath,component);MItMeshVertex meshIter(dagPath,component,&stat);MStringArray verIndexArray;if(stat == MS::kSuccess){for(;!meshIter.isDone();meshIter.next()){MPoint pt = meshIter.position(MSpace::kObject);MItMeshVertex meshIter_1(dagPath);for(;!meshIter_1.isDone();meshIter_1.next()){MPoint pt_1 = meshIter_1.position(MSpace::kObject);if (abs(-pt.x-pt_1.x)<0.01 && abs(pt.y-pt_1.y)<0.01 && abs(pt.z-pt_1.z)<0.01){verIndexArray.append(MString("")+meshIter_1.index());break;}}}}setResult(verIndexArray);return MS::kSuccess;}

然后在maya里跑了下,三种方式写出来的速度对比。

模型一:球模型,总共382个顶点,选择了76个。

结果如图:

使用 maya.cmds耗时 0.5秒

使用python api 耗时 0.238秒

使用c++ api 耗时 0.0625秒

模型二:球模型,总共6242个顶点,选择641个顶点。

结果如图:

使用 maya.cmds耗时 80秒

使用python api 耗时 32秒

使用c++ api 耗时 0.31秒

模型三:球模型,总共24962个顶点,选择472个顶点。

结果如图:

使用 maya.cmds耗时 236秒

使用python api 耗时 95秒

使用c++ api 耗时 0.8秒

后记:

1.三种方式,效率高下立判。

2.csdn的博客真好,贴代码,贴图片都好方便  ^ ^

maya api 初接触相关推荐

  1. Dapr微服务应用开发系列2:Hello World与SDK初接触

    题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...

  2. ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap

    这里的php 写API其实就是指提供一个WebServiceWebSite : 1.以html格式响应返回 2.由用户通过浏览器来接入 WebService : 1.以json/Xml格式返回 2.由 ...

  3. 1. Windows Powershell初接触

    1. Windows Powershell初接触 我们之中有些人是因为需要配置Exchange Server2007,才开始对Windows Powershell全新的学习.但是,我认为可以使用WMI ...

  4. [Maya API] 一、基本类型介绍

    1.Maya API基本结构 1.1 API语言支持 C++ API(Application Programmer Interface) 比MEL和Python有更好的性能,你可以使用API创建你自己 ...

  5. MAYA API插件编程--入门篇

    MAYA API插件编程--入门篇 作者:华文广          日期:2010.11.28 我们知道,MAYA是一个基于结点的插件式软件架构,这种开放式的软件架构是非常优秀的,它可以让用户非常方便 ...

  6. 如何理解和学习MAYA API

    此文转载中国影视特效界水神梁潮坡先生的博客.http://blog.sina.com.cn/s/blog_60b3e1ab0100hf9m.html点击打开链接 有兴趣的朋友可以看看,觉得没什么需要的 ...

  7. 一代程序员如何突破自身技术瓶颈:与敏捷的初接触

    作者:熊节 / 插画:虎头锤 2000 年前后的中国,有一批年轻的 IT 从业者,受困于软件工程不能有效解决他们的实际问题,开始关注到敏捷,并在很短时间里翻译引进了敏捷的主要基础著作. 重构--一种写 ...

  8. Maya API编程教学for TD:MEL加密技术

    Maya API编程教学for TD:MEL加密技术 和AboutCG合作的Maya API(几个月前)上线,地址:http://www.aboutcg.org/course/tut_melapi_1 ...

  9. 初接触Directdraw

    最近在做东西,刚用mfc+gdi做了一个小东西,才明白mfc是如何操作图片的.说实话,用mfc操作.编写代码很容易就可以将一张图片展示在屏幕上. 我也了解一些关于用mfc做图片的优点:它集成了大量的数 ...

最新文章

  1. springmvc中的类型转换器
  2. Eratosthenes筛选求质数
  3. iOS之WebView的使用总结
  4. 引用和指针的差别,数组和指针的差别
  5. 静态路由_配置IPv4静态路由
  6. 网易云音乐被纳入港股通 3月7日起生效
  7. messagebox的用法_酝酿已久,MessageBox类实例代码讲解
  8. java中的比较运算符_Java基础---Java中的比较运算符(十三)
  9. Solr使用初探——SolrJ的使用
  10. frameset框架如何使左边页面显示,隐藏?wj-wangjun
  11. Atitit 编程范式之道 attilax著 艾龙 著 1. 编程范式与编程语言的关系是什么? 1 2. LOP 面向语言编程(LOP, Language Oriented Programming
  12. 20201021 plecs示波器导出高质量图片
  13. linux查看weblogic安装路径,linux下weblogic安装
  14. EDEM软件简单介绍
  15. 企业网络规划和设计方案(一)
  16. 推挽与开漏输出详解(转)
  17. mapbox-gl开发:带高度的标签
  18. 用二分法定义平方根函数(Bisection method Square Root Python)
  19. python-基础语法-glob.glob()
  20. MySQL面试题学习笔记

热门文章

  1. matlab绘图笔记
  2. windows闪屏解决方案
  3. 【嵌入式小技巧】STM32 实现 SEGGER RTT 打印(超详细)
  4. Android面试题解答(结尾有彩蛋)
  5. Bypass-分流抢票
  6. 程序员 薪水_如何减少程序员的薪水
  7. 第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】...
  8. 上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。...
  9. Android studio创建虚拟设备
  10. mfc 中文乱码转换为正常中文_MFC下遇到的字符集和中文乱码问题