Beispiel #1
0
    def test_AppendFaceGroupAnimated(self):
        animatedFaceSet = UsdGeom.FaceSetAPI(sphere, "animated")

        # Test appending at default time.
        animatedFaceSet.AppendFaceGroup(faceIndices=[0],
                                        time=Usd.TimeCode.Default())
        animatedFaceSet.AppendFaceGroup(faceIndices=[1],
                                        time=Usd.TimeCode.Default())
        faceCounts = animatedFaceSet.GetFaceCounts(Usd.TimeCode.Default())
        self.assertEqual(len(faceCounts), 2)

        # Test appending at the same time ordinate.
        animatedFaceSet.AppendFaceGroup(faceIndices=[2], time=Usd.TimeCode(1))
        animatedFaceSet.AppendFaceGroup(faceIndices=[3], time=Usd.TimeCode(1))
        faceCounts = animatedFaceSet.GetFaceCounts(Usd.TimeCode(1))
        self.assertEqual(len(faceCounts), 2)

        # Test appending at a new time ordinate.
        animatedFaceSet.AppendFaceGroup(faceIndices=[4], time=Usd.TimeCode(2))

        faceCounts = animatedFaceSet.GetFaceCounts(Usd.TimeCode.Default())
        self.assertEqual(len(faceCounts), 2)
        faceCounts = animatedFaceSet.GetFaceCounts(Usd.TimeCode(1))
        self.assertEqual(len(faceCounts), 2)
        faceCounts = animatedFaceSet.GetFaceCounts(Usd.TimeCode(2))
        self.assertEqual(len(faceCounts), 1)
Beispiel #2
0
    def test_ValidCases(self):
        validFaceSetNames = ("newLook", "validVaryingFaceCounts")

        for faceSetName in validFaceSetNames:
            faceSet = UsdGeom.FaceSetAPI(sphere, faceSetName)
            (valid, reason) = faceSet.Validate()
            self.assertTrue(
                valid, "FaceSet '%s' was found to be invalid: %s" %
                (faceSetName, reason))
Beispiel #3
0
    def test_ErrorCases(self):
        invalidFaceSetNames = ("badPartition", "missingIndices",
                               "invalidVaryingFaceCounts", "bindingMismatch")

        for faceSetName in invalidFaceSetNames:
            faceSet = UsdGeom.FaceSetAPI(sphere, faceSetName)
            (valid, reason) = faceSet.Validate()
            print("FaceSet named '%s' should be invalid because: %s" % \
                (faceSetName, reason))
            self.assertFalse(valid)
Beispiel #4
0
    def test_BasicFaceSetRetrieval(self):
        # Don't want to use the UsdShade API here since this is usdGeom.
        #lookFaceSet = UsdShade.Material.CreateMaterialFaceSet(sphere);
        lookFaceSet = UsdGeom.FaceSetAPI(sphere, "look")

        self.assertEqual(lookFaceSet.GetFaceSetName(), "look")
        self.assertEqual(lookFaceSet.GetPrim(), sphere)

        (valid, reason) = lookFaceSet.Validate()
        self.assertTrue(valid, reason)

        self.assertTrue(lookFaceSet.GetIsPartition())

        fc = lookFaceSet.GetFaceCounts()

        self.assertEqual(list(lookFaceSet.GetFaceCounts()), [4, 8, 4])
        self.assertEqual(list(lookFaceSet.GetFaceCounts(Usd.TimeCode(1))),
                         [4, 4, 8])
        self.assertEqual(list(lookFaceSet.GetFaceCounts(Usd.TimeCode(2))),
                         [8, 4, 4])
        self.assertEqual(list(lookFaceSet.GetFaceCounts(Usd.TimeCode(3))),
                         [4, 8, 4])

        self.assertEqual(
            list(lookFaceSet.GetFaceIndices()),
            [12, 13, 14, 15, 0, 1, 2, 3, 8, 9, 10, 11, 4, 5, 6, 7])
        self.assertEqual(
            list(lookFaceSet.GetFaceIndices(Usd.TimeCode(1))),
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
        self.assertEqual(
            list(lookFaceSet.GetFaceIndices(Usd.TimeCode(2))),
            [12, 13, 14, 15, 0, 1, 2, 3, 8, 9, 10, 11, 4, 5, 6, 7])
        self.assertEqual(
            list(lookFaceSet.GetFaceIndices(Usd.TimeCode(3))),
            [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])

        self.assertEqual(lookFaceSet.GetBindingTargets(), [
            Sdf.Path("/Sphere/Looks/initialShadingGroup"),
            Sdf.Path("/Sphere/Looks/lambert2SG"),
            Sdf.Path("/Sphere/Looks/lambert3SG")
        ])