Python + Maya - 如何将浮点数更改为时间值

时间:2015-02-20 01:34:34

标签: python maya

因此,我基本上尝试创建textField,其中用户在startFrameendFrame中输入内容,并按照滑块中的值进行缩放。

enter image description here

所以,对于floatFields,我有这个。

cmds.text( label='Start Frame' ) 
startFrame = cmds.floatField()

cmds.text( label='End Frame' ) 
endFrame = cmds.floatField()

所以,根据我的理解,startFrameendFrame是花车,但我收到此错误...

  

错误:TypeError:flag' time'的参数无效。预期(时间,   [时间]),得到(unicode,unicode)

他们为什么要unicode?如何将它们更改为时间变量?我环顾四周,但我是Maya + Python的新手,我有点困惑。

感谢。

编辑:这是完整的代码段。

def scaleAnimation():
    cmds.scaleKey( time=(startFrame,endFrame), timeScale=keyFrameScale, timePivot=0 )

cmds.frameLayout(collapsable=True, label = "Scale Keyframes", width = 475)

#get scale for the keyframes
keyFrameScale =  cmds.floatSliderGrp(label='Keyframe Scale',field=True,minValue=0.0,maxValue=2.0,value=0.5)

cmds.text( label='Start Frame' )
startFrame = cmds.floatField()

cmds.text( label='End Frame' )
endFrame =  cmds.floatField()

cmds.button(label='Scale Keyframes',command='scaleAnimation()')

cmds.setParent("..")

1 个答案:

答案 0 :(得分:1)

从你命名变量的方式和你得到的错误中,我怀疑你没有以正确的方式访问控件的值。

startFrameendFrame不是花车。它们只是控件的名称。如果在期望time的函数中使用这些(作为float),则会出现错误,因为您传递的这些变量只是名称为字符串(Unicode)而不是传递控件的值。

在Maya中,当您创建控件时,创建它的命令/函数将返回所创建控件的NAME。 EGS。 u'floatField1'

为了访问Maya中控件的任何值或其他方面,您将使用控件创建方法本身并传递要查询的控件的名称,传递查询标志query=True然后传递您要查询的参数,例如value=Truetext=True

在您的情况下,您的方式是:

# First make the controls. Note the clearer variable names

cmds.text( label='Start Frame' )
startFrame_control = cmds.floatField()
cmds.text( label='End Frame' )
endFrame_control = cmds.floatField()

# this is how you should access the values

startFrame = cmds.floatField(startFrame_control, query=True, value=True)
endFrame = cmds.floatField(endFrame_control, query=True, value=True)

# NOW these are float values as you would expect.

# You could use them as time parameters in any function that expects time params.

print "The start frame is:",  startFrame
print "The end frame is:",  endFrame

cmds.scaleKey( time=(startFrame,endFrame), timeScale=keyFrameScale, timePivot=0)

请务必查看文档:{​​{3}}