Muhammad Kamal Ahmed did a breakdown of his procedural sci-fi building created with Houdini and Substance tools.
Before we start I would like to thank 80 Level for the interview and a fantastic chance to share my knowledge with the readers as well as my friend Abdel Halim Garess for valuable advice.
Hi, my name Muhammad Kamal Ahmed, I am a Houdini FX artist based in Palestine. Most people know me under the nickname Standing Man. I like creating fast and efficient FX tools for Houdini to push the boundaries of what’s possible or help solve production problems easier and/or faster. I have a strong background in CG effects production and graphics programming which allows me to create highly generic, robust and performant production-oriented tools.
Exploring Procedural Art
I explored procedural art by learning to program and work in Houdini, a procedural design tool that merges art and math. Due to its node-based workflow, the creative process and the results are always visible alongside each other which is a key factor in designing to get continuous visual feedback. I learned most of the basics through great Side FX masterclasses, cgwiki, and my own experiments.
Start of the Scene: Goals & Inspiration
My plan was to make an epic science-fiction environment from procedurally generated models and then get it destroyed by an animated robot inside Houdini. First of all, I wanted to get better at dealing with large-scale shots and working with different materials like metal, wires, concrete, etc., plus I love destruction FX. With any project, I always try both to improve the current skills I have and also learn some new tools along the way. A cool portfolio piece is a bonus!
My main inspiration is definitely the concept art of Jakub Rebelka. Additionally, I randomly stumbled upon photos of residential buildings in Hong Kong and just fell in love with those kinds of structures.
Building a Procedural Structure
To build a completely procedural structure you should understand the hierarchy of the structural elements. Then, within each element, there could be changeable parameters that allow getting unique shapes. For example, changing the seed value can affect how other elements are assembled in relation to the main part. Here, I find Vornonoi clustering method the simplest to use.
Below are my key insights that may help you realize how Мoronoi fracture and cluster points work:
A Voronoi fracture is given scattered points which gives you that standard Voronoi cell look. If you feed it points with more ordered structures, a wide variety of fracture patterns are possible. Further, using the cluster option to guide the Voronoi to fuse cells together leads to even more interesting patterns. Cluster patterns use the ‘cluster points’ node to do its own semi-random collating of points, which again is used to drive the cluster+fuse of the Voronoi.
This video explains how I use Voronoi cluster pattern for generating basic structures:
Here I also used Voronoi cluster for windows:
In almost all sci-fi spaceships or station they use random paneling in the hull to create a sense of scale and add detail to what would be a very plain and simple object otherwise. The easiest way to model that stuff procedurally is by using multiple layers of Voronoi cluster.
It was very hard to curve pipes on the edges of the main piece procedurally, so I again used vex here. I used the Primitive node to convert the ceiling and the floor of the main structure into the lines and then created a new line between those two. The next step is to skin those lines and make a curved bridge between the pipes to get a smoother look.
This video explains the main idea:
The same technique was used here:
- Other Elements
I’ve had an idea to some elements like an air conditioner from Hong Kong buildings and give them a sci-fi look. For that reason, I procedurally recreated some of the models from MEGASTRUCTURE Kitbash which is a large bundle of futuristic environment pieces.
After modeling the key elements, I started thinking of how I could place them procedurally in relation to the main piece. For the air conditioner, I did some mathematical calculations based on the bounding box of the building and coding using vex to put the air conditioner beside windows plus computing their size relative to the width and height of the main structure. The most complicated part here was the variable nature of the main structure: it was hard to prevent the objects from moving out of the bounding box when the shape changed. To solve this problem, I also used vex.
Creating materials is a fun part for me, especially since Substance Source makes so many things very simple and effective. I use Substance Designer and Substance Source mostly for things like sci-fi panels, metal ceiling and floor, etc. and Substance Painter for special objects only (when I need to create a really special look) like an air conditioner. I like to use images from cgtextures.com as a base and play around with them, make them tileable and seamless.
For this project, I didn’t work too much on the UVs and relied on Houdini’s Unwrap node. In general, I prefer using tileable textures for scenes like this one since it saves A LOT of time, especially when you create multiple shaders with the same textures but use them differently.
Where It Can Be Used
This project is well-prepared for the use in VFX, especially for the destruction shots. If you want to use it in the game engines, it might need some modifications, however, I tried to work with the minimal polycount possible, so it can be implemented in a game environment.