Maya Python API 2.0 - MSelectionList

从Maya2012开始我们迎来了新的Python API,对API不熟悉的朋友也许会问为什么要出个2.0的新API.其实1.0是通过SWIG来对大部分(基本是全部)C++ API来自动转换的,好处是我们能使用绝大部分的C++ API,而且制作速度快,但也有很多问题,首先API是为C++设计的,C++和Python的最大区别之一就是指针,API中使用指针的地方非常多,为了解决这个问题,Python API里多了一个专门处理指针的类(令Pythoner蛋疼的东西),而且很多类方法都是没有Python版本的,很多的Python特性也不支持,其实就感觉跟使用C++版本没太多的区别.
2.0就是他们重新给Maya设计的Python API,支持Python的特性,优化运行速度,更加Pythonic.

这里我要介绍的是MSelectionList,要能正常运行下面的Python代码,你需要Maya2012 HotFix 1以上版本,om代表1.0的版本模块,newom是2.0.
MSelectionList是存储在MAYA中被选中的物体集,其实不是当前选中的物体也行.

获取当前选中的五体物体
import maya.OpenMaya as om  # API 1.0
import maya.api.OpenMaya as newom # API 2.0

# API 1.0
selList = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selList)

# API 2.0
mySel = newom.MGlobal.getActiveSelectionList()

MSelectionList selList;
MGlobal::getActiveSelectionList(selList);

你可以看到1.0的用法跟C++的基本一样,如果你只想通过API来打印所选择的物体名称
nodes = []
selList.getSelectionStrings(nodes)
nodes
# Result: [u'pCube1'] #

mySel.getSelectionStrings()
# Result: (u'pCube1',) #

获取节点
node = om.MObject()
selList.getDependNode(0, node)

myNode = mySel.getDependNode(0)

可以看到API 2.0更加Pythonic,其它的方法也都差不多一样的用法,具体请看文档.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值