2017-11-17 40 views
0

私は現在、MEL用のランダムオブジェクトジェネレータスクリプトを持っています。私はそれをPythonに変換しようとしています。これは宿題ですが、私は特定のセクションで立ち往生しています。私は各軸にランダムスケールを追加しようとしています。私はリスト "(リスト" str "ではない)を連結することしかできません"#。これまで私が持っているものは次のとおりです。MELスクリプトをPythonに変換しようとしています

#to use: my_rock_gen(1, poly_rock1) 

#import python libraries 
import maya.cmds as MC 
import random 

#define procedure with number of rocks and name 

def my_rock_gen(number_of_rocks=0, rock_name="poly_rock1"): 

    #loop to generate rocks 
    for n in range(number_of_rocks): 

     #start with creating polygon object, basic cube 
     rock=MC.polyCube (name=rock_name) 

     #smooth it once 
     MC.polySmooth (rock, dv=2)   

     #give random scales 
     random_sx= random.uniform (.3, 3) 
     random_sy= random.uniform (.3, 3) 
     random_sz= random.uniform (.3, 3) 

     #set random values to scales 
     MC.setAttr ((rock + ".scaleX"), random_sx)" 

私は最後のビットで立ち往生しています。 MELには、最後の2つの部分があります:

//set random scale range 
float $random_sx = `rand .3 3`; 
float $random_sy = `rand .3 3`; 
float $random_sz = `rand .3 3`; 

//set random values to scales 
setAttr ($rock[0] + ".sx") $random_sx; 
setAttr ($rock[0] + ".sx") $random_sy; 
setAttr ($rock[0] + ".sx") $random_sz; 

$ rock [0]はスクリプトの先頭部分で作成されます。私は構文がどのようにsetAttrの部分に行くべきかを理解できません。何か助けてくれてありがとう。

答えて

0

岩が私をyにスケールのためにこれを繰り返す必要があり、zと岩がすでにあるリストの要素にATTR(ここではなしマヤ)

+0

を設定する

rock = [MC.setAttr((x),random_sx) for x in rock] 

を試してみてください、リストであります先に宣言した。どのように私はそれを追加しますか?私はまた、3つの軸のすべてでランダムな回転を行うためにrock変数を再度使用します。 – JonCathcart

+0

これは、岩の各岩石に同じrandom_sxを設定します。異なる値やもっと多くの設定が必要な場合は、 'for myRock in rock:'ループを使用して、 'myRock'(それをくすぐる、回転させる、ほこりをかけるなど)に何をする必要があれば何でもしてください。私はまだ一般的なPythonの知識を操作して、マヤを使用しませんでした。 –

関連する問題