2017-01-01 14 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

関連する問題