public static void QuadAndCopyTest() { // Serialize a triangle g3d as bytes and read it back. var vertices = new[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 1), new Vector3(1, 1, 1) }; var indices = new[] { 0, 1, 2, 3 }; var materialIndices = new[] { 5 }; var g3d = new G3DBuilder() .AddVertices(vertices.ToIArray()) .AddIndices(indices.ToIArray()) .Add(materialIndices.ToIArray().ToFaceMaterialAttribute()) .ToG3D(); var bytes = g3d.WriteToBytes(); var g = G3D.Read(bytes); Assert.IsNotNull(g); Assert.AreEqual(4, g.NumCornersPerFace); Assert.AreEqual(4, g.NumVertices); Assert.AreEqual(4, g.NumCorners); Assert.AreEqual(1, g.NumFaces); Assert.AreEqual(0, g.NumMeshes); Assert.AreEqual(0, g.NumInstances); Assert.AreEqual(vertices, g.Vertices.ToArray()); Assert.AreEqual(indices, g.Indices.ToArray()); Assert.AreEqual(materialIndices, g.FaceMaterials.ToArray()); var g2 = g.TriangulateQuadMesh(); Assert.AreEqual(3, g2.NumCornersPerFace); Assert.AreEqual(4, g2.NumVertices); Assert.AreEqual(6, g2.NumCorners); Assert.AreEqual(2, g2.NumFaces); Assert.AreEqual(0, g2.NumMeshes); Assert.AreEqual(0, g2.NumInstances); Assert.AreEqual(vertices, g2.GetAttributeDataPosition().ToArray()); Assert.AreEqual(new[] { 0, 1, 2, 0, 2, 3 }, g2.GetAttributeDataIndex().ToArray()); Assert.AreEqual(new[] { 5, 5 }, g2.GetAttributeDataFaceMaterial().ToArray()); g2 = g2.CopyFaces(1, 1); Assert.AreEqual(3, g2.NumCornersPerFace); Assert.AreEqual(4, g2.NumVertices); Assert.AreEqual(3, g2.NumCorners); Assert.AreEqual(1, g2.NumFaces); Assert.AreEqual(vertices, g2.GetAttributeDataPosition().ToArray()); Assert.AreEqual(new[] { 0, 2, 3 }, g2.GetAttributeDataIndex().ToArray()); Assert.AreEqual(new[] { 5 }, g2.GetAttributeDataFaceMaterial().ToArray()); }
public static void TriangleTest() { // Serialize a triangle g3d as bytes and read it back. var vertices = new[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 1) }; var indices = new[] { 0, 1, 2 }; var materialIndices = new[] { 5 }; var g3d = new G3DBuilder() .AddVertices(vertices.ToIArray()) .AddIndices(indices.ToIArray()) .Add(materialIndices.ToIArray().ToFaceMaterialAttribute()) .ToG3D(); var bytes = g3d.WriteToBytes(); var g = G3D.Read(bytes); Assert.IsNotNull(g); Assert.AreEqual(3, g.NumVertices); Assert.AreEqual(3, g.NumCorners); Assert.AreEqual(1, g.NumFaces); Assert.AreEqual(3, g.NumCornersPerFace); Assert.AreEqual(0, g.NumMeshes); Assert.AreEqual(0, g.NumInstances); Assert.AreEqual(vertices, g.Vertices.ToArray()); Assert.AreEqual(indices, g.Indices.ToArray()); Assert.AreEqual(materialIndices, g.FaceMaterials.ToArray()); }
public static void TriangleSerializationTest() { // Serialize a triangle g3d to a bfast as bytes and read it back. var vertices = new[] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 1, 1) }; var indices = new[] { 0, 1, 2 }; var materialIds = new[] { 0 }; var faceGroupIds = new[] { 0 }; var g3d = new G3DBuilder() .AddVertices(vertices.ToIArray()) .AddIndices(indices.ToIArray()) .Add(faceGroupIds.ToIArray().ToFaceGroupAttribute()) .Add(materialIds.ToIArray().ToFaceMaterialIdAttribute()) .ToG3D(); var bfastBytes = g3d.WriteToBytes(); var readG3d = G3D.Read(bfastBytes); Assert.IsNotNull(readG3d); var mesh = readG3d.ToIMesh(); ValidateGeometry(mesh); Assert.AreEqual(3, mesh.NumVertices); Assert.AreEqual(new Vector3(0, 0, 0), mesh.Vertices[0]); Assert.AreEqual(new Vector3(0, 1, 0), mesh.Vertices[1]); Assert.AreEqual(new Vector3(0, 1, 1), mesh.Vertices[2]); Assert.AreEqual(1, mesh.NumFaces); Assert.AreEqual(0, mesh.FaceGroups.First()); Assert.AreEqual(0, mesh.FaceMaterialIds.First()); }