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)
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))
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)
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") ])