【发布时间】:2019-04-08 00:22:04
【问题描述】:
我有一段代码会产生噪音。噪声在 0.0 到 1.0 范围内产生。只要我设置一个定义的数字,代码就可以工作。如果我允许用户使用滑块选择数字的最大范围,它将停止工作。
我有一个滑块,它在亮度计算中替换了 1.0 的值。一旦我将 Brightness 中的 1.0 值替换为一个名为 noiseAttribute 的滑块生成值,代码就会中断。它没有错误并且在技术上运行,但只是使对象变黑而不是锁定颜色值。
import maya.cmds as cmds
import random
import functools
colorList = cmds.ls('colorSet*')
def createUI( pWindowTitle, pNoiseVerts):
windowID = 'myWindowID'
if cmds.window( windowID, exists=True ):
cmds.deleteUI(windowID )
cmds.window( windowID, title=pWindowTitle, s=False, rtf=True )
cmds.rowColumnLayout( numberOfColumns=1, columnWidth=[(1,200)])
cmds.text(label= 'Max Value Lock')
noiseAttribute = cmds.floatSliderGrp( min=0.0, max=1.0, value=1, field=True)
cmds.button( label='Noise', command=functools.partial (addNoise) )
def cancelCallback( *pArgs ):
if cmds.window( windowID, exists=True ):
cmds.deleteUI( windowID)
cmds.button( label='Cancel', command=cancelCallback )
cmds.showWindow()
def pNoiseVerts(object, noiseAttribute):
verts = range(cmds.polyEvaluate(object, vertex=True))
random.shuffle(verts)
for vertex in verts:
cmds.select(object + '.vtx[' + str(vertex) + ']')
brightness = random.uniform(0.0, noiseAttribute)
cmds.polyColorPerVertex(rgb=(brightness, brightness, brightness))
cmds.setAttr(object + '.displayColors', True)
def addNoise(noiseAttribute, *args):
if len(colorList) > 0:
cmds.delete(colorList)
objects = cmds.ls( sl=True, long=True)
if len(objects) > 0:
setList = cmds.ls('colorSet*')
result = cmds.polyColorSet ( create=True, colorSet='colorSet#')
result = cmds.polyColorPerVertex ( rgb=[0.5,0.5,0.5])
result = cmds.polyColorSet ( create=True, colorSet='colorSet#')
for object in objects:
pNoiseVerts(object, noiseAttribute)
else:
cmds.inViewMessage (amg='Message: <hl>Please select an object first</hl>.', pos='midCenter', fade=True )
createUI( 'Config', pNoiseVerts)
如前所述,对象变为黑色而不是锁定其最大颜色值。
【问题讨论】:
-
滑块生成值是多少?
-
它可以是 0.0 到 1.0 之间的任何值。这是在“最大值锁定”下的噪声属性中设置的。用户可以定义该值是什么。如果我只是将其设置为 1.0 而不是使用 (0.0,noiseAttribute) 代码将按预期运行
-
如果你尝试
0.9会怎样? -
只要我自己在亮度 (0.0, 1.0) 内设置值,任何值都有效。 (0.0, 0.9) 正确限制了值的使用。如果我将滑块的范围设置为 0.0 到 0.9,如果我调用 noiseAttribute 而不是特定值,它仍然会使对象完全变黑。
-
嘿@l'L'l 只是想感谢你也试图帮助我!您最初对我没有传递值的怀疑是正确的!