Kalandraka: Procedural Building Generation

Update 12/04/13: Freebies! https://dl.dropboxusercontent.com/u/6354087/houses.unitypackage
Update 12/04/13: Closed alpha announced.

Hi guys/gals:

I’d like to introduce Kalandraka, a general purpose 3D Modeler that also creates infinite variations of your models:

The reason I post this here is because we have now started developing our set of tools for Unity that we intend to publish when ready.The other reason is we think the project is super-duper-cool and we’d like to share it :smile:

Here’s the (very WIP) Unity importer we have so far:

Background:

Kalandraka works very much like a programming language where a series of instructions are executed sequentially. Instructions are called “steps” and they usually perform geometric operations on previously created geometry. It works in both 3D and 2D spaces and offers transitions between them.

The system provides several ways to introduce variance into their models so the output is as diverse as the user wants it to be. No scripting is necessary although some will be available in the near future.

This project is NOT an implementation of a Shape or Split Grammar.

Results:

The houses in the video are actually generated using the model shown. It is a simple model of just 23 steps. A more complex model of about 200 nodes produced this modern houses:

Although not great (programmer art), these houses are not too bad, I think. And once different materials and props are applied they will be very hard to spot as procedural.

Last words:
A few observations before this gets too long:

  • The resulting geometry is extremely clean, in fact, all these renders are wireframe and it is barely noticeable (the geometry is made out of NGons).
  • It is also efficient, most these models are under 1k faces. That’s including geometric detail for windows, doors, etc.
  • Since you can generate as many models as you want you can really get to pick and choose.
  • Everything is still terribly alpha :slight_smile:

Thanks for the time and feedback is much appreciated.

Emilio Santos

looks very nice :slight_smile: i wonder if there is any beta test as i am very interested in this

look nice and interesting. what about pricing? will houses have interiors and textures.

Thanks for the kind words,

taichiu: As of now, there could be an early alpha testing if there’s enough interest. I would have to make installers and such and the potential testers must expect a few bad bugs :slight_smile:

im: Unfortunately I’m not yet close to having something I feel comfortable selling so I haven’t been thinking much about pricing. Regarding textures, there is already a material system in place (I’m working on importing it to Unity) but atm the problem lies with the texture coords, I haven’t found a reliable way to generate those.

Interiors are in the plan, but that’s much more work than materials and I have a few issues I haven’t figured out yet how to implement.

Do you need to have the models you create variations for, generated by this script as well? Or if I am building something, can I plug it into this and have it try and create variations of that?

Texturing might be important but, odds are even without textures, just being able to get variations generated this way will still be immensely useful.

nice works. I was thinking about releasing a villa package, but there you got it.

“the texture coords, I haven’t found a reliable way to generate those.”

map it house-side/floor and repetition by size and you’ll get a consistent wall texture

or maybe you can sell bare geometry (since most users will only use the default presets anyway - 200 nodes preset sounds quite complicated - and since the model might need still a lot of work till finalized) but bear in mind that buildings without volume are of restricted usability in video games : *no you do have a volume, but they are not precise geometry like walls, right?

Do you mean pluging in a 3d model into the program and generating variations? No, that can’t be done. The variations are generated on models done from scratch. Sorry.

Texturing is important, and i’m working on it at the moment. I never imagine it would be such a large topic of research. Worse case I could easily unwrap the model but that sounds like such a waste of textures.

Sorry about the villa package, if you like the models I made drop me a msg, maybe we can work something out.

Regarding the textures, its not so simple. There is no “floor” or “house-side”, there is user geometry that could be named floor, but the engine doesn’t know anything about that. But like I said, I’m working on it :slight_smile:

I’m not sure what you mean by 200 presets, I meant this particular model contains 200 steps (steps like extrude, cut, etc) Those steps generate the final geometry (and the variations). After that you get a 3d model like any other, like this one, for example.

I hope I answered you questions and thanks for the comments

no worries :slight_smile:

yes but you could divide up the height of the building : like a 3-storey building by 3 and you got the floor height (repetition of the uvmap y) and also like this with the sides of the building. doors n windows n stairs would be a different matter

I meant you probably saving these sets of nodes into presets. (aka preset containing 200 nodes)

That is assuming you are modelling a building… I mean, I try to stay away from half-baked solutions that usually break as soon as the user changes something. If you are a modeler you’ll know how tricky is to get textures right even in advanced programs like 3ds max.

The way I look at it is considering the alternatives where the modeler will have to build much more than 200 faces by hand, and even then you’ll have only one model, not hundreds, I think its worth the time :slight_smile:

that’s right. but still lot to do. lets hope you can implement uv-mapping, then it speeds it up. I started to unwrap the building you provided. left the object groups separate, so can be changed and do all sides. the uvmaps are approximates since didnt do any size calculations. but it looks quite ok. here is the fbx. and here are brick textures you can use for the walls.

Thanks! I will try it when I get home tonight, let me ask you a question, is unwrapping the preferred texturing mode? I figured it would too wasteful copying the same textures over and over in the big texture, but I really dont know what the best practice is. Thanks again

I’m doing it the simple way (maybe someone more exprienced in texturing can provide a more thorough answer), but I think it works for cubic buildings / flat surfaces. so it’s not for complex geometry or round surfaces.

When you say the simple way, do you mean traditional texturing tools such as Cube, Sphere, etc? Or do you actually mean unwrapping the building and painting the atlas?

Really nice. I was thinking in doing something similar, damn!!! :smile:

There was a project to generate procedural floorplants that were absolutelly amazing using a similar way to procedural cities (just changing ‘streets’ for ‘walls’), though it just didn’t go anywhere as far as I know. Perhaps you should check it.

Thanks! I think cities are treated with a different set of algorithms, for one they have to account for terrain, rivers, etc. What I have at the moment could be plugged into such a system. Once the city is subdivided Kalandraka models could fill the “lots”.

Do you remember anything about this project you mention? I’d love to check it out.

Hi folks, here is an update:

But first, freebies! https://dl.dropboxusercontent.com/u/6354087/houses.unitypackage

These are 48 different houses arranged (hastily) into a little neighborhood, enjoy!
The models have simple materials and texture coordinates.

Onto the update, closed alpha! I have finally put together an installer and am looking for
brave souls. You must be a little patient, curious and must need a few hundred 3D models
to make/finish that great project of yours :slight_smile:

If interested please PM.

And finally, the future! For the next release the user will be able to use curves, here is a shot
showing the curve editor (working on it) and the resulting render, it also shows all the steps
required to make the window (only the last 5 are needed, actually).

Thanks!

ESC

This looks great! Was thinking of trying to write something similar and came across this. Procedural content FTW :smile: