ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:508.37KB ,
资源ID:9859369      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9859369.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Maya Python 简易教程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Maya Python 简易教程.docx

1、Maya Python 简易教程Maya Python 简易教程MayaPython第一篇 - 介绍大家好,这是一个简易的MAYA PYTHON学习教程。简易教程的目的是可以让更多的人快速掌握这些知识,而不是拘泥于理论的研究。最好的学习方式无疑是实践,我会提供简单实用的代码来帮助学习者了解脚本的实际运用。如果你是初学MAYA PYTHON,特别是非程序员的初学者,不妨先看一下下面的内容,以帮助你对MAYA PYTHON有一个大致的了解。为什么要学习简易教程?简易教程的特点就是尽可能做到简单,容易理解。我的文档会涉及到尽可能多的内容,但不会说的很深。因为很多复杂的应用往往是许多简单部分的组合,学

2、会如何组合是更重要的事情:)另外,任何学习都需要一个很好的getting started,好的入门,往往决定今后深入学习的质量。万事开头难,但是一个好的开始,就是成功的一半。希望我的简易教程可以带大家进入MAYA PYTHON的大门。这个文档的适用人群是哪些?具有一定MAYA操作经验,但无编写脚本经验的用户具有一定MEL基础的用户始终徘徊在MAYA脚本门口,但找不到切入点的初级用户什么是MAYA PYTHON?简单来说,MAYA PYTHON就是用PYTHON语言包裹起来的MEL命令。什么是PYTHON?PYTHON是一门简单易学,但功能又非常强大的编程语言。(我会在下一篇中提供简单实用的PY

3、THON入门教程)为什么要学习MAYA PYTHON?大幅度地提高工作效率挖掘MAYA隐藏功能,更全面地掌握MAYA快速开发脚本插件如何学习MAYA PYTHON?最好的方法是学习别人写的源代码。而最好的代码资源其实就在你的电脑里:你的MAYA帮助文档。如果你有良好的英语阅读能力,这样你可以充分理解帮助文档里所说的内容。但是如果英语能力不是很理想的朋友也千万不要着急,我的文档会帮助你学习MAYA PYTHON。另外,MAYA的帮助文档中的脚本部分对每条命令的参数以及每个节点的属性解释的都非常详细,个人认为,学会使用MAYA的帮助文档是学习PYTHON脚本的制胜法宝。-第一篇完-MayaPyth

4、on第二篇 - PYTHON(点击标题阅读全文)如果你是PYTHON高手,可以跳过这篇:)因为节下来我要讲述PYTHON的基本应用。由于我的PYTHON教程主要是针对MAYA的应用,所以PYTHON基本应用的介绍主要会涵盖MAYA环境中经常会使用到的PYTHON功能。学习过程中,尽量运用已学到的知识自己也试着编写一些代码,发挥主观能动性。这样学习,效果会十分显著。该篇主要含盖以下内容:2.1 脚本编辑器(Script Editor)2.2 PYTHON常用数据类型和操作符2.3 流程语句2.4 定义函数2.5 常用模块2.1 脚本编辑器(Script Editor)MAYA界面中有2处地方可以

5、编辑PYTHON脚本,一处是左下角的快速命令行,这个命令行可以在PYTHON和MEL间快速切换,如下图:一处是右下角的Script Editor按钮,点开窗口如下:我们的PYTHON代码就是写在PYTHON选项卡中,如果PYTHON脚本在MEL选项卡中执行将会出错,vice versa。我们在MAYA中执行的操作会通过MEL语言打印在上面灰色区域,也就是输出区域。这些MEL语言都可以非常快地转化成PYTHON代码。这个数据输出区域同时也会打印PYTOHN脚本的执行结果以及出错信息。现在我们来执行一条简单的PYTHON语句,来一个初体验:PYTHON页面中输入print hello maya,然

