- Home /
Height lines on terrain
Hi guys.
So my problem is this ones, I want to draw height lines over my terrain on runtime, something like this:
http://www.princeton.edu/~oa/manual/images/colorfront.jpg
My terrain is created by an array of heights that is transform to the height of every pixel of my terrain inside a coroutine:
IEnumerator ScanTerrain(){
int rf = width;
for (int i = 0; i < size; i++) {
pixel[0,0] = HeightImg[i]; //position on array of heights
tData.SetHeights((i/rf),(i%rf),pixel); //converts the array on x and y values of the terrain
yield return new WaitForSeconds(0.0001f);
}
corrutina = false; //flag that indicates that the coroutine stoped
}
So I tried the easiest way, on a specific height (plus and offset of 0.05 percentage) paint that pixel black:
if ((height) % 1 > 0.95 || (height) % 1 < 0.15) { //height is a number between 0 and 10 that is the maximum height of the terrain
pixelColor [x, y, 0] = 0; //the color of that pixel is put on black, so for example 5.96 would be painted black, 3 would be painted black, 5.5 would not be painted black
}
But this method gives really awful looking lines, and very thick in some places really thin in others. I heard that a great method to making this is by a marching squares algorithm, but I don´t find how, I saw this video of the algorithm on procedural cave generation, but I didn´t understand how to use this for my problem: http://unity3d.com/es/learn/tutorials/modules/advanced/scripting/procedural-cave-generation-pt2
I really hope someone can help me, I am absolutely lost.
P.S I found this post about a shader for this porpuose but I can´t even compile the shader, it gives and error: http://answers.unity3d.com/questions/300106/shader-height-lines.html
Thanks in advance.