代码之家  ›  专栏  ›  技术社区  ›  123iamking

玛雅梅尔脚本-如何获得模型的底部点?

mel
  •  0
  • 123iamking  · 技术社区  · 6 年前

    如何通过mel脚本获得模型的最低点? Maya Bottom Point

    如果我能得到底点的y坐标,我就能得到底点,但我不知道怎么得到它。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Green Cell    6 年前

    通过所有顶点的循环可能会很慢,特别是对于密集的网格。可以改为使用对象的边界框:

    float $bb[] = `getAttr pCube1.boundingBoxMin`;
    print($bb[1]); // Lowest position in Y
    

    这样做的另一个好处是不依赖顶点,因此不必是多边形网格。

        2
  •  0
  •   123iamking    6 年前

    如果我能得到底点的y坐标,我就能得到底点,但我不知道怎么得到它。

    我算出了:底点的y坐标=模型最低点的y坐标。这样做:循环遍历所有顶点以获得最低的顶点。

    假设目标对象是:“pcube1”。这是获得最低y的代码。

    int $vtxIdx;
    int $vCount[] = `polyEvaluate -vertex pCube1`; //Get vertex count
    float $lowestY = 2147483647.0;
    float  $crtY = 0.0;
    for ($vtxIdx = 0; $vtxIdx < $vCount[0]; $vtxIdx++)//Loop through vetex
    {
        float $pos[] = `xform -q -ws -t ("pCube1.vtx["+$vtxIdx+"]")`;//Get vertex position
        $crtY = $pos[1];
        if($crtY < $lowestY)
        {
            $lowestY = $crtY;//Get the lowest Y
        }
    }
    print ($lowestY);
    

    所以最低点=(pCube1.x,Lowesty,pCube1.z)。