6、后按数字键盘上的小回车(注意:小回车是执行代码,大回车是换行)。我们看到输出区域的打印结果如下:print hello! My name is Hu Yongbinhello! My name is Hu Yongbin第一行是告诉用户,你执行了print hello! My name is Hu Yongbin这条命令,第二行hello! My name is Hu Yongbin是执行这条命令的结果,这里的执行结果就是:hello! My name is Hu Yongbin被打印出来了。命令执行成功。但是我们发觉PYTHON页面里的代码也消失了。如果需要反复执行代码,可以选中需要执行的代

7、码,然后按小回车,这样,我们可以在执行代码的同时保留页面里的代码。(建议使用第二种方法执行代码)接下来,再举个简单的例子来说明输出窗口中的报错信息。随意在命令行中输入一些字母HuYongbin,然后执行,出现如下信息:HuYongbin# Error: NameEror: name HuYongbin is not defined #这是个简单的报错信息,说明HuYongbin没有被定义,电脑无法识辨。这条命令是无效的。最后就是#符号,#后的所有的代码(换行前)都被看作注释,不参与运算。例如:# print hellomaya : )虽然也是print命令,但是前面有#,所以无视。现在我们终于

8、知道如何在PYTHON中执行代码,以及辨别代码是否有效。在下面的教程中,我将会用一些简单的实例来展示PYTHON的常用功能!2.2 PYTHON常用数据类型和操作符数据类型就是数据的类型- -U,就是不同类型的数据,数据类型包括:整型,浮点,字符,列表,元组,字典。整型(INT)就是整数,比如:1,3,21,1000浮点(FLOAT)就是带小数点的数字,比如:1.12,4.5字符(STRING)就是文字,需要用单或双引号,比如:HuYongbin,12,3.1415,#_%)列表(LIST)就是一系列数据的组合,用中括号,比如:2,3,tom,jerry,marry,14元组(TUPLE)用小

9、括号,和列表的区别是他是不可变的:(2,3),(tom,jerry),(marry,14)操作符,形象的说就是用来操作数据的工具,包括数学操作符,比较操作符,逻辑操作符。数学操作符:+(加) -(减) *(乘) /(除)%(取除法余数)*(乘方)比较操作符:(小于)(大于)=(大于等于)=(等于)!=(不等于)逻辑操作符:and or not下面来做一些热身,在实际运用中体会不同数据类型之间的配合!2.2.1 整数a=1 # 定义变量a, 把整数1赋予给ab=3 # 定义变量b, 把整数3赋予给ba+b运行结果为3,其他整数小数的加减乘除这里就不熬述了2.2.2 字符name1=tom # 定

10、义变量name1,把字符tom赋予给name1,注意双引号name2=jerry # 定义变量name2,把字符jerry赋予给name2,注意这里是单引号,都可以表示name1+name2运行结果为tomjerry,这里说明字符之间可以相加。但是不同数据类型之间不可以相加,变量a和变量name1就不可以相加,因为一个是整数,一个是字符。字符单引号和双引号的不同用法我会再之后的实例中写出。2.2.3 列表list1=1,2,3 # 定义列表list1,包含3个整型数字list2=cube,sphere,plane #定义列表list2,包含3个字符list=list1+list2 # 把lis

11、t1和list2的相加结果赋予新的变量listprint list运行结果为1,2,3,cube,sphere,plane,可见,包含不同数据类型的列表之间可以相加我们可以对列表中的数据进行访问操作。执行以下命令:list0+list2运行结果为4,因为list0指的是list列表中的第一项,list2指的是list列表中的第3项。(注意,PYTHON数数是用0开始的),依次类推,list4指的就是“sphere”。list3*list1运行结果为cubecube,其效果等同于cube*2,可见,字符和整数间,可以做乘法运算。同样,如果c*5的运算结果就是ccccc。user1=tom,cat

12、user2=jerry,mouseuserInfo=user1,user2 # 定义列表userInfo,该列表内又嵌套了2个列表print userInfo # 打印userInfo运行结果为 tom,cat,jerry,mouse ,我们看到大列表中包含了2个小列表我们同样可以访问嵌套列表:userInfo0表示userInfo中的第一个列表user1,userInfo01表示user1中的第2个值cat。同样,如果要访问jerry,你可以通过userInfo10来访问。我们还可以对列表里的内容进行添加或移除:userInfo.append(jack,male)这样我们再次打印userIn

