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
        }

};