- 浏览: 205245 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
悲梦天下:
楼主,有些视频到一半就没声音了,怎么破!!!
python视频教程 更新22(完) -
schi:
啊,我太傻了,都想到使用uv了,可以有更简单的方法,只要把uv ...
Get Reversed Normal Faces(获取反法线面) [原理] -
schi:
相对Pillow和PySide而言,显示图片opengl就显得 ...
display an image with pyopengl and Pillow -
schi:
我也是今天才偶然想到的,我以后可能用不着了,所有分享给有需要的 ...
Get Reversed Normal Faces(获取反法线面) [原理] -
baiyanbin:
支持楼主原创,关注楼主博客有一阵子了,国内认真认真搞技术的太少 ...
python视频教程 更新22(完)
我们已经知道如何对物体进行选择,但如果对象是component呢,我们怎么去使用api来选择点、边、面等等的component呢?
在场景中创建一个多边形物体,然后选择它的点、边、面或UV,分开或一起选都行,在执行下面的代码
你会得到类似这样的结果
如果你没有选择任何的component则只会得到所选物体的名称
上面用到的是MItGeometry迭代器,它可以迭代物体的points/CV/vertices,包括mesh(多边形), nurbs surface, nurbs curve(曲线), subdivision surface(细分面) 以及 lattice(晶格)。那如果我们要迭代其它的component呢,如边、面等等。Maya里还有其它的迭代器,如MItMeshEdge、MItMeshPolygon、MItSurfaceCV等
在maya中创建一个多边形和一条曲线,分别或同时选择曲线的点、多边形的边、多边形的面,分别对它们执行下面的代码
你会得到类似的结果
在场景中创建一个多边形物体,然后选择它的点、边、面或UV,分开或一起选都行,在执行下面的代码
#!/usr/bin/env python # -*- coding: UTF-8 -*- import maya.OpenMaya as om # 创建选择列表 selList = om.MSelectionList() # 获取当前所选物体 om.MGlobal.getActiveSelectionList(selList) # 创建迭代器,对选择列表进行迭代 it = om.MItSelectionList(selList) while not it.isDone(): dagPath = om.MDagPath() # 用来存储所选物体的路径 component = om.MObject() # 用来存储所选物体的组件的列表 # 返回一个transform或shape节点的路径到dagPath # 返回物体的组件的列表,如果组件被选择的话 it.getDagPath(dagPath, component) # 添加一个方法集来处理物体 fn = om.MFnDependencyNode(dagPath.node()) # 打印物体的名称 print "\nObject: %s" % fn.name() # 如果组件的列表是有效的 if not component.isNull(): # 给组件列表创建一个geometry迭代器。 # 它可以处理所有的组件,如边、面等 itGeom = om.MItGeometry(dagPath, component) # 迭代所有点 while not itGeom.isDone(): # 获取它们的世界坐标 point = itGeom.position(om.MSpace.kWorld) # 打印点的索引和坐标 print "\t%d) %.3f %.3f %.3f" % (itGeom.index(), point.x, point.y, point.z) # 下一个 itGeom.next() it.next()
你会得到类似这样的结果
引用
Object: pCubeShape1
0) -0.500 -0.500 0.500
1) 0.500 -0.500 0.500
2) -0.500 0.500 0.500
3) 0.500 0.500 0.500
Object: pCubeShape1
4) -0.500 0.500 -0.500
5) 0.500 0.500 -0.500
6) -0.500 -0.500 -0.500
7) 0.500 -0.500 -0.500
0) -0.500 -0.500 0.500
1) 0.500 -0.500 0.500
2) -0.500 0.500 0.500
3) 0.500 0.500 0.500
Object: pCubeShape1
4) -0.500 0.500 -0.500
5) 0.500 0.500 -0.500
6) -0.500 -0.500 -0.500
7) 0.500 -0.500 -0.500
如果你没有选择任何的component则只会得到所选物体的名称
引用
Object: pCubeShape1
上面用到的是MItGeometry迭代器,它可以迭代物体的points/CV/vertices,包括mesh(多边形), nurbs surface, nurbs curve(曲线), subdivision surface(细分面) 以及 lattice(晶格)。那如果我们要迭代其它的component呢,如边、面等等。Maya里还有其它的迭代器,如MItMeshEdge、MItMeshPolygon、MItSurfaceCV等
在maya中创建一个多边形和一条曲线,分别或同时选择曲线的点、多边形的边、多边形的面,分别对它们执行下面的代码
# 创建选择列表 selList = om.MSelectionList() # 获取当前所选物体 om.MGlobal.getActiveSelectionList(selList) # 创建迭代器,对选择列表进行迭代 it = om.MItSelectionList(selList) while not it.isDone(): dagPath = om.MDagPath() # 用来存储所选物体的路径 component = om.MObject() # 用来存储所选物体的组件的列表 # 返回一个transform或shape节点的路径到dagPath # 返回物体的组件的列表,如果组件被选择的话 it.getDagPath(dagPath, component) # 添加一个方法集来处理物体 fn = om.MFnDependencyNode(dagPath.node()) # 打印物体的名称 print "\nObject: %s" % fn.name() # 如果组件的列表是有效的 if not component.isNull(): if component.apiType() == om.MFn.kMeshComponent: itVertex = om.MItMeshVertex(dagPath, component) while not itVertex.isDone(): # 获取它们的世界坐标 point = itVertex.position(om.MSpace.kWorld) # 打印点的索引和坐标 print "\t%d) %.3f %.3f %.3f" % (itVertex.index(), point.x, point.y, point.z) itVertex.next() elif component.apiType() == om.MFn.kCurveCVComponent: itCurve = om.MItCurveCV(dagPath, component) while not itCurve.isDone(): # 获取它们的世界坐标 point = itCurve.position(om.MSpace.kWorld) # 打印点的索引和坐标 print "\t%d) %.3f %.3f %.3f" % (itCurve.index(), point.x, point.y, point.z) itCurve.next() elif component.apiType() == om.MFn.kMeshEdgeComponent: itEdge = om.MItMeshEdge(dagPath, component) while not itEdge.isDone(): # 获取它们的世界坐标 point = itEdge.center(om.MSpace.kWorld) # 打印点的索引和坐标 print "\t%d) %.3f %.3f %.3f %s" % (itEdge.index(), point.x, point.y, point.z, ' smooth' if itEdge.isSmooth() else ' hard') itEdge.next() elif component.apiType() == om.MFn.kMeshPolygonComponent: itPoly = om.MItMeshPolygon(dagPath, component) while not itPoly.isDone(): # 获取它们的世界坐标 point = itPoly.center(om.MSpace.kWorld) # 打印点的索引和坐标 print "\t%d) %.3f %.3f %.3f %s" % (itPoly.index(), point.x, point.y, point.z, ' planar' if itPoly.isPlanar() else ' non-planar') itPoly.next() # 还有一大堆的component我就不一一列出了 it.next()
你会得到类似的结果
引用
Object: pSphereShape1
381) 0.188 -0.969 -0.137 hard
401) 0.309 -0.921 -0.224 hard
421) 0.421 -0.850 -0.306 hard
441) 0.524 -0.758 -0.381 hard
461) 0.613 -0.647 -0.446 hard
481) 0.688 -0.521 -0.500 hard
501) 0.745 -0.382 -0.541 hard
521) 0.784 -0.233 -0.570 hard
541) 0.804 -0.078 -0.584 hard
561) 0.804 0.078 -0.584 hard
581) 0.784 0.233 -0.570 hard
601) 0.745 0.382 -0.541 hard
621) 0.688 0.521 -0.500 hard
641) 0.613 0.647 -0.446 hard
661) 0.524 0.758 -0.381 hard
681) 0.421 0.850 -0.306 hard
701) 0.309 0.921 -0.224 hard
721) 0.188 0.969 -0.137 hard
741) 0.063 -0.994 -0.046 hard
761) 0.063 0.994 -0.046 hard
Object: pTorusShape1
415) -2.374 -0.741 -2.727 smooth
435) -2.359 -0.594 -2.681 smooth
455) -2.331 -0.469 -2.595 smooth
475) -2.292 -0.378 -2.476 smooth
495) -2.247 -0.331 -2.336 smooth
515) -2.199 -0.331 -2.189 smooth
535) -2.154 -0.378 -2.050 smooth
555) -2.115 -0.469 -1.931 smooth
575) -2.087 -0.594 -1.844 smooth
595) -2.072 -0.741 -1.799 smooth
615) -2.072 -0.896 -1.799 smooth
635) -2.087 -1.043 -1.844 smooth
655) -2.115 -1.168 -1.931 smooth
675) -2.154 -1.258 -2.050 smooth
695) -2.199 -1.306 -2.189 smooth
715) -2.247 -1.306 -2.336 smooth
735) -2.292 -1.258 -2.476 smooth
755) -2.331 -1.168 -2.595 smooth
775) -2.359 -1.043 -2.681 smooth
795) -2.374 -0.896 -2.727 smooth
Object: pSphereShape1
137) 0.811 -0.380 0.413 planar
155) 0.435 -0.232 0.853 planar
156) 0.677 -0.232 0.677 planar
157) 0.853 -0.232 0.435 planar
174) 0.154 -0.078 0.970 planar
175) 0.446 -0.078 0.875 planar
176) 0.694 -0.078 0.694 planar
177) 0.875 -0.078 0.446 planar
193) -0.154 0.078 0.970 planar
194) 0.154 0.078 0.970 planar
195) 0.446 0.078 0.875 planar
196) 0.694 0.078 0.694 planar
197) 0.875 0.078 0.446 planar
212) -0.435 0.232 0.853 planar
213) -0.150 0.232 0.946 planar
214) 0.150 0.232 0.946 planar
215) 0.435 0.232 0.853 planar
216) 0.677 0.232 0.677 planar
217) 0.853 0.232 0.435 planar
231) -0.644 0.380 0.644 planar
232) -0.413 0.380 0.811 planar
233) -0.142 0.380 0.899 planar
234) 0.142 0.380 0.899 planar
235) 0.413 0.380 0.811 planar
236) 0.644 0.380 0.644 planar
237) 0.811 0.380 0.413 planar
251) -0.595 0.519 0.595 planar
252) -0.382 0.519 0.749 planar
253) -0.132 0.519 0.830 planar
254) 0.132 0.519 0.830 planar
255) 0.382 0.519 0.749 planar
256) 0.595 0.519 0.595 planar
257) 0.749 0.519 0.382 planar
271) -0.531 0.645 0.531 planar
272) -0.341 0.645 0.669 planar
273) -0.117 0.645 0.742 planar
274) 0.117 0.645 0.742 planar
275) 0.341 0.645 0.669 planar
276) 0.531 0.645 0.531 planar
292) -0.292 0.755 0.573 planar
293) -0.101 0.755 0.635 planar
294) 0.101 0.755 0.635 planar
295) 0.292 0.755 0.573 planar
312) -0.236 0.847 0.462 planar
313) -0.081 0.847 0.512 planar
314) 0.081 0.847 0.512 planar
Object: curveShape1
2) 6.073 0.000 -8.701
3) 11.819 0.000 -2.601
4) 10.852 0.000 9.138
5) 7.350 0.000 13.090
6) 3.782 0.000 14.419
381) 0.188 -0.969 -0.137 hard
401) 0.309 -0.921 -0.224 hard
421) 0.421 -0.850 -0.306 hard
441) 0.524 -0.758 -0.381 hard
461) 0.613 -0.647 -0.446 hard
481) 0.688 -0.521 -0.500 hard
501) 0.745 -0.382 -0.541 hard
521) 0.784 -0.233 -0.570 hard
541) 0.804 -0.078 -0.584 hard
561) 0.804 0.078 -0.584 hard
581) 0.784 0.233 -0.570 hard
601) 0.745 0.382 -0.541 hard
621) 0.688 0.521 -0.500 hard
641) 0.613 0.647 -0.446 hard
661) 0.524 0.758 -0.381 hard
681) 0.421 0.850 -0.306 hard
701) 0.309 0.921 -0.224 hard
721) 0.188 0.969 -0.137 hard
741) 0.063 -0.994 -0.046 hard
761) 0.063 0.994 -0.046 hard
Object: pTorusShape1
415) -2.374 -0.741 -2.727 smooth
435) -2.359 -0.594 -2.681 smooth
455) -2.331 -0.469 -2.595 smooth
475) -2.292 -0.378 -2.476 smooth
495) -2.247 -0.331 -2.336 smooth
515) -2.199 -0.331 -2.189 smooth
535) -2.154 -0.378 -2.050 smooth
555) -2.115 -0.469 -1.931 smooth
575) -2.087 -0.594 -1.844 smooth
595) -2.072 -0.741 -1.799 smooth
615) -2.072 -0.896 -1.799 smooth
635) -2.087 -1.043 -1.844 smooth
655) -2.115 -1.168 -1.931 smooth
675) -2.154 -1.258 -2.050 smooth
695) -2.199 -1.306 -2.189 smooth
715) -2.247 -1.306 -2.336 smooth
735) -2.292 -1.258 -2.476 smooth
755) -2.331 -1.168 -2.595 smooth
775) -2.359 -1.043 -2.681 smooth
795) -2.374 -0.896 -2.727 smooth
Object: pSphereShape1
137) 0.811 -0.380 0.413 planar
155) 0.435 -0.232 0.853 planar
156) 0.677 -0.232 0.677 planar
157) 0.853 -0.232 0.435 planar
174) 0.154 -0.078 0.970 planar
175) 0.446 -0.078 0.875 planar
176) 0.694 -0.078 0.694 planar
177) 0.875 -0.078 0.446 planar
193) -0.154 0.078 0.970 planar
194) 0.154 0.078 0.970 planar
195) 0.446 0.078 0.875 planar
196) 0.694 0.078 0.694 planar
197) 0.875 0.078 0.446 planar
212) -0.435 0.232 0.853 planar
213) -0.150 0.232 0.946 planar
214) 0.150 0.232 0.946 planar
215) 0.435 0.232 0.853 planar
216) 0.677 0.232 0.677 planar
217) 0.853 0.232 0.435 planar
231) -0.644 0.380 0.644 planar
232) -0.413 0.380 0.811 planar
233) -0.142 0.380 0.899 planar
234) 0.142 0.380 0.899 planar
235) 0.413 0.380 0.811 planar
236) 0.644 0.380 0.644 planar
237) 0.811 0.380 0.413 planar
251) -0.595 0.519 0.595 planar
252) -0.382 0.519 0.749 planar
253) -0.132 0.519 0.830 planar
254) 0.132 0.519 0.830 planar
255) 0.382 0.519 0.749 planar
256) 0.595 0.519 0.595 planar
257) 0.749 0.519 0.382 planar
271) -0.531 0.645 0.531 planar
272) -0.341 0.645 0.669 planar
273) -0.117 0.645 0.742 planar
274) 0.117 0.645 0.742 planar
275) 0.341 0.645 0.669 planar
276) 0.531 0.645 0.531 planar
292) -0.292 0.755 0.573 planar
293) -0.101 0.755 0.635 planar
294) 0.101 0.755 0.635 planar
295) 0.292 0.755 0.573 planar
312) -0.236 0.847 0.462 planar
313) -0.081 0.847 0.512 planar
314) 0.081 0.847 0.512 planar
Object: curveShape1
2) 6.073 0.000 -8.701
3) 11.819 0.000 -2.601
4) 10.852 0.000 9.138
5) 7.350 0.000 13.090
6) 3.782 0.000 14.419
发表评论
-
uv重叠(uv overlap)
2014-06-28 22:28 5356两年多前我需要解决uv重叠的问题,当时觉得是一个挺有挑 ... -
GPU, Python and Maya
2013-06-27 17:32 3140Here an example how to use pyop ... -
sierpinski triangle 2d maya plug-in(with python API 2.0)
2012-11-07 16:55 2339因为python API 2.0可用的类很少,OpenMaya ... -
sierpinski triangle 2d in maya(with python API 2.0)
2012-10-22 20:41 2029在国庆前我刚好完成手上的工作,有两三天的空闲,于是就去 ... -
mel,cmds,python API哪个更快?
2012-09-13 14:37 3957昨天偶然的跟同事谈论 ... -
Maya Python API 2.0 - MGlobal
2012-08-31 18:07 2313MGlobal是一个静态类,提供通用的API涵数. 包括获取m ... -
Maya Python API 2.0 - MSelectionList
2012-07-09 14:03 2546从Maya2012开始我们迎来了新的Python API, ... -
createDynamicCache v0.1
2011-01-09 13:57 1704createDynamicCache是我的第二个maya ... -
geomShader
2010-09-29 14:26 1259geomShader.py是使用API编写maya材质的简单的 ... -
run time dynamic node
2010-09-14 23:51 1077大概一个月前我就写好了,但一直没时间整理,这个节点和我以前写的 ... -
scanDagCmd
2010-09-14 21:09 1619scanDag命令以depth first(深度优先)或bre ... -
Helix2Cmd
2010-08-28 16:39 1375不知道大家还记不记得之前的helixCmd,这个helix2C ... -
API中的选择操作
2010-04-25 18:06 1691我们已经知道如何使用API获取当前所选物体,但单是获取当前 ... -
使用API获取当前所选物体
2010-03-03 20:28 1932获取当前所选物体,是在编写工具时经常用到的,我们来看看API和 ... -
circleNode.py
2009-11-23 21:12 1794自定义节点 使用方法 在脚本编辑器中的python面板执行c ... -
basicObjectSet.py
2009-11-18 20:14 1199这是一个自定义节点和命令都同时存在的一个例子。 basi ... -
animCubeNode.py
2009-11-13 22:54 1408一个节点例子。该节点有一个time输入属性用来连接时间或设置关 ... -
zoomCameraCmd
2009-11-08 14:57 1079helixCmd是一个带命令参数的命令,但执行之后是无法撤销的 ... -
sineNode.py
2009-10-29 21:03 1250前面的helloWorldCmd.py和helixCmd.py ... -
helixCmd.py
2009-10-25 22:13 2044之前的helloWorldCmd.py只是 ...
相关推荐
这个版本是该组件系列的第三个迭代,通常会包含前两个版本的改进、新功能和性能优化。在本文中,我们将深入探讨MX Component Version 3中的关键知识点。 1. **组件化设计**: MX Component Version 3的核心理念是...
MX Component 3.16 是一个重要的软件组件集,它为开发者提供了丰富的功能,以便在各种应用程序中实现高效、稳定且灵活的开发。这个安装包是针对MX Component 3.16版本的,包含了所有必要的文件和资源,使得用户能够...
HTML Component Library 3.9 是一个专为 Delphi 开发者设计的组件库,它包含了丰富的 HTML 和 Web 相关的组件,可以帮助开发者在 Delphi 应用程序中轻松地集成和展示 HTML 内容。这个版本号为 3.9,意味着它经过了多...
TMS.component.Pack.v6.0.2.0是TMS公司推出的一款组件集合,专门针对软件开发提供了一系列功能丰富的组件,旨在提升开发效率和软件质量。 TMS.component.Pack.v6.0.2.0主要包含以下几个核心知识点: 1. 组件化开发...
【TMS_Component_pack_fullsource V5.7.1安装版】是一个专为IT开发者设计的组件包,提供了丰富的源代码支持。此版本是V5.7.1,意味着它是该系列产品的更新迭代,通常会包含错误修复、性能优化以及新增功能。TMS ...
本书《Component-Based Rails Applications》主要介绍了如何使用Rails引擎(Rails Engine)进行基于组件的Rails应用开发,以及如何对应用程序的大型模块进行拆分和模块化。以下是书中一些核心知识点的详细说明: 1....
在树形结构中,每个节点都可以看作是一个组件,它可以包含其他节点(子组件)。通过组合模式,我们可以以统一的方式对待单个节点和包含多个节点的分支,简化了对树结构的操作。例如,在Java中,我们可以创建一个抽象...
- **组件工程(Component Project)**:每个组件是一个独立的Gradle子项目,包含特定功能的代码和资源。 - **依赖管理**:通过Gradle的dependencies块定义组件间的依赖关系,遵循“声明式”依赖原则。 - **接口定义*...
这个组件包版本号为1.8.6.48,表明它经过了多次迭代和优化,以提供更稳定和高效的功能。VCL(Visual Component Library)是Delphi编程环境中的核心库,它包含了一系列用于构建用户界面的组件。这个条形码组件的引入...
在二叉树的例子中,每个节点都可以视为一个独立的组件(Component),可以包含子节点(Child),也可以是叶子节点(Leaf),没有子节点。这样,我们可以将整个树看作一个整体进行操作,而不必关心具体是单个节点还是...
随着技术的发展,ANSYS HFSS 2019 R3引入了一种新的迭代域分解基有限元技术——3D Component Finite Array(3D组件有限阵列),专门用于模拟具有非相同单元格的有限周期性结构。这项新技术显著提高了模拟速度,减少...
"MX Component 3.17T" 是一个针对专业用户设计的组件,主要适用于软件开发和工程领域。这个版本是3.17T,表明它是一个经过多次迭代和改进的成熟产品。MX Component 提供了丰富的功能,旨在提高开发效率,优化工作...
在iOS开发中,组件化是一种将复杂应用拆分为多个独立、可重用模块的...通过组件化,我们可以实现更高效的代码复用,更快的迭代速度,以及更灵活的团队协作。对于大型iOS项目来说,组件化是必不可少的现代化开发策略。
- **企业级应用**: 在构建大型分布式系统时,组件化开发可以有效提高系统的模块化程度,便于后续的功能扩展和技术迭代。 - **移动应用开发**: 移动端应用同样可以从组件化开发中受益,尤其是在跨平台开发场景下,...
12. **源代码示例**:组件通常会提供示例代码,帮助开发者了解如何正确使用每个组件,快速实现所需功能。 总之,MiTeC System Information Component Suite V12.4.0 是 Delphi 开发者的强大工具,它简化了系统信息...
**组件助手-component-helper** 在前端开发领域,组件化已经成为现代Web应用开发的重要模式。`component-helper` 是一个专为前端开发者设计的开源库,旨在帮助快速创建、构建、测试、服务和发布各种规模的项目,...
标准窗格(迭代器等) 导入组件的能力 内置库 从npm导出(?...) html(窗格?编辑器?) 更好的绩效管理 通过propTypes列出 自定义porps 已经定义了自定义道具 在模糊或enter命中时保存道具 将样式移至其他标签...
TMS Component Pack是一款由TMS Software公司开发的组件包,版本号为v5.0.0.2,它提供了丰富的控件和工具,旨在提高Delphi和C++Builder开发人员的工作效率。这个组件包涵盖了多种开发环境,包括D2005、D2006、D2007...
首先,COM(Component Object Model)组件是一种微软的接口技术,用于构建可重用的软件组件。COM组件可以在不同的应用程序之间共享,使得开发人员可以利用已有的功能,而无需从头编写代码。在这个特定的组件中,COM...