public void MapperExtractsInvalidConnectedFaces()
 {
     Assert.Throws <Exception>(delegate { FaceMapper.extractFaces(null, 0); });
     Assert.Throws <Exception>(delegate { FaceMapper.extractFaces(mappedTriangles, 100); });
     Assert.Throws <Exception>(delegate { FaceMapper.extractFaces(mappedTriangles, -1); });
     Assert.Throws <Exception>(delegate { FaceMapper.extractFaces(mappedTriangles, 0); });
 }
Exemplo n.º 2
0
    void MapAndExtract()
    {
        foreach (var meshFilter in objectsToExtract)
        {
            Mesh mesh = meshFilter.sharedMesh;

            Stopwatch sw = Stopwatch.StartNew();
            var(triangles, vertices) = FaceMapper.mapTriangles(mesh.triangles, mesh.vertices);
            clearAllChildren(meshFilter.gameObject);

            int totalFaces         = triangles.Count;
            int facesForContinents = (int)(totalFaces * (1f - percentageOfSea));
            int totalAmountOfLand  = 0;
            foreach (var size in continents.Values)
            {
                totalAmountOfLand += size;
            }
            foreach (var continent in continents)
            {
                int sizeOfThisContinent = facesForContinents * continent.Value / totalAmountOfLand;
                var extractedFaces      = FaceMapper.extractFaces(triangles, sizeOfThisContinent);

                createSubMesh(meshFilter.gameObject, continent.Key, extractedFaces, landMaterial);
            }

            createSubMesh(meshFilter.gameObject, "sea", triangles, seaMaterial);

            sw.Stop();
            UnityEngine.Debug.Log("Time taken for " + meshFilter.gameObject.name + " -> " + sw.Elapsed.TotalMilliseconds + "ms");
        }
    }
        public void MapperRetursFourTriangles()
        {
            var(mappedTriangles, _) = FaceMapper.createTriangles(triangles, vertices);

            Assert.IsNotEmpty(mappedTriangles);
            Assert.AreEqual(mappedTriangles.Count, 4);
        }
        public void MapperRetursFourTrianglesThatAreAdjacent()
        {
            var(mappedTriangles, _) = FaceMapper.mapTriangles(triangles, vertices);

            Assert.True(mappedTriangles[0].isAdjacent(mappedTriangles[1]));
            Assert.True(mappedTriangles[1].isAdjacent(mappedTriangles[2]));
            Assert.True(mappedTriangles[2].isAdjacent(mappedTriangles[3]));
        }
        public void MapperReturnsSixVertices()
        {
            var(_, mappedVertices) = FaceMapper.createTriangles(triangles, vertices);

            foreach (var v in vertices)
            {
                Assert.Contains(v, mappedVertices.Keys);
            }
        }
Exemplo n.º 6
0
        public void MapperRawExtractsAllVertices()
        {
            var(_, rawVertices) = FaceMapper.getRawFromTriangles(mappedTriangles);

            Assert.IsNotEmpty(rawVertices);
            Assert.AreEqual(4, rawVertices.Length);
            foreach (var vertex in rawVertices)
            {
                Assert.Contains(vertex, vertices);
            }
        }
        public void MapperExtractsFaces(int numFaces)
        {
            var connectedFaces = FaceMapper.extractFaces(mappedTriangles, numFaces);

            Assert.AreEqual(numFaces, connectedFaces.Count);
            Assert.AreEqual(12 - numFaces, mappedTriangles.Count);

            foreach (var extractedFace in connectedFaces)
            {
                Assert.False(mappedTriangles.Contains(extractedFace));
            }
        }
        public void MapperRetursFourTrianglesThatAreCorrect()
        {
            var(mappedTriangles, _) = FaceMapper.createTriangles(triangles, vertices);

            Assert.Contains(downleft, mappedTriangles[0].vertices);
            Assert.Contains(downright, mappedTriangles[0].vertices);
            Assert.Contains(midleft, mappedTriangles[0].vertices);

            Assert.Contains(downright, mappedTriangles[1].vertices);
            Assert.Contains(midright, mappedTriangles[1].vertices);
            Assert.Contains(midleft, mappedTriangles[1].vertices);
        }
        public void MapsInUnder20Milis()
        {
            int numberIterations = 3;

            Stopwatch sw = Stopwatch.StartNew();

            for (int i = 0; i < numberIterations; i++)
            {
                FaceMapper.mapTriangles(mesh.triangles, mesh.vertices);
            }
            sw.Stop();
            Assert.Less(sw.Elapsed.TotalMilliseconds / numberIterations, 20);
        }
        public void TrianglesAreAdjacent()
        {
            var(mappedTriangles, _) = FaceMapper.mapTriangles(triangles, vertices);

            Assert.True(mappedTriangles[0].adjacent.Contains(mappedTriangles[1]));

            Assert.True(mappedTriangles[1].adjacent.Contains(mappedTriangles[0]));
            Assert.True(mappedTriangles[1].adjacent.Contains(mappedTriangles[2]));

            Assert.True(mappedTriangles[2].adjacent.Contains(mappedTriangles[1]));
            Assert.True(mappedTriangles[2].adjacent.Contains(mappedTriangles[3]));

            Assert.True(mappedTriangles[3].adjacent.Contains(mappedTriangles[2]));
        }
