2017-01-01 46 views
0

我想創建一排隨機寬度的圖塊。我可以做2立方體,但我不知道如何做100立方體。如何在python中創建一排隨機寬度的立方體

import maya.cmds as cmds 
import random 

cubeList = cmds.ls('Tiles*') 
if len(cubeList) > 0: 
    cmds.delete(cubeList) 

#create row and col list 
cols = 2 
arr = [] 
for col in xrange (cols): 
    width_rand_Size = random.uniform(0.8,3) 

    arr.append(cmds.polyCube (ax = (0,0,1), w = width_rand_Size, h = 1, d =1 , n='Tiles#')) 
    if col != 0: 
     cmds.setAttr("Tiles2.tx",(cmds.polyCube('Tiles1', q = 1, w = 1))/2 + (cmds.polyCube('Tiles2', q = 1, w = 1))/2) 

回答

0

您必須讓腳本在您每次迭代時自動查找對象和上一個對象的名稱。然後計算當前圖塊和所有先前創建的圖塊之間的空間。

下面是代碼:

import maya.cmds as cmds 
import random 

cubeList = cmds.ls('Tiles*') 
if len(cubeList) > 0: 
    cmds.delete(cubeList) 

#create row and col list 
cols = 10 # number of tiles to create 
x = 1 # increment variable 
arr = [] 
allTilesSpace = [] # cumalated space between tiles 
for col in xrange (cols): 
    # if there is no tile to create, do nothing 
    if not cols: 
     break 
    # get the names of the objects 
    currentTile = 'Tiles%d' % x 
    previousTile = "Tiles%d" % (x - 1) 
    # set random width 
    width_rand_Size = random.uniform(0.8,3) 
    arr.append(cmds.polyCube (ax = (0,0,1), w = width_rand_Size, h = 1, d =1 , n=currentTile)) 

    # Move the tiles 
    currentTileWidth = cmds.polyCube(currentTile, q = 1, w = 1) 
    if cmds.objExists(previousTile): 
     previousTileWidth = cmds.polyCube(previousTile, q = 1, w = 1) 
     allTilesSpace.append(previousTileWidth) 
     tilesSpace = sum(allTilesSpace) + (currentTileWidth/2) 
     cmds.setAttr(currentTile + ".tx",tilesSpace) 
    else: 
     cmds.setAttr(currentTile + ".tx", currentTileWidth/2) 

    x += 1 # increment 
+0

感謝ü幫助:) – push