Evolutionary Design, anybody?

Hi!
I am currently studying a masters program in complex adaptive systems and have happened upon evolutionary design. I was thinking about building a blenderscript for that but first I wanted to see if anybody here knows if it has been done before. Not any use doing it then.

I was thinking of evolution of poses. The script would modify the pose (rotation, position, scaling) and give you 9 different poses to chose from. According to that choice, 9 new poses would be created and so on.

Does it sound in any useful? Anybody has any suggestions?

You mean like a random movement of objects?

If you were to do it to an Armature, or somehow use it to effect a character’s mesh then it might have some use.

I think you get my point but actually it is quite the opposite. There is a common misconsception that evolution is random but it’s far from it.

You do have a random part in evolution (mutation) which adds new genetic material which of course is very important but choosing what mutations that you let into the next generation is far from random. That is done in relation to the fitness of the individuals. This fitness value is in normal evolutionary algorithms computed in relation to the problem at hand but in evolutionary design it is set by the person watching (it is enough to choose the best one and therefore classify that as having better fitness than the rest).

Of course I am simplifying it here (you also have crossover) but you get the idea.

My idea was to use it on an armature that in turn effects a mesh. This way it is easier to control what the algorithm is allowed to change. You also reduce the dimensionality of the problem hugly (almost from the number of vertices to the number of bones). And that is quite important since it effects the time it takes to do the evolution a lot.

I guess it could work on an organic mesh also with effects similar to the sculpt tool.

Another option could be to use shape keys. Maybe in addition to poses.

