コード例 #1
0
    def test(self):

        p = GafferScene.Plane()
        s = GafferScene.Sphere()
        g = GafferScene.Group()
        g["in"][0].setInput(p["out"])
        g["in"][1].setInput(s["out"])

        f = GafferScene.PathFilter()
        f["paths"].setValue(IECore.StringVectorData(["/group/sphere"]))

        l = GafferArnold.ArnoldMeshLight()

        l["in"].setInput(g["out"])
        l["filter"].setInput(f["out"])

        self.assertEqual(
            l["out"].attributes("/group/sphere")["ai:light"][0].name,
            "mesh_light")
        self.assertTrue("ai:light" not in l["out"].attributes("/group/plane"))

        for v in ("shadow", "diffuse_transmit", "specular_transmit", "volume",
                  "diffuse_reflect", "specular_reflect", "subsurface"):
            v = "ai:visibility:" + v
            self.assertEqual(l["out"].attributes("/group/sphere")[v].value,
                             False)
            self.assertTrue(v not in l["out"].attributes("/group/plane"))

        self.assertEqual(set(l["out"].set("__lights").value.paths()),
                         {"/group/sphere"})
コード例 #2
0
ファイル: ArnoldRenderTest.py プロジェクト: sebaDesmet/gaffer
    def testNoLinkedLightsOnLights(self):

        sphere = GafferScene.Sphere()

        meshLightShader = GafferArnold.ArnoldShader()
        meshLightShader.loadShader("flat")

        meshLightFilter = GafferScene.PathFilter()
        meshLightFilter["paths"].setValue(IECore.StringVectorData(["/sphere"]))

        meshLight = GafferArnold.ArnoldMeshLight()
        meshLight["in"].setInput(sphere["out"])
        meshLight["filter"].setInput(meshLightFilter["out"])
        meshLight["parameters"]["color"].setInput(meshLightShader["out"])

        light1 = GafferArnold.ArnoldLight()
        light1.loadShader("point_light")

        light2 = GafferArnold.ArnoldLight()
        light2.loadShader("point_light")

        # Trigger light linking by unlinking a light
        light2["defaultLight"].setValue(False)

        group = GafferScene.Group()

        group["in"][0].setInput(meshLight["out"])
        group["in"][1].setInput(light1["out"])
        group["in"][2].setInput(light2["out"])

        render = GafferArnold.ArnoldRender()
        render["in"].setInput(group["out"])

        render["mode"].setValue(render.Mode.SceneDescriptionMode)
        render["fileName"].setValue(self.temporaryDirectory() + "/test.ass")
        render["task"].execute()

        with IECoreArnold.UniverseBlock(writable=True):

            arnold.AiASSLoad(self.temporaryDirectory() + "/test.ass")

            sphere = arnold.AiNodeLookUpByName("/group/sphere")
            self.assertIsNotNone(sphere)

            self.assertEqual(
                arnold.AiArrayGetNumElements(
                    arnold.AiNodeGetArray(sphere, "light_group")), 0)
            self.assertFalse(arnold.AiNodeGetBool(sphere, "use_light_group"))
コード例 #3
0
    def testShader(self):

        s = GafferScene.Sphere()
        f = GafferScene.PathFilter()
        f["paths"].setValue(IECore.StringVectorData(["/sphere"]))

        l = GafferArnold.ArnoldMeshLight()

        l["in"].setInput(s["out"])
        l["filter"].setInput(f["out"])

        l["parameters"]["intensity"].setValue(10)
        l["parameters"]["color"].setValue(imath.Color3f(1, 0, 0))

        shaders = l["out"].attributes("/sphere")["ai:light"]
        self.assertEqual(len(shaders), 1)
        self.assertEqual(shaders[0].parameters["intensity"].value, 10)
        self.assertEqual(shaders[0].parameters["color"].value,
                         imath.Color3f(1, 0, 0))
コード例 #4
0
    def testSerialisation(self):

        s = Gaffer.ScriptNode()
        s["p"] = GafferScene.Plane()
        s["f"] = GafferScene.PathFilter()
        s["f"]["paths"].setValue(IECore.StringVectorData(["/plane"]))
        s["l"] = GafferArnold.ArnoldMeshLight()
        s["l"]["in"].setInput(s["p"]["out"])
        s["l"]["filter"].setInput(s["f"]["out"])

        ss = s.serialise()
        self.assertFalse('["out"].setInput' in ss)

        s2 = Gaffer.ScriptNode()
        s2.execute(ss)

        self.assertEqual(s["l"]["parameters"].keys(),
                         s2["l"]["parameters"].keys())
        self.assertEqual(s["l"]["out"].attributes("/plane"),
                         s2["l"]["out"].attributes("/plane"))
コード例 #5
0
    def testCameraVisibility(self):

        s = GafferScene.Sphere()
        f = GafferScene.PathFilter()
        f["paths"].setValue(IECore.StringVectorData(["/sphere"]))

        l = GafferArnold.ArnoldMeshLight()

        l["in"].setInput(s["out"])
        l["filter"].setInput(f["out"])

        self.assertTrue(
            "ai:visibility:camera" not in l["out"].attributes("/sphere"))

        l["cameraVisibility"]["enabled"].setValue(True)
        self.assertEqual(
            l["out"].attributes("/sphere")["ai:visibility:camera"].value, True)

        l["cameraVisibility"]["value"].setValue(False)
        self.assertEqual(
            l["out"].attributes("/sphere")["ai:visibility:camera"].value,
            False)