1

私の質問は、オブジェクトまたは面のラティスまたは頂点、またはすべて、またはPythonのリストから完全にランダムに選択された(たとえば、このスクリプトで)点の乱数を選択する方法です。

最初にこのスクリプトのランダム選択について説明してください

cm.select('ffd1Lattice.pt[:][:][:]',r=True)

その後、リストとすべての方法でのランダム選択について説明してください。

よろしくお願いします

import maya.cmds as cm
import sys
import random as rand

myList = cm.ls ( sl = True)


def softIt(*arg):
    cm.polySmooth( c = True , dv = 1 , kb = False )

def randomize(*arg):
    myList = cm.ls ( sl = True)
    for i in myList:
        cm.lattice( dv=(4, 5, 4), oc=True )
        cm.select('ffd1Lattice.pt[:][:][:]',r=True)
        cm.xform( r = True , t = [ rand.uniform(-1,1) , rand.uniform(-1,1) ,   rand.uniform(-1,1)]  )

cm.headsUpMessage('this script just work with one object at time', verticalOffset=250)


cm.window( t = 'Randomaize' , s = False)
cm.columnLayout()
cm.button( l = 'do it' , c = randomize , w = 200)
cm.button( l = 'soft it' , c = softIt , w = 200)
cm.showWindow() 

sys.stdout.write("this script just work with one object at time\t\"script by Amin   khormaei\"")
4

2 に答える 2

0

この線:

cm.select('ffd1Lattice.pt[:][:][:]',r=True)

基本的に「ラティス内のすべての制御点を選択する」と言います。ただし、Maya 2011 には、存在しないポイントを選択しようとするバグがあるようです (後でわかりません)。1x1x1 ラティスには、3 つの次元すべてに 0 ~ 1 の 8 つのポイントが必要です。ただし、スニペットを使用して結果に対して ls を呼び出すと、レポートが表示されます。

// result: 'ffdLatticeShape.pt[0:2][0:2][0:2]' // 

...少なくとも私のマシンではそうです-そしてそれは不可能なはずです。[:] 形式をラティスで使用することは避けたいと思います (実際、[*] 形式にも同じバグがあります。痛いです)。ただし、通常の頂点ではうまく機能します。

特定のアプリケーションで、すべてのポイントを同じランダムな量 (スニペットが示唆するもの) で移動しますか?それとも、すべてのポイントを異なるランダムな量で移動しますか? または、ランダムな量によるランダムなポイントのセットですか? コードは選択肢ごとに異なります。

于 2013-07-15T20:59:51.247 に答える
0

その小さなスニペットを理解していない場合は、まずリストのスライスがどのように機能するかを理解する必要があります。これらの リンクは正しい方向を示しているはずです。

于 2013-07-15T05:11:33.937 に答える