Maya Mel 脚本 - 将枢轴放到对象的底部?
Maya Mel Script - Drop Pivot to Bottom of object?
我之前看到有人问过这个问题(例如:here)。那么如何自动将pivot设置到模型底部呢?
为此:
第 1 步:.
第 2 步:将轴心设置为底部点。
这里是帮助你做到这一点的 mel 脚本:
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);
}
}
用法:
第1步:select需要将枢轴设置为底部的对象
第 2 步:执行脚本
枢轴点应该这样设置
如果您的要求是:枢轴点必须在模型内部,那么您应该稍微编辑一下这个脚本。
谢谢!我在上面使用了您的代码 123iamking,但我发现我想将枢轴放到世界 y0 而不是边界框。
所以我改变了一些东西。
适用于 Maya 2020。
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)
{
float $pos[];
string $item;
for ($item in $sel)
{
xform -ws -a -cp;
CenterPivot;
$pos = `xform -q -ws -a -piv ($item)`;//Get piv position
xform -ws -a -piv $pos[0] 0 $pos[2] ($item); //set pivot to 0 in world y
}
};
我之前看到有人问过这个问题(例如:here)。那么如何自动将pivot设置到模型底部呢?
为此:
第 1 步:
第 2 步:将轴心设置为底部点。
这里是帮助你做到这一点的 mel 脚本:
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);
}
}
用法:
第1步:select需要将枢轴设置为底部的对象
第 2 步:执行脚本
枢轴点应该这样设置
谢谢!我在上面使用了您的代码 123iamking,但我发现我想将枢轴放到世界 y0 而不是边界框。
所以我改变了一些东西。
适用于 Maya 2020。
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)
{
float $pos[];
string $item;
for ($item in $sel)
{
xform -ws -a -cp;
CenterPivot;
$pos = `xform -q -ws -a -piv ($item)`;//Get piv position
xform -ws -a -piv $pos[0] 0 $pos[2] ($item); //set pivot to 0 in world y
}
};