13、fo的时候,得到的结果应该为 tom,cat,jerry,mouse,jack,male userInfo.remove(tom,cat)这样我们再次打印userInfo的时候,得到的结果应该为 jerry,mouse,jack,male 列表和字符还可以访问其区间的数据:a=1,2,3,4,5,6,7,8 # 定义列表ab=abcdefg # 定义字符ba3:5 # 返回的值是4,5,6,是列表a的第4位到第6位b1:4 # 返回的值是bcdea3: # 返回的值4,5,6,7,8,从第4位一直到结尾b:-4 # 返回的值是abc,从第1位到倒数第4位2.2.4 常用工具接下来,我给大家介绍

14、一些不同数据类型中的常用工具!2.2.4.1 +=操作符号a=1a+=1 # 等同于a=a+1运行结果为2,因为a=1,a+1等于2,然后把2这个数字赋予给原来的a,这样,2就替换掉原来的1了,a就等于22.2.4.2 pow()乘方命令x=pow(4,3) # 就是4的3次方y=pow(4,-2) # 也就开根号2.2.4.3 len()获取长度命令len()命令能够返回字符和列表的长度,如下:len(tommy) # 返回结果是5len(1,2,6) # 返回结果是3len(1,2,7,lock,jack,bach,davinci,vivaldi) # 返回结果为3,因为里面包含3个列表2

15、.2.4.4 int()str()数据类型转换命令int()的str()是字符和整数转换的命令,非常实用:a=256b=int(256) # 把字符256转换成整数256a-b # 运行结果为0c=mayad=str(2011) # 把整数2011转换成字符2011c+d # 运行结果是maya20112.2.4.5 max()min()最大值最小值命令max()和min()可以用来比较数字的大小:max(1,7) # 结果为7,两个取大的值min(3,6) # 结果为3,两个取小的值2.3 流程语句2.3.1 if语句if就是如果的意思,是条件判断语句的关键词,一般可以和elif或else语

16、句结合使用。接下来我会用一些简单实用的例子来说明if语句的用法:age=17 # 定义age等于17if age18: # 假设第一种情况,注意要用冒号print you are not adult # 注意代码缩进else: # 假设第二种情况,注意冒号print you are adult这里的运行结果是you are nod adult,因为假设第一种情况是成立的。这里提一提代码缩进,缩进就相当于写作文时每小节开头要空2字;代码缩进,就是指被缩进的代码是上一行代码的子代码。name=tom # 定义name变量if name=tom: # 注意这里是“=”,不是“=”print Hell

17、o,tom运行结果是打印Hello,tom。“=”和“=”的区别是:“=”相当于是个动词,把tom这个字符值传递给变量name;“=”表示一种状态。if name=tom这句话翻译成人类的语言就是:假设name的值等于tom这个状态是成立的。(一旦成立就执行后面的语句)a=3if a1: # 假设1print a1运行结果是a1。很显然,a不小于1,也不等于1,那就只有执行else后面的语句了。2.3.2 for循环语句for语句的操作对象一般是一个序列,对序列中的每一个成员进行操作,举例:seq=1,2,3 # 定义一个列表for i in seq: # for即将对列表seq中的每个成员进

18、行操作,成员我们用i来代替(这里成员变量可以自定义)print i+1 # 操作的内容:给每个成员+1执行结果如下:234我们给每个成员都+1了说到for循环语句,我们不得不提一下range()内置函数。range()可以针对数字提供一个序列范围:range(10)运行结果就是:0,1,2,3,4,5,6,7,8,9range(5,10)运行结果就是:5,6,7,8,9range(0,10,2)运行结果就是:0,2,4,6,8结合for语句,我们可以尝试执行以下代码:x=a,b,c,d,e,f,g,hfor i in range(0,10,2): # 操作范围:0,2,4,6,8print x

