About coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and coding and also a bit of coding
Search This Blog
C# Produceral Terrain Generation 1
DESIGNABLE - PRODUCERAL - TERRAIN - GENEARTION
- Generate random terain with noise
- user input to get certain structures
- use fractals to get more nature-like structures
- use erosion to get even more accurate results
- use weather to get biomes and direct erosion
- export to heightmap
- export to .obj
By designable i mean that if you need a big mountain in the middle for example, you can give the data and it generates a random terrain, but with the mountain(aslo random) always present in the right place, so you can have random terrain and design so the game doesnt break.
I making heighmaps now.
the engine can produce maps in 24 bit. red is low green is mid and blue is high. there are around 16m heights. if you see lots of red, it still can me a big number on that pixel, because the blue is low and red is high, but blue counts more as 10000 is more than 10. so visualy it can be weird but evertthing is right example: RGB(234, 2, 4) this will result in a red color. though because of the blue part of 4 this is a large number: 1001011101010 = 4842 now RGB(240, 0 ,0) will look similar but its only worth 240. same with black. now the engine can do these things:
- Create a map
- copy a map.
- print a map
- save a map as 24bit image
- average maps
- add maps
- subtract maps
- multiply maps
- divide maps
- make random noise
- cubic smooth maps
- round smooth maps
- make a bulbs/hills from points with a diffrence function(hill noise, my invention :D)
LETS SEE SOME RESULTS:
noise with min and max defined
cubic smooth of noise
1 iterartion of smoothing
2 iterations of smoothing
a hill made by my hill algorithm
2 hills made with my algorithm.
points can me chosen, so here is the design part
HERE IS THE ALGORITM(C#):
publicvoidmake128intermap(refint[,] m,int max, int p1x, int p1y, int p2x, int p2y,int stencilsize)
for (int x = 0; x < 128; x++)
for (int y = 0; y < 128; y++)
int x1d = System.Math.Abs(x - p1x);
int y1d = System.Math.Abs(y - p1y);
float dist1 = (float)System.Math.Sqrt(x1d * x1d + y1d * y1d);
int x2d = System.Math.Abs(x - p2x);
int y2d = System.Math.Abs(y - p2y);
float dist2 = (float)System.Math.Sqrt(x2d * x2d + y2d * y2d);
float temp1 = max / dist1 / (100/stencilsize);
float temp2 = max / dist2 / (100/ stencilsize);
m[x, y] = (int)(temp1 + temp2);
quite simple he
now get some maps added:
very un-agressive noise (max = max pixel number / 1200)added to a hill map which was made stronger by adding it to its self.
DONE: Get some good stuff to begin with.
TODO: get perlin noise, and nice fractals with DLA to get lightning like structures to make rivers and mountains.
I have been working on a raindrop algorithm for erosion on the heighmap. firstit went wrong:
spikes is not what you want
The better version uses 150 * 150 * 150 * 8 raindrops for a total of 27M drops. this takes 8000 milli seconds on one core(3.8ghz).
Second try, not very good
On the third try a river was created naturally. this is more promising.
here is a Fault-terrain that was "raindropped" and smoothed and i added small detail noise. Again a rivver. i add some materials and a water plane for fun. doesnt look too bad.
Here i am experimenting with parameters in the raindrop function. DONE: Get basic raindrop erosion setupTODO: tweak till i get decent and realistic results. Cody Bloemhard
[tag: Tortoise2D Engine]
[tag: Game Engine]
[tag: Cody Bloemhard]