def test( self ) : n = nuke.nodes.RadialDistort() k = n.knob( "scale" ) self.assertEqual( IECoreNuke.getKnobValue( k ), imath.V3f( 1 ) ) self.assertEqual( IECoreNuke.getKnobValue( k, resultType=imath.V3d ), imath.V3d( 1 ) )
def __checkParameterKnobs(self, parameter, node, knobName=None, parameterPath=None, ignore=set()): if knobName is None: knobName = "parm" if parameterPath in ignore: return if isinstance(parameter, IECore.CompoundParameter): for k in parameter.keys(): childKnobName = knobName + "_" + parameter[k].name if not parameterPath: childParameterPath = k else: childParameterPath = parameterPath + "." + k self.__checkParameterKnobs(parameter[k], node, childKnobName, childParameterPath, ignore) else: knob = node.knob(knobName) self.failUnless(knob is not None) if isinstance(knob, nuke.Enumeration_Knob): self.assertEqual(knob.value(), parameter.getCurrentPresetName()) else: knobValue = None try: knobValue = IECoreNuke.getKnobValue(knob) if isinstance(parameter, IECore.V2dParameter): # getKnobValue defaults to V2f knobValue = IECore.V2d(knobValue[0], knobValue[1]) elif isinstance(parameter, IECore.V3dParameter): knobValue = IECore.V3d(knobValue[0], knobValue[1], knobValue[2]) except: # not all knob types have accessors yet. some of the numeric # knobs don't have them because nuke has bugs and returns those # knobs as the wrong type. try to get the value another way. knobValue = knob.getValue() self.assertEqual(parameter.getValue().value, knobValue)
def __checkParameterKnobs( self, parameter, node, knobName=None, parameterPath=None, ignore=set() ) : if knobName is None : knobName = "parm" if parameterPath in ignore : return if isinstance( parameter, IECore.CompoundParameter ) : for k in parameter.keys() : childKnobName = knobName + "_" + parameter[k].name if not parameterPath : childParameterPath = k else : childParameterPath = parameterPath + "." + k self.__checkParameterKnobs( parameter[k], node, childKnobName, childParameterPath, ignore ) else : knob = node.knob( knobName ) self.failUnless( knob is not None ) if isinstance( knob, nuke.Enumeration_Knob ) : self.assertEqual( knob.value(), parameter.getCurrentPresetName() ) else : knobValue = None try : knobValue = IECoreNuke.getKnobValue( knob ) if isinstance( parameter, IECore.V2dParameter ) : # getKnobValue defaults to V2f knobValue = imath.V2d( knobValue[0], knobValue[1] ) elif isinstance( parameter, IECore.V3dParameter ) : knobValue = imath.V3d( knobValue[0], knobValue[1], knobValue[2] ) except : # not all knob types have accessors yet. some of the numeric # knobs don't have them because nuke has bugs and returns those # knobs as the wrong type. try to get the value another way. knobValue = knob.getValue() self.assertEqual( parameter.getValue().value, knobValue )