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

Maya Mel基础教程(7)

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

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

跳转到指定楼层
楼主
发表于 2012-11-19 16:11:04 |只看该作者 |倒序浏览
定义数据

本章描述 MEL的数据类型它们之间的转换:

1、变量;

2、常数;

3、数据类型转换;

4、限制。
1、变量
所有变量名以$开始。变量名不包括空格和特殊字符。你可以使用下划线和数字作为变量名但开头不能是数字。

识别大小写,如$temp不同于$Temp。
例:
int $radical7Mark; // 有效

int HEYchief; // ERROR: 开头缺"$"

int $ nine; // ERROR: 开头不是"$"

int $_VAL_ID___AIT_; // 有效

int $howdyYa`ll; // ERROR: 含有无效字符

int $1Bill; // ERROR: 开头不能是数字
有以下五种变量类型:
类型 意义 例子

int 整数 (...-2, -1, 0, 1, 2...)10, -5, 和 0

float 小数 392.6, 7.0, and -2.667

string 一个或更多的字符 "What's up, chief?"

vector 三个浮点数 <<3,?7.7,?9.1>>

matrix 浮点数阵列 <<1.1, 2, 3; 6.7, 5, 4.9>>
以上类型除matrix外,都可以是一个阵列。如,一个三元素的整数阵列是一个跟一个的三个整数。
声明和标注变量
声明一个变量是说明变量的名字和类型;标注一个变量是给已生命的变量一个专有的值。下例是将声明和标注合为一步:
int $temp = 3;

float $Temp = 222.222;

string $tEmp = "***a kid.";

vector $teMp = <<1, 2.7, 3.2>>;

matrix $temP[2][3] = <<4.5, 1, 0.2; -13, 9911, 0.007>>;
当生命矩阵变量时,必须包括二维阵列的尺寸。
下例说明对整型、浮点、字符串和矢量阵列型变量阵列的声明和标注:
int $TEmp[5] = {100, 1000, -70, 2, 9822};

float $TeMp[4] = {43.3, -10.7, 0, 82.5};

string $TemP[3] = {"Lord", "Flies", "cool brown fox2."}; < p>
vector $tEMp[2] = {<<0, 0, 0>>, <<0.01, -2, 16>>};
如果一个变量被声明但未被标注,它的所有的值是0;字串变量则?quot; "。
float $teMP; // 赋值: 0;

string $TEMp[3]; // 赋值: {"", "", ""};

vector $TEmP[2]; // 赋值: {<<0, 0, 0>>, <<0, 0, 0>>};

matrix $TeMP[3][2]; // 赋值: <<0, 0; 0, 0; 0, 0>>;
如果一个变量被声明或者被使用而没有定义它的类型,它被隐含声明为将要赋值给它的那种类型。
$tEMP = 0.0; // 浮点数

string $TEMP[]; // 零元素字符串阵列

$trip = "heya Buddy"; // 字符串

$rip = {1, 2, 3, 4}; // 四元素整型阵列

$lip = <<1, 2.1; 3, 4>>; // 2X2 矩阵

$flixp = $TEMP; // 零元素字符串阵列
注意值0.0是一个浮点数,而一个0值是一个整型数。这决定了在隐含声明时是产生一个浮点数还是产生一个整型数。

不建议使用隐含声明,因为它不象变量的隐含声明那样的清楚。
保留字
MEL的保留字可以是一个变量类型、控制逻辑或是表达一个值。以下是MEL的保留字:
break case continue default do else

false float for global if in

int matrix no off on proc

return string switch ***e vector while

yes
数据类型关键字
int float vector string matrix
布尔常数关键字
yes no on off ***e false
流动控制关键字
if else for while do in break continue default switch case
其他关键字
global return source catch alias proc
保留字也区分大小写。所以int是整型,Int不是。实际上alias、source、catch 也是保留字,但它们起指令作用,

因此没有被包括在上述表内。
字符串
字符串可用"+"运算连接。
string $what = "Whale";

string $title = "Great" + " White " + $what;
这将使title变量的内容为Great White Whale。
矢量
为寻址一个vector的各个成分,使用"."。
vector $LOS = <<1, 2, 7>>;

float $firstComponent = $LOS.x; // 赋值为 1

float $secondComponent = $LOS.y; // 赋值为 2

float $thirdComponent = $LOS.z; // 赋值为 7
标注矢量的成分:
vector $LOCK = <<7, -4, 9>>;

$LOCK = <<$LOCK.x, $LOCK.y, 3>>; // Assigned <<7, -4, 3>>
但不能直接给一个成分标数字:
$LOCK.z = 3000; // 错误
但是通常当访问一个矢量成分时,你应该象下面例子那样围绕它使用括号:
例子:

print $LOCK.x; // 错误

print($LOCK.x);

setAttr persp.scaleX $LOS.x; // 错误

setAttr persp.scaleX ($LOS.x);
【来源软件学院】

更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

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

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

GMT+8, 2024-11-27 05:36 , Processed in 0.205472 second(s), 32 queries .

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

© 2008-2019 Narkii Inc.

回顶部