これは私がやろうとしていることです。どのように私がpythonを初めて使うのかわかりません。私はいくつかのオプションを探しましたが、なぜこれが機能しないのか分かりません。random.sampleリストから別の属性値を入力してください
私はaiSwitchと呼ばれる6つの異なるノードをmayaに持っています。私は0から6までランダムに異なる数字を生成し、その値をaiSiwtch * .indexに入力する必要があります。
要するに、結果は aiSwitch1.index =(0から5までの乱数) aiSwitch2.index =(0から以前とは異なる5に別の乱数) よく、そうでaiSwitch6.index unilべき
私は次のことを試してみました:
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.
これは、すべてのaiSwitchで起こります。なぜなら、それはループの中にあるからです。また、乱数は常にループが実行されるたびに発生するため、別のリストになります。
だから問題はどこにありますか?
aiSwitch1.index = 1
、他のすべてのaiSwitch * .INDEXは常にのみ、リスト内の最後の項目が、私はするsetAttrを行うために取得時間がかかります。 wはforループの最後の値を保持しているようです。私はかなりの
がaiSwitch1.indexで5
入力にその値を0からランダムな値を取得する方法を理解していない
0から6異なるまでに別のランダムな値を取得します。 aiSwitchまで
入力し、その値
- aiSwitch2.index で繰り返し前1 5.索引。
私はそれが次の形式で動作するように手に入れた:
allSwitch = mc.ls('aiSwitch')
for i in allSwitch:
mc.setAttr(i + '.index', random.uniform(0,5))
これは、すべてのaiSwitch *の.INDEXに0から5までの乱数を与えたが、そのうちのいくつかは繰り返します。私は、ループが実行されるたびに値が生成されているため、この属性が乱数で設定されていると考えられます。しかし、数字は繰り返され、私はそれを避けようとしていました。私もシャッフルを試みたが、それから何か値を得ることに失敗した。
私の主な間違いは、リストを生成してサンプリングしているようですが、そのリストのすべてのアイテムを別のaiSwitch * .indexノードに割り当てることに失敗しています。そして、私はこれのためのアイデアが不足しています。
すべての手がかりをいただければ幸いです。おかげさまで ジョナサン。ここで
ヒント: 'random.shuffle'リスト' [0,1,2,3,4,5] ' –
こんにちは!手がかりをありがとう。そのシャッフルをコードの最後の構造に追加することを意味しますか?再度、感謝します! – Jonathan
リストをシャッフルするだけで、何かをする前にリストをシャッフルしてから、シャッフルされた値を必要に応じてループするだけです。 –