【问题标题】:How to duplicate special multiple groups using python in maya如何在maya中使用python复制特殊的多个组
【发布时间】:2021-02-14 09:46:32
【问题描述】:

我有一个关于我的大学作业的问题,我正在使用多边形创建一个平面图案,我成功地在 x 轴上创建了一条图案线并将对象分组到一个组中,然后我复制了在 z 轴上分组一次。虽然我现在有两个组,但我复制组的部分代码如下所示:

cmds.select(all=True)
cmds.group(name='group#')
cmds.select('group1')
cmds.duplicate('group1')
cmds.move(0.9, 0, 1.6)
cmds.select('group1','group2')
cmds.group(name='group#')
cmds.select('group3')
cmds.duplicate('group3')
cmds.move( 0, 0, 3.2 )
cmds.duplicate( st=True )
cmds.duplicate( st=True )
cmds.duplicate( st=True )
cmds.duplicate( st=True )

'''

那么如何使用循环来简化这段代码呢?

【问题讨论】:

    标签: python maya


    【解决方案1】:

    根据您上面的评论,如果我们忽略您正在进行的分组而只专注于循环,您可以执行以下操作来创建多边形立方体的立方体网格:

    import maya.cmds as cmds
    
    iterations = 10
    distanceIncrement = 2
    
    for x in range(iterations-1):
        cube = cmds.polyCube()
        cmds.setAttr('{}.translate'.format(cube[0]), x*distanceIncrement, 0, 0)
        
        for y in range(iterations-1):
            cube = cmds.polyCube()
            cmds.setAttr('{}.translate'.format(cube[0]), x*distanceIncrement, y*distanceIncrement, 0)
            
            for z in range(iterations-1):
                cube = cmds.polyCube()
                cmds.setAttr('{}.translate'.format(cube[0]), x*distanceIncrement, y*distanceIncrement, z*distanceIncrement)
    

    您可以使用嵌套循环的相同技术来创建各种模式,因此希望这可以帮助您解决特定问题。

    【讨论】:

      【解决方案2】:

      不清楚您的意思和/或为什么要循环。我还应该指出,您提供的几乎每一行都是不同的(因此,很难找出您想要循环的确切位置)。在任何情况下,一般来说,如果你想遍历一组具有不同参数的行,那么你需要将这些参数放在一个列表中。同样,如果你想循环一组函数,那么你需要将这些函数放在一个列表中。或两者。可能的例子,

      params = [(dict(all=True),      dict(name='group#'), ['group1'], ['group1'], [0.9,0,1.6]),
                (['group1','group2'], dict(name='group#'), ['group3'], ['group3'], [0,0,3.2]),
      ]
      funcs  = [cmds.select,cmds.group,cmds.select,cmds.duplicate,cmds.move]
      
      for param in params:
           for func in funcs:
               if isinstance(param,list):
                   func(*param)
               elif isinstance(param,dict):
                   func(**param)
      

      【讨论】:

      • 所以我要做的是在maya中创建一个重复的图案,而我已经在x轴上复制了多边形20次,并将这20个重复的对象分组为group1,而group2是 z 轴上 group1 的副本,我试图在 z 轴上复制这些组多次,比如 20 次。所以我只是不知道如何在 z 轴上多次复制这两个组,每个组在 z 轴上通过循环使用 (i * 3.2) 的参数。
      猜你喜欢
      • 2013-05-15
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2016-07-29
      • 2013-06-09
      • 1970-01-01
      • 2013-10-10
      相关资源
      最近更新 更多