FREE Procedural Building Generator - Master's Thesis

Hey guys, I hope you can spare some time to try out my script. It’s a procedural building generator designed to make buildings suitable for game environments.

You can download the script HERE

Version: 1.07 -Added a (finally) functioning controller to adjust the vertical positioning of aligned assets, and I also made the tool work on any Max version 2010, 2011, or 2012!

Version 1.08
Middle floors can now be either one single piece of geometry or each middle floor can be it’s own piece of geometry. You get to decide.

Please, PLEASE fill out this survey as this is for my thesis that I will be defending soon - the more responses and advice\criticism I get the better!

Thanks, have fun, and I hope you use this in your workflow! Remember this is absolutely free to use!

If you have any questions you can email me , and I’ll reply ASAP.



Cool stuff! Do you have any videos of it in action (or more documentation)? It tends to demonstrate a tool better so people will be more tempted to give it a try.

Is your work based off of the “Procedural Modeling of Buildings” shape-grammar whitepaper by Muller, Wonka, Haegler, Ulmer, and Van Gool?

“Small” nitpick (as I can’t stand global data :no: ), you might want to enclose your script in paranthesis to keep data out of global scope in your Max scene. :slight_smile:

If you need to keep the ability to “destroy” copies of of the dialog window, just keep that global, or perhaps iterate through the window hwnd IDs.

Okay - first - part of my thesis is the UI so I don’t want to show the details on how to use it. It is supposed to be very intuitive and I hope many of you would try it out and rate how easy it was to use as well as how useful a tool it can be in your workflow.

Second - I wish I knew there was something out there that I could start with - I pretty much learned MaxScript as I was making this, it was a long road. The “Procedural Modeling of Buildings” shape-grammar whitepaper would have been awesome to have as a reference… sigh…

and as for global - I see your point…I’ll work on that… I don’t really understand what you mean by iterating through the window IDs - could you explain that a bit more?

Thanks guys - the input is awesome! It would be great if you could spend a few minutes with the tool and then answer the 8 questions in the survey… it would help out lots!

“Procedural Modeling of Buildings” shape-grammar whitepaper by Muller etc… Yup - I did find that when I started (it seemed familiar - just did a search - and realized it was the first thing I found way back when I started this) - did as much research as I could and the City Engine was my main source of inspiration… Actually when I get through with my Masters and tweak this further my next step is to start over and get a really robust city generator done with ICE nodes in Softimage… but I’m keeping with this MaxScript first.

To close the script rollout without having global data, something like this should work, just replace “Your Script Window Name” the window name of your script,


(
local myScriptWindow = windows.getchildhwnd 0 "Your Script Window"
if (myScriptWindow != undefined) then
	windows.SendMessage myScriptWindow[1] 0x112 0xF060 0
)

The syntax is a bit unusual (unless you’re familiar with old MFC and Win32 stuff), however, you can find a lot of similar examples from DenisT, lo, ZeBoxx2, and others here,
http://forums.cgsociety.org/forumdisplay.php?f=98

Also, here’s a list of windows messages,
http://www.autohotkey.com/docs/misc/SendMessageList.htm

Sweet - I’ll give it a go.
Thanks!

Well I gave that a try - running into a problem where my script is actually in 2 parts - the building part and the alignment part… the way it is now I need global so that the 2 parts can reference each other. I’ll see what I can do to fix that, but for now I won’t make a huge overhaul at this stage. I will definitely write this up in my thesis - as an important fix. Even though I named everything in a way that SHOULD not interfere with anything else going on in max… but keeping globals out is a realistic concern.

One question for you guys - The way I have this now all the middle floors ( floors 2-9 in a 10 story building for example) is separate geometry for each individual floor. This is good if you want to do major changes to those floors - but bad in that it slows everything down. How useful or detrimental would it be if I made all those floors one piece of geometry? You would still be able to align stuff to it as if it were many, but you would lose the freedom of having each one floor be it’s own thing.

Of course the quick answer is to do them both and give the user an option… but as for usefulness… would you need those middle floors to be seperate?

Thanks again guys!

Version 1.08
Middle floors can now be either one single piece of geometry or each middle floor can be it’s own piece of geometry. You get to decide.

No more feature creep till after I defend… (must… remain… strong willed…no… road system…allowed…not yet…heheh)

Version 1.082 - No globals anymore…
I used different ways to reference what I needed and just commented out the globals I declared. It works!

Thanks for the input!