def testCoordinateSystem( self ) :

		coordinateSystem = GafferScene.CoordinateSystem()
		renderer = GafferScene.Private.IECoreScenePreview.CapturingRenderer()
		controller = GafferScene.RenderController( coordinateSystem["out"], Gaffer.Context(), renderer )
		controller.update()

		capturedObject = renderer.capturedObject( "/coordinateSystem" )
		self.assertEqual( capturedObject.capturedSamples(), [ coordinateSystem["out"].object( "/coordinateSystem" ) ] )
예제 #2
0
    def testDirtyPropagation(self):

        c = GafferScene.CoordinateSystem()

        dirtied = GafferTest.CapturingSlot(c.plugDirtiedSignal())
        c["transform"]["translate"]["x"].setValue(10)
        self.failUnless(c["out"]["transform"] in [p[0] for p in dirtied])

        dirtied = GafferTest.CapturingSlot(c.plugDirtiedSignal())
        c["name"].setValue("yupyup")
        self.failUnless(c["out"]["childNames"] in [p[0] for p in dirtied])
        self.failUnless(c["out"]["globals"] in [p[0] for p in dirtied])
예제 #3
0
    def testHiddenCoordinateSystem(self):

        s = Gaffer.ScriptNode()
        s["fileName"].setValue(self.temporaryDirectory() + "/test.gfr")

        s["c"] = GafferScene.CoordinateSystem()
        s["c"]["name"].setValue("myCoordSys")

        s["g"] = GafferScene.Group()
        s["g"]["in"][0].setInput(s["c"]["out"])

        s["f1"] = GafferScene.PathFilter()
        s["f2"] = GafferScene.PathFilter()

        s["a1"] = GafferScene.StandardAttributes()
        s["a1"]["attributes"]["visibility"]["enabled"].setValue(True)
        s["a1"]["attributes"]["visibility"]["value"].setValue(False)
        s["a1"]["in"].setInput(s["g"]["out"])
        s["a1"]["filter"].setInput(s["f1"]["out"])

        s["a2"] = GafferScene.StandardAttributes()
        s["a2"]["attributes"]["visibility"]["enabled"].setValue(True)
        s["a2"]["attributes"]["visibility"]["value"].setValue(True)
        s["a2"]["in"].setInput(s["a1"]["out"])
        s["a2"]["filter"].setInput(s["f2"]["out"])

        s["r"] = GafferRenderMan.RenderManRender()
        s["r"]["mode"].setValue("generate")
        s["r"]["ribFileName"].setValue(self.temporaryDirectory() + "/test.rib")
        s["r"]["in"].setInput(s["a2"]["out"])

        s["r"].execute()
        rib = "\n".join(
            file(self.temporaryDirectory() + "/test.rib").readlines())
        self.assertTrue("CoordinateSystem \"/group/myCoordSys\"" in rib)

        s["f1"]["paths"].setValue(IECore.StringVectorData(["/group"
                                                           ]))  # hide group

        s["r"].execute()
        rib = "\n".join(
            file(self.temporaryDirectory() + "/test.rib").readlines())
        self.assertTrue("CoordinateSystem" not in rib)

        s["f2"]["paths"].setValue(
            IECore.StringVectorData([
                "/group/myCoordSys"
            ]))  # show coordsys (but parent still hidden)

        s["r"].execute()
        rib = "\n".join(
            file(self.temporaryDirectory() + "/test.rib").readlines())
        self.assertTrue("CoordinateSystem" not in rib)
예제 #4
0
    def testCoordinateSystemSamples(self):

        coordinateSystem = GafferScene.CoordinateSystem()
        with Gaffer.Context() as c:
            c["scene:path"] = IECore.InternedStringVectorData(
                ["coordinateSystem"])
            samples = GafferScene.Private.RendererAlgo.objectSamples(
                coordinateSystem["out"]["object"], [0.75, 1.25])
            self.assertEqual(len(samples), 1)
            self.assertEqual(
                samples[0],
                coordinateSystem["out"].object("/coordinateSystem"))
예제 #5
0
    def test(self):

        c = GafferScene.CoordinateSystem()
        self.assertSceneValid(c["out"])

        self.assertEqual(c["out"].bound("/coordinateSystem"),
                         IECore.Box3f(IECore.V3f(0), IECore.V3f(1)))

        o = c["out"].object("/coordinateSystem")
        self.assertTrue(isinstance(o, IECoreScene.CoordinateSystem))

        s = c["out"].set("__coordinateSystems")
        self.assertEqual(s.value.paths(), ["/coordinateSystem"])
