Thursday, July 24, 2008

Sandbox: Lime Drone

Friday, July 18, 2008

SketchUp

A few words about SketchUp would be appropriate now (I use Sketchup in my Genetic-house project for final processing and visualisation).

I consider SketchUp the best drawing software I've ever seen, period.

I have some 25 years of experience with computers and software. It started with the 8-bit Sinclair ZX-81, then came it's more powerful brother ZX-Spectrum, then Commodore 64, and then a countless armada of PCs... you can imagine I've tried and used lots of software of every kind.

From my personal experience I know that by far the most difficult thing in software is to make things simple but still powerful (that I call good abstraction). It's very easy to make complex things. To add features, to expand functionality. Anyone knows how to do that. But complex software can be either painful to use or even completely useless.

The other danger is to make things too simple. One of the Murphy's Laws, called Shaw's Principle, says: Build a system that even a fool can use, and only a fool will want to use it. That I call bad abstraction.


To keep powerful things simple to use, that's far from trivial. And SketchUp is both quite powerful as well as incredibly simple to use.

When discussing SketchUp with my colleagues, most of them point out, that SketchUp in not as powerful as the classic CAD software (e.g. AutoCAD). That's not a very good comparison; AutoCAD (a great software too, no doubt) is primarily a drafting tool, while SketchUp is used for - 3d sketching and modeling in the design conception phase.

But consider this: SketchUp can build up functionality and new features while it can remain simple to use; it's authors have demonstrated they master the good abstraction lore. On the other hand, it's virtually impossible for AutoCAD (or any other) to become much simpler - unless they start all over again, but then it wouldn't be the same software anymore.

Wednesday, July 16, 2008

"To boldly go where no man has gone before"





Today something funny happened. I mailed my first real "Voronoi Genetic-house" screenshots to some of my friends.

In response, two of them suggested (independently of each other!), that I should bisect my last "Voronoi Genetic-house" laterally, throw one half away, mirror another half over the bisection plane in order to produce nothing less than a Star-Trek-fashion alien starship.

One of them even suggested that I should offer my software to Sci-Fi production studios for alien ship structure generator. Well, that idea is somewhat of a long shot, but the fact that two people simultaneously came to the same idea, amuse me.

That was a nice example that human minds think alike and that when you see something you invented, it is not necessery that that other guy stole it from you - he might just came across the idea by himself as well.

If you need consolation - it happened to the greatest minds as well.

Back to the subject, being a Sci-Fi fan myself (well, do you know any computer geek who is not?), they didn't have to tell me twice. In SketchUp, it took only a few minutes to complete the operation.

It's not exactly a beauty, just a proof-of-concept. I'll try harder some other time.

Tuesday, July 15, 2008

My first Voronoi Genetic-house





This is the first example of all the stuff put together: my C# "interactive breeder" software, Qhull and Sketchup (for final eye-candy-type visualisation).

As I pointed out in the previous post, some restrictions were made in deploying the input Voronoi sites. Most of them are derived using the interactive genetic algorithm; however, I sometimes force the grid distribution of the input sites, which can be nicely seen in this model - there are some areas of rectangular regularity.

While this can be seen as a cheating the evolutionary process, it is important to me to get insight in the rules of morphogenesis (genotype -> phenotype conversion). To be an architecture, the "genetic-house" must exhibit some architectural features - leveled floor of internal spaces (or rooms), for example, is perhaps the most important feature.

This "house" (I suppose you wouldn't like to live it it) is the major milestone in my project. I'll do a lot of them in the days ahead to get some feeling about what works and what doesn't.

Then I have to refine the genotype definition as well as phenotype development - morphogenesis. I am somewhat sorry that I won't have the time to implement all the ideas continually emerging at every step of my research.


Saturday, July 12, 2008

The Interactive Voronoi






Today I merged my "interactive breeder", previously working only with cubic prisms, with 3d Voronoi structures. Wow, it took a long time to come to this point, I'm getting somewhere...

There are still some problems: 3d Voronoi structures don't look like architecture yet (see the first picture on the left).

One would, um, imagine that a structure should have some horizontal planes in order to be an architecture. People expect to have some horizontal places to move, dwell, work... in their houses.

I decided to merge two vocabularies to achieve that: the final structure would be generated by the Voronoi algorithm, but the points would be artificialy encouraged to take positions in cubic grids (see the last picture on the left).

Was I cheating a bit here? Yes. The (politically?) correct way would be to define another fitness function which would favor the subjects with as many horizontal planes as possible.

Maybe I'll do that some time. At this time, I'm exploring the interactive genetic algorithms (with a human selector). As you surely know, the concept of time exists because everything cannot happen at once :-)

I think I'll explore the following question in one of the future posts: to what extent the traits of a subject are defined by the evolutionary process itself and to what extent by other forces; enviroment, for example. A shark and a lion are both predators, but they look quite different. The evolution process is crucial in species development, but the environment takes a part of paramount importance, too.