logo资料库

Maya Python教程.pdf

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
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 maya" hello maya 第一行是告诉用户,你执行了 print "hello maya"这条命令,第二行 hello maya 是执行 这条命令的结果,这里的执行结果就是:hello maya 被打印出来了。命令执行成功。但是 我们发觉 PYTHON 页面里的代码也消失了。如果需要反复执行代码,可以选中需要执行的 代码,然后按小回车,这样,我们可以在执行代码的同时保留页面里的代码。(建议使用第 二种方法执行代码) 接下来,再举个简单的例子来说明输出窗口中的报错信息。随意在命令行中输入一些字母 abcd,然后执行,出现如下信息: abcd # Error: NameEror: name 'abcd' is not defined # 这是个简单的报错信息,说明 abcd 没有被定义,电脑无法识辨。这条命令是无效的。 最后就是#符号,#后的所有的代码(换行前)都被看作注释,不参与运算。例如: # print "hellomaya" : ) 虽然也是 print 命令,但是前面有#,所以无视。 现在我们终于知道如何在 PYTHON 中执行代码,以及辨别代码是否有效。在下面的教程中, 我将会用一些简单的实例来展示 PYTHON 的常用功能! 2.2 PYTHON 常用数据类型和操作符 数据类型就是数据的类型- -U,就是不同类型的数据,数据类型包括:整型,浮点,字符, 列表,元组,字典。 整型(INT)就是整数,比如:1,2,3,21,1000…… 浮点(FLOAT)就是带小数点的数字,比如:1.12,4.5…… 字符(STRING)就是文字,需要用单或双引号,比如:"string",'hello',"12","3.1415", "#_%)" 列表(LIST)就是一系列数据的组合,用中括号,比如:[1,2,3],["tom","jerry"], ["marry",14] 元组(TUPLE)用小括号,和列表的区别是他是不可变的:(1,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" d=str(2011) # 把整数 2011 转换成字符"2011" c+d # 运行结果是"maya2011" 2.2.4.5 max()min()最大值最小值命令 max()和 min()可以用来比较数字的大小: max(1,7) # 结果为 7,两个取大的值 min(3,6) # 结果为 3,两个取小的值 2.3 流程语句 2.3.1 if 语句 if 就是如果的意思,是条件判断语句的关键词,一般可以和 elif 或 else 语句结合使用。接 下来我会用一些简单实用的例子来说明 if 语句的用法: age=17 # 定义 age 等于 17 if age<18: # 假设第一种情况,注意要用冒号
print "you are not adult" # 注意代码缩进 else: # 假设第二种情况,注意冒号 print "you are adult" 这里的运行结果是"you are nod adult",因为假设第一种情况是成立的。这里提一提代码 缩进,缩进就相当于写作文时每小节开头要空 2 字;代码缩进,就是指被缩进的代码是上 一行代码的子代码。 name="tom" # 定义 name 变量 if name=="tom": # 注意这里是“==”,不是“=” print "Hello,tom" 运行结果是打印"Hello,tom"。“==”和“=”的区别是:“=”相当于是个动词,把"tom"这个 字符值传递给变量 name;“==”表示一种状态。if name=="tom"这句话翻译成人类的语 言就是:假设 name 的值等于"tom"这个状态是成立的。(一旦成立就执行后面的语句……) a=3 if a<1: # 假设 1 print "a<1" elif a==1: # 这里出现了假设 2 print "a=1" else: # 如果两种假设都不成立的话……就执行下面的语句 print "a>1" 运行结果是"a>1"。很显然,a 不小于 1,也不等于 1,那就只有执行 else 后面的语句了。 2.3.2 for 循环语句 for 语句的操作对象一般是一个序列,对序列中的每一个成员进行操作,举例: seq=[1,2,3] # 定义一个列表 for i in seq: # for 即将对列表 seq 中的每个成员进行操作,成员我们用 i 来代替(这里成 员变量可以自定义) print i+1 # 操作的内容:给每个成员+1 执行结果如下: 2 3 4 我们给每个成员都+1 了 说到 for 循环语句,我们不得不提一下 range()内置函数。range()可以针对数字提供一个 序列范围:
range(10) 运行结果就是:[0,1,2,3,4,5,6,7,8,9] range(5,10) 运行结果就是:[5,6,7,8,9] range(0,10,2) 运行结果就是:[0,2,4,6,8] 结合 for 语句,我们可以尝试执行以下代码: x=["a","b","c","d","e","f","g","h"] for i in range(0,10,2): # 操作范围:[0,2,4,6,8] print x[i] # i 将会被[0,2,4,6,8]中的每一项依次替代,替代后再执行 print 语句。 运行结果: a c e g 2.4 定义函数 在 PYTHON 中,我们可以自己定义一个函数,定义函数的命令是 def,如下: def MyFirstFunction(): print "this is my first function" 这里我们用 def 命令定义了一个函数名字叫 MyFirstFunction,后面括号里面是用来填写 参数的,如果没参数,就留空。定义函数内的代码需要缩进。如果要执行函数,操作如下: MyFirstFunction() # 这样输入,就可以执行函数,函数内的所有命令都会被执行 执行后,结果会打印"this is my first function",说明定义函数内的代码被正确执行了。 函数还有一种定义方式,就是在括号里加上一些参数: def MySecondFunc(a, b): # 该函数包含了 a 和 b 两个参数 print a+b 然后我们来执行这个函数: MySecondFunc(2, 5) # 把 2 和 5 分别代入 a 和 b,然后执行,函数内的 print 命令会
分享到:
收藏