Procedural Beijing Buildings - The first iterations.
I've always been amazed by anything generated procedurally, from random dungeons in those 90's video-game maps to advanced computer graphics, it slowly showed me the way to various approaches and eventually got me in touch with many different and interesting tools. I soon realised programming was a skillset I still had to invest on and start to acquire (still haven't profusely), and those things can get daunting really quick if you you're not sure where you're headed.
Many projects I've worked on in the past years have absolutely nothing to do with what I've been doing lately, and I guess that's a good thing. I finally feel like I've found something I truly enjoy working with, and this targeted obsession can be very beneficial when learning. Processing, Arduino and Grasshopper Plug-in for Rhino were my entry-drugs, only to end up getting into Houdini after some years. First time I heard about it was around mid-2017, and I was simply astonished. I got back to it a few months later with great eager to learn it, and have been putting every bit of extra time I have into it ever since.
This is the first article of a series that will try to breakdown how I've been approaching and developing my digital assets to generate buildings procedurally inside Houdini, with intent to create and make high-quality content available at Unity's Asset Store. I plan also to share snippets of techniques or even short tutorials when in the next chapters, and I hope my journey so far might be interesting for someone starting out.
The first iterations
I mean that quite literally. It's true what they say you have to start somewhere. After being amazed by Anastasia Opara's work and others, and following a bunch of tutorials¹ I thought with myself, "I have to start making my own things with the stuff I've watched so far, that's the only way to really start learning". And below is what I probably first developed on my own inside Houdini. Not much indeed, but you have no idea how proud I was.
There was so much I didn't know then, just as there is so much I don't know now. If there is one thing I learned in the past months is that you should not be intimidated by your lack of skills. If you're waiting and waiting for that moment when you have a huge skillset at your disposal to actually start making stuff, you're gonna have a bad time. The only way learn is, you guessed it, by doing it. It doesn't matter how, just put things out! Remember to register your steps along the way and you'll be surprised how much you can achieve in such a short period of time.
Enough of motivational speeches, since what matters most is consistency and perseverance anyways. What is happening in that video? My first logical approach to design a tool that procedurally generates houses or buildings was mainly using the geometry faces as reference points, having them intersected on the spot and from the remaining geometry branching it out enough until you have a window or a door. A lot of internal referencing, and actually not a bad plan at all. It can work beautifully if planned concisely too. Mine was a mess.
If you look closely, this digital asset wasn't much more than a huge extrude and boolean operations mishmash. I had thus far no knowledge about developing multiple assets and feeding them into one another, that way modularising the 'building blocks'. However for me, this step was not only important but essential. I had no idea what I was doing or getting into. But just like drawing, knowing your basics and fundamentals is one of the most relevant things one can focus on.
Three days later I was working a new set of tools based off completely on the previous one, and things started to get interesting.
I started to realise iterative thinking was crucial for development. Look closely, the system at work is pretty much the same. The balconies are just extruded faces, and their respective windows are always the same size as the balcony dimensions. I was subdividing the faces at a certain height and extruding them enough until they looked like a window. I started to get creative too, though, and had some A/C props also spawn randomly, which was quite the feat at the time.
If you are a good observer, however, you might have realised they are nothing but big boxes with some decoration splattered across their surfaces. Not too bad if you need silhouetting for some very distant props, I reckon. But that was not what I was looking after.
One of my objectives with this project was to develop tools that could generate internal environments as well, meaning the ability to later walk around, in and out of the buildings inside Unity had to be imbued in its very own foundation. I had to rethink and start from scratch again, and that was actually pretty exciting.
Click here to read this series' second chapter.
(¹) There is simply a huge list of tutorials I could recommend, but I think that wouldn't add that much. Instead, I'll be listing specific ones related to the situation I'm talking about. In this case, the very first introduction I had in Houdini came from Moritz and Manuel's exceptional Entagma, followed by some great introductory videos by Kenny Lammers, instructing at GameTutor, and more recently Indie-Pixel.