def testMinMax(self): b = Gaffer.Box3fPlug("p", Gaffer.Plug.Direction.In, IECore.Box3f(IECore.V3f(-0.5), IECore.V3f(0.5))) v = Gaffer.V3fPlug() self.assertEqual(b.minValue(), v.minValue()) self.assertEqual(b.maxValue(), v.maxValue()) self.assertFalse(b.hasMinValue()) self.assertFalse(b.hasMaxValue()) self.assertEqual(b.minValue(), v.minValue()) self.assertEqual(b.maxValue(), v.maxValue()) b = Gaffer.Box3fPlug("p", minValue=IECore.V3f(-1, -2, -3), maxValue=IECore.V3f(1, 2, 3)) self.assertTrue(b.hasMinValue()) self.assertTrue(b.hasMaxValue()) self.assertEqual(b.minValue(), IECore.V3f(-1, -2, -3)) self.assertEqual(b.maxValue(), IECore.V3f(1, 2, 3)) c = b.createCounterpart("c", Gaffer.Plug.Direction.In) self.assertTrue(c.hasMinValue()) self.assertTrue(c.hasMaxValue()) self.assertEqual(c.minValue(), IECore.V3f(-1, -2, -3)) self.assertEqual(c.maxValue(), IECore.V3f(1, 2, 3))
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 )
def testBoxOutputs( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"].addChild( Gaffer.Box2fPlug( "b2f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box2iPlug( "b2i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box3fPlug( "b3f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box3iPlug( "b3i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["e"] = Gaffer.Expression() s["e"].setExpression( 'import IECore;' 'parent["n"]["user"]["b2f"] = IECore.Box2f( IECore.V2f( 1, 2 ), IECore.V2f( 3, 4 ) );' 'parent["n"]["user"]["b2i"] = IECore.Box2i( IECore.V2i( 5, 6 ), IECore.V2i( 7, 8 ) );' 'parent["n"]["user"]["b3f"] = IECore.Box3f( IECore.V3f( 9, 10, 11 ), IECore.V3f( 12, 13, 14 ) );' 'parent["n"]["user"]["b3i"] = IECore.Box3i( IECore.V3i( 15, 16, 17 ), IECore.V3i( 18, 19, 20 ) );' ) def assertExpectedValues( script ) : self.assertEqual( script["n"]["user"]["b2f"].getValue(), IECore.Box2f( IECore.V2f( 1, 2 ), IECore.V2f( 3, 4 ) ) ) self.assertEqual( script["n"]["user"]["b2i"].getValue(), IECore.Box2i( IECore.V2i( 5, 6 ), IECore.V2i( 7, 8 ) ) ) self.assertEqual( script["n"]["user"]["b3f"].getValue(), IECore.Box3f( IECore.V3f( 9, 10, 11 ), IECore.V3f( 12, 13, 14 ) ) ) self.assertEqual( script["n"]["user"]["b3i"].getValue(), IECore.Box3i( IECore.V3i( 15, 16, 17 ), IECore.V3i( 18, 19, 20 ) ) ) assertExpectedValues( s ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) assertExpectedValues( s2 )
def __init__(self, name="LDTGetBoundingBox"): super(LDTGetBoundingBox, self).__init__(name) # create a Gaffer scene reader # connect the reader's output to the output self.setName("BoundBoxReader") self["in"] = GafferScene.ScenePlug(direction=Gaffer.Plug.Direction.In) # Make path read only for now # TODO: check if path exists # TODO: get bounding box in world space self["path"] = Gaffer.StringPlug() self["path"].setValue("/") self["bound"] = Gaffer.Box3fPlug() Gaffer.Metadata.registerValue(self["bound"], 'readOnly', True) self["boundDiagonalLength"] = Gaffer.FloatPlug() Gaffer.Metadata.registerValue(self["boundDiagonalLength"], 'readOnly', True) self["boundSize"] = Gaffer.V3fPlug() Gaffer.Metadata.registerValue(self["boundSize"], 'readOnly', True) self["boundCenter"] = Gaffer.V3fPlug() Gaffer.Metadata.registerValue(self["boundCenter"], 'readOnly', True) self["out"] = GafferScene.ScenePlug( direction=Gaffer.Plug.Direction.Out) self["out"].setFlags(Gaffer.Plug.Flags.Serialisable, False) self["out"].setInput(self["in"]) self.__plugInputChanged = self.plugInputChangedSignal().connect( self.get_bound) self.__plugValueChanged = self.plugSetSignal().connect(self.get_bound)
def testCreateCounterpart( self ) : p1 = Gaffer.Box3fPlug( "b", Gaffer.Plug.Direction.Out, IECore.Box3f( IECore.V3f( -1 ), IECore.V3f( 1 ) ), Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) p2 = p1.createCounterpart( "c", Gaffer.Plug.Direction.In ) self.assertEqual( p2.getName(), "c" ) self.assertEqual( p2.direction(), Gaffer.Plug.Direction.In ) self.assertEqual( p2.defaultValue(), p1.defaultValue() )
def testRunTimeTyped( self ) : p = Gaffer.Box3fPlug() self.failUnless( p.isInstanceOf( Gaffer.ValuePlug.staticTypeId() ) ) self.failUnless( p.isInstanceOf( Gaffer.Plug.staticTypeId() ) ) t = p.typeId() self.assertEqual( IECore.RunTimeTyped.baseTypeId( t ), Gaffer.ValuePlug.staticTypeId() )
def testDynamicSerialisation( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.Box3fPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["p"].setValue( IECore.Box3f( IECore.V3f( -100 ), IECore.V3f( 1, 2, 3 ) ) ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) self.assertEqual( s2["n"]["p"].getValue(), s["n"]["p"].getValue() )
def testDynamicSerialisation( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = Gaffer.Box3fPlug( minValue=imath.V3f( -1 ), maxValue=imath.V3f( 1 ), flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["p"].setValue( imath.Box3f( imath.V3f( -100 ), imath.V3f( 1, 2, 3 ) ) ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) self.assertEqual( s2["n"]["p"].getValue(), s["n"]["p"].getValue() ) self.assertEqual( s2["n"]["p"].minValue(), s["n"]["p"].minValue() ) self.assertEqual( s2["n"]["p"].maxValue(), s["n"]["p"].maxValue() )