randoms = [rand.uniform(-1,1)for items in range(10)]
x= 0
for i in List:
cm.setKeyframe(at = "%s.cv[x].xValue"%i , t=5, v=rand.choice(randoms))
x+=1
Эта часть кода, которую я хочу использовать, но maya не может принять это [x]. кто-то сказал мне, что вы должны сделать это:значения прироста в майа-питоне
for i in List:
x = 0
cvAttrX = i+".cv["+str(x)+"].xValue"
cm.setKeyframe(at = cvAttrX , t=5, v=rand.choice(randoms))
x+=1
, но я получил эту ошибку:
# Error: line 1: can only concatenate list (not "str") to list
# Traceback (most recent call last):
# File "<maya console>", line 1, in <module>
# File "<maya console>", line 7, in randList
# TypeError: can only concatenate list (not "str") to list #
если кто-то это исправить, пожалуйста, объяснить, что глубоко мне. я хочу узнать это очень хороший и исправьте этот пример тоже:
randoms = [rand.uniform(cm.floatField(Ceil, q = True , v = True),0.5)for i in range(30)]
for objects in myList:
cm.xform('%s.cv[0]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[1]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[2]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[3]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[4]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[5]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[6]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[7]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[8]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[9]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
cm.xform('%s.cv[10]'%objects , r = True , t = [(rand.choice(randoms)),(rand.choice(randoms)),(rand.choice(randoms))])
это часть моего сценария, если я могу сделать инкремент я не хочу писать эту линию exampla 100 раз, я могу сделать intField для этого и определить, сколько мне нужно
я хочу сделать что-то вроде этого, но я не знаю, как
import maya.cmds as cm
import random as rand
myList = cm.ls(sl =True)
cvList = []
randomList = []
def Lister():
for i in myList:
cvList.append(cm.ls('%s.cv[:]'%i , flatten = True))
return cvList
def randomize():
x = 0
randomList.append([rand.uniform(-1,1)for items in range(10)])
for i in cvList:
cm.setKeyframe(at = "%s.cv[x].xValue"%i , t=5, v=rand.choice(randoms))
x+=1
Это, вероятно, не проблема майи, потому что вы получаете общее сообщение об ошибке Python. Вы пытаетесь объединить списки и строки, это два разных типа, вам не разрешено это делать, вам нужно преобразовать один тип в другой. Какие предметы у вас есть в переменной List? Какой тип maya ожидает как значение аргумента ключевого слова? Не зная этого, можно только догадываться, что проблема, вероятно, лежит здесь: 'cvAttrX = str (i) + ". Cv [" + str (x) + "]. XValue"' –
myList содержит cv информацию о двух кривых. myList = [['c1.cv [1]'], ['c1.cv [2]'], до конца списка] –
Я обновил свой вопрос –