Exemplo n.º 11
0
        public void MapperRawExtractsAllTriangles()
        {
            var(rawTriangles, _) = FaceMapper.getRawFromTriangles(mappedTriangles);

            Assert.IsNotEmpty(rawTriangles);
            Assert.AreEqual(2 * 3, rawTriangles.Length);

            Assert.AreEqual(0, rawTriangles[0]);
            Assert.AreEqual(1, rawTriangles[1]);
            Assert.AreEqual(2, rawTriangles[2]);

            Assert.AreEqual(0, rawTriangles[3]);
            Assert.AreEqual(2, rawTriangles[4]);
            Assert.AreEqual(3, rawTriangles[5]);
        }
        public void TriangleHasAdjacent()
        {
            var(mappedTriangles, _) = FaceMapper.mapTriangles(triangles, vertices);

            Assert.IsNotEmpty(mappedTriangles[0].adjacent);
            Assert.AreEqual(mappedTriangles[0].adjacent.Count, 1);

            Assert.IsNotEmpty(mappedTriangles[1].adjacent);
            Assert.AreEqual(mappedTriangles[1].adjacent.Count, 2);

            Assert.IsNotEmpty(mappedTriangles[2].adjacent);
            Assert.AreEqual(mappedTriangles[2].adjacent.Count, 2);

            Assert.IsNotEmpty(mappedTriangles[3].adjacent);
            Assert.AreEqual(mappedTriangles[3].adjacent.Count, 1);
        }
Exemplo n.º 13
0
    private GameObject buildMeshFromTriangles(List <TriangleFace> meshFaces, Material material)
    {
        var(rawTriangles, rawVertices) = FaceMapper.getRawFromTriangles(meshFaces);

        GameObject sub = new GameObject();

        sub.AddComponent <MeshRenderer>().material = material;

        MeshFilter subMeshFilter = sub.AddComponent <MeshFilter>();
        Mesh       subMesh       = new Mesh();

        subMeshFilter.sharedMesh = subMesh;
        subMesh.Clear();
        subMesh.vertices  = rawVertices;
        subMesh.triangles = rawTriangles;
        subMesh.RecalculateNormals();

        return(sub);
    }
        public void MapperReturnsSixVerticesThatHaveTriangles()
        {
            var(mappedTriangles, mappedVertices) = FaceMapper.createTriangles(triangles, vertices);

            Assert.Contains(mappedTriangles[0], mappedVertices[downleft]);
            Assert.Contains(mappedTriangles[0], mappedVertices[downright]);
            Assert.Contains(mappedTriangles[0], mappedVertices[midleft]);

            Assert.Contains(mappedTriangles[1], mappedVertices[downright]);
            Assert.Contains(mappedTriangles[1], mappedVertices[midleft]);
            Assert.Contains(mappedTriangles[1], mappedVertices[midright]);

            Assert.Contains(mappedTriangles[2], mappedVertices[midleft]);
            Assert.Contains(mappedTriangles[2], mappedVertices[midright]);
            Assert.Contains(mappedTriangles[2], mappedVertices[upleft]);

            Assert.Contains(mappedTriangles[3], mappedVertices[midright]);
            Assert.Contains(mappedTriangles[3], mappedVertices[upleft]);
            Assert.Contains(mappedTriangles[3], mappedVertices[upright]);
        }
        public void Setup()
        {
            vertices = new Vector3[] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0),
                                       new Vector3(0, 0, 1), new Vector3(1, 0, 1), new Vector3(0, 1, 1), new Vector3(1, 1, 1) };
            triangles = new int[] { 0, 1, 2,
                                    1, 2, 3,

                                    0, 1, 4,
                                    1, 4, 5,

                                    0, 2, 4,
                                    2, 4, 6,

                                    2, 3, 6,
                                    3, 6, 7,

                                    1, 3, 5,
                                    3, 5, 7,

                                    4, 6, 5,
                                    5, 6, 7 };

            (mappedTriangles, _) = FaceMapper.mapTriangles(triangles, vertices);
        }