Procedural Beijing Buildings in Houdini

Ricardo Ponce talked about the project Procedural Beijing Buildings and the use of Houdini in production in general.

Ricardo Ponce talked about the project Procedural Beijing Buildings and the use of Houdini in production in general. You can also learn more about the workflow for the project here.

Introduction

80lv: Could you introduce yourself to us? Where do you come from, what do you do?

My name is Ricardo Ponce, I’m originally from Brazil and I’ve been currently working as a visual effects artist, based in Beijing for the time being.

By formation, I’m actually a designer. During graduation, I had the chance to study abroad in Germany for one and a half years focusing mostly on product design, as well as new materials research and parametric structures. After finishing my Bachelor back home, I decided to go back and start a Masters degree at the same school I previously attended.

It’s funny because my journey into procedural modeling actually just started a couple of years back. Proceduralism had always been a very fascinating topic for me since many years, but it wasn’t until taking part on a Grasshopper (a plugin for Rhino) workshop that I started developing a sharper way of thinking out of the standard, destructive methods of modeling.

80lv: How did you end up in China?

During that period in Germany, I was granted a scholarship to study in Beijing for one semester, and I used that opportunity to focus heavily on improving my skills and learning new things.

Studying Houdini

80lv: Is that when you started learning Houdini?

Yes. Houdini had already been part of a previous project a few months earlier, but it was nothing more than playing around with some tutorials and having a bit of fun. Its potential was quite obvious, however, and it sat there on the back of my mind for a while. Later when I decided to give it another patient try, things opened up tremendously. I was suddenly almost addicted to the way everything worked, and parallel to learning the basics I always strived to have a personal project going on, so I could put everything into practice.

80lv: What were you experimenting with at that time?

All sorts of things! I was watching and studying pretty much anything Houdini-related I could put my hands on. A lot of talks, webinars, and masterclasses, as well as some great free tutorials. I was naturally pulled towards procedural modeling, and websites like GameTutor and cgwiki were simply incredible.

I was heavily inspired – and surrounded – by traditional Beijing housing blocks, so I thought it would be more than fitting to try and replicate all of that in 3d. I remember I started from scratch countless times, which was very beneficial. The challenges I faced at every iteration were just enough fuel to have me keep pushing.

For such a short period, what I was able to accomplish actually surprised me. I was really excited about my progress. I established a Twitter profile to document everything I was working on, and the reception was fantastic.

Entering the Industry

80lv: How did you end up getting into the industry? 

I was running short on time, but I had one certainty in mind: regardless of where or how I wanted to keep expanding my Houdini knowledge. Fortunately, an opportunity appeared before my eyes, and the next thing I know I was working as a Junior VFX Artist at Pixomondo. Even though I had ideas of going more towards the games industry (still do!), visual effects were pretty much the next great thing, and I’m really so glad I decided for it. I got to keep working with the tool I was so passionate about, learning things from a new perspective and surrounded by amazing, like-minded people.

The experience of entering the industry actually surpassed all my expectations. I adapted rather quickly working within a team, and having very well-defined tasks was definitely a productivity boost. During the following eight months I was working exclusively on a very demanding project called “The Wandering Earth”, which is this very ambitious project and really a landmark of the Chinese Sci-Fi feature films, where I was able to follow closely and learn a lot how so many things go about being accomplished, and even capable of contributing to some really interesting shots. The movie came on out the 5th of February, and it’s been a major success so far. It seems Netflix is even picking it up for the western audiences, so I couldn’t be happier.

Utilizing Houdini in Production

80lv: The production of such an enormous scale would definitely require some procedural approaches. Could you talk a bit about the challenges you faced?

Absolutely. If not procedurally, it would’ve been impossible in short notice to solve many of the issues we encountered. One of the tasks assigned to me was to create a setup for covering any incoming geometry in thick ice layers, which had a lot of VDB and noise involved. Another exciting setup was also created for emulating broken glass geometry on entire building models. Our minds are insanely good at recognizing patterns, so for making anything procedurally generated look realistic, a lot of automated variation has to be built-in.

80lv: On a more technical level, how would one approach something like this?

It’s not necessary to be a full-on programmer to understand some basic principles about loops, which are utilized extensively when designing anything procedurally.

For example, generally, when utilizing a for-each loop (not necessarily only in this context), each piece of the input is evaluated separately, hence the name. While looping, we’re always keeping track of which iteration we’re currently on, and that information can be used in our advantage to ensure that all results are independent, unique versions of whatever we’re creating, more specifically as the seed for various random functions. Across so many building models I worked on, between millions of broken glass panels, it’s hard to believe that none of them are identical. Depending on how tall the structures were, each batch would only require from seconds to a few minutes of processing.

80lv: Are there any other noteworthy details you’d like to share with the readers?

Yes, plenty! Another interesting challenge arose unexpectedly during production, and I was requested to try and create a tool capable of generating fully damaged buildings from scratch for blocking out some shots. Extreme high detail was not essential since they were mostly meant to be seen at mid to far range. I came up with a setup that had virtually infinite outcomes, split into three main categories such as reinforced concrete buildings, full glass facade buildings as well as hybrids of the two. Instead of using modules, I opted for treating the whole outer surface as one body, which helped a lot when adding damage to them. Think of those big chunks you see missing as a simple noise generated onto a cage around the main structure and projected inwards. The deadline for this was very tight, however, and we needed to optimize everything we could. The beauty of Houdini is that the same setup I had previously created to break glass geometry procedurally could be integrated seamlessly in here too, allowing the team to focus on other pressing tasks.

