胡泳滨MayaPython简易教程,如需转载,请标明出处地址:
http://huyongbin.blogbus.com/c3363976/
谢谢配合!
MayaPython第一篇 - 介绍
大家好,这是一个简易的MAYA PYTHON学习教程。简易教程的目的是可以让更多的人快速掌握这些知识,而不是拘泥于理论的研究。最好的学习方式无疑是实践,我会提供简单实用的代码来帮助学习者了解脚本的实际运用。如果你是初学MAYA PYTHON,特别是非程序员的初学者,不妨先看一下下面的内容,以帮助你对MAYA PYTHON有一个大致的了解。
为什么要学习简易教程?
简易教程的特点就是尽可能做到简单,容易理解。我的文档会涉及到尽可能多的内容,但不会说的很深。因为很多复杂的应用往往是许多简单部分的组合,学会如何组合是更重要的事情:)另外,任何学习都需要一个很好的getting started,好的入门,往往决定今后深入学习的质量。万事开头难,但是一个好的开始,就是成功的一半。希望我的简易教程可以带大家进入MAYA PYTHON的大门。
这个文档的适用人群是哪些?
·具有一定MAYA操作经验,但无编写脚本经验的用户
·具有一定MEL基础的用户
·始终徘徊在MAYA脚本门口,但找不到切入点的初级用户
什么是MAYA PYTHON?
简单来说,MAYA PYTHON就是用PYTHON语言包裹起来的MEL命令。
什么是PYTHON?
PYTHON是一门简单易学,但功能又非常强大的编程语言。(我会在下一篇中提供简单实用的PYTHON入门教程)
为什么要学习MAYA PYTHON?
大幅度地提高工作效率
挖掘MAYA隐藏功能,更全面地掌握MAYA
快速开发脚本插件
如何学习MAYA PYTHON?
最好的方法是学习别人写的源代码。而最好的代码资源其实就在你的电脑里:你的MAYA帮助文档。如果你有良好的英语阅读能力,这样你可以充分理解帮助文档里所说的内容。但是如果英语能力不是很理想的朋友也千万不要着急,我的文档会帮助你学习MAYA PYTHON。另外,MAYA的帮助文档中的脚本部分对每条命令的参数以及每个节点的属性解释的都非常详细,个人认为,学会使用MAYA的帮助文档是学习PYTHON脚本的制胜法宝。
---第一篇完---
MayaPython第二篇 - 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处地方可以编辑PYTHON脚本,一处是左下角的快速命令行,这个命令行可以在PYTHON和MEL间快速切换,如下图:
一处是右下角的Script Editor按钮,点开窗口如下:
我们的PYTHON代码就是写在PYTHON选项卡中,如果PYTHON脚本在MEL选项卡中执行将会出错,vice versa。
我们在MAYA中执行的操作会通过MEL语言打印在上面灰色区域,也就是输出区域。这些MEL语言都可以非常快地转化成PYTHON代码。这个数据输出区域同时也会打印PYTOHN脚本的执行结果以及出错信息。
现在我们来执行一条简单的PYTHON语句,来一个初体验:PYTHON页面中输入print "hello maya",然后按数字键盘上的小回车(注意:小回车是执行代码,大回车是换行)。我们看到输出区域的打印结果如下:
print "hello! My name is Hu Yongbin"
hello! 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页面里的代码也消失了。如果需要反复执行代码,可以选中需要执行的代码,然后按小回车,这样,我们可以在执行代码的同时保留页面里的代码。(建议使用第二种方法执行代码)
接下来,再举个简单的例子来说明输出窗口中的报错信息。随意在命令行中输入一些字母HuYongbin,然后执行,出现如下信息:
HuYongbin
# Error: NameEror: name 'HuYongbin' is not defined #
这是个简单的报错信息,说明HuYongbin没有被定义,电脑无法识辨。这条命令是无效的。
最后就是#符号,#后的所有的代码(换行前)都被看作注释,不参与运算。例如:
# print "hellomaya" : )
虽然也是print命令,但是前面有#,所以无视。
现在我们终于知道如何在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)用小括号,和列表的区别是他是不可变的:(2,3),("tom","jerry"),("marry",14)
操作符,形象的说就是用来操作数据的工具,包括数学操作符,比较操作符,逻辑操作符。
数学操作符:+(加) -(减) *(乘) /(除)%(取除法余数)**(乘方)
比较操作符:(大于)>=(大于等于)==(等于)!=(不等于)
逻辑操作符:and or not
下面来做一些热身,在实际运用中体会不同数据类型之间的配合!
2.2.1 整数
a=1 # 定义变量a, 把整数1赋予给a
b=3 # 定义变量b, 把整数3赋予给b
a+b
运行结果为3,其他整数小数的加减乘除这里就不熬述了~
2.2.2 字符
name1="tom" # 定义变量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 # 把list1和list2的相加结果赋予新的变量list
print list
运行结果为[1,2,3,"cube","sphere","plane"],可见,包含不同数据类型的列表之间可以相加
我们可以对列表中的数据进行访问操作。执行以下命令:
list[0]+list[2]
运行结果为4,因为list[0]指的是list列表中的第一项,list[2]指的是list列表中的第3项。(注意,PYTHON数数是用0开始的),依次类推,list[4]指的就是“sphere”。
list[3]*list[1]
运行结果为"cubecube",其效果等同于"cube"*2,可见,字符和整数间,可以做乘法运算。同样,如果"c"*5的运算结果就是"ccccc"。
user1=["tom","cat"]
user2=["jerry","mouse"]
userInfo=[user1,user2] # 定义列表userInfo,该列表内又嵌套了2个列表
print userInfo # 打印userInfo
运行结果为[ ["tom","cat"],["jerry","mouse"] ],我们看到大列表中包含了2个小列表
我们同样可以访问嵌套列表:
userInfo[0]表示userInfo中的第一个列表user1,userInfo[0][1]表示user1中的第2个值"cat"。同样,如果要访问"jerry",你可以通过userInfo[1][0]来访问。
我们还可以对列表里的内容进行添加或移除:
userInfo.append(["jack","male"])
这样我们再次打印userInfo的时候,得到的结果应该为[ ["tom","cat"],["jerry","mouse"],["jack","male"] ]
userInfo.remove(["tom","cat"])
这样我们再次打印userInfo的时候,得到的结果应该为[ ["jerry","mouse"],["jack","male"] ]
列表和字符还可以访问其区间的数据:
a=[1,2,3,4,5,6,7,8] # 定义列表a
b="abcdefg" # 定义字符b
a[3:5] # 返回的值是[4,5,6],是列表a的第4位到第6位
b[1:4] # 返回的值是"bcde"
a[3:] # 返回的值[4,5,6,7,8],从第4位一直到结尾
b[:-4] # 返回的值是"abc",从第1位到倒数第4位
2.2.4 常用工具
接下来,我给大家介绍一些不同数据类型中的常用工具!
2.2.4.1 +=操作符号
a=1
a+=1 # 等同于a=a+1
运行结果为2,因为a=1,a+1等于2,然后把2这个数字赋予给原来的a,这样,2就替换掉原来的1了,a就等于2
2.2.4.2 pow()乘方命令
x=pow(4,3) # 就是4的3次方
y=pow(4,-2) # 也就开根号
2.2.4.3 len()获取长度命令
len()命令能够返回字符和列表的长度,如下:
len("tommy") # 返回结果是5
len([1,2,6]) # 返回结果是3
len([[1,2,7],["lock","jack"],["bach","davinci","vivaldi"]]) # 返回结果为3,因为里面包含3个列表
2.2.4.4 int()str()数据类型转换命令
int()的str()是字符和整数转换的命令,非常实用:
a=256
b=int("256") # 把字符"256"转换成整数256
a-b # 运行结果为0
c="maya"