예제 #6
0
    def testCoordinateSystem(self):

        s = Gaffer.ScriptNode()
        s["fileName"].setValue("/tmp/test.gfr")

        s["c"] = GafferScene.CoordinateSystem()
        s["c"]["name"].setValue("myCoordSys")

        s["r"] = GafferRenderMan.RenderManRender()
        s["r"]["mode"].setValue("generate")
        s["r"]["ribFileName"].setValue("/tmp/test.rib")
        s["r"]["in"].setInput(s["c"]["out"])

        s["r"].execute()

        rib = "\n".join(file("/tmp/test.rib").readlines())
        self.assertTrue("CoordinateSystem \"/myCoordSys\"" in rib)
예제 #7
0
    def testMoveCoordinateSystem(self):

        shader = self.compileShader(
            os.path.dirname(__file__) + "/shaders/coordSysDot.sl")

        s = Gaffer.ScriptNode()

        s["plane"] = GafferScene.Plane()

        s["shader"] = GafferRenderMan.RenderManShader()
        s["shader"].loadShader(shader)
        s["shader"]["parameters"]["coordSys"].setValue(
            "/group/coordinateSystem")

        s["shaderAssignment"] = GafferScene.ShaderAssignment()
        s["shaderAssignment"]["in"].setInput(s["plane"]["out"])
        s["shaderAssignment"]["shader"].setInput(s["shader"]["out"])

        s["camera"] = GafferScene.Camera()
        s["camera"]["transform"]["translate"]["z"].setValue(1)

        s["coordSys"] = GafferScene.CoordinateSystem()

        s["g"] = GafferScene.Group()
        s["g"]["in"].setInput(s["shaderAssignment"]["out"])
        s["g"]["in1"].setInput(s["camera"]["out"])
        s["g"]["in2"].setInput(s["coordSys"]["out"])

        s["d"] = GafferScene.Outputs()
        s["d"].addOutput(
            "beauty",
            IECore.Display(
                "test", "ieDisplay", "rgba", {
                    "quantize": IECore.FloatVectorData([0, 0, 0, 0]),
                    "driverType": "ImageDisplayDriver",
                    "handle": "myLovelyPlane",
                }))
        s["d"]["in"].setInput(s["g"]["out"])

        s["o"] = GafferScene.StandardOptions()
        s["o"]["options"]["renderCamera"]["value"].setValue("/group/camera")
        s["o"]["options"]["renderCamera"]["enabled"].setValue(True)
        s["o"]["in"].setInput(s["d"]["out"])

        s["r"] = GafferRenderMan.InteractiveRenderManRender()
        s["r"]["in"].setInput(s["o"]["out"])

        # start a render, give it time to finish, and check the output

        s["r"]["state"].setValue(s["r"].State.Running)

        time.sleep(2)

        c = self.__colorAtUV(
            IECore.ImageDisplayDriver.storedImage("myLovelyPlane"),
            IECore.V2f(0.5),
        )
        self.assertAlmostEqual(c[1], 1, delta=0.001)

        # move the coordinate system, and check the output

        s["coordSys"]["transform"]["translate"]["x"].setValue(0.1)

        time.sleep(2)

        c = self.__colorAtUV(
            IECore.ImageDisplayDriver.storedImage("myLovelyPlane"),
            IECore.V2f(0.6, 0.5),
        )
        self.assertAlmostEqual(c[0], 1)

        c = self.__colorAtUV(
            IECore.ImageDisplayDriver.storedImage("myLovelyPlane"),
            IECore.V2f(0.6, 0.7),
        )
        self.assertAlmostEqual(c[0], 0)

        # scale the coordinate system to cover everything, and check again

        s["coordSys"]["transform"]["scale"].setValue(IECore.V3f(100))

        time.sleep(2)

        for p in [
                IECore.V2f(0.5),
                IECore.V2f(0.1),
                IECore.V2f(0.9),
        ]:
            c = self.__colorAtUV(
                IECore.ImageDisplayDriver.storedImage("myLovelyPlane"),
                p,
            )
            self.assertAlmostEqual(c[0], 1, delta=0.001)