public void ResolveCorrespondence() { Problem = new CorrespondenceProblem(); // Source & target mesh . //Vector3[] srcVerts = new Vector3[] { new Vector3(1, 0, 0), new Vector3(1, 1, 0), new Vector3(2, 1, 0), new Vector3(2, 0, 0), new Vector3(3, 1, 0) }; //Vector3[] tgtVerts = new Vector3[] { new Vector3(1, 0, 0), new Vector3(1, 1, 0), new Vector3(2, 1, 0), new Vector3(2, 0, 0), new Vector3(3, 0.5f, 0) }; //int[] tris = new int[] {0,1,3, // 1,2,3, // 2,4,3}; var srcMesh = srcGO.GetComponent <MeshFilter>().sharedMesh; var tgtMesh = tgtGO.GetComponent <MeshFilter>().sharedMesh; Problem.srcMesh = new MeshData(); Problem.tgtMesh = new MeshData(); Problem.srcMesh.VertexList = srcMesh.vertices; //srcVerts; // = this.SourceMesh; Problem.srcMesh.TriangleList = srcMesh.triangles; //tris; Problem.srcMesh.NormalList = srcMesh.normals; Problem.tgtMesh.VertexList = tgtMesh.vertices; //tgtVerts; //= this.TargetMesh; Problem.tgtMesh.TriangleList = tgtMesh.triangles; //tris; Problem.tgtMesh.NormalList = tgtMesh.normals; // Vertex Constraint List Problem.vertexConstraintList = new Dictionary <int, int>(); Problem.vertexConstraintList.Add(0, 0); Problem.vertexConstraintList.Add(1, 1); Problem.vertexConstraintList.Add(4, 4); Problem.wtSmoothness = 1.0f; Problem.wtIdentity = 0.01f; Problem.wtClosestStart = 1.0f; Problem.wtClosestEnd = 5000.0f; Problem.wtClosestStep = 1250f; // Create Adjacency list for source model. Problem.triAdj = UtilityFunctions.CreateAdjacencyList(Problem.srcMesh.NumberOfVertices, Problem.srcMesh.TriangleList); Problem.Solve(); }