Mel-Scripts
2024年1月10日
重新梳理maya-mel的一些笔记
1.Varible 变量
Variable Type - 变量类型
(类型是会有颜色的)
分别为以下类型
分别为以下类型 | ||||
---|---|---|---|---|
string(字符串) | int (整数) | float(浮点) | vector (向量) | matrix (矩阵) |
实战:
常用类型: | |||
---|---|---|---|
string(字符串) | int (整数) | float(浮点) | vector (向量) |
string字符串
tips:string
可以理解为定义, $
代表变量;
等于什么可以用""
双引号。
但必须是英语模式
mel
// 逐行输入
string $lbName0 = "megestus"; //定义字符串-变量+名字-然后这个字符串等于什么
$lbName0 = "ben"; //重新定义
print($lbName0); //打印这个字符串
string $lbName1[] = {"megestus","and","ben"};
//[]这个东西是数组 0 1 2序列的方式
print($lbName1); //打印
print($lbName1[0]); //数组内只能 0/1 1/2
print(size($lbName1)); //当前字符串内大小值
print($lbName1[0] + $lbName1[2]); // + 号可以定于选中数组中的具体
到这里我们得明确一下,字符串表示的是这一串字符。 例如这个字符串叫$lbName0
,由变量和自定义名字组成。 这个字符串可以被定义 你需要的值
具体怎么使用这个字符串呢?
通过自定义字符串,到处调用-比如说创建命名
mel
// 逐行输入
string $lbName2 = "box"; //通过自定义字符串
polyCube -n $lbName2; //然后创建模型-然后-n 重命名-名字重命名为定义的字符串
//polyCube -n "box02"; //也可以通过这个直接强命名
string $lbName4[] = `polyCube -n $lbName2`; // $=变量 lbName=标签名称 ``=执行命令
print($lbName4);
help polyCube //通过加前缀 help看帮助说明
// 得到反馈
说明: polyCube [flags] [String...]
Flags:
-e -edit
-q -query
-ax -axis Length Length Length
-cch -caching on|off
-ch -constructionHistory on|off
-cuv -createUVs Int
-d -depth Length
-fzn -frozen on|off
-h -height Length
-n -name String
-nds -nodeState Int
-o -object on|off
-sd -subdivisionsDepth Int
-sh -subdivisionsHeight Int
-sw -subdivisionsWidth Int
-sx -subdivisionsX Int
-sy -subdivisionsY Int
-sz -subdivisionsZ Int
-tx -texture Int
-w -width Length
int整数 - float浮点
int(整数)
float(浮点/小数)
mel
// 逐行输入
//可用于运算
int $lbint0 = 6; //定义变量
int $lbint1 = 2;
int $lbint2 = $lbint0 / $lbint1;
// 使用变量来计算-整数的计算可以使用加减乘除符号来进行: + - * /
print($lbint2); //打印运算结果
float $lbF0 = 3;
float $lbF1 = 6;
float $lbF2 = $lbF0 / $lbF1; //浮点同理,以为的区别就在于浮点可以有小数
print($lbF2);
用法-可以对对象进行一些运算处理,比如缩放
mel
// 逐行输入
string $lbSel0[] = `ls -sl`; //定义字符串 等于 选中物体`ls -sl`
float $lbNum0 = 2; //定义浮点
string $lbAttr0 = $lbSel0[0] + ".sx"; //变量+模型本身缩放轴 x轴 Scale X
string $lbAttr1 = $lbSel0[0] + ".sy"; //变量+模型本身缩放轴 Y轴 Scale Y
string $lbAttr2 = $lbSel0[0] + ".sz"; //变量+模型本身缩放轴 Z轴 Scale Z
setAttr $lbAttr0 $lbNum0; //设置对象 字符串+缩放浮点
setAttr $lbAttr1 $lbNum0;
setAttr $lbAttr2 $lbNum0;
复制位置信息V1
//位置信息复制
string $lbSel0[] = `ls -sl`;
float $lbPos00[] = `xform -q -a -ws -t $lbSel0[0]`;//xform询问+信息+第一个对象
string $lbAttr00 = $lbSel0[1] + ".tx"; //用字符串设定 对象2+信息
string $lbAttr01 = $lbSel0[1] + ".ty";
string $lbAttr02 = $lbSel0[1] + ".tz";
setAttr $lbAttr00 $lbPos00[0]; //设置信息
setAttr $lbAttr01 $lbPos00[1];
setAttr $lbAttr02 $lbPos00[2];
复制位置信息V2
string $lbSel0[] = `ls -sl`;
float $lbPos00[] = `xform -q -a -ws -t $lbSel0[0]`; // 定义浮点-获取信息和对象名称
string $lbAttrs0[] = {".tx",".ty",".tz"}; //定义字符串 为当前 位置信息 Translate
for($i = 0; $i < size($lbAttrs0); $i++)
{
string $temp0 = $lbSel0[1] + $lbAttrs0[$i];
setAttr $temp0 $lbPos00[$i];
}
2.looping循环
选择循环
string $lbSel0[] = `ls -sl`; //创建字符串数组=我选择的多个对象
for($i=0; $i<size($lbSel0); $i++) // for循环 增加++
{
print($lbSel0[$i] + "\n");
}
多个多对象随机分散
string $lbSel0[] = `ls -sl`;
for($i=0; $i<size($lbSel0); $i++)
{
select $lbSel0[$i];
float $lbNum0 = rand(-2,2)*$i;
float $lbNum1 = rand(-2.1,2.1)*$i;
float $lbNum2 = rand(-2.2,2.2)*$i;
move $lbNum0 $lbNum1 $lbNum2;
}
select -cl;
吸附到绝对对象上
string $lbSel0[] = `ls -sl`;
float $lbPos0[] = `xform -q -a -ws -t $lbSel0[0]`;
select $lbSel0[1];
move -a $lbPos0[0] $lbPos0[1] $lbPos0[2];
3.UI窗口
可重复刷新的窗口-有判断存在
window-1
string $lbName0 = "Z_Tool";
if(`window -ex $lbName0`)
{
deleteUI -window $lbName0;
}
if(!`window -ex $lbName0`)
{
string $lbWinName0 = `window //-wh 100 50
//-mxb 0 //最大化 开启或关闭
//-mnb 0 //最小化 开启或关闭
-tlb 1 //工具模式-wh会失效
-bgc .25 .25 .25
$lbName0`;
}
setParent ..; //设置回到父级
showWindow $lbName0; //显示窗口 + 对象
交互
proc lbChangeName0() //定义程序
{
string $lbName4[] = {"你真帅","你真棒","手气不错","啊吧啊吧"};
int $lbTemp0 = rand(0,4);
string $lbName5 = $lbName4[$lbTemp0];
text -e -l $lbName5 myText0;
}
//UI
string $lbName0 = "Z_Tool";
if(`window -ex $lbName0`)
{
deleteUI -window $lbName0;
}
if(!`window -ex $lbName0`)
{
string $lbWinName0 = `window //-wh 100 50
//-mxb 0 //最大化 开启或关闭
//-mnb 0 //最小化 开启或关闭
-tlb 1 //工具模式-wh会失效
-bgc .25 .25 .25
$lbName0`;
}
//button
columnLayout -adjustableColumn true;
text -l "" -h 60 myText0; //文本
button -l "点一下" -c lbChangeName0 -h 60 -w 10;
setParent ..; //设置回到父级
showWindow $lbName0; //显示窗口 + 对象
文本位置
window -width 150;
columnLayout -adjustableColumn true;
text -label "基础";
text -label "左" -align "left";
text -label "中" -align "center";
text -label "右" -align "right";
showWindow;
加法计算
proc lbBut1()
{
float $temp0 = `floatField -q -v lbFF0`;
float $temp1 = `floatField -q -v lbFF1`;
float $temp2 = $temp0 + $temp1;
floatField -e -ed 1 -v $temp2 lbFF2;
}
window -width 150
-mxb 0
-mnb 0
"计算器";
rowLayout -adjustableColumn true -nc 5;
floatField -v 0 -h 30 -w 50 lbFF0;
text -label "+" -h 30 -w 30;
floatField -v 0 -h 30 -w 50 lbFF1;
button -l "=" -c lbBut1;
floatField -v 0 -h 30 -w 50 lbFF2;
showWindow;
UI-通知
提示框
inViewMessage
inViewMessage -smg "test message" -pos topCenter -bkc 0xFF8247 -fade -a 0.1 -font "Times";
确认框 confirmDialog
confirmDialog
confirmDialog -message "Are you sure?" -button "Yes" -button "No"
-defaultButton "Yes" -cancelButton "No" -dismissString "No";