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 ) )
Example #2
0
    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 )