查看: 1155|回复: 0
打印 上一主题 下一主题

极品分享:Maya Mel基础教程(6)

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2012-10-18 21:46:42 |只看该作者 |倒序浏览
maya Mel基础教程

阵列
你可以声明一个int, float, string或vector类型的阵列。阵列的第一个序号为0
string $array[3] = {"first
", "second
", "third
"};

print($array[0]); // 显示 "first
"

print($array[1]); // 显示 "second
"

print($array[2]); // 显示 "third
"
阵列尺寸可以自动地增加。
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.
");

clear($hats);

print("But now there are " + size($hats) + ".
");
以上指令的输出是:
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属性的全名。
路径
如果两个物体具有不同的父物体,它们可以有相同的名字。当说明有相同名字的物体时必须使用路径:
pathname|objectname
其中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 GroupA|doughnutHole.scaleY 3.3;

setAttr |doughnutHole.scaleY 0.3;
你可以说明物体的所有路径,用管道符进行区分:
group -name GroupB GroupA;
setAttr |GroupB|GroupA|doughnutHole.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, ***e, 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]>>;
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/

文章来源:互联网
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-27 03:44 , Processed in 0.093206 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部