maya api 初接触
最近在学习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 初接触相关推荐
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap
这里的php 写API其实就是指提供一个WebServiceWebSite : 1.以html格式响应返回 2.由用户通过浏览器来接入 WebService : 1.以json/Xml格式返回 2.由 ...
- 1. Windows Powershell初接触
1. Windows Powershell初接触 我们之中有些人是因为需要配置Exchange Server2007,才开始对Windows Powershell全新的学习.但是,我认为可以使用WMI ...
- [Maya API] 一、基本类型介绍
1.Maya API基本结构 1.1 API语言支持 C++ API(Application Programmer Interface) 比MEL和Python有更好的性能,你可以使用API创建你自己 ...
- MAYA API插件编程--入门篇
MAYA API插件编程--入门篇 作者:华文广 日期:2010.11.28 我们知道,MAYA是一个基于结点的插件式软件架构,这种开放式的软件架构是非常优秀的,它可以让用户非常方便 ...
- 如何理解和学习MAYA API
此文转载中国影视特效界水神梁潮坡先生的博客.http://blog.sina.com.cn/s/blog_60b3e1ab0100hf9m.html点击打开链接 有兴趣的朋友可以看看,觉得没什么需要的 ...
- 一代程序员如何突破自身技术瓶颈:与敏捷的初接触
作者:熊节 / 插画:虎头锤 2000 年前后的中国,有一批年轻的 IT 从业者,受困于软件工程不能有效解决他们的实际问题,开始关注到敏捷,并在很短时间里翻译引进了敏捷的主要基础著作. 重构--一种写 ...
- Maya API编程教学for TD:MEL加密技术
Maya API编程教学for TD:MEL加密技术 和AboutCG合作的Maya API(几个月前)上线,地址:http://www.aboutcg.org/course/tut_melapi_1 ...
- 初接触Directdraw
最近在做东西,刚用mfc+gdi做了一个小东西,才明白mfc是如何操作图片的.说实话,用mfc操作.编写代码很容易就可以将一张图片展示在屏幕上. 我也了解一些关于用mfc做图片的优点:它集成了大量的数 ...
最新文章
- springmvc中的类型转换器
- Eratosthenes筛选求质数
- iOS之WebView的使用总结
- 引用和指针的差别,数组和指针的差别
- 静态路由_配置IPv4静态路由
- 网易云音乐被纳入港股通 3月7日起生效
- messagebox的用法_酝酿已久,MessageBox类实例代码讲解
- java中的比较运算符_Java基础---Java中的比较运算符(十三)
- Solr使用初探——SolrJ的使用
- frameset框架如何使左边页面显示,隐藏?wj-wangjun
- Atitit 编程范式之道 attilax著 艾龙 著 1. 编程范式与编程语言的关系是什么?	1 2. LOP 面向语言编程(LOP, Language Oriented Programming
- 20201021 plecs示波器导出高质量图片
- linux查看weblogic安装路径,linux下weblogic安装
- EDEM软件简单介绍
- 企业网络规划和设计方案(一)
- 推挽与开漏输出详解(转)
- mapbox-gl开发:带高度的标签
- 用二分法定义平方根函数(Bisection method Square Root Python)
- python-基础语法-glob.glob()
- MySQL面试题学习笔记
热门文章
- matlab绘图笔记
- windows闪屏解决方案
- 【嵌入式小技巧】STM32 实现 SEGGER RTT 打印(超详细)
- Android面试题解答(结尾有彩蛋)
- Bypass-分流抢票
- 程序员 薪水_如何减少程序员的薪水
- 第八届蓝桥杯C/C++程序设计本科B组决赛 ——瓷砖样式(填空题)【DP?我的暴力排列搜索】...
- 上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。...
- Android studio创建虚拟设备
- mfc 中文乱码转换为正常中文_MFC下遇到的字符集和中文乱码问题