I have this code...I don't understand why, whenever I do the for loop it doesn't change the color of the cube...I mean, in this case I call the function "BookGen" 5 times...And everytime i randomize 3 numbers, but the colors don't change....
import maya.cmds as cmds
def BookGen(myBlinn,myBlinn2,myBlinn3):
myBook=cmds.polyCube(name='Book',h=8,w=4,d=2) #Create a testCube with that Name
#Modeling that I didn't include
#//Cover Color
Colors=[]
for i in range(3):
tmp=random.uniform(0.0,1.0) #Uniform function allow me to find a random FLOAT number between a range(not like randint!)
Colors.append(tmp)
cmds.setAttr ( (myBlinn + '.color'), Colors[0],Colors[1],Colors[2], type = 'double3' )
cmds.select(myBook[0]+'.f[0:4]')
cmds.hyperShade( assign=myBlinn )
def ShaderGen():
#Add Color
#//Pages Color
myBlinn = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn + '.color'), 1.0,0.8,0.44, type = 'double3' )
#//Cover Color
myBlinn2 = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn2 + '.color'), 1.0,1.0,1.0, type = 'double3' )
#//Cover Details Color
myBlinn3 = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn3 + '.color'), 1.0,1.0,1.0, type = 'double3' )
return myBlinn,myBlinn2,myBlinn3
def BookShelf():
NumberOfBooks=5 #Inserted from user
myBlinn=''
myBlinn2=''
myBlinn3=''
myBlinn,myBlinn2,myBlinn3=ShaderGen()
myRowShelfGroup=cmds.group(em=True,n='RowShelfGroup')
for i in range(NumberOfBooks):
BookGen(myBlinn,myBlinn2,myBlinn3)
BookShelf()
You are using same shadernode over and over and finally all using same shadernode so you will get same color on all objects. You need to move myBlinn,myBlinn2,myBlinn3=ShaderGen() in BookGen function to get what you looking for .. here is a working version
import maya.cmds as cmds
import random
def BookGen():
myBook=cmds.polyCube(name='Book',h=8,w=4,d=2) #Create a testCube with that Name
myBlinn,myBlinn2,myBlinn3=ShaderGen()
#Modeling that I didn't include
#//Cover Color
Colors=[]
for i in range(3):
tmp=random.uniform(0.0,1.0) #Uniform function allow me to find a random FLOAT number between a range(not like randint!)
Colors.append(tmp)
cmds.setAttr ( (myBlinn + '.color'), Colors[0],Colors[1],Colors[2], type = 'double3' )
cmds.select(myBook[0]+'.f[0:4]')
cmds.hyperShade( assign=myBlinn )
def ShaderGen():
#Add Color
#//Pages Color
myBlinn = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn + '.color'), 1.0,0.8,0.44, type = 'double3' )
#//Cover Color
myBlinn2 = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn2 + '.color'), 1.0,1.0,1.0, type = 'double3' )
#//Cover Details Color
myBlinn3 = cmds.shadingNode( 'blinn', asShader=True)
#cmds.setAttr ( (myBlinn3 + '.color'), 1.0,1.0,1.0, type = 'double3' )
return myBlinn,myBlinn2,myBlinn3
def BookShelf():
NumberOfBooks=5 #Inserted from user
myBlinn=''
myBlinn2=''
myBlinn3=''
myRowShelfGroup=cmds.group(em=True,n='RowShelfGroup')
for i in range(NumberOfBooks):
BookGen()
BookShelf()