Texture not Drawn on all uv Coordinates
I'm creating a 2D Tilemap based on a procedural mesh.
Each Tile has his own Quad and vertices and are positioned next to each other to create a seamless mesh. The mesh is created successfully. But when i try to assign uv coordinates to reference a part on a texture only the first Quad/Tile gets the Texture.
So far i have noticed that when i create the Quads with room between them they do all render the texture. Can anyone give some inside to why this is happening and what a possible fix might be.
//Code snip
MeshData meshData = new MeshData();
for (int x = 0; x < _ChunkSize; x++) {
for (int y = 0; y < _ChunkSize; y++) {
meshData.AddQuad(x, y);
}
}
Mesh mesh = new Mesh();
mesh.name = "ChunkMesh";
mesh.SetVertices(meshData.Vertices);
mesh.SetNormals(meshData.Normals);
mesh.SetUVs(0, meshData.Uvs);
mesh.SetTriangles(meshData.Triangles,0);
//end
public class MeshData {
public List<Vector3> Vertices { get; private set; }
public List<Vector3> Normals { get; private set; }
public List<int> Triangles { get; private set; }
public List<Vector2> Uvs { get; private set; }
public MeshData() {
Vertices = new List<Vector3>();
Normals = new List<Vector3>();
Triangles = new List<int>();
Uvs = new List<Vector2>();
}
public void AddQuad(int x, int y) {
//temp
Vector2 LT = new Vector2(0.5f, 1);
Vector2 RT = new Vector2(1, 1);
Vector2 RB = new Vector2(1, 0.5f);
Vector2 LB = new Vector2(0.5f, 0.5f);
//Seamless
int a = AddVertex(new Vector3(0 + x, 1 + y, 0), Vector3.forward, LT); //Left Top
int b = AddVertex(new Vector3(1 + x, 1 + y, 0), Vector3.forward, RT); //Right Top
int c = AddVertex(new Vector3(0 + x, 0 + y, 0), Vector3.forward, LB); //Left Bottom
int d = AddVertex(new Vector3(1 + x, 0 + y, 0), Vector3.forward, RB); //Right Bottom
//With space between quads
//int a = AddVertex(new Vector3(0 + x*2, 1 + y*2, 0), Vector3.forward, LT); //Left Top
//int b = AddVertex(new Vector3(1 + x*2, 1 + y*2, 0), Vector3.forward, RT); //Right Top
//int c = AddVertex(new Vector3(0 + x*2, 0 + y*2, 0), Vector3.forward, LB); //Left Bottom
//int d = AddVertex(new Vector3(1 + x*2, 0 + y*2, 0), Vector3.forward, RB); //Right Bottom
AddTriangle(a, b, d);
AddTriangle(a, d, c);
}
private int AddVertex(Vector3 vertex, Vector3 normal, Vector2 uv) {
Vertices.Add(vertex);
Normals.Add(normal);
Uvs.Add(uv);
return Vertices.IndexOf(vertex);
}
private void AddTriangle(int a, int b, int c) {
Triangles.Add(a);
Triangles.Add(b);
Triangles.Add(c);
}
}
Your answer
Follow this Question
Related Questions
Can I add the same UV coordinates to multiple vertices? 0 Answers
Assigning uv's to multiple faces 1 Answer
Help setting UV coordinates for code-generated plane 0 Answers
dynamic created mesh with wrong render order 1 Answer
(Custom Mesh) getting a smooth edge between faces that's using different uv cordianates 0 Answers