代码之家  ›  专栏  ›  技术社区  ›  Jonathan

随机输入不同的属性值。示例列表

  •  1
  • Jonathan  · 技术社区  · 9 年前

    我有6个不同的节点,在maya中,叫做aiSwitch。我需要生成从0到6的随机不同数字,并将该值输入aiSiwtch*。指数

    aiSwitch2.index=(另一个0到5之间的随机数,与之前的不同) 等等unil aiSwitch6。指数

    我尝试了以下方法:

    import maya.cmds as mc
    import random
    
    allswtich = mc.ls('aiSwitch*')
        for i in allswitch:
        print i
        S = range(0,6)
        print S
        shuffle = random.sample(S, len(S))
        print shuffle
        for w in shuffle:
            print w
            mc.setAttr(i + '.index', w)
    

    aiSwitch1 <-- from print i
    [0,1,2,3,4,5] <--- from print S
    [2,3,5,4,0,1] <--- from print Shuffle (random.sample results)
    2
    3
    5
    4
    0
    1  <--- from print w, every separated item in the random.sample list.
    

    现在,每个AI开关都会发生这种情况,因为它当然是在一个循环中。随机数总是一个不同的列表,因为每次循环运行时都会发生。

    aiSwitch1.index = 1
    

    1. 获取0到5之间的随机值

    2. 在aiSwitch1中输入该值。指数

    3. 获取另一个0到6之间的随机值,该值与之前的值不同

    4. 重复上述步骤,直到AISWITCH 5。指数

    我确实使用了以下表格:

     allSwitch = mc.ls('aiSwitch')
     for i in allSwitch:
         mc.setAttr(i + '.index', random.uniform(0,5))
    

    我的主要错误似乎是生成了一个列表并对其进行采样,但我没有将该列表中的每个不同项分配给不同的aiSwitch*。索引节点。我对此已经没有想法了。

    如果有任何线索,我们将不胜感激。

    1 回复  |  直到 9 年前
        1
  •  1
  •   John Coleman    9 年前

    zip (这对于并行迭代结构很有用,这是您在这里需要做的):

    import random
    
    index = list(range(6))
    random.shuffle(index)
    
    allSwitch = mc.ls('aiSwitch*')
    for i,j in zip(allSwitch,index):
        mc.setAttr(i + '.index', j)
    
    推荐文章