There apparently is a plugin to SolidWorks that does this (see http://www.genometri.com/). I have not tried either this plugin or solidworks but my guess is that here you choose which variables to evolve but blender being blender I think doing it by an armature is better.

Just jumping in the middle of your discussion, I was dreaming about a vector texture that could be mixed with another and select from the 2nd generation
http://blenderartists.org/forum/showpost.php?p=733338&postcount=16

Very interesting thread you goth there pıkselı. I’d be very interested in helping out. But let’s keep it in that thread.

What about L-system models? that could maybe a way too

A way for what? I don’t really understand what you mean. I am no expert on L-systems but I though that was fractals. Of course you could probably design L-systems with genetic algorithms… was that what you meant?

Could be interesting to generate trees in gentree (not an L-system but interesting anyway…) with evolutionary algorithms but with the time it takes to generate trees I think it would take too long.

When you say “genetic algorithm” and “Blender” I think of two areas of use:

  • Evolving textures.
  • Evolving L-system designs (for making trees).

Personally, I think the latter would be both useful and interesting. That said, you would need to evolve the leaves too (using alphamaps is a pain). I’ve seen L-systems being generated very fast and frankly there aren’t that many parameters to evolve for tree like shapes. Evolving textures would also be great but in my experience, it is hard to get to what you want exactly unless you are looking for something abstract.

As for evolving poses, it would be interesting and original but I doubt it could be very useful. Then again, I would be very happy for you to prove me wrong!

Koba

When I say poses I don’t see character poses as the main goal. Think instead of it as a means of evolving shapes.

A very simple example: Let’s say that if you want to design a table. Then this is a method to try different types of tables in a systematic way. You put one bone in each leg which are parented to vertexes in the table. Then you put one bone in the table. Then my script would give you 9 different choices of leg lengths and table sizes. You choose the one that you think look the best and you get 9 more choices based on you last selection. On it goes until you get the perfect combo of table size and leg length.

Or add hundreds of bones to a organic shape and see what you can get out of it.

It will sadly not be that original. Just look at the link I sent earlier. It’s already being done. That I plan to do it for poses is just a technicality.

Ok…I see what you mean then.

What this could be good for is to help you approach your scene from a different angle. You might have a set way of doing things and a genetic algorithm may well be “creative” enough to see things in a different light. Actually, I would really like to see a scene full of evolved objects.

Go for it I say!

Koba

Flyingscanian, I was thinking about application of genetic algorithm. I use the Game Engine and when I do level, I modelise object like table and place a lot of this objects in order to make , per example, a small city. But, it’s a lot of work to make differents table’s models, different chair’s models… It could be great to have a script that make differents models from one. Genetic algorithm could be the method to do that ? I think you’re right to begin with armature in order to make quickly a tool to show what is possible. I hope that it could be transpose to mesh after.

Good Luck !

Po

I guess it could be used for that… All uses are good exept the bad ones… I am a little doubtful though. I mean, a genetic algorithm for design is not automated if that is what you were looking for. To get one table you have to go through many different designs to get one that you like.

What you are after is more a automated way of creating a whole bunch of tables with different dimensions.

Also with my method it would be a bit hard to use textures I think. I mean, they would be stretched during different poses. It would more be a way to find a optimal geometry.

But I am thinking of using meshes to, I just don’t know how to go about doing that in a good way. Of course the algorithm can be used to get the best position of every vertex but it would take AGES until a user was happy with every vertex. Maybe one could use vertex groups… Hmm, yes…One could use vertex groups to group the different vertexes before transformation. Then each vertex group would be transformed in a certain way, always keeping the relationships betwen the vertexes in the group. A flat table would stay flat and so on. I got to but some though into this, this might actually be better than using bones and poses.

Cheers for putting my mind into a better track!

Good idea to use vertex group in order to apply the method to mesh.
I understand that the method produces many different designs of an object, and that they don’t looking all like i will. But this concept is great, and could be an interesting tool for many things. So, good continuation…

Po

Before you rush into creating a model system to visually show evolution in work you may want to fully study all of the possibilities of evoultion. If you are truly open minded and want to explore all of the avenues then I urge you to visit http://www.drdino.com. Thank you for your time.

Sincerely

Jason Allen Bayne

OK, now I am 99% certain that evolution really happened more or less the way science describes it (there is no such thing as being totally certain in science). But that is not the point here.

Wether evolution happened on earth is totally irrelevant. The point is that evolutionary algorithms work. THAT I can give you evedience of. I have for example solved the travelling salesman problem with a evolutionary algorithms (you know that that is a NP-hard problem, right?). Give me your email adress and I will send you the Matlab-code so you can try it out yourself. I can also show in the counting ones problem that fitness actually does increase from generation to generation by a mathematical proof. By the way, will you give me the $10 000 if I give you mathematical proof that evolutionary algorithms work?

I am not here to prove that evolution happened on earth. I am here to, with the help of evolutionary algorithm, help people create art! That is very different. So, please leave this creationistic nonsense out of this thread. It does in no way belong here.

If you want to discuss evolution on earth please start another thread in the off-topic forum. Preferably on another Bulletin since Blender Artists Forums is not about science but about Blender, a 3D modelling package.

But if you instead want to help me find the ulimate way of implementing evolutionary design in Blender, I’d love to hear your suggestions. I need all the help I can get!

The problem is that you need user input. Your idea is more like hill climbing (maybe with some added simulated annealing) than GA’s.

You really need some sort of automatic fitness measure.

I can’t really think of design ideas using GA’s, but if you want any info on them or just want to talk about them, pm me. I’m studying AI at the moment and they are a hobby of mine.

Actually, I had an idea a year or so back. The user draws a shape on the screen and blender recreates it using a max of N vertices with subsurf applied. The fitness measure is how close the line of the subsurf matches the drawn line. I got sidetracked on an evolutionary neural net tho, hehe.

Before you rush into creating a model system to visually show evolution in work you may want to fully study all of the possibilities of evoultion. If you are truly open minded and want to explore all of the avenues then I urge you to visit http://www.drdino.com. Thank you for your time.

Evolutionary algos work incredibly well. Hovind is a liar, or at the very best woefully ignorant of evolution. I know EA’s work well because I write them a lot, and they work. In fact, I have one running right now, that can work out a problem in under a minute that would take a professional in the field over a day to do.

Well, the problem with design is that it is kinda subjective. We NEED a human to assess the fitness. The most common way is to present the user with 9 different designs. He will then choose the one he likes the most. That is then given the hightest fitness (one does not need to grade the others).

In a live environment (such as in a gallery) where one shows the designs on a screen a fitness measure could be an assessment by a webcam on how many people are watching.

An interesting thing would be to hook this script up to the net. Showing people different designs and let blender create new ones. That would be very cool! I’ll add that for version 2, hehe.

Hill climbing and simulated annealing is new to me (of course I’ve heard about it, I’ve just not studied it closely). But now when I’ve read some about it I totally understand why you think my idea is more closely related to that. What can I say, I got it presented to me as interactive evolutionary algorithms (google that). They do exist and they do work. Now, what the evolutionary part is in it I have not really been able to figure out yet. Mutation and Crossover does happen but between which individuals I don’t yet really know. This is something I will have to learn on the road. But if it turns out that hill climbing or simulated annealing is better, I can see myself using that instead. I’m not locked in to evolution. And a switch between algorithms for the search is no biggie as long as the interface is done.

I like your idea about using an EA for fitting a mesh to a shape. I haven’t worked with the sculp tool and its retopo option but this might be very useful there! You could also let N vary and scale the fitness values depending on how few vertexes are needed. I mean, the fewer vertexes, the better. You should look into it! This could also be a very good way to reduce mesh densities, especially from laser scans.

I just did a evolutionary NN (only weights, not topology) just a week and a half ago in a homework assignment (solving the 3 input binary XOR problem). Very interested indead!

If you want to partner up on anything connected to blender and EA/ANN/SA just let me know.

BlenderArtists.org is not a place to discuss Religion or Politics, if this is your mission here I belive you are out on a thin ice using our forum. Our policys and rules is that you can’t post such content here.

administrator