首页 > 专栏

python运用maya_Maya中Python脚本的使用(四)

更新时间:2023-12-09 21:24:50 阅读: 评论:0

2023年12月9日发(作者:助人为乐的优美句子)

-

python运用maya_Maya中Python脚本的使用(四)

python运用maya_Maya中Python脚本的使用(四)

四、编写Python脚本的提示与技巧

4.1 内置Python库

Python具有许多有用的内置库和数据结构。大多数情况下,可以使用一个现有的库来完成常规的编程任务,这样不必与MEL脚本-样创建自

定义工具。

4.2使用Python类的自定义UI

其中一个方便的Python函数是l,该函数可用于将附加信息传递到回调函数。

例如,下面的类创建的窗口具有多个在单击时会输出数字的按钮。

from functools import partial

import maya. cmds as cmds

class ButtonWin(object):

def__ init (lf):

lf. win = cmds. window()

= cmds. columnL ayout(parent=lf. win)

for x in range( 10):

cmds. button(label= "Click Here %d"%x, parent=,

command=partial(lf.

report,x))

cmds. showWindow()

def report(lf, buttonIndex, value):

print "button %d got %s "%(buttonIndex, value)

f= ButtonWin()

4.3 在Maya中调试Python脚本

使用Python脚本的一个优点是可以在开发过程中使用调试器。这在解决脚本问题时可以节省大量时间。

4.3.1 使用PDB

Python在PDB模块中附带一个内置的调试器。PDB的文本界面适用于快速调试会话。如果在从Script Editor (脚本编辑器)调用的脚本中使

用PDB,则每当PDB需要输入时都会出现输入对话框。使用PDB与导入PDB并按如下方式设定断点一样简单:

import pdb

trace()

执行达到第2行时,将显示输入对话框,您可以使用标准命令来继续、跳过、输出值等。

4.3.2 使用外部调试器

对于复杂调试任务,可能更易于使用外部图形调试器。存在多个免费的和商业的IDE,例如: ;

●Wing IDE

●Winpdb●Eclip

可以先在Maya中导入一个工具模块来使用外部调试器,导入该模块会打开到IDE的通信套接字。IDE连接到Maya后,即可打开脚本文件来

设定断点、检查变量值等。每个IDE都将具有其自己所需的工作流。

4.4将Python函数注册为MEL程序

可以使用createMelWrapper函数将Python函数注册为MEL程序。然后,在调用MEL程序时,会调用Python函数,从而传递收到的任何

参数并返回函数的结果。

路径为:

C:Program FilesAutodeskMaya2014PythonNliblsite-packagesmayamel

或者,在脚本编辑器中执行以下命令:

import

help(MelWrapper)

使用该函数的优点如下。

通过将Python函数注册为MEL程序,您不需要获取MEL脚本的源代码(如果程序和脚本共享相同的名称)。相比之下,如果使用的是

Python,则必须先显式导入脚本,然后才能访问其包含的函数或类。使用该包裹器函数可以使Maya即时获得源代码,且不必始终加载每个

脚本。

Maya中的某些属性只接受MEL程序。例如,在"ast" (以前称为container )节点中,Context Properties (上下文特性)区域下的Rmb

Command (鼠标右键命令)属性只接受MEL程序。

示例:

以下示例说明如何使用createMelWrapper函数将Python函数注册为MEL程序,以便使用"ast”(以前称为container )节点中的Rmb

Command (鼠标右键命令)属性。

01 将以下脚本另存为,并保存到Maya2014/scripts目录中。

import as cmds

import as mel

def exCoNotes(node):

if(pe(node)== container):

objCont = node

el:

objCont = ner(q=True, findContainer=node)

exec(cmds. gettr(objCont+ '.notes”

pyfunction = 'main("+node+”"'+objCont+ "

exec(pyfunction)

cmds. lect(node, r= True)

def tThisContainerCurrent(node):

if( Type(node)== container'):

objCont = node

el:objCont = cmds. container(q= True, findContainer=node)

cmds. container(objCont, e=True, c=True)

cmds. lect(node, r= True)

def rmbMyContainerScript():

return ("Execute Container Notes, "exCoNotes ,

"Set This Container Current", "tThisContainerCurrent)

02 在Script Editor (脚本编辑器)中,从Python选项卡执行以下脚本。该操作将创建所需的MEL包裹器脚本。

from rmbScript import*

import as cmds

import / as mel

MelWrapper(e= string[]')

mel. createMelWrapper(exCoNotes)

MelWrapper(tThisContainerCurrent)

03 创建一个对象。

04 选择Asts>Advanced Asts>Create(资源>高级资源>创建),然后将rmbMyContainerScript添加到资源的Rmb Command (鼠标

右键命令)属性。

注意:还可以借助变换资源使用该步骤;但是,节点类型将为dagContainer。

05 将类似如下的脚本添加到ast (资源)节点的Notes (注释)部分。

def main(node, container):

print node

print container

06 在Script Editor (脚本编辑器)的MEL选项卡中,输入以下脚本。

rehash;

07 在对象上单击鼠标右键(),并从标记菜单中选择Custom (自定义)。您现在可以查看自定义鼠标右键菜单。

4.5 为已设置动画的曲线创建关键帧

可以使用以下Python示例脚本来创建已设置动画的曲线并设定其关键帧。

import maya. OpenMaya as om

import maya. OpenMayaAnim as oma

def addkeys(plugName, times, values, changeCache):

# Get the plug to be animated.

/ = tionList()

(plugName)

plug = ()

g(0, plug)# Create the animCurve.

animfn = oma MFnAnimCurve()

animCurve = (plug, mCurve kAnimCurveTL)

# Copy the times into an MTimeArray and the values into an MDoubleArray.

timeArray = rray()

valueArray = eArray()

for iin range(len(imesl):

timeArray. append((timesl[i, ())

valueArray. append(values[i])

# Add the keys to the animCurve.

animfn. addKeys(

timeArray,

valueArray,

ntGlobal,

ntGlobal,

Fal,

changeCache

)

以上示例代码会将关键帧动画添加到通道(即栓)。如果不需要具有撤消更改的能力,则可以按以下方式进行调用。

addkeys(', [1.0, 3.0, 5.0], [0.6, 1.2, 2.4, None)

但是,如果需要具有撤消更改的能力,那么请按以下方式进行调用。

changeCache = urveChange()

addkeys('; [1.0, 3.0, 5.0], [0.6, 1.2, 2.4], changeCache)

然后执行以下脚本以撤消更改。

changeCache,undolt()

注意:为简便起见,该函数假定由plugName指定的栓当前未设置动画。

-

python运用maya_Maya中Python脚本的使用(四)

本文发布于:2023-12-09 21:24:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1702128290241130.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:python运用maya_Maya中Python脚本的使用(四).doc

本文 PDF 下载地址:python运用maya_Maya中Python脚本的使用(四).pdf

标签:脚本   使用   函数   调试器   程序
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|