- 浏览: 205272 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
悲梦天下:
楼主,有些视频到一半就没声音了,怎么破!!!
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(完)
什么是PyMel?它是python还是mel?一个新的语言?...
也许你会这样不停的追问,Ok,现在就给你们介绍一下PyMel。
PyMel已经存在挺久的了,已经是1.00版本了,支持maya2008, 2009和2010,是一个开源项目。
其实我也一直都在关注PyMel,为什么到现在才给大家介绍呢?因为我到目前为止都没使用PyMel,但为什么现在又要介绍它呢?因为maya2011已经集成了PyMel,你根本就不需要单独安装,所以我觉得是时候使用PyMel了,也是时候给大家介绍一下了。
PyMel是Luma Pictures内部开发的,自从它问世以来的一年内就参与了很多令人映像深刻的电影和游戏项目,如:
PyMel是一个Maya的Python模块。
PyMel项目的目标是
我们来看看PyMel和Mel以及MayaPython的区别
WO...
对于Mel用户来说可能(应该)根本看不明白,但对于十分熟悉python的用户就再熟悉不过了,或是说python的代码就应该这样写。
PyMel有很多很强大的类,Maya里的每个节点都有一个节点类,如摄像机:
一个属性类组织所有的属性命令
操纵文件路径更简单
再用长点的代码来对比一下(注释我就先不翻译了,太累了要睡了)
现在你应该知道为什么那么多nx的公司\工作室都用PyMel了吧,如果你想在Maya里写python脚本,那么PyMel绝对是你最好的选择。
也许你会这样不停的追问,Ok,现在就给你们介绍一下PyMel。
PyMel已经存在挺久的了,已经是1.00版本了,支持maya2008, 2009和2010,是一个开源项目。
其实我也一直都在关注PyMel,为什么到现在才给大家介绍呢?因为我到目前为止都没使用PyMel,但为什么现在又要介绍它呢?因为maya2011已经集成了PyMel,你根本就不需要单独安装,所以我觉得是时候使用PyMel了,也是时候给大家介绍一下了。
PyMel是Luma Pictures内部开发的,自从它问世以来的一年内就参与了很多令人映像深刻的电影和游戏项目,如:
- DreamWorks: 功夫熊猫,怪物史瑞克4,怪兽大战外星人,驯龙高手(How to Train Your Dragon,国内4月下旬上映)
- Luma Pictures: 勒比海盗3:世界的尽头,哈利·波特与混血王子,X战警前传-金刚狼
- ImageMovers Digital: 圣诞颂歌(A Christman Carol)
PyMel是一个Maya的Python模块。
PyMel项目的目标是
- 为Maya创建一个开源的Python模块
- 修复Maya的Python模块(maya.cmds和maya.mel)的bug和限制
- 让代码清晰易读
- 通过类的层次结构和子模块加强代码组织
- 通过html和内建函数help()来提供文档
我们来看看PyMel和Mel以及MayaPython的区别
string $sel[] = `ls -sl`; string $shapes[] = `listRelatives -s $sel[0]`; string $conn[] = `listConnections -s 1 -d 0 $shapes[0]`; setAttr ( $conn[0] + ".radius") 3;
import maya.cmds as cmds sel = cmds.ls(sl=1)[0] shape = cmds.listRelatives(sel,s=1)[0] conn = cmds.listConnections(shape,s=1,d=0)[0] cmds. setAttr((conn + ".radius"),3)
from pymel import * selected()[0].getShape().inputs()[0].radius.set(3)
WO...
对于Mel用户来说可能(应该)根本看不明白,但对于十分熟悉python的用户就再熟悉不过了,或是说python的代码就应该这样写。
PyMel有很多很强大的类,Maya里的每个节点都有一个节点类,如摄像机:
camTrans, cam = camera() # 创建一个新相机 cam.setFocalLength(100) fov = cam.getHorizontalFieldOfView() cam.dolly( -3 ) cam.track(left=10) cam.addBookmark('new')
一个属性类组织所有的属性命令
s = polySphere()[0] if s.visibility.isKeyable() and not s.visibility.isLocked(): s.visibility.set( True ) s.visibility.lock() print s.visibility.type()
操纵文件路径更简单
#backup all mb files in the current scene's directory #备份所有的mb文件到当前场景所在的文件夹 basedir = sceneName().parent backupDir = basedir / "backup" #slash op joins paths("/"操作符代表加入路径) if not backupDir.exists: backupDir.mkdir() for file in basedir.files( '*.mb' ): print "backing up: ", file.name file.copy( backupDir / (file.namebase + ".old") )
再用长点的代码来对比一下(注释我就先不翻译了,太累了要睡了)
string $objs[] = `ls -type transform`; for ($x in $objs) { print (longNameOf($x)); print "\n"; // make and break some connections connectAttr( $x + ".sx") ($x + ".sy"); connectAttr( $x + ".sx") ($x + ".sz"); disconnectAttr( $x + ".sx") ($x + ".sy"); string $conn[] = `listConnections -s 0 -d 1 -p 1 ($x + ".sx")`; for ($inputPlug in $conn) disconnectAttr ($x + ".sx") $inputPlug; // add and set a string array attribute with the history of this transform's shape if ( !`attributeExists "newAt" $x`) addAttr -ln newAt -dataType stringArray $x; string $shape[] = `listRelatives -s $x`; string $history[] = `listHistory $shape[0]`; string $elements = ""; for ($elem in $history) $elements += """ + $elem + "" "; eval ("setAttr -type stringArray " + $x + ".newAt " + `size $history` + $elements); print `getAttr ( $x + ".newAt" )`; // get and set some attributes setAttr ($x + ".rotate") 1 1 1; float $trans[] = `getAttr ($x + ".translate")`; float $scale[] = `getAttr ($x + ".scale")`; $trans[0] *= $scale[0]; $trans[1] *= $scale[1]; $trans[2] *= $scale[2]; setAttr ($x + ".scale") $trans[0] $trans[1] $trans[2]; // call some other scripts myMelScript( `nodeType $x`, $trans ); }
objs = cmds.ls( type= 'transform') if objs is not None: # returns None when it finds no matches for x in objs: print mm.eval('longNameOf("%s")' % x) # make and break some connections cmds.connectAttr( '%s.sx' % x, '%s.sy' % x ) cmds.connectAttr( '%s.sx' % x, '%s.sz' % x ) cmds.disconnectAttr( '%s.sx' % x, '%s.sy' % x) conn = cmds.listConnections( x + ".sx", s=0, d=1, p=1) # returns None when it finds no matches if conn is not None: for inputPlug in conn: cmds.disconnectAttr( x + ".sx", inputPlug ) # add and set a string array attribute with the history of this transform's shape if not mm.eval( 'attributeExists "newAt" "%s"' % x): cmds.addAttr( x, ln='newAt', dataType='stringArray') shape = cmds.listRelatives( x, s=1 ) if shape is not None: history = cmds.listHistory( shape[0] ) else: history = [] args = tuple( ['%s.newAt' % x, len(history)] + history ) cmds.setAttr( *args , type= 'stringArray' ) # get and set some attributes cmds.setAttr ( '%s.rotate' % x, 1, 1, 1 ) scale = cmds.getAttr ( '%s.scale' % x ) scale = scale[0] # maya packs the previous result in a list for no apparent reason trans = list( cmds.getAttr ( '%s.translate' % x )[0] ) # the tuple must be converted to a list for item assignment trans[0] *= scale[0] trans[1] *= scale[1] trans[2] *= scale[2] cmds.setAttr ( '%s.scale' % x, trans[0], trans[1], trans[2] ) mm.eval('myMelScript("%s",{%s,%s,%s})' % (cmds.nodeType(x), trans[0], trans[1], trans[2]) )
from pymel import * # safe to import into main namespace for x in ls( type='transform'): print x.longName() # object oriented design # make and break some connections x.sx >> x.sy # connection operator x.sx >> x.sz x.sx // x.sy # disconnection operator x.sx.disconnect() # smarter methods -- (automatically disconnects all inputs and outputs when no arg is passed) # add and set a string array attribute with the history of this transform's shape x.setAttr( 'newAt', x.getShape().history(), force=1 ) # get and set some attributes x.rotate.set( [1,1,1] ) trans = x.translate.get() trans *= x.scale.get() # vector math x.translate.set( trans ) # ability to pass list/vector args mel.myMelScript(x.type(), trans) # automatic handling of mel procedures
现在你应该知道为什么那么多nx的公司\工作室都用PyMel了吧,如果你想在Maya里写python脚本,那么PyMel绝对是你最好的选择。
发表评论
-
uv重叠(uv overlap)
2014-06-28 22:28 5356两年多前我需要解决uv重叠的问题,当时觉得是一个挺有挑 ... -
dx11 Shaders for maya
2014-06-09 17:48 2172我准备花点时间来弄点d ... -
Maya plugin with OpenCL C++ example
2014-04-23 12:19 3203GPU, Python and Maya使用的是python和 ... -
cmdReporterHighlighter
2014-01-19 19:30 890A syntaxhighlighter I wrote ... -
那条线代表什么
2013-11-07 12:32 1257好几个月前我问了前同事一个问题:那条线代表什么? 同事在玩 ... -
Add MEL syntax highlighting for expression editor[给表达式编辑器添加mel的高光显示]
2013-08-30 18:16 1957I don't use mel for years. But ... -
GPU, Python and Maya
2013-06-27 17:32 3142Here an example how to use pyop ... -
mentalray cause maya2012 crash on standalone mode
2013-03-28 20:27 1082如果你想使用maya2012和python来做些批处理,你就要 ... -
sierpinski triangle 2d maya plug-in(with python API 2.0)
2012-11-07 16:55 2340因为python API 2.0可用的类很少,OpenMaya ... -
sierpinski triangle 2d in maya(with python API 2.0)
2012-10-22 20:41 2030在国庆前我刚好完成手上的工作,有两三天的空闲,于是就去 ... -
mel,cmds,python API哪个更快?
2012-09-13 14:37 3957昨天偶然的跟同事谈论 ... -
Maya Python API 2.0 - MGlobal
2012-08-31 18:07 2313MGlobal是一个静态类,提供通用的API涵数. 包括获取m ... -
Get Reversed Normal Faces(获取反法线面)
2012-08-20 18:34 1760这不是一个教程,这是 ... -
我讨厌给UI起名字,也懒得起名字
2012-07-05 14:35 1366从我开始给Maya开发UI工具的时候起就觉得给窗口起名是件麻烦 ... -
算法(algorithm) 101
2012-07-02 23:01 1173在Maya中实现深度/广度优先搜索算法 Depth-First ... -
使用Visual C++ 2010 Express来开发Maya x64插件
2012-07-02 22:57 4979Visual C++ 2010 Express是微 ... -
(Get Maya Main Window for PyQt4/PySide)为PyQt4/PySide获取Maya的主窗口
2012-07-02 22:47 1816我们都知道Maya的主窗口保存在mel的全局变量$gMainW ... -
cache from command line
2010-12-15 16:46 925使用命令行来计算cache,这个脚本我已经不记得是什么 ... -
给nDynamics节点赋予随机的碰撞颜色
2010-12-03 17:08 1538在maya中使用nDynamic模块时,场景中的nDyna ... -
maya standalone script
2010-08-05 21:53 1543有时候我希望不需要运行maya也能完成我在maya里面的工作, ...
相关推荐
Pymel是Maya中的Python绑定库,它提供了一种更高效、更面向对象的方式来操作Maya,使得开发者能更容易地进行脚本编写和插件开发。在Maya2023中,Pymel对Python2和Python3的兼容性是至关重要的,因为这直接影响到用户...
**Python库pymel简介** `pymel`是一个针对Autodesk Maya的强大的Python绑定工具,它提供了对Maya API的全面访问,并扩展了Maya内置的Python接口。`pymel`的主要目标是提高生产力,提供更加Pythonic的方式来操作和...
资源来自pypi官网。 资源全名:pymel-1.2.0a8-py2.py3-none-any.whl
PyMEL使Maya的python脚本按应有的方式工作。 Maya的命令模块是将mel命令直接转换为python命令的方法。 结果是非常笨拙和非Python的语法,没有利用python的优势-特别是一种灵活的,面向对象的设计。 通过将其命令...
PyMel是Autodesk Maya中的一个强大的Python绑定库,它提供了对Maya API的高级接口,使得Python编程在Maya环境中变得更加直观和高效。这个文档集专注于PyMel 1.0.7版本,该版本可能包含了一些特定的特性和功能,因此...
《Maya TD工具研发:PyMEL与MEL在实践中的应用》 在3D建模和动画领域,Maya是一款广泛使用的强大软件,而Maya的Technical Director(TD)工具则是提升工作效率的关键。本资源“Maya_TD_tools”正是针对Maya TD工具...
Pymel代表:Eelco Lempsink的Python MP3播放器,是与mp3serverbox(http://www.mp3sb.org)一起使用的完全基于Python的程序。 它本身还不能播放mp3。 它在curses环境(基于文本)中运行。
此外,还可以通过`cmds`模块访问MEL命令,通过`pyMel`库使MEL和Python脚本互相调用。 7. **学习资源**:学习Maya的MEL和Python编程,可以参考Autodesk官方文档、在线教程、社区论坛如CGTalk、StackExchange等。此外...
《PyMaya与PyMel:Python在Maya中的强大应用》 在计算机图形学领域,Autodesk Maya是一款广泛使用的三维建模、动画和渲染软件。它以其强大的功能和灵活的可扩展性深受专业设计师和艺术家的喜爱。而在Maya中,Python...
python库。 资源全名:cnocr-1.2.0-py3-none-any.whl
2. Maya和PyMEL的深入探索:作者可能会指导读者如何使用Python在Maya中进行对象和数据类型的操作,以及如何利用PyMEL进一步简化和增强Maya的编程接口。这可能包括解释MEL和Python数据类型的差异,以及如何利用PyMEL...
Python 游戏编程之旅是一份全面的学习资源,旨在引导初学者和有经验的开发者通过Python语言探索游戏开发的世界。这份文档可能涵盖了多个关键知识点,包括基础语法、游戏框架的使用、图形绘制、物理引擎、AI算法以及...
本书涵盖了与Maya相关的Python的主要内容,解答了有关Maya的多个Python实施问题,包括最强大的PyMEL和漂亮的PyQt用户界面。本书内容包括基础知识和更高级的主题,分为3部分,共12章。第1部分为Python和Maya的基础...
5. **常用模块**:介绍MAYA环境中常用的Python模块,如numpy、pymel等,以及它们在MAYA中的应用。 通过逐步学习这些基础知识,用户将能够逐渐掌握编写MAYA Python脚本的技能。教程中提供的实例和练习将帮助学习者...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:pytntprog-1.2.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
《PyPI官网下载:mau-1.2.0-py2.py3-none-any.whl——深入了解Python库的安装与管理》 在Python的世界里,PyPI(Python Package Index)是全球最大的Python软件仓库,它为开发者提供了一个平台来发布、分享和下载...
《PyPI官网下载的Python库:clipkit-1.2.0-py2.py3-none-any.whl详解》 PyPI(Python Package Index)是Python社区的重要资源库,它为全球Python开发者提供了一个集中发布、查找和安装Python软件包的平台。...
资源分类:Python库 所属语言:Python 资源全名:pyplink-1.3.1-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源来自pypi官网。 资源全名:rjm-1.2.0-py2.py3-none-any.whl
资源分类:Python库 所属语言:Python 资源全名:pymitv-1.4.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059