maya mel基础教程
阵列
你可以声明一个int, float, string或vector类型的阵列。阵列的第一个序号为0
string $array[3] = {"first\n", "second\n", "third\n"};
print($array[0]); // 显示 "first\n"
print($array[1]); // 显示 "second\n"
print($array[2]); // 显示 "third\n"
阵列尺寸可以自动地增加。
int $scores[]; // 声明为一个0元素阵列
$scores[150] = 3; // 现在是151元素阵列
$scores[200] = 5; // 现在是201元素阵列 但最好不要声明过大的没用的阵列,因为它要占内存:
int $bigboy[];
$bigboy[123456789] = 2; // 危险
要除去一个阵列的所有元素可使用clear**能。要查看阵列的尺寸可使用size。
string $hats[3] = {"blue", "red", "black"};
print("there were " + size($hats) + " hats.\n");
clear($hats);
print("but now there are " + size($hats) + ".\n");
以上指令的输出是:
there were 3 hats.
but now there are 0.
矩阵
可以把一个矩阵想象为一个浮点阵列的阵列,或是一个浮点数据的二维阵列。矩阵产生后,它的尺寸不能改变。
企图寻址一个矩阵的不存在的元素将会出现错误。在产生矩阵时必须定义它的尺寸。
matrix $a1[][] = <<1; 4>>; // 错误: 没有说明尺寸
matrix $a2[][]; // 错误: 没有说明尺寸
matrix $a3[2][1]; // 有效: 产生 <<0; 0>>;
$a3[0][1] = 7; // 错误: 元素不存在
$a3[1][0] = 9; // 有效
声明而未标注值的矩阵,其所有元素都为0。
matrix $a4[2][4] = <<-3.4, 6, 201, 0.7; 4, 2, 9.3, 1001>>;
如果矩阵表示一个二维阵列,则第一个索引表示列;地二个索引表示行:
matrix $a4[2][4]column 0column 1column 2column 3
row 0-3.462010.7row 1429.31001
如果你把矩阵设想为一个身列的阵列,则第一个索引表示阵列,第二个索引该阵列里的索引:
matrix $a4[2][4]index 0index 1index 2index 3
float array 0-3.462010.7float array 1429.31001
物体属性
属性是场景中的物体的特征或参数。在maya中可以用许多方法建立属性-属性编辑器、mel程序、工具盒工具或表达式。
你可以设立属性去控制在工作空间中看到的虚拟的事情。
如,一个nurbs球具有属性scalex, scaley, scalez, rotatex, 等等。
物体属性名
物体属性名具有如下格式:
objectname.attributename
其中objectname是物体的名字,attributename是该物体的属性名。属性名中不要使用空格或特殊字符,可以用下划线。
产生一个名字为brawl的球:
sphere -name brawl;
可以获取它的属性的一个值:
float $yscale = `getattr brawl.scaley`;
brawl.scaley是brawl物体的scaley属性的全名。
路径
如果两个物体具有不同的父物体,它们可以有相同的名字。当说明有相同名字的物体时必须使用路径:
pathnameobjectname
其中pathname物体的父物体。管道字符()用于区分路径。
sphere -name doughnuthole;
group -name groupa;
sphere -p 3 0 0 -name doughnuthole;
现在我们有两个叫做doughnuthole的物体,但一个有父物体groupa,另一个没有父物体。以?*噶畈桓龃砦螅?br /> 因为maya不知道哪个doughnuthole物体要设立scaley属性:
setattr doughnuthole.scaley 3.3; // error: 哪个?
你必须输入属性的路径:
setattr groupadoughnuthole.scaley 3.3;
setattr doughnuthole.scaley 0.3;
你可以说明物体的所有路径,用管道符进行区分:
group -name groupb groupa;
setattr groupbgroupadoughnuthole.scaley 1;
物体属性的可能的数据类型
每个属性有特定的数据类型。几何体, 粒子物体, maya中的其他项都具有这些数据类型的属性:
数据类型 意义 属性例 数据例
浮点小数 numbers ball.translatex 2.6, 7.0, -9.1int
整数 (...-1, 0, 1, 2...) ballshape.spansu -289, 33, 0
boolean 0或1 ball.visibilityon, off, yes, no, 1, 0, true, false
考虑一个由以?*噶畈慕凶鯢ire的粒子物体:
particle -name fire -position 7 0 7;
它可以具有以下另外的数据类型:
数据类型 意义 属性例 数据例
vector array 矢量阵列 fireshape.position
{<<3.2,?7.7,?9.1>>, <<7,?10,?2.2>>}
double array 浮点阵列 numbersfireshape.lifespan 1.333 1.666
你可以使用getparticleattr和setparticleattr指令设立矢量的元素或一个粒子系统的双阵列。
float $tmp[] =
`getparticleattr -at position fireshape.pt[0]`;
vector $particleposition = <<$tmp[0], $tmp[1], $tmp[2]>>;
(完)
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器