二、Python的应用
2.1 MEL/Python之间的互通
新的MEL命令——"python”, 它产生字符串并能使之传递到Python中。Python命令可以把命令转换成MEL .所能识别的类型。
python( "import maya cmds')
python( "maya. cmds.Is" )
Python只会返回一种字符串的结果,这是Python目前的限制情况。
Python具有比MEL更复杂的类系统(CLASS),因此不可能完全转化为MEL能识别的类型。
Python命令会自动转换到能处理的方式。对于其他不能处理的,要求以字符串的类型作为返回对象来返回。
下表为二者相互转换的类型结果。


2.2 在Python中调用MEL
在Python编译器中调用MEL,比如使用maya.mel.eval()功能,能更好地转换MEL Python之间命令,因为Python有更多的类支持。必须导入Maya.mel模块来使用这个命令。那就是:
import maya.mel as mm
mm.eval( 'polySphere;")
下表为二者相互转换的结果类型。

2.3 位置参数
位置参数指的是U1元素向其回调脚本传递的参数。例如,浮点滑块控件的回调MEL脚本可以包含#1。在运行此回调时,浮点滑块的值将替换为此位置参数。
Python支持两种在回调中替换来自控件的值的方法。如果回调是一个要对其求值的字符串,Maya就以MEL中的方式进行字符串替换。但是,会使用Python的格式运算符进行替换。格式操作将会获得一个传递来的用于替换的项目字典,其中值的名称为1、2等。例如:
maya. cmds floatSlider( cc="print '%(1)s" )
在执行此字典之前,会先将其应用于字符串。在执行脚本之前,floatSlider 命令使用当前滑块值对此字符串进行格式设置。对于格式操作,用户为其提供格式字符串,UI元素为其提供字典。
Python回调的第2个样式使用编译的函数,其中Maya将值作为参数传递给该函数:
def doPrint( arg ):
print arg
cmds.floatSlider( cc=doPrint)
使用回调函数时,如果回调没有使用正确数量的参数,则会收到错误消息。
def badStuff):
print "bad"
cmds.floatSlider( cc=badStuff )
在移动滑块时会看到以下错误:
# TypeError: badStuff() takes no arguments (1 given)
如果要创建可使用任意数量的参数的回调,请使用变量参数列表:
def genericCallback( *args ):
print( 'args:"+ str( args))
cmds. button( command-genericCallback )
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答为给新片造势,迪士尼这次豁出去了,拿出压箱底的一众经典IP,开启了梦幻联动朱迪和尼克奉命潜入偏远地带卧底调查 截至11月24日......
此前Q2问答环节,邹涛曾将《解限机》首发失利归结于“商业化保守”和“灰产猖獗”,导致预想设计与实际游玩效果偏差大,且表示该游戏......
2025 Google Play年度游戏颁奖:洞察移动游戏新趋势
玩家无需四处收集实体卡,轻点屏幕就能开启惊喜开包之旅,享受收集与对战乐趣库洛游戏的《鸣潮》斩获“最佳持续运营游戏”大奖,这不仅......
说明:文中所有的配图均来源于网络 在人们的常规认知里,游戏引擎领域的两大巨头似乎更倾向于在各自赛道上激烈竞争,然而,只要时间足......
在行政服务优化层面,办法提出压缩国产网络游戏审核周期,在朝阳、海淀等重点区将审批纳入综合窗口;完善版权服务机制,将游戏素材著作......
未毕业先就业、组团入职、扎堆拿offer...这种好事,再多来一打!
众所周知,火星有完善的就业推荐服务图为火星校园招聘会现场对火星同学们来说,金三银四、金九银十并不是找工作的唯一良机火星时代教育......
同学您好!