/// <summary> /// Constructs a new scene in memory, not backed by a file. /// </summary> /// /// <remarks> /// Note that SaveAs can be used to write memory to disk. /// </remarks> public static Scene Create() { var scene = new Scene(UsdStage.CreateInMemory()); scene.UpAxis = UpAxes.Y; return(scene); }
public static void BadPrimTest() { var stage = UsdStage.CreateInMemory(); var prim = stage.GetPrimAtPath(new SdfPath("/Foo")); AssertTrue(prim != null); AssertTrue(prim.IsValid() == false); stage.Dispose(); }
public static void MemoryTest() { const int kCount = 100; for (int i = 0; i < kCount; i++) { UsdStage s = UsdStage.CreateInMemory(); if (s == null) { throw new Exception("Init Stage failed"); } s.Dispose(); string tmpName = GetTempFile(); UsdStage ss = UsdStage.CreateNew(tmpName); if (ss == null) { throw new Exception("Init Stage failed"); } ss.Dispose(); System.IO.File.Delete(tmpName); } }
public static void TraverseTest() { // // Setup a stage with parents and children. // TODO: Add tests with classes and instancing. // UsdStage s = UsdStage.CreateInMemory(); var foo = s.DefinePrim(new SdfPath("/Foo")); s.DefinePrim(new SdfPath("/Foo/P1")); s.DefinePrim(new SdfPath("/Foo/P2")); s.DefinePrim(new SdfPath("/Foo/P3")); s.DefinePrim(new SdfPath("/Foo/P4")); s.DefinePrim(new SdfPath("/Foo/P5")); var bar = s.DefinePrim(new SdfPath("/Bar")); s.DefinePrim(new SdfPath("/Bar/B1")); s.DefinePrim(new SdfPath("/Bar/B2")); s.DefinePrim(new SdfPath("/Bar/B3")); s.DefinePrim(new SdfPath("/Bar/B3/C1")); s.DefinePrim(new SdfPath("/Bar/B3/C2")); s.DefinePrim(new SdfPath("/Bar/B3/C3")); s.DefinePrim(new SdfPath("/Bar/B4")); // Prim children Console.WriteLine(""); Console.WriteLine("Foo children:"); foreach (UsdPrim curPrim in foo.GetChildren()) { Console.WriteLine(curPrim.GetPath()); } Console.WriteLine(""); Console.WriteLine("Bar children:"); foreach (UsdPrim curPrim in bar.GetChildren()) { Console.WriteLine(curPrim.GetPath()); } // Prim Descendants Console.WriteLine(""); Console.WriteLine("Bar descendants:"); foreach (UsdPrim curPrim in bar.GetDescendants()) { Console.WriteLine(curPrim.GetPath()); } // Basic Stage traversal. Console.WriteLine(""); Console.WriteLine("All Prims:"); List <UsdPrim> primList = s.Traverse().ToList(); int i = 0; foreach (UsdPrim curPrim in s.Traverse()) { Console.WriteLine(curPrim.GetPath()); AssertEqual(primList[i++], curPrim); } // Traversal with child pruning. Console.WriteLine(""); Console.WriteLine("/Bar children pruned:"); var range = new USD.NET.RangeIterator(s.Traverse()); foreach (UsdPrim curPrim in range) { Console.WriteLine(curPrim.GetPath()); if (curPrim.GetPath() == "/Bar/B3") { range.PruneChildren(); Console.WriteLine("pruned."); } } // Fully general pre/post traversal. Console.WriteLine(""); Console.WriteLine("Pre/Post Traversal with all children pruned:"); var prePostRange = new USD.NET.RangeIterator(UsdPrimRange.PreAndPostVisit(s.GetPseudoRoot())); bool[] expected = { false, false, true, false, true, true }; bool[] actual = new bool[6]; i = 0; foreach (UsdPrim curPrim in prePostRange) { Console.WriteLine("IsPostVisit: " + prePostRange.IsPostVisit().ToString() + ", " + curPrim.GetPath()); if (!prePostRange.IsPostVisit() && i > 0) { // It's only valid to prune on the pre-traversal. prePostRange.PruneChildren(); } actual[i++] = prePostRange.IsPostVisit(); } AssertEqual(expected, actual); }
public static void PointerTest() { UsdStage s = UsdStage.CreateInMemory(); }
public static void ApiTest() { UsdStage s = UsdStage.CreateInMemory(); var prim = s.DefinePrim(new SdfPath("/Foo")); s.SetStartTimeCode(1.0); s.SetEndTimeCode(10.0); AssertEqual(1.0, s.GetStartTimeCode()); AssertEqual(10.0, s.GetEndTimeCode()); var defultPrimToken = new TfToken("defaultPrim"); var value = new VtValue(); // Verify initial default prim / built-in metadata states. { AssertFalse(s.HasDefaultPrim()); AssertFalse(s.GetDefaultPrim().IsValid()); // defaultPrim is always valid metadata, it's built-in. AssertTrue(s.HasMetadata(defultPrimToken)); // But it should not yet have an *authored* value. AssertFalse(s.HasAuthoredMetadata(defultPrimToken)); // Even though it's not authored, reading it should succeed. AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), ""); } // Set the default prim, which should set the defaultPrim metadata. s.SetDefaultPrim(prim); { // Verify via the Stage API AssertTrue(s.HasDefaultPrim()); AssertTrue(s.GetDefaultPrim().IsValid()); AssertEqual(s.GetDefaultPrim().GetPath(), new SdfPath("/Foo")); // Verify via the metadata API AssertTrue(s.HasMetadata(defultPrimToken)); AssertTrue(s.HasAuthoredMetadata(defultPrimToken)); AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), "Foo"); } string str = s.GetRootLayer().ExportToString(); s.ClearDefaultPrim(); { AssertFalse(s.HasDefaultPrim()); AssertFalse(s.GetDefaultPrim().IsValid()); AssertFalse(s.HasAuthoredMetadata(defultPrimToken)); AssertTrue(s.GetMetadata(defultPrimToken, value)); AssertEqual(((TfToken)value).ToString(), ""); } var classPrim = s.CreateClassPrim(new SdfPath("/Foo_class_")); { AssertTrue(classPrim.IsValid()); AssertEqual(classPrim.GetPath(), new SdfPath("/Foo_class_")); } AssertEqual(s.GetFramesPerSecond(), 24.0); s.SetFramesPerSecond(90.0); AssertEqual(s.GetFramesPerSecond(), 90.0); }
public static void CurvesTest() { UsdStage stage = UsdStage.CreateInMemory(); var path = new SdfPath("/Parent/Curves"); var curvesGprim = UsdGeomBasisCurves.Define(new UsdStageWeakPtr(stage), path); var vertCounts = USD.NET.IntrinsicTypeConverter.ToVtArray(new int[] { 4 }); var basisAttr = curvesGprim.CreateBasisAttr(UsdGeomTokens.bezier); curvesGprim.CreateCurveVertexCountsAttr(vertCounts); var basisCurves = new BasisCurvesSample(); basisCurves.basis = BasisCurvesSample.Basis.Bspline; basisCurves.type = BasisCurvesSample.CurveType.Cubic; basisCurves.wrap = BasisCurvesSample.WrapMode.Nonperiodic; basisCurves.colors = new UnityEngine.Color[4]; basisCurves.colors[0] = new UnityEngine.Color(1, 2, 3, 4); basisCurves.colors[3] = new UnityEngine.Color(6, 7, 8, 9); basisCurves.curveVertexCounts = new int[1] { 4 }; basisCurves.doubleSided = true; basisCurves.normals = new UnityEngine.Vector3[4]; basisCurves.normals[0] = new UnityEngine.Vector3(1, 0, 0); basisCurves.normals[3] = new UnityEngine.Vector3(0, 0, 1); basisCurves.widths = new float[4]; basisCurves.widths[0] = .5f; basisCurves.widths[1] = 1f; basisCurves.widths[2] = .2f; basisCurves.widths[3] = 2f; basisCurves.orientation = USD.NET.Orientation.RightHanded; basisCurves.points = new UnityEngine.Vector3[4]; basisCurves.points[0] = new UnityEngine.Vector3(1, 2, 3); basisCurves.points[3] = new UnityEngine.Vector3(7, 8, 9); basisCurves.velocities = new UnityEngine.Vector3[4]; basisCurves.velocities[0] = new UnityEngine.Vector3(11, 22, 33); basisCurves.velocities[3] = new UnityEngine.Vector3(77, 88, 99); basisCurves.wrap = BasisCurvesSample.WrapMode.Periodic; basisCurves.transform = UnityEngine.Matrix4x4.identity; var basisCurves2 = new BasisCurvesSample(); WriteAndRead(ref basisCurves, ref basisCurves2, true); AssertEqual(basisCurves.basis, basisCurves2.basis); AssertEqual(basisCurves.colors, basisCurves2.colors); AssertEqual(basisCurves.curveVertexCounts, basisCurves2.curveVertexCounts); AssertEqual(basisCurves.doubleSided, basisCurves2.doubleSided); AssertEqual(basisCurves.normals, basisCurves2.normals); AssertEqual(basisCurves.orientation, basisCurves2.orientation); AssertEqual(basisCurves.points, basisCurves2.points); AssertEqual(basisCurves.type, basisCurves2.type); AssertEqual(basisCurves.velocities, basisCurves2.velocities); AssertEqual(basisCurves.widths, basisCurves2.widths); AssertEqual(basisCurves.wrap, basisCurves2.wrap); AssertEqual(basisCurves.transform, basisCurves2.transform); AssertEqual(basisCurves.xformOpOrder, basisCurves2.xformOpOrder); }