Ejemplo n.º 1
0
    def testBasic(self):

        g = GafferScene.Group()

        inputs = []
        for shader, name in [
            ("spot_light", "spot1"),
            ("spot_light", "spot2"),
            ("distant_light", "distant1"),
            ("skydome_light", "env1"),
        ]:
            l = GafferArnold.ArnoldLight()
            l.loadShader(shader)
            l["name"].setValue(name)
            inputs.append(l)

        inputs.append(GafferScene.Camera())
        for i in inputs:
            g["in"][-1].setInput(i["out"])

        f = GafferScene.PathFilter()
        f['paths'].setValue(
            IECore.StringVectorData(
                ["/group/spot1", "/group/env1", "/group/distant1"]))

        lc = GafferScene.LightToCamera()
        lc["in"].setInput(g["out"])
        lc["filter"].setInput(f["out"])

        # Test spot to persp cam
        spotCam = lc["out"].object("/group/spot1")
        self.assertEqual(spotCam.calculateFieldOfView(), imath.V2f(65))
        self.assertEqual(spotCam.getClippingPlanes(), imath.V2f(0.01, 100000))
        self.assertEqual(spotCam.getProjection(), 'perspective')
        self.assertEqual(spotCam.getFilmFit(), IECoreScene.Camera.FilmFit.Fit)
        self.assertEqual(spotCam.hasResolution(), False)

        # Test distant to ortho cam
        distantCam = lc["out"].object("/group/distant1")
        self.assertEqual(distantCam.getAperture(), imath.V2f(2, 2))
        self.assertEqual(distantCam.getClippingPlanes(),
                         imath.V2f(-100000, 100000))
        self.assertEqual(distantCam.getProjection(), 'orthographic')
        self.assertEqual(distantCam.getFilmFit(),
                         IECoreScene.Camera.FilmFit.Fit)
        self.assertEqual(distantCam.hasResolution(), False)

        # Test light with no corresponding camera ( gets default cam )
        self.assertEqual(
            lc["out"].object("/group/env1").parameters(),
            IECore.CompoundData({
                'projection': IECore.StringData('perspective'),
            }))

        self.assertEqual(lc["out"].set("__lights").value.paths(),
                         ["/group/spot2"])
        self.assertEqual(
            set(lc["out"].set("__cameras").value.paths()),
            set([
                "/group/camera", "/group/spot1", "/group/distant1",
                "/group/env1"
            ]))
Ejemplo n.º 2
0
    def testBasic(self):

        g = GafferScene.Group()

        inputs = []
        for shader, name in [
            ("spot_light", "spot1"),
            ("spot_light", "spot2"),
            ("distant_light", "distant1"),
            ("skydome_light", "env1"),
        ]:
            l = GafferArnold.ArnoldLight()
            l.loadShader(shader)
            l["name"].setValue(name)
            inputs.append(l)

        inputs.append(GafferScene.Camera())
        for i in inputs:
            g["in"][-1].setInput(i["out"])

        f = GafferScene.PathFilter()
        f['paths'].setValue(
            IECore.StringVectorData(
                ["/group/spot1", "/group/env1", "/group/distant1"]))

        lc = GafferScene.LightToCamera()
        lc["in"].setInput(g["out"])
        lc["filter"].setInput(f["out"])

        # Test spot to persp cam
        self.assertEqual(
            lc["out"].object("/group/spot1").parameters(),
            IECore.CompoundData({
                'projection:fov':
                IECore.FloatData(65),
                'clippingPlanes':
                IECore.V2fData(IECore.V2f(0.01, 100000)),
                'projection':
                IECore.StringData('perspective'),
                'resolutionOverride':
                IECore.V2iData(IECore.V2i(512, 512)),
                'screenWindow':
                IECore.Box2fData(
                    IECore.Box2f(IECore.V2f(-1, -1), IECore.V2f(1, 1)))
            }))

        # Test distant to ortho cam
        self.assertEqual(
            lc["out"].object("/group/distant1").parameters(),
            IECore.CompoundData({
                'clippingPlanes':
                IECore.V2fData(IECore.V2f(-100000, 100000)),
                'projection':
                IECore.StringData('orthographic'),
                'resolutionOverride':
                IECore.V2iData(IECore.V2i(512, 512)),
                'screenWindow':
                IECore.Box2fData(
                    IECore.Box2f(IECore.V2f(-1, -1), IECore.V2f(1, 1)))
            }))

        # Test light with no corresponding camera ( gets default cam )
        self.assertEqual(
            lc["out"].object("/group/env1").parameters(),
            IECore.CompoundData({
                'projection':
                IECore.StringData('perspective'),
                'resolutionOverride':
                IECore.V2iData(IECore.V2i(512, 512))
            }))

        self.assertEqual(lc["out"].set("__lights").value.paths(),
                         ["/group/spot2"])
        self.assertEqual(
            set(lc["out"].set("__cameras").value.paths()),
            set([
                "/group/camera", "/group/spot1", "/group/distant1",
                "/group/env1"
            ]))