19、i # i 将会被0,2,4,6,8中的每一项依次替代,替代后再执行print语句。运行结果:aceg2.4 定义函数在PYTHON中,我们可以自己定义一个函数,定义函数的命令是def,如下:def MyFirstFunction():print this is my first function这里我们用def命令定义了一个函数名字叫MyFirstFunction,后面括号里面是用来填写参数的,如果没参数,就留空。定义函数内的代码需要缩进。如果要执行函数,操作如下:MyFirstFunction() # 这样输入,就可以执行函数,函数内的所有命令都会被执行执行后,结果会打印this is m

20、y first function,说明定义函数内的代码被正确执行了。函数还有一种定义方式,就是在括号里加上一些参数:def MySecondFunc(a, b): # 该函数包含了a和b两个参数print a+b然后我们来执行这个函数:MySecondFunc(2, 5) # 把2和5分别代入a和b,然后执行,函数内的print命令会被执行。运行结果为7MySecondFunc(first,second)运行结果为firstsecond,两个字符串被相加了。函数还可以签套函数,如下:def func1():a=1print adef func2():b=2print bfunc1()定义好fu

21、nc1和func2后,执行func2(),结果为:21因为func2先执行打印b,在执行func1,func1会打印a2.5 常用模块简单说,模块就是一个打包的命令集合,以文件的形式存在。模块的使用方法是“导入”。我们直接针对MAYA PYTHON的模块来具个简单的例子吧。2.5.1 maya模块import maya.cmds # 导入maya模块中的cmds命令集这样,我们就在MAYA中导入了cmds命令集,里面包含了所有可以在PYTHON环境中使用的MAYA命令。现在我们来初试这个cmds命令集import maya.cmds # 导入模块maya.cmds.polyCube() # 调

22、用模块中的polyCube()命令。发觉场景里生成了一个方块,命令执行成功。但是这样打命令太长了,我们在导入maya.cmds时加上:import maya.cmds as mc这样maya.cmds就作为mc导入了,我们就不用再打长长的maya.cmds了。我们再创建一个Cube:mc.polyCube()短很多了吧。接下来介绍几个常用的模块:import maya.mel # 导入这个,可以调用所有的mel命令2.5.2 os模块import osos模块也是用的比较多的。我经常会使用os.system(),括号中间可以写一些DOS命令:os.system(md c:MyFolder)这样

23、就可以用PYTHON来调用DOS命令了。os.listdir(C:)listdir可以以列表的形式列出路径中的所有的文件和文件夹(注意:是列表的形式,像这样:a.py, AUTOEXEC.BAT, boot.ini)。接下来再介绍一个re模块,我经常用它来做字符的切割工具:2.5.3 re模块import rea=Hello_Worldre.split(_,a) # split就是切割工具,有2个参数 ,_就是切割的根据,a是我们定义的变量返回结果是一个列表,Hello,World,还有个是替换命令re.sub():a=my4name4is4HuYongbinre.sub(4,_,a) # 就

24、是说把4替换成_输出结果:my_name_is_HuYongbin2.5.4 time模块import time # 时间模块time.ctime()执行结果:# Result : Fri Jun 11 22:52:16 2010 # 。也就是当前的时间。OK,PYTHON简易教程就写到这里,简易教程的内容肯定不是很完整,这里只是罗列出一些实战中比较常用的功能。(也是我比较常用的)初学者可以抛弃理论,先玩起来再说。实践太重要了。在下一篇中,我们将正式进入MAYA PYTHON实际应用。-第二篇完-MayaPython第三篇 - 实战演习(点击标题阅读全文)在上一篇中,我主要介绍PYTHON的一

