allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

MayaMel基础教程(8)

日期:2013/11/23 16:23:00 来源:本网整理
MayaMel基础教程
阵列

你可以声明一个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("Therewere" size($hats) "hats.\n");
clear($hats);
print("Butnowthereare" size($hats) ".\n");

以上指令的输出是:

Therewere3hats.
Butnowthereare0.

矩阵

可以把一个矩阵想象为一个浮点阵列的阵列,或是一个浮点数据的二维阵列。矩阵产生后,它的尺寸不能改变。
企图寻址一个矩阵的不存在的元素将会出现错误。在产生矩阵时必须定义它的尺寸。

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]column0column1column2column3
row0-3.462010.7row1429.31001

如果你把矩阵设想为一个身列的阵列,则第一个索引表示阵列,第二个索引该阵列里的索引:

matrix$a4[2][4]index0index1index2index3
floatarray0-3.462010.7floatarray1429.31001

物体属性

属性是场景中的物体的特征或参数。在Maya中可以用许多方法建立属性-属性编辑器、MEL程序、工具盒工具或表达式。
你可以设立属性去控制在工作空间中看到的虚拟的事情。
如,一个NURBS球具有属性scaleX,scaleY,scaleZ,rotateX,等等。

物体属性名

物体属性名具有如下格式:

objectName.attributeName

其中objectName是物体的名字,attributeName是该物体的属性名。属性名中不要使用空格或特殊字符,可以用下划线。

产生一个名字为Brawl的球:

sphere-nameBrawl;

可以获取它的属性的一个值:

float$yScale=`getAttrBrawl.scaleY`;

Brawl.scaleY是Brawl物体的scaleY属性的全名。

路径

如果两个物体具有不同的父物体,它们可以有相同的名字。当说明有相同名字的物体时必须使用路径:

pathname|objectname

其中pathname物体的父物体。管道字符(|)用于区分路径。

sphere-namedoughnutHole;
group-nameGroupA;
sphere-p300-namedoughnutHole;

现在我们有两个叫做doughnutHole的物体,但一个有父物体GroupA,另一个没有父物体。以?*噶畈桓龃砦螅?br/>因为Maya不知道哪个doughnutHole物体要设立scaleY属性:

setAttrdoughnutHole.scaleY3.3;//ERROR:哪个?

你必须输入属性的路径:

setAttrGroupA|doughnutHole.scaleY3.3;
setAttr|doughnutHole.scaleY0.3;

你可以说明物体的所有路径,用管道符进行区分:

group-nameGroupBGroupA;

setAttr|GroupB|GroupA|doughnutHole.scaleY1;

物体属性的可能的数据类型

每个属性有特定的数据类型。几何体,粒子物体,Maya中的其他项都具有这些数据类型的属性:

数据类型意义属性例数据例

浮点小数numbersBall.translateX2.6,7.0,-9.1int
整数(...-1,0,1,2...)BallShape.spansU-289,33,0
boolean0或1Ball.visibilityon,off,yes,no,1,0,true,false

考虑一个由以?*噶畈慕凶鯢ire的粒子物体:

particle-nameFire-position707;

它可以具有以下另外的数据类型:

数据类型意义属性例数据例

vectorarray矢量阵列FireShape.position
{<<3.2,?7.7,?9.1>>,<<7,?10,?2.2>>}
doublearray浮点阵列numbersFireShape.lifespan1.3331.666

你可以使用getParticleAttr和setParticleAttr指令设立矢量的元素或一个粒子系统的双阵列。

float$Tmp[]=
`getParticleAttr-atpositionFireShape.pt[0]`;
vector$particlePosition=<<$Tmp[0],$Tmp[1],$Tmp[2]>>;
(完)

  • 本文相关:
  • MayaMel基础教程(7)
  • MayaMel基础教程(6)
  • MayaMel基础教程(5)
  • MayaMel基础教程(4)
  • Maya硬件渲染粒子与软件渲染元素结合(3)
  • Maya硬件渲染粒子与软件渲染元素结合(7)
  • MayaMel基础教程(3)
  • MayaMel基础教程(2)
  • Maya硬件渲染粒子与软件渲染元素结合(6)
  • MayaMel基础教程(1)
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved