Code archives/Algorithms/Terrain Colormap Generator
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
This will cycle thru a heightmap and take the RGB value and average them to a single value which can then be used to color different "heights". I got some pretty cool results with the current settings and it looks ok textured onto a terrain with a lightmap. Change the colors around to your liking. Could be used for weird terrain effects. | |||||
;-Terrain Texture Generator-; ;-by Chroma-; Graphics 800,600,16,2 SetBuffer BackBuffer() map=LoadImage("hmap2.bmp") mapWidth = ImageWidth(map) mapHeight = ImageHeight(map) DrawBlock map,0,0 ;-Open a Text File-; myfile=WriteFile("text.txt") ;-----------------------; ;-Read Map Pixel Values-; ;-----------------------; LockBuffer For y=0 To mapHeight For x=0 To mapWidth rgb = ReadPixelFast(x,y) And $FFFFFF WriteInt myfile,rgb Next Next UnlockBuffer ;-----------------------; CloseFile myfile ;-Open the test map-; myfile=ReadFile("text.txt") ;-Now let's reconstruct the picture For y=0 To mapHeight For x=0+300 To mapWidth+300 rgb=ReadInt(myfile) r = rgb Shr 16 And %11111111 g = rgb Shr 8 And %11111111 b = rgb And %11111111 ;Average out the value bw=(r+g+b)/3 ;-Discern between the 4 terrain types-; ;Region1(Snow) : 256-192 If bw=>192 Then r=255:g=255:b=255 ;Region2(Rock) : 192-128 If bw<192 And bw=>128 Then r=100:g=100:b=100 ;Region3(Grass): 128-64 If bw<128 And bw=>64 Then r=100:g=200:b=100 ;Region4(Sand) : 64-0 If bw<64 r=100:g=50:b=50 ;Throw out some color for testing Color r,g,b Plot x,y Next Next CloseFile myfile ;MainLoops While Not KeyHit(1) Text 10,300,"Terrain Texture Generator" Flip Wend End |
Comments
None.
Code Archives Forum