25、些基础知识以及常用语法。在这一篇中,我们要结合MAYA中的命令来编写一些基本PYTHON脚本。其实在上一篇接近尾声的时候,我已经举例了如何导入模块的方法,这是真正使用PYTHON在MAYA中编写脚本的第一步。import maya.cmds as mc # 这里应该不用解释了吧,有疑问可以看第二篇的结尾“模块”部分。:)这里顺便提一提,as mc可以用任何名词来代替,as cc也可以。这样,如果要调用polyCube()命令的话,就必须有cc.polyCube()作为前缀。基于笔者的个人习惯,我们这里还是用mc3.1 MEL命令和PYTHON命令之间的转化我们导入MAYA的模块,现在要运用模块

26、中的命令编写一些东西了。但是大家可能会很疑惑,写什么呢?我们总不见得整天在MAYA里做小学数学题吧- -现在我们需要学习一些MAYA的实用命令(比如上一篇提到的polyCube()创建一个立方体),学习实用命令的最好的途径是通过执行手动操作命令来获取MEL命令语句,然后把MEL命令转换成PYTHON命令。比如我们在MAYA3D视图中用传统的方法建立一个polygon的立方体,我会在脚本编辑器的输出部分得到以下输出信息:polyCube -ch on -o on -w 9.9 -h 7.1 -d 10 -cuv 4; /注意大小写这是一句MEL命令,描述了如何创建一个Polycube。MEL命令

27、的结构十分简单,开头的polyCube就是这句MEL命令的主命令,后面的部分全部是参数。其中,带“-”的,是参数名称;没有“-”的,是该参数的值。一般都是一个带“-”号的参数名称,后面再跟一个不带“-”的值。有时后面会不跟值,这说明这个参数不需要值,它只是一个开关,带这个参数,说明这个开关开着,不带说明关着。现在,我们就把这句MEL命令转换成PYTHON可以执行的命令(我们暂时不去理会具体参数的作用,只是学习一个转换过程):mc.polyCube(ch=1, o=1, w=9.9, h=7.1, d=10, cuv=4)执行代码后同样得到了一个立方体。我们对比一下,可以发现PYTHON可以完全

28、把MEL的命令转化过来,只是格式不一样。格式不同体现在一下几点:有mc前缀(MEL没有前缀)所有的参数信息需要放在主命令后的括号中(MEL没有括号)参数名和它的值之间用等号隔开(MEL是用空格)每个参数之间用逗号隔开(MEL用空格)有些参数的值是1,而ME是on关于最后一条,其实MEL的on也可以写成1,原因是,在PYTHON(包括其他程序语言),1这个值往往表示True,on等肯定意义的值,而0则表示False, off等否定意义的值。这样的值叫做布尔值(boolean),这种数据类型只有2种答案要么1,要么0;要么真,要么假;要么ON,要么OFF。例子中的1就是on,说明这个参数是可用的。

29、关于布尔值(其实你在MAYA中也可以把它理解成一个开关),以后还会讲到它的用法。节下来我们举一反三,熟练掌握MAYA命令转换的方法。拖一个球出来,得到以下命令:polySphere -ch on -o on -r 3;转成PYTHON代码,就是:mc.polySphere(ch=1, o=1, r=3)还有一中转化形式:我们如果在场景中选择了pCube1这个物体,会得到以下MEL命令:select -r pCube1;这里我们就不能写成mc.select(r=pCube1)了,因为现在这个命令基本上属于一个动作,一个动词,既然是动词,就必须有一个动作施与的对象,这里这个对象就是pCube1,而r这个参数其实replace的简写。注意这个r不是布尔值,它没有任何数据类型,只是一个开关而已。在MEL中,这个开关是不需要值的,但在PYTHON中,需要像布尔值那样给一个1的值,表示这个开关开启:mc.select(pCube1, r=1) # 注意:PYTHON中,选择对象放在最前面。# 注意名字的数据类型是字符,所以必须有双引号如果要同时选择pCube1和pSphere1的话,需要用到列表,如下:mc.select(pCube1,pSphere) # 注意如果是选择集合的话,要用列表来表示# r参数在这里我就不加了,但是不影响执行,体会下“可选”的作用3.2 读取场景中信息

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1