# Re: Genetic Algorithms for Character Design (Was: 'not an artist' article)

```Chris Purnell wrote:
>
> On Tue, Jul 04, 2000 at 11:06:59PM -0500, Steve Baker wrote:
>
> > So, what if we did a really basic conversion of that to 3D and used
> > the endpoints of the leaf nodes as 3D points - which we'd then connect
> > up using some kind of triangulation algorithm to make a mesh.
>
> How would you calculate which leaf nodes are adjacent?

Well, there are algorithms for doing that - they use them for
those fancy 3D laser digitizers.

However, I was thinking that I could do it as a part of the
'growth' process.  As I build the branching structure, I'd
be taking a 'branch' and splitting it at it's tip into
(say) three new 'daughter' branches.  I could presumably
take whatever triangle mesh existed at that point and replace
the vertex at the tip of the parent branch with a triangle,
inserting new triangles to fill the resulting gap.

Hard to explain...

Before

\     /
\   /
\ /
|
|
|

After

\       /
\_____/
\   /
\ /
|
|

...or something like that. (In the diagram above, the vertices
are the tips of branches that are buried beneath your CRT screen).

Presuming one could come up with something like four branches,
skinned with a tetrahedron as the starting point, then each
'growth cycle' would split the ends of those branches - and
create more skinning triangles.

> If you use proximity you are in danger of making a surface
> the crosses through an extremity.

Not done like this it wouldn't - the topology of the skin
would directly reflect the underlying branching structure
that came from the original biomorphs algorithm.

?  And the tree structure
> created with the biomorphs algorithm tends to double back
> on itself.  So you would need to discurage that if you
> were to use the structure to determin the adjacent leaf
nodes.
>
Yes - certainly biomorphs do that a lot - and that's how some
of their more 'solid-looking' shapes are made...for the original
2D biomorphs, that was a positive advantage...but in 3D, it would
be a bit of a pain.

I don't have an answer to what would happen - or how we would
fix it.

> I'd be tempted to try and treat the entire resulting structure
> as solid and wrap that in a skin but that could cause more
> problems than it solved.

Yes.

> One thing that I've noticed about the various biomorph
> implementations that exist is that there is a great
> difference between offspring and their parent.

You can adjust that in the code though.  I wrote a version
about 15 years ago just after I'd read the book.  At each
generation, you could pick one 'child' and mutate it to generate
the next generation - or you could pick two parents (one of which
you might have saved in a previous session or whatever) - and either
average their genes - or do a 'crossover'  where a some genes come
(unmodified) from each parent.

All three techniques are useful - and quite powerful when you get
used to using them.

> To make it useful you would need much more genetic
> information and have it so a small change in the
> genetic code would result in a small change in the
> resulting model.

Yes - if you pick your genes right.

--
Steve Baker   HomeEmail: <sjbaker1@airmail.net>