Esempio n. 1
0
    def testDefaultTime(self):

        self.buildScene()
        box = hou.node("/obj/box1")
        deformer = box.renderNode().createOutputNode("twist")
        deformer.parm("paxis").set(1)
        deformer.parm("strength").setExpression("10*($T+1.0/$FPS)")
        deformer.setRenderFlag(True)

        self.assertNotEqual(hou.time(), 0.5)
        self.assertEqual(deformer.cookCount(), 0)
        scene = IECoreHoudini.HoudiniScene(box.path(), defaultTime=0.5)
        self.assertEqual(scene.getDefaultTime(), 0.5)
        self.assertEqual(deformer.cookCount(), 1)
        self.assertTrue(scene.hasObject())
        self.assertEqual(deformer.cookCount(), 1)
        self.assertEqual(scene.childNames(), ["gap"])
        self.assertEqual(deformer.cookCount(), 1)
        mesh0_5 = scene.readObject(0.5)
        self.assertEqual(deformer.cookCount(), 1)
        self.assertEqual(len(mesh0_5["P"].data), 8)
        self.assertAlmostEqual(mesh0_5["P"].data[0].x, -0.521334, 6)

        scene.setDefaultTime(0)
        self.assertEqual(scene.getDefaultTime(), 0)
        self.assertEqual(deformer.cookCount(), 1)
        self.assertTrue(scene.hasObject())
        self.assertEqual(deformer.cookCount(), 2)
        self.assertEqual(scene.childNames(), ["gap"])
        self.assertEqual(deformer.cookCount(), 2)
        mesh0 = scene.readObject(0)
        self.assertEqual(deformer.cookCount(), 2)
        self.assertEqual(len(mesh0["P"].data), 8)
        self.assertEqual(mesh0["P"].data[0].x, -0.5)
Esempio n. 2
0
    def buildScene(self):

        obj = hou.node("/obj")
        sub1 = obj.createNode("subnet", "sub1")
        sub2 = obj.createNode("subnet", "sub2")
        box1 = sub1.createOutputNode("geo", "box1", run_init_scripts=False)
        box1.createNode("box", "actualBox")
        actualBox = box1.children()[0]
        bname = actualBox.createOutputNode("name")
        bname.parm("name1").set("/")
        torus = box1.createNode("torus")
        tname = torus.createOutputNode("name")
        tname.parm("name1").set("/gap/torus")
        merge = bname.createOutputNode("merge")
        merge.setInput(1, tname)
        merge.setRenderFlag(True)
        box2 = obj.createNode("geo", "box2", run_init_scripts=False)
        box2.createNode("box", "actualBox")
        torus1 = sub1.createNode("geo", "torus1", run_init_scripts=False)
        torus1.createNode("torus", "actualTorus")
        torus2 = torus1.createOutputNode("geo",
                                         "torus2",
                                         run_init_scripts=False)
        torus2.createNode("torus", "actualTorus")

        return IECoreHoudini.HoudiniScene()
Esempio n. 3
0
    def testRerooting(self):

        self.buildScene()
        scene = IECoreHoudini.HoudiniScene("/obj/sub1", rootPath=["sub1"])
        self.assertEqual(scene.path(), [])
        self.assertEqual(scene.pathAsString(), "/")
        self.assertEqual(scene.name(), "/")
        self.assertEqual(sorted(scene.childNames()), ["box1", "torus1"])
        self.assertEqual(scene.hasChild("box1"), True)
        self.assertEqual(scene.hasChild("torus1"), True)
        self.assertEqual(scene.hasChild("torus2"), False)
        self.assertEqual(scene.hasObject(), False)

        torus1 = scene.child("torus1")
        self.assertEqual(torus1.path(), ["torus1"])
        self.assertEqual(torus1.pathAsString(), "/torus1")
        self.assertEqual(torus1.name(), "torus1")
        self.assertEqual(sorted(torus1.childNames()), ["torus2"])
        self.assertEqual(torus1.hasChild("torus2"), True)
        self.assertEqual(torus1.hasObject(), True)
        mesh = torus1.readObject(0)
        self.failUnless(isinstance(mesh, IECore.MeshPrimitive))
        self.assertEqual(mesh["P"].data.size(), 100)
        self.assertEqual(mesh.blindData(), IECore.CompoundData())

        torus2 = torus1.child("torus2")
        self.assertEqual(torus2.path(), ["torus1", "torus2"])
        self.assertEqual(torus2.pathAsString(), "/torus1/torus2")
        self.assertEqual(torus2.name(), "torus2")
        self.assertEqual(sorted(torus2.childNames()), [])
        self.assertEqual(torus2.hasObject(), True)
        mesh = torus2.readObject(0)
        self.failUnless(isinstance(mesh, IECore.MeshPrimitive))
        self.assertEqual(mesh["P"].data.size(), 100)
        self.assertEqual(mesh.blindData(), IECore.CompoundData())

        box1 = scene.child("box1")
        self.assertEqual(box1.path(), ["box1"])
        self.assertEqual(box1.pathAsString(), "/box1")
        self.assertEqual(box1.name(), "box1")
        self.assertEqual(sorted(box1.childNames()), ["gap"])
        self.assertEqual(box1.hasChild("gap"), True)
        self.assertEqual(box1.hasObject(), True)
        mesh = box1.readObject(0)
        self.failUnless(isinstance(mesh, IECore.MeshPrimitive))
        self.assertEqual(mesh["P"].data.size(), 8)
        self.assertEqual(mesh.blindData(), IECore.CompoundData())

        gap = box1.child("gap")
        self.assertEqual(gap.path(), ["box1", "gap"])
        self.assertEqual(gap.pathAsString(), "/box1/gap")
        self.assertEqual(gap.name(), "gap")
        self.assertEqual(sorted(gap.childNames()), ["torus"])
        self.assertEqual(gap.hasChild("torus"), True)
        self.assertEqual(gap.hasObject(), False)

        boxTorus = gap.child("torus")
        self.assertEqual(boxTorus.path(), ["box1", "gap", "torus"])
        self.assertEqual(boxTorus.pathAsString(), "/box1/gap/torus")
        self.assertEqual(boxTorus.name(), "torus")
        self.assertEqual(boxTorus.childNames(), [])
        self.assertEqual(boxTorus.hasObject(), True)
        mesh = boxTorus.readObject(0)
        self.failUnless(isinstance(mesh, IECore.MeshPrimitive))
        self.assertEqual(mesh["P"].data.size(), 100)
        self.assertEqual(mesh.blindData(), IECore.CompoundData())

        self.assertRaises(RuntimeError, scene.child, "box2")
        self.assertEqual(
            scene.child("box2",
                        IECore.SceneInterface.MissingBehaviour.NullIfMissing),
            None)

        # test the node that does exist according to houdini, but is actually a grandchild in our world
        self.assertRaises(RuntimeError, scene.child, "torus2")
        self.assertEqual(
            scene.child("torus2",
                        IECore.SceneInterface.MissingBehaviour.NullIfMissing),
            None)

        torus1 = scene.scene(["torus1"])
        self.assertEqual(torus1.pathAsString(), "/torus1")

        # can't use scene() to go outside of the re-rooting
        self.assertRaises(RuntimeError, scene.scene, ["sub2"])
        self.assertEqual(
            scene.scene(["sub2"],
                        IECore.SceneInterface.MissingBehaviour.NullIfMissing),
            None)