tag:blogger.com,1999:blog-3779956188045272690.post5227353264289068883..comments2024-03-22T01:46:59.425-04:00Comments on Procedural World: Tile GeneticsMiguel Ceperohttp://www.blogger.com/profile/17586513342346629237noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-3779956188045272690.post-74491860685353434072016-04-21T12:23:35.632-04:002016-04-21T12:23:35.632-04:00We could store the generated combinations as textu...We could store the generated combinations as textures for each model or face or such.TomerFhttps://www.blogger.com/profile/01091897155334178332noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-49193628240323791992014-06-15T23:16:07.740-04:002014-06-15T23:16:07.740-04:00I found the height map synthesis interesting. Alth...I found the height map synthesis interesting. Although not genetics, I did experiment with some fast (and not so fast) synthesis methods for texture during my thesis. You can find technical details (likely one or two errors, you know how that goes : ) here:http://www.dissertations.wsu.edu/Thesis/Spring2010/m_persons_041210.pdf<br />You can also find an implementation of the primitive (yet fast) synthesis in the Texture Tiles android app by Mirsaes.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-45718185946474269692013-01-11T22:10:47.559-05:002013-01-11T22:10:47.559-05:00If you want a genetic algorithm demo to play with,...If you want a genetic algorithm demo to play with, try this: http://www.sea-of-memes.com/LetsCode45/LetsCode45.htmlMichael Goodfellowhttp://www.sea-of-memes.comnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-19142929316022050162013-01-11T10:21:42.795-05:002013-01-11T10:21:42.795-05:00Yes, there is a lot of local minima. Also there is...Yes, there is a lot of local minima. Also there is no way to predict how the function will behave. A shift of one pixel can throw a huge jump.<br /><br />I do keep an elite of 5%.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-38879543851242849972013-01-11T10:12:32.800-05:002013-01-11T10:12:32.800-05:00Thanks for the explanation!
In my experience, gen...Thanks for the explanation!<br /><br />In my experience, genetic algorithms work best when you don't have any idea of the shape of energy landscape you are exploring except that there is probably a lot of local minimal. this is quite a big hypothesis, and I would have tested a monte carlo exploration first (take a starting set, mutate it, accept it if the fitness improve or use a metropolis criterion to accept or reject the change).<br /><br />You could also use elitism (keep some of the best individuals in the next generation) as it generally improve the performance of GA.<br /><br />perhaps there is some way to devise a simpler fitness function as a first filter (you could generate a larger population and only evaluate the first 1000 for example).<br /><br />you could also use a tournament selection to avoid calculate the fitness for every individuals. <br /><br />Finally there is apparently some heuristic on the problem, you could probably use them to improve your initial and mutated set.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-87729506482864690792013-01-11T09:19:44.336-05:002013-01-11T09:19:44.336-05:00Each tile contains four cuts so the center of the ...Each tile contains four cuts so the center of the tile transitions into the borders. The cut is done finding the path of minimum difference between the contents of the tile center and the border. As the cut is never a perfect match, you can compute an error for each pixel, which is just the difference in value for the same pixel in both the center tile and the border source. The sum of these differences along the path gives you the error for that cut. Adding the errors for the four cuts will give you the error in that tile. And then you can add the errors for all tiles to evaluate the tileset.<br /><br />I have no proof genetic algorithms would do best, just a gut feeling. There were a lot of 2D variables involved and the function was very chaotic. Do you have anything specific in mind that would have worked?Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-6712321661538724172013-01-11T04:35:36.517-05:002013-01-11T04:35:36.517-05:00Really interesting!
Could you precise how you cal...Really interesting!<br /><br />Could you precise how you calculated discontinuity for you fitness function? Also, what are you're reason to choose a genetic algorithm over other optimization methods?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-85279237556239060312013-01-10T23:29:20.874-05:002013-01-10T23:29:20.874-05:00Yes, this feature stays but remains optional.
I k...Yes, this feature stays but remains optional.<br /><br />I kept the population size fixed at 1000. All the parents die, except for a 5% top elite. I did not mention the elite in the post, but the actual breakdown of a new generation is roughly:<br /><br />5% Elite<br />80% Crossovers<br />15% Random<br /><br />Water is coming along nicely. I got river and lake generation, but only the rough data. Still a long way to go.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-52972295931180648892013-01-10T23:24:58.630-05:002013-01-10T23:24:58.630-05:00So is this a feature that will stay in your engine...So is this a feature that will stay in your engine? Or are there more techniques you are looking into?<br /><br />Was your population size static or did some generations have better years than others?<br /><br />How is progress with water coming?Paul Kochhttps://www.blogger.com/profile/06401607940436579390noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-27764625133593823762013-01-10T19:42:28.486-05:002013-01-10T19:42:28.486-05:00Yes, it can be used for textures too.
Like you s...Yes, it can be used for textures too. <br /><br />Like you say the problem is you do not get immediate results. If you are texturing an entire world, you will try many textures to see what looks good. Imagine that before trying a single texture you had to preprocess it for an hour or so. Not very fluid.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-64750330263101111052013-01-10T18:04:35.010-05:002013-01-10T18:04:35.010-05:00The part about genetics is a bit confusing but i g...The part about genetics is a bit confusing but i guess it was about generating a few hundreds of tiles based on the source image in order to get enougth stuff to use the wang technique. The source image beeing a heightmap, it could be replaced with any image you want to use as a texture.<br />If i'm correct, you could even go as far as to expanded it to any type of data (dungeons, buildings, ...).<br />The problem beeing that it's too expensive right ?<br />TheSliderhttps://www.blogger.com/profile/00722113578654952345noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-86312544386373675782013-01-10T17:56:05.363-05:002013-01-10T17:56:05.363-05:00This just gets more and more interesting, now evol...This just gets more and more interesting, now evolution starts playing a role! Cant wait to see whats next =D.Kamicahttps://www.blogger.com/profile/09074839497845172950noreply@blogger.com