【问题标题】:MEL (Maya) - W-shaped cube arrangement won't intersect at pointsMEL (Maya) - W 形立方体排列不会在点处相交
【发布时间】:2017-04-19 10:58:19
【问题描述】:

与之前的练习类似,我将立方体排列在字母 W 中。同样,如果您无法将最终结果可视化,则将每个立方体视为一个像素,构建一个“W”的精灵。

我创建了我的代码的 4 个部分,组成字母的每个笔划 1 个部分,但每个部分有 2 个具有相同的“根点”:

file -f -new;

//Specifies starting coordinates

int $xpnt1 = 5.5;
int $xpnt2 = -5.5;

//////////////////

for($i=1;$i<=25;$i++) { //BRANCH 1, POINT 1, DIR L
    polyCube;
    move -ws $xpnt1 0 0;
    //select "pCube1";
    move -r ($i*1) ($i*1) 0;
    move -r $xpnt1 0 0 pCube1.scalePivot;
    }
for($i=1;$i<=25;$i++) {//BRANCH 2, POINT 1, DIR R
    polyCube;
    move -ws $xpnt1 0 0;
    //select "pCube26";
    move -r ($i*-1) ($i*1) 0;
    move -r $xpnt1 0 0 pCube26.scalePivot;
    }
for($i=1;$i<=25;$i++) {//BRANCH 3, POINT 2, DIR L
    polyCube;
    move -ws $xpnt2 0 0;
    //select "pCube51";
    move -r ($i*1) ($i*1) 0;
    move -r $xpnt2 0 0 pCube51.scalePivot;
    }
for($i=1;$i<=25;$i++) { //BRANCH 4, POINT 2, DIR R
    polyCube;
    move -ws $xpnt2 0 0;
    //select "pCube76";
    move -r ($i*-1) ($i*1) 0;
    move -r $xpnt2 0 0 pCube76.scalePivot;
    }

到目前为止,我已经能够让立方体按照我的意愿生成。这里的主要问题是一个错误出现的问题:尽管每个共享中有 2 个 5.5 或 -5.5 作为起始坐标,但它们最终被似乎是程序隔开: this is the current result.我可能会遗漏或忽略导致此问题的什么?

请记住,我知道 5.5/-5.5 不会产生正确的 W。我正在使用这些坐标来测试生成基础立方体以占用相同的空间。

【问题讨论】:

    标签: maya modeling autodesk mel


    【解决方案1】:

    将 for 循环中的部分从 for($i=1;$i&lt;=25;$i++) 移动到 for($i=0;$i&lt;25;$i++) 将停止存在间隙。

    以前当循环以 $i=1 开始时,这意味着在第一次迭代中,带有move -r ($i*±1) ($i*±1) 0; 的行会将第一个块从起始坐标对角线移动 1 个。

    由于我们希望每个分支中的第一个块不要从起始坐标移动,我们希望行 move -r ($i*±1) ($i*±1) 0; 在第一次迭代中没有影响。为了解决这个问题,我们可以在第一次迭代中让 $i 等于 0,这样第一个块的行就变成了move -r 0 0 0;

    最后,您仍然希望每个分支中有 25 个块,因此 For 循环的结束条件从 $i&lt;=25 更改为 $i&lt;25,以说明开始时存在移位。

    这里是代码(唯一改变的是 4 个 For 循环的条件。)

    file -f -new;
    
    //Specifies starting coordinates
    
    int $xpnt1 = 5.5;
    int $xpnt2 = -5.5;
    
    //////////////////
    
    for($i=0;$i<25;$i++) { //BRANCH 1, POINT 1, DIR L
        polyCube;
        move -ws $xpnt1 0 0;
        //select "pCube1";
        move -r ($i*1) ($i*1) 0;
        move -r $xpnt1 0 0 pCube1.scalePivot;
        }
    for($i=0;$i<25;$i++) {//BRANCH 2, POINT 1, DIR R
        polyCube;
        move -ws $xpnt1 0 0;
        //select "pCube26";
        move -r ($i*-1) ($i*1) 0;
        move -r $xpnt1 0 0 pCube26.scalePivot;
        }
    for($i=0;$i<25;$i++) {//BRANCH 3, POINT 2, DIR L
        polyCube;
        move -ws $xpnt2 0 0;
        //select "pCube51";
        move -r ($i*1) ($i*1) 0;
        move -r $xpnt2 0 0 pCube51.scalePivot;
        }
    for($i=0;$i<25;$i++) { //BRANCH 4, POINT 2, DIR R
        polyCube;
        move -ws $xpnt2 0 0;
        //select "pCube76";
        move -r ($i*-1) ($i*1) 0;
        move -r $xpnt2 0 0 pCube76.scalePivot;
        }
    

    Here is an image of what it now looks like 和预期的一样,起始坐标有两个方块。

    【讨论】:

    • 我觉得我的解释有点啰嗦,如果是这样,请告诉我
    • 我也刚刚编辑了这个问题,并添加了一些我在阅读它几次时得出的东西——只是我最初不理解的一些东西,仅此而已。 (我会评论您的问题以提及这一点,但没有足够的代表)如果我有任何混淆,也请告诉我。
    • 啊,我的意思是编辑很有帮助,可以节省其他人解决问题的时间,但没有获得批准。我想我试图解释我从阅读中理解的内容。第一次太少,第二次太多了。我想我现在就把它留在那里。
    • 告诉我我的理解是什么:组成字母的每个笔划/分支都有 4 段代码。每个笔划中的两个共享相同的“根点”——因此分支 1 和 2 将具有相同的起始坐标,分支 3 和 4 将共享另一个起始坐标。从起点开始,四个笔画是通过创建一系列立方体来构建的,然后每个立方体沿对角线向上移动越来越多的次数——直到形成一条由 25 个立方体组成的对角线,每个立方体一个单位到一边,一个单位从前一个向上,构成一个笔划。
    • 并且:两个起始坐标都位于 Y=0 和 Z=0 线上,两个起始坐标的 x 坐标在 $xpnt1 和 $xpnt2 中指定。并且笔划一直按照您的意愿在 25 个立方体的对角线上生成,但它们没有共享它们的根点,即在起始坐标处有一个间隙,而不是两个立方体占据相同的空间。如果它帮助我理解我希望其他人知道,但我想我不知道这是否也是你想要的。那好吧。 (你可以看到我在这里很新。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多