- Home /
 
Procedural realistic terrain for hex tile map - what's causing the edges to stick up?
I'm working on procedurally generating realistic terrain on hex tiles for a strategy game. I've got it working nicely except where a tile is concave the edge is still visible as a one-sided face that sticks up. I think it might have something to do with how Unity draws triangles. Any ideas?
The tile changes shape correctly except the edges seem to stick up like this: https://i.imgur.com/NGsDmSl.png
Here's what the mesh looks like in Blender: https://i.imgur.com/TL6y2jj.png
Here's my code:
 void MorphTerrain()
 {
     Vector3[] verts = GetVertices();
     Vector3[] newVerts = new Vector3[verts.Length];
     float bottomLayer = GetBottomLayer(verts);
     for (int i = 0; i < verts.Length; i++)
     {
         if (verts[i].z > bottomLayer) //Because blender, z is the axis that will control height
         {
             newVerts[i] = verts[i];
             continue;
         }
         float sampleX = -(transform.position.x + (verts[i].x * 100));
         float sampleY = transform.position.z - (verts[i].y * 100);
         newVerts[i] = new Vector3(verts[i].x, verts[i].y, GetNoiseValue(sampleX, sampleY));
     }
     SetVertices(newVerts);
 }
 Vector3[] GetVertices()
 {
     return mesh.vertices;
 }
 void SetVertices(Vector3[] verts)
 {
     mesh.vertices = verts;
     mesh.RecalculateBounds();
 }
 float GetNoiseValue(float x, float y)
 {
     float xCoord = (x + xOffset) * noiseResolution;
     float yCoord = (y + yOffset) * noiseResolution;
     float rise = height * Mathf.PerlinNoise(xCoord, yCoord);
     return rise;
 }
 private float GetBottomLayer(Vector3[] verts)
 {
     float result = 1f;
     foreach (Vector3 v in verts)
     {
         if (v.z < result) result = v.z;
     }
     return result;
 }
 
               Thanks in advance for your help!
Your answer
 
             Follow this Question
Related Questions
Change hex tilemap to use axial coordinates? 0 Answers
Hexagonal grid with 120 degree angles 1 Answer
How to render procedurally generated mesh to be rendered as 2 sided? 1 Answer
[Solved] Issues mapping procedurally generated cube without repeating vertices 0 Answers
Efficient way of placing multi-tile sprites onto tilemap via script 0 Answers