1 of 2

80lv: How does the procedural nature of Houdini help you to iterate and come up with more interesting results?

As I mentioned, all I’ve been learning and putting into practice has been through a lot of trial and error. Many great online resources gave me the support I needed to kick things off, but ultimately the strong will to accomplish something is what drives us forward. Creating things procedurally is no different; focusing first on basic implementations of an idea is essential. Just like when painting, we should always concentrate on broader, larger strokes early-on (see this phase as proof-of-concept) and refine our brushes slowly as we progress. Sometimes it’s easy to lose track and spend a lot of time on details even before having a concise foundation; remember to step back and look at the whole picture more often.

You can iterate a lot faster by keeping things simple at a first step and focus only on attempts where you really see the potential.

80lv: We’ve always liked the way you set up your networks, it’s incredibly neat and logical. What’s a good way to organize them?

Yeah, it can actually get really messy sometimes, especially if you’re just trying out something quick, and don’t intend on having other people looking your setups. But I wanted to be more careful about that, so I started to visualize everything as if I was creating from a third-person perspective; “how would a user accomplish this or that”, or “what type of input would make sense here?”, you know?

I think it’s good practice to follow some of the standards you see around and come up with your own as you go. Looking at other people’s files is extremely helpful, too.

That’s also one of the reasons why I decided to create Particula, a website for compiling my personal annotations and scene files that were growing quite rapidly. I discovered that by projecting myself into a tutor position it was easier to assimilate everything I was taking in; writing things down, describing what I did and how I did it as if I was explaining it to someone was one of the most efficient ways of really comprehending anything long-term, at least personally.

80lv: In what way does Houdini help you to have so many different elements in your designs?

Apart from being mostly multi-threaded, that fact that Houdini is intrinsically procedural makes iterating very fast. I will say, however, not everything is magical and easily solvable. There has to be some great discernment for choosing the best ways or tools to solve any specific tasks, and that comes only with experience. It’s no surprise that Houdini is being increasingly adopted by the games industry, especially at the Indie scene, as more people are understanding the great advantages a procedural approach can have over standard methods.

Houdini gives you the option to pack and instance objects, which basically means having a single loaded model on memory and using points for representing it elsewhere, as many times as you wish. This allows us to work with some absurdly large scenes with no impact on performance, something that other suites would have a really hard time processing.

Materials for Learning Houdini

80lv: Could you give some recommendations as to where we could read and learn more about the production of game assets in Houdini?

Like I mentioned previously, GameTutor has some great introductory tutorials that should provide you a good starting point. It’s run by the amazing Kenny Lammers, which also has this new project called Indie-Pixel that focus almost entirely on game dev. I should also mention for those of you that might not know, that SideFX has something called the Houdini Engine, which is the bridge between the tools created in Houdini (Houdini Digital Assets, or HDAs) and other packages such as Unreal Engine and Unity. It works like a real instance of Houdini running under the hood when in use by the game engines, which allows for the interactive and responsive generation of procedural assets right inside them. This is pretty much essential if your main objective is to work with game assets.

But there are plenty of other resources out there, and the good thing is that even if a tutorial is not specifically aimed towards game assets per se, the knowledge you acquire is always fully transferable inside the various contexts Houdini offers.

Entagma has probably the best free tutorials out there. Matt Estela’s cgwiki is the most complete compilation of annotations and setups you’ll find on the web, and it has helped me and many, many others countless times.

Henry Foster’s toadstorm blog has some absolute gems, and so does Peter Quint’s archive. Anyway, the list goes on. I keep a page on my website that lists these and many others, you can check it out here.

Conclusion

80lv: What do you think Houdini is still lacking and what updates are you looking for in the future? Do you think it’s worth the time for an artist who works on much smaller projects to learn this software solution? What advantages can this knowledge bring to someone who is just at the beginning of the “CG” path?

The amount of new features being put out by SideFX’s Team is unbelievable. The new additions brought with the rise of 17.5 are impressive, and I’m especially looking forward to the immense benefits PDG can offer us from now on.

There are a couple of things I wish had a better workflow, however. I think the Compositing context in Houdini is really powerful, but still lacking some key features. It’s not as straightforward as it should be, in my opinion, and could also get revamped soon.

Having the ability to work on textures inside Houdini the same way Mixer from Quixel is offering us would be a really great addition, too. I think the terrain tools in Houdini are more than capable of powering something similar, and that for me would really be a dream come true.

Now back to the question, it depends. I think nowadays people can learn anything they want, it all comes down to how dedicated you are. Houdini is said to have quite a steep learning curve, which is true, but on the other hand, you will be able to achieve good results fairly quickly.

For smaller projects and teams is actually even more beneficial. Due to its proceduralism, you are able to produce and deliver so much material that someone following standardized methods could never compete. But then again, it all depends on what you are trying to achieve, and some tools are naturally better than others for specific tasks.

If you’re just starting out with CG, get a feel for it first, learn the multiple positions and roles that usually compose a pipeline, and steer it according to your interests. Ultimately, I think being happy with what you work with is the most important thing. Really enjoying what you do is key to excellence, and remember often there is no “right way”.

Ricardo Ponce, Technical Artist

Interview conducted by Kirill Tokarev

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more