原理:
抓取轴向数据(从右侧属性数据里抓取,并不是坐标所在位置的数据),然后找到模型最低点,把移动放过去。
比如原始坐标数据就在物体中心,他就会在物体中心底部。
比如原始坐标数据为不在模型身上,他就会抓取x和z轴数据,y的数据在模型底部
所以在执行之前最好坐标归位到物体中心,烘焙坐标数据,再执行代码。
如果多选模型,则x、z按照数字数据,y轴所有模型的最低点。
代码:
string $sel[]= `ls -sl`;
//$sel[0] != "" to check if the first item is empty, but `size $sel` == 1 already cover that
if(`size $sel` > 0)
{
int $vtxIdx;
int $vCount[];
float $lowestY = 2147483647.0;
float $crtY = 0.0;
float $pos[];
string $item;
for ($item in $sel)
{
$vCount = `polyEvaluate -vertex $item`; //Get vertex count
for ($vtxIdx = 0; $vtxIdx < $vCount[0]; $vtxIdx++)//Loop through vetex
{
$pos = `xform -q -ws -t ($item+".vtx["+$vtxIdx+"]")`;//Get vertex position
$crtY = $pos[1];
if($crtY < $lowestY)
{
$lowestY = $crtY;//Get the lowest Y
}
}
$pos = `xform -q -ws -t ($item)`;
xform -ws -a -piv $pos[0] $lowestY $pos[2] ($item);
print ($lowestY);
}
}
使用方法:
-
将代码复制,粘贴到MEL代码窗口
-
选中要修改的模型,把坐标归位到物体中心,烘焙坐标数据,直接按蓝色播放键或者小键盘的enter执行代码
-
全选代码按住中间拖到工具栏里生成按钮
网友评论