- Home /
How to combine vertices while removing duplicates AND inheriting connections?
Hello, I'm very new to Unity and C#, and I've been working towards this single task for several days now. I have a map I've taken from pieces of a USGS height-map and converted to a mesh. I've saved both a version with the 28 meshes individually, and one with them together as the same "Mesh" using the "GetComponentsInChildren" method. The problem comes when I try to combine vertices at the edges. I am able to do this but only in a way that moves one edge to another edge, keeping two sets of vertices on top of one another, creating a jagged edge when I apply a material. Is there a way to combine or weld these vertices together without ProBuilder?
Here is my code so far, littered with non functioning attempts as comments.
using UnityEngine;
using System.Collections;
public class VertComb : MonoBehaviour
{
public void CombineVertices(){
Mesh mesh;
Vector3[] vertices;
mesh = GetComponent<MeshFilter>().sharedMesh;
vertices = mesh.vertices;
//VertexConnection[] connections = new VertexConnection[vertices.Length];
for (int i = 0; i < vertices.Length; i++){
Vector3 curVert = vertices[i]; // get vertex [i]
// compare it to the next vertices:
// var VC1 = connections[i];
for (int j = i+1; j < vertices.Length; j++){
// if any one inside limit distance...
float distancex = Mathf.Abs(curVert.x - vertices[j].x);
float distancez = Mathf.Abs(curVert.z - vertices[j].z);
if ((distancex < 0.5f) && (distancez < 0.5f)) {
// var VC2 = connections[j];
// if (VC2 == null)
// VC2 = connections[n] = new VertexConnection();
// if (VC1== null)
// VC1 = connections[i] = new VertexConnection();
// VC1.connections.Add(n);
// VC2.connections.Add(i);
vertices[j] = (curVert); // make it equal to vertex [i]
}
}
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
}
}
Thank you for your help!