用于autodesk maya的python api的扩展集
bana的Python项目详细描述
bana是Autodesk Maya的python api的一组扩展。
每当 对系统的性能和鲁棒性进行了评价。但由于整体设计不好, 一些基本的功能缺少并不罕见 和/或需要太多的boilerplate才能运行。
其他需要考虑的问题包括方法变得过于令人望而生畏 使用后在^ {EM1} $WestEnEe>可能的方式从API到Python的API, 未记录的某些功能的行为,其中错误测试是 剩下的一切,以及方法在返回时引发异常 None更合适。
bana旨在减少这些缺点,以提供更友好的, 可预测的和高效的开发环境。
使用monkey补丁包^{tt2}$,以^{tt3}为前缀的新方法$ 在maya.OpenMaya*模块的某些类中插入,因此 扩展它们的功能,同时使这些新方法看起来像 是玛雅固有的。
由于性能是使用api的主要原因,因此一组基准 在包的帮助下构建^{tt5}$有助于确保 分机保持尽可能快的速度。
注释
bana扩展了maya的python api 1.0而不是2.0,因为后者 版本似乎仍然不完整。尽管如此,还是鼓励使用 API2.0尽可能地提供了一个更加pythonic的接口 随着表演的增加。
bana的目的不是让api更像pythonic。在某些情况下 影响表现,这违背了巴纳保持速度的目标。
功能
- 从场景中轻松检索节点。
- 使用通配符进行模式匹配的健壮且可预测的规范。
- 抽象掉maya.OpenMaya.MScriptUtil类的用法。
- 表演是重中之重。
用法
>>>importbana>>>bana.initialize()>>>frommayaimportOpenMaya>>># Retrieve a transform node named 'root'.>>>root=OpenMaya.MFnTransform.bnGet(pattern='*|root')>>># Recursively iterate over all the DAG nodes child of 'root'.>>>fornodeinroot.bnFindChildren():...print(node)>>># Find all the mesh nodes in the scene containing the word 'Shape' but...# not belonging to any namespace.>>>fornodeinOpenMaya.MFnMesh.bnFind(pattern='*|*Shape*'):...print(node)
有关更详细的示例,请参见文档中的Tutorial部分 以及如何使用bana的解释。
文档
在线阅读bana.readthedocs.io上的文档或签入其源代码 doc目录。
谢谢
- Justin Israel发现多个实例指向同一个 maya对象返回不同的散列值。