Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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());
        }