Exemplo n.º 1
0
	def testDefaultExpressionForSupportedPlugs( self ) :

		s = Gaffer.ScriptNode()

		s["n"] = Gaffer.Node()
		s["n"]["user"].addChild( Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.StringPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V2fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V2iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Color3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Color4fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Box2fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Box2iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Box3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Box3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.IntVectorDataPlug( defaultValue = IECore.IntVectorData( [ 0, 1 ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.FloatVectorDataPlug( defaultValue = IECore.FloatVectorData( [ 0, 1 ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.StringVectorDataPlug( defaultValue = IECore.StringVectorData( [ "a", "b" ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V3fVectorDataPlug( defaultValue = IECore.V3fVectorData( [ IECore.V3f( 1 ) ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Color3fVectorDataPlug( defaultValue = IECore.Color3fVectorData( [ IECore.Color3f( 1 ) ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.M44fVectorDataPlug( defaultValue = IECore.M44fVectorData( [ IECore.M44f() ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V2iVectorDataPlug( defaultValue = IECore.V2iVectorData( [ IECore.V2i() ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )

		s["e"] = Gaffer.Expression()

		for plug in s["n"]["user"] :

			value = plug.getValue()
			s["e"].setExpression( s["e"].defaultExpression( plug, "python" ) )
			self.assertTrue( plug.getInput().node().isSame( s["e"] ) )
			self.assertEqual( plug.getValue(), value )
Exemplo n.º 2
0
    def testPlugTypes(self):

        box = Gaffer.Box("PlugTypes")
        box["int"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default
                                    | Gaffer.Plug.Flags.Dynamic)
        box["float"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default
                                        | Gaffer.Plug.Flags.Dynamic)
        box["string"] = Gaffer.StringPlug(flags=Gaffer.Plug.Flags.Default
                                          | Gaffer.Plug.Flags.Dynamic)
        box["v2i"] = Gaffer.V2iPlug(flags=Gaffer.Plug.Flags.Default
                                    | Gaffer.Plug.Flags.Dynamic)
        box["v3i"] = Gaffer.V3iPlug(flags=Gaffer.Plug.Flags.Default
                                    | Gaffer.Plug.Flags.Dynamic)
        box["color4f"] = Gaffer.Color4fPlug(flags=Gaffer.Plug.Flags.Default
                                            | Gaffer.Plug.Flags.Dynamic)
        box["spline"] = Gaffer.SplinefColor3fPlug(
            flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic)

        Gaffer.ExtensionAlgo.exportExtension("PlugTypesExtension", [box],
                                             self.temporaryDirectory())
        sys.path.append(os.path.join(self.temporaryDirectory(), "python"))

        import PlugTypesExtension
        node = PlugTypesExtension.PlugTypes()

        for plug in Gaffer.Plug.Range(node):
            self.assertIsInstance(plug, type(box[plug.getName()]))
            if hasattr(plug, "getValue"):
                self.assertEqual(plug.getValue(),
                                 box[plug.getName()].getValue())

        for plug in Gaffer.Plug.RecursiveRange(node):
            self.assertFalse(plug.getFlags(Gaffer.Plug.Flags.Dynamic))
Exemplo n.º 3
0
    def testExpectedResult(self):

        ramp = GafferImage.Ramp()
        ramp["format"].setValue(GafferImage.Format(128, 128))
        ramp["transform"]["rotate"].setValue(45)
        ramp["transform"]["scale"]["x"].setValue(.5)

        ramp["startPosition"].setValue(imath.V2f(0, 64))
        ramp["endPosition"].setValue(imath.V2f(128, 64))
        ramp["ramp"].addChild(Gaffer.ValuePlug("p2"))
        ramp["ramp"]["p2"].addChild(
            Gaffer.FloatPlug("x", defaultValue=0.5308765172958374))
        ramp["ramp"]["p2"].addChild(
            Gaffer.Color4fPlug("y",
                               defaultValue=imath.Color4f(
                                   0.530900002, 0, 0, 0.50999999)))

        reader = GafferImage.ImageReader()
        reader["fileName"].setValue(
            os.path.dirname(__file__) + "/images/GafferRamp.exr")

        self.assertImagesEqual(ramp["out"],
                               reader["out"],
                               ignoreMetadata=True,
                               maxDifference=0.001)
Exemplo n.º 4
0
    def testColor4fDoesntAcceptColor3fInput(self):

        p4 = Gaffer.Color4fPlug()
        p3 = Gaffer.Color3fPlug(direction=Gaffer.Plug.Direction.Out)

        self.failIf(p4.acceptsInput(p3))

        self.assertRaises(RuntimeError, p4.setInput, p3)
Exemplo n.º 5
0
    def testColor3fAcceptsColor4fInput(self):

        p4 = Gaffer.Color4fPlug(direction=Gaffer.Plug.Direction.Out)
        p3 = Gaffer.Color3fPlug()

        self.failUnless(p3.acceptsInput(p4))

        p3.setInput(p4)

        self.failUnless(p3.getInput().isSame(p4))
        self.failUnless(p3[0].getInput().isSame(p4[0]))
        self.failUnless(p3[1].getInput().isSame(p4[1]))
        self.failUnless(p3[2].getInput().isSame(p4[2]))
        self.assertEqual(p4[3].outputs(), ())
Exemplo n.º 6
0
    def testGanging(self):

        p = Gaffer.Color4fPlug()

        self.assertFalse(p.isGanged())
        self.assertTrue(p.canGang())
        p.gang()
        self.assertTrue(p.isGanged())
        self.assertTrue(p[0].getInput() is None)
        self.assertTrue(p[1].getInput().isSame(p[0]))
        self.assertTrue(p[2].getInput().isSame(p[0]))
        self.assertTrue(p[3].getInput() is None)

        p.ungang()
        for c in p.children():
            self.assertTrue(c.getInput() is None)
        self.assertFalse(p.isGanged())
        self.assertTrue(p.canGang())
Exemplo n.º 7
0
	def testVectorAndColourOutputs( self ) :

		s = Gaffer.ScriptNode()

		s["n"] = Gaffer.Node()
		s["n"]["user"].addChild( Gaffer.V2fPlug( "v2f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V2iPlug( "v2i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V3fPlug( "v3f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.V3iPlug( "v3i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Color3fPlug( "c3f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
		s["n"]["user"].addChild( Gaffer.Color4fPlug( "c4f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )

		s["e"] = Gaffer.Expression()
		s["e"]["engine"].setValue( "python" )

		s["e"]["expression"].setValue(
			'import IECore;'
			'parent["n"]["user"]["v2f"] = IECore.V2f( 1, 2 );'
			'parent["n"]["user"]["v2i"] = IECore.V2i( 3, 4 );'
			'parent["n"]["user"]["v3f"] = IECore.V3f( 4, 5, 6 );'
			'parent["n"]["user"]["v3i"] = IECore.V3i( 6, 7, 8 );'
			'parent["n"]["user"]["c3f"] = IECore.Color3f( 9, 10, 11 );'
			'parent["n"]["user"]["c4f"] = IECore.Color4f( 12, 13, 14, 15 );'
		)

		def assertExpectedValues( script ) :

			self.assertEqual( script["n"]["user"]["v2f"].getValue(), IECore.V2f( 1, 2 ) )
			self.assertEqual( script["n"]["user"]["v2i"].getValue(), IECore.V2i( 3, 4 ) )
			self.assertEqual( script["n"]["user"]["v3f"].getValue(), IECore.V3f( 4, 5, 6 ) )
			self.assertEqual( script["n"]["user"]["v3i"].getValue(), IECore.V3i( 6, 7, 8 ) )
			self.assertEqual( script["n"]["user"]["c3f"].getValue(), IECore.Color3f( 9, 10, 11 ) )
			self.assertEqual( script["n"]["user"]["c4f"].getValue(), IECore.Color4f( 12, 13, 14, 15 ) )

		assertExpectedValues( s )

		s2 = Gaffer.ScriptNode()
		s2.execute( s.serialise() )

		assertExpectedValues( s2 )
Exemplo n.º 8
0
    def __init__(self, name="ColoriseSHO"):

        GafferImage.ImageProcessor.__init__(self, name)

        self["show"] = Gaffer.IntPlug(defaultValue=0, minValue=0, maxValue=3)

        # Channel colorising

        merge = GafferImage.Merge()
        self["__Merge"] = merge
        merge["operation"].setValue(0)

        outputSwitch = Gaffer.Switch()
        self["__Switch_output"] = outputSwitch
        outputSwitch.setup(self["out"])
        outputSwitch["index"].setInput(self["show"])
        outputSwitch["in"][0].setInput(merge["out"])

        for channel in GafferAstro.NarrowbandChannels:

            self["source%s" % channel] = Gaffer.StringPlug(
                defaultValue='%s.input' % channel)
            self["range%s" %
                 channel] = Gaffer.V2fPlug(defaultValue=imath.V2f(0, 1))
            self["map%s" % channel] = Gaffer.SplinefColor4fPlug(
                defaultValue=self.__mapDefaults[channel])
            self["saturation%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0,
                                                              minValue=0.0)
            self["multiply%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0)
            self["gamma%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0)

            colorise = GafferAstro.Colorise()
            self["__Colorise_%s" % channel] = colorise

            colorise["in"].setInput(self["in"])
            colorise["channel"].setInput(self["source%s" % channel])
            colorise["mapEnabled"].setValue(True)
            colorise["range"].setInput(self["range%s" % channel])
            colorise["enabled"].setInput(colorise["channel"])
            # Work around issue where setInput doesn't sync the number of knots
            colorise["map"].setValue(self["map%s" % channel].getValue())
            colorise["map"].setInput(self["map%s" % channel])

            cdl = GafferImage.CDL()
            self["__CDL_%s" % channel] = cdl
            cdl["in"].setInput(colorise["out"])
            cdl["saturation"].setInput(self["saturation%s" % channel])

            grade = GafferImage.Grade()
            self["__Grade_%s" % channel] = grade
            grade["in"].setInput(cdl["out"])
            grade["multiply"].gang()
            grade["multiply"]["r"].setInput(self["multiply%s" % channel])
            grade["gamma"].gang()
            grade["gamma"]["r"].setInput(self["gamma%s" % channel])

            merge["in"][len(merge["in"]) - 1].setInput(grade["out"])
            outputSwitch["in"][len(outputSwitch["in"]) - 1].setInput(
                grade["out"])

        self["saturation"] = Gaffer.FloatPlug(defaultValue=1.0, minValue=0.0)
        self["blackPoint"] = Gaffer.FloatPlug(defaultValue=0.0)
        self["whitePoint"] = Gaffer.FloatPlug(defaultValue=1.0)
        self["multiply"] = Gaffer.Color4fPlug(
            defaultValue=imath.Color4f(1, 1, 1, 1))
        self["gamma"] = Gaffer.FloatPlug(defaultValue=1.0, minValue=0.0)

        outputCdl = GafferImage.CDL()
        self["__CDL_output"] = outputCdl
        outputCdl["in"].setInput(outputSwitch["out"])
        outputCdl["saturation"].setInput(self["saturation"])

        outputGrade = GafferImage.Grade()
        self["__Grade_output"] = outputGrade
        outputGrade["in"].setInput(outputCdl["out"])
        outputGrade["blackPoint"].gang()
        outputGrade["blackPoint"]["r"].setInput(self["blackPoint"])
        outputGrade["whitePoint"].gang()
        outputGrade["whitePoint"]["r"].setInput(self["whitePoint"])
        outputGrade["multiply"].setInput(self["multiply"])
        outputGrade["gamma"].gang()
        outputGrade["gamma"]["r"].setInput(self["gamma"])

        copyChannels = GafferImage.CopyChannels()
        self["__CopyChannels"] = copyChannels
        copyChannels["in"][0].setInput(self["in"])
        copyChannels["in"][1].setInput(outputGrade["out"])
        copyChannels["channels"].setValue("*")

        self["out"].setInput(copyChannels["out"])