Changing polygons' colors in Maya via Python -
the way know use slider:
import maya.cmds cmds cmds.colorslidergrp( 'polygoncolour', label = "colour", hsv = ( 1, 1, 1 ) )
then taking rgb value that:
rgb = cmds.colorslidergrp( 'polygoncolour', query = true, rgbvalue = true )
and assigning material polygon , giving material color:
myshader = cmds.shadingnode( 'lambert', asshader = true, name = "polygonmaterial" ) cmds.setattr( 'polygon1' + ":blockmaterial.color", rgb[ 0 ], rgb[ 1 ], rgb[ 2 ], type = 'double3' )
is there easier approach without using slider and/or without assigning material?
if want assign new color existing shader(s), it's simple setattr()
. every shader has it's own attribute set, exact values need set depend on type of shader want, common cases (lambert, phong, , blinn) it's .color
attribute. setting color simple passing in rgb values want:
cmds.setattr(shader + '.color', 0, 1, 0) # green
getting shader on particular face not easy. easiest thing face , check shadingengine nodes :
shadingengine in cmds.ls(type="shadingengine"): if cmds.sets('pcube1.f[0]', im=shadingengine): shaderball = cmds.listconnections(sshadingengine, type = 'lambert')[0] print "face assigned %s" % shaderball
you can assign shader face cmds.sets('pcube1.f[99]', fe='initialshadinggroup')
where argument fe
shadingengine node. shader ball - thing edit hand - connected shadingengine's .surfacematerial
attribute, can way did above.
if want change color of face without shader assignment want make vertex colors instead. menu color > apply color, command polycolorpervertex (faces, rgb=(r,g,b)
. setting color of 1 face on cube looks
cmds.polycolorpervertex('pcube1', rgb=(1,0,0)) # red
the display of vertex colors in viewport controlled .displaycolors
attribute or colors > toggle display colors attribute menu item.
Comments
Post a Comment