我知道的唯一方法是使用滑块:
import maya.cmds as cmds
cmds.colorSliderGrp( 'polygonColour', label = "Colour", hsv = ( 1, 1, 1 ) )
然后从中获取RGB值:
rgb = cmds.colorSliderGrp( 'polygonColour', query = True, rgbValue = True )
然后将材质指定给多边形并为该材质指定颜色:
myShader = cmds.shadingNode( 'lambert', asShader = True, name = "polygonMaterial" )
cmds.setAttr( 'polygon1' + ":blockMaterial.color", rgb[ 0 ], rgb[ 1 ], rgb[ 2 ], type = 'double3' )
不使用滑块和/或不指定材质是否有更简单的方法?
如果您只想为现有的着色器指定一个新颜色,它是一个简单的
setAttr()
。每个着色器都有自己的属性集,因此需要设置的确切值取决于所需的着色器类型,但对于常见情况(lambert、phong和blinn),它只是.color
属性。设置颜色非常简单,只需传入所需的RGB值即可:在特定的面上获得材质球并不容易。最简单的方法是获取面并检查所有shadingEngine节点:
可以通过以下方式将材质球指定给面 我 cmds.sets('pCube1.f[99]',fe='initialShadingGroup')
其中
fe
的参数是shadingEngine节点。shader ball(您手工编辑的东西)与shadingEngine的.surfaceMaterial
属性相连接,您可以像我上面所做的那样获得它。如果要更改面的颜色而不指定明暗器,则要改为生成顶点颜色。菜单是Color>;Apply Color,命令是
polyColorPerVertex (faces, rgb=(r,g,b)
。所以在立方体上设置一个面的颜色看起来像视口中顶点颜色的显示由
.displayColors
属性或切换显示颜色属性菜单项控制。相关问题 更多 >
编程相关推荐