我们知道在maya mel 中有Matrix,但是在python中怎么实现呢?
默认的python中只能用list保存一组值,当数组来使用。不过由于list中的元素可以是任何对象,因此list中所保存的对象是指针。这样为了保存一个简单[1,2,3],就需要三个指针和三个整数对象。这样的数值运算无疑是对内存的一种浪费。此外python本身还提供了一个array模块,array对象和list的不同,它直接保存数值,类似于C中的一维数组,但是由于它不支持多维数组,也没有各种运算函数,因为不适合做数值的运算。
当然我们可以用强大的list代替。如:
1 2 3 4 5 6 7 | rows=20 cols=10 matrix=[] for i in xrange(0,rows): matrix.append([]) for j in xrange(0.cols): matrix[i].append(0) |
可是这样的效率、内存都是不小的负担,Numpy的出现弥补了这些缺陷,numpy提供俩种基本的对象:ndarray(存储单一数据的多维数组),ufunc(对数组进行处理的函数)
numpy的安装也是非常的方便,目前numpy的官方win没有64位的下载。可以在这里下载对应的python版本 http://www.lfd.uci.edu/~gohlke/pythonlibs/
安装后可以在python shell 直接 improt numpy。 但是如何在maya python使用呢?很简单,只需要将安装的路径的文件拷贝到maya路径里。
C:\Python26\Lib\site-packages 中的 numpy 复制到
C:\Program Files\Autodesk\Maya2012\Python\lib\site-packages
然后打开maya 执行
1 2 3 | import numpy as nmp a=nmp.array([1,2,3,4]) b=nmp.array([5,6,7,8]) |
你也可以进行数值的运算:
1 2 3 4 | nmp.sin(3) nmp.arctan(2) nmp.sinc(7.352) nmp.random.randint(-1,20,1) |
注意:maya 2012 的python目前只支持2.6
Comments (0)