在 MEL 脚本中,使用 getAttr 和 setAttr 命令来获取并设定属性值:
sphere -name "Brawl"; print(getAttr("Brawl.scaleY")); float $ys = `getAttr Brawl.scaleY`; setAttr("Brawl.scaleY", $ys * 2);
可以使用 getParticleAttr 和 setParticleAttr 命令来获取或设定粒子向量或浮点数组。
float $Tmp[] = `getParticleAttr -at position FireShape.pt[0]`; vector $particlePosition = <<$Tmp[0], $Tmp[1], $Tmp[2]>>; setParticleAttr -at position -vv 0 0 7 FireShape.pt[0];
如果一个场景中的两个对象具有不同的父对象,它们就可以具有相同的名称。例如,如果一个球体有一个 GroupA 父对象,另一个球体没有父对象,那么一个场景中可以有两个名为 doughnutHole 的球体。
在这些情况下,不能只使用其名称来指定对象,因为 Maya 并不知道所指的是哪个对象。MEL 将显示以下错误:
ERROR: Which one?
如果 Maya 无法自动判断所指的对象,就要指定该对象的唯一路径。
路径将列出查找对象所需的各级层次,告诉 Maya 如何找到所指的对象。例如:
|character|shoulder|arm|hand
sphere -name doughnutHole; group -name GroupA; sphere -p 3 0 0 -name doughnutHole; setAttr doughnutHole.scaleY 3.3; // ERROR: Which one? setAttr GroupA|doughnutHole.scaleY 3.3;
setAttr |doughnutHole.scaleY 0.3;
可通过对象层次指定所有父对象的名称,从而指定对象的完整路径名。使用竖杠字符分隔每一个父对象。
group -name GroupB GroupA; setAttr |GroupB|GroupA|doughnutHole.scaleY 1;