Roahith Rajendiran talked about his experience of working with Houdini and UE4 and designing procedural tools, development of the ideas, lighting experiments, challenging aspects of the work and solutions to them.
In case you missed it
You might find these articles interesting
I am Roahith Rajendiran but I go by Ro. I'm a procedural tech artist and a game designer. I am in my last year of study in the Interactive Media and Games program at the University of Southern California.
I did my undergraduate education in Software Engineering and after that decided to pursue Game Design and Development. Last summer, I interned with SideFx and worked on the Instant Meshes integration with Houdini.
Since then I've been working on several games and personal projects. In collaboration with the Tokyo University of The Arts, I worked on an experimental text game called Poesis. Another game I worked on last year is BirbRunner where you play as a bird wearing pants. Over this last year, I also worked on a research project for solving real-time parametric animation systems in Unity - a project funded by Softbank Tokyo. Most recently, I’ve worked on a personal project developing a procedural terrain pipeline in Houdini and implemented in Unreal Engine. This is still incomplete as I had to focus my time and efforts on other projects - mainly my thesis, and I hope to pick it up and complete it sometime soon. Here are some work in progress shots:
I'm currently actively working on my thesis game Harvest, a 3D first-person narrative and psychological horror game. Set to release in May 2021!
After my undergraduate education, I decided to pursue game development full time. I was trying to figure out a good game development workflow for making games. So, I spent a year trying to learn all possible software and practices I could find on the internet. I researched and asked people what they use, and how games are made.
I was able to distinguish a couple of different disciplines and workflows - ideation, concept, modeling, texturing, designing, audio and sound, programming, etc.
I was trying to get a good understanding of all aspects of game development, to figure out what part of the production I am interested in and see myself doing in the long run. I practiced modeling in 3ds Max, texturing in Substance Designer and Painter, programming in C++ DirectX and Unreal Engine. It was then that I came across Houdini.
There are many pathways to learning Houdini. However, I always prefer learning through experimentation and learning by doing. Just getting into the Houdini environment and playing around really helped me figure things out by myself. The shelf tools are great starting points. They give you a small enough network to try and understand, break and improvise.
Houdini is a software that can do anything from simulating a fully functioning car engine to running planetary simulations for Nasa. I know that I won't fully ever explore all aspects of the software. So, I pick and choose what catches my interest. I am very interested in designing procedural systems and procedural modeling. And that's what I use Houdini for now in my projects.
In high school, I specialised in computer science where I learnt programming and database management among other things. During this time, I was also fascinated with Hollywood movies with VFX and decided to teach myself the skills needed. Hence, during high school, I learnt how to use Cinema 4D, Blender, Adobe Flash, Premiere Pro and After Effects.
After about 2 years, in my very first year during my undergrad, I was recruited into the VFX division of a multimedia student club called WebArch. During this time, I was mentored by the VFX lead, whose support and encouragement was very important for me. I had the ambition of recreating the university campus in 3D, and with his support, we were able to achieve our goal. I was also recruited into the Google Student's Club as part of the creative team. Those were some of my first successes.
Quickly after that year, I became the lead of the VFX division and the creative lead in GSC. I continued in both positions for 3 years. During this time, my team and I handled and lead creative projects for various groups on campus, as well as a handful of commercial client projects for commercial ads and event promotions.
During the last few years of my undergraduate education, I started playing video games. Assassin's Creed, Tomb Raider 2013, Call of Duty, Battlefield, etc. It was during this time that I got interested in video game development.
I figured that while my original goal of wanting to make VFX films such as those of Marvel and ILM were great, the appeal of becoming part of a world was too strong. It was the "next" logical step in my mind, in making a narrative immersive. To be able to live in one, act in it, impact actions and decisions. That is what games are to me, and that appeal fascinates me. As I researched into videogame development, I was pleasantly surprised to find that a lot of skills, practices, and workflow overlapped between the world of motion graphics and VFX to video game content production.
My computer science and software engineer background allowed me to pick up game programming quite easily. It was like my passion for creativity and storytelling was merging with my technical skills. The marriage of art and tech.
It was during this time that I picked up game engines Unreal and Unity.
After that, I spent about a year trying to understand all parts of the game development.
After that one year, I applied to the Games Program at USC.
Once I was here in Los Angeles, Debra Isaac came to USC to teach a Houdini workshop, and I got acquainted with her. She invited me to the LA-HUG events held at SideFx. That's where I met Paul and subsequently applied for the Internship at SideFx the following Summer.
How Creative Projects Are Born
Inspiration comes from a lot of places. Sometimes it's a soundtrack in the background of a video, or a movie, or a song or a piece of music. Sometimes it's a phrase, a quote I come across in something I'm reading. Sometimes it's the artwork that someone I follow posts on social media. I find that I often think very visually and spatially. When I listen to a piece of music, depending on the genre, I see landscapes, and shapes, and contradictions, and spatial forms. I often encounter these images in my mind when I meditate as well.
I collect reference images from several places - ArtStation, Twitter, Instagram, Reddit – into a reference pile folder.
A project for me starts with immediate execution. I have an idea in my mind, and I jump straight into Houdini and/or Unreal and start putting things together. A very rough, unpolished implementation. This way, I translate the raw idea I had in my head to something concrete. This is for me to figure out if the idea I have is appealing, or works, or is possible. With Houdini, it almost always is. Once I figure out the very rough process of it, I then turn it into an HDA or export it to Unreal Engine. In Unreal Engine, the first thing I do is light everything. Simply because that's what excites me the most, and personally brings the life to the idea. As I light, I start going into compositing the shapes, shadows, and lights.
This is the first exercise to flesh out the idea and capture what I see in my mind. It may not be perfect or polished. I might even completely change it later. But this lets me pour my idea onto a place - like a first draft. I adopted this practice from learning how to write where we often make a text dump of all our ideas, and then later edit and refine it.
After I dump my idea, I go through the reference pile to see what appeals to the current idea. This way, I'm drawing in information and ideas from something that resonated with me at different points in time.
After that, I go online and look for reference images. I also research into the idea. Most of my work is environmental, and this pushes me to ask some questions.
- Who comes here? Who interacts in this space?
- Do people live here? Is this a workplace? Home? Public space?
- How crowded can it get here? Is it private? Is it open?
- Is it a secluded place? Is the person living here an introvert?
I write little answers to all such questions. This allows me to do some world-building, which also helps me search for specific ideas while gathering references.
I collect them in a folder and make a mind map of them with different notes attached to each.
The notes identify aspects of the image I like or find relevant for the idea.
I continue building up the mind map and frequently step outside the idea to look at the bigger picture.
This is how a project usually starts for me.
Combining Houdini and UE4
The combination of Unreal and Houdini is the best for my interest. Houdini allows me to free-associate any and all ideas I might have. I mostly work with procedural modeling in Houdini, and this allows me to come up with logic and algorithm for procedurally building what I have in mind.
Once I have a first iteration of the system, I make an HDA out of it and bring it into Unreal Engine. Houdini has a plugin for Unreal engine called HEngine which allows HDAs to run inside of unreal. This allows me to bring all the logic and system that I build in Houdini to Unreal. Then, as I mentioned before, I start lighting the scene and compositing it to get a feel for it.
I then try and refine the HDA asset in Houdini. I add more complexity to it, more modules, expose any parameters for controlling in Unreal. Then back into Unreal and testing the HDA out. I go back and forth between Houdini and Unreal this way. Designing the systems in Houdini, and testing and implementing them out in Unreal.
Work with Lighting and Post-Process
Lighting is one of my interests in Unreal Engine. It allows me to design and craft shapes, shadows, and compositions that are of a very high cinematic quality.
Once I bring in the HDA from Houdini, I move around the scene to find interesting points of view. This allows me to frame my shots and do some basic compositing. I create a camera at a point I find interesting and move on to another shot/location.
Then I begin the process of lighting. I basically clear out all existing lighting, skylight, directional light, fog, post-process, and everything.
Then I add a post-process to clamp the exposure levels.
This allows me to craft the lighting from some sort of a blank canvas.
Next, I add a directional light, if it's an outdoor/daytime setting, and add a skylight to brighten up the shadowed areas. This is like a base layer of a painting. Then I move on to adding individual lights.
As I'm adding lights to get a good composition, it allows me to establish directionality in the image. Lights in my images usually have a concrete form or source - something is always glowing. Either it's a pillar of light, or light from behind something, there's always a clear source of light. If it's diffused lighting, I achieve them with a combination of things such as fog or particles. This step of manually adding lights creates shadows that allow me to create directionality and form.
Then I add the exponential height fog, to add depth to the image. I also turn on volumetric fog, to get the light rays for the light source. The light rays, sharp shadows, and the bright and dark values all contribute to the composition of an image. Then I tweak the skylight and directional light, to increase/decrease brightness to the shadowed regions of the image.
Once I'm happy with how the overall environment looks, then I go back to each of the cameras and tweak individual spots on the map and environment to further refine the image. This is like spot-fixing the environment.
I enable the cinematic rendering quality in UE4, switch to the cinematic viewport, and turn on the 3x3 grid to establish and capture screenshots with a good composition.
Procedural tools are something that has always fascinated me. They're like little systems, comprehensive and compact to solve a problem or make something. As I was learning Houdini, I started seeing the merits of a procedural system, especially with respect to procedural modeling.
I used to practice and model traditionally, which was quite therapeutic at that time. However, once I started doing procedural modeling in Houdini, I could not go back. The freedom it offers in free-associating and expanding an idea is something I couldn't give up.
Over time, I started designing procedural tools and systems to be used in Houdini. I started with little things like staircases, windows, tables, and other props and now work on generating entire cities with topographically accurate roads, rivers, foliage, etc.
When I do have a problem to solve, I try and start designing it in Houdini. This often used to hinder me, because I couldn't keep the whole system in my mind. As I lay down a node, and create the smallest possible functioning system, I found that my mind then starts extrapolating and designing all possible variations and combinations with that system. Very quickly, I find myself overwhelmed with the very thing that I love about Houdini - the sheer number of opportunities and free associations. I struggled to get anything done.
During my last internship, Paul Ambrossiusen suggested that I design the smallest iteration of the idea first, before making it procedural. As Houdini is a node-based software, we can always go back into any part of the process and expand it in any direction.
So, making it procedural right away, though exciting, derails the train of thought. Not just because it's hard to keep the original idea in focus, but because the number of different, interesting things to do with even a small system is so high that it gets lost in the background.
I started crafting the solution first, almost traditionally but using Houdini's nodes. This allows me to get to the first draft/iteration of the idea.
Then I go back to the different nodes (or the bunch of nodes) that make up a system and proceduralize them step by step.
That way, I can not only step out and see the result or the overall picture, but also dive in and expand on any part of the system.
Then I take into Unreal and light it and add the materials.
I also add blueprint functionality to them, using instances. This is where my game designer side comes in and starts designing the levels and interaction in Unreal.
Challenges, Solutions, and Future Plans
One of my biggest hurdles was structuring the solution. This is something that I am always working on.
When I do have a solution in mind, the issue often becomes keeping track of the various levels of complexity. Wes McDermott had an insightful piece of workflow advice he offered in one of his Substance Design tutorials. He said something very similar to what Paul told me - to make a first draft version of the solution, and not worry about making things procedural. To think of a solution as several different layers of abstraction.
The bottom-most layer is the first draft iteration of it. It does the job, it's unpolished, not entirely procedural (may be a little bit), but it helps establish the bounds of the solution and the big blocky shapes needed for the other subsystems to work with.
Then, we start working on the next layer of information. Where we go through the whole system and work on adding details and subsystems along the way.
Wes's workflow for designing procedural textures in Designer works very well and is similar to Paul's advice of designing procedural systems.
Apart from that, one of the external challenges is making the time for it. Since I also design games, I don't get to spend as much time designing and creating the procedural tools as I am designing and testing the gameplay. To me, that's just where my interests are, and I take pleasure and joy in all parts of these processes.
Another challenge with Houdini is that sometimes I find myself spending several hours trying to figure out a solution, often in vex, only to find out that someone else out there on OdForce or SideFx forums had already solved it. After spending a lot of time and effort, you realize that you've just been reinventing the wheel. It can sometimes be frustrating, but there's something very important that I've learnt through these experiences.
I personally believe that reinventing the wheel can be a very enriching experience. I learn and explore a solution to a problem in my own way. It may not be the best, most optimized and time-sensitive solution out there. But there are some things that I discover and learn in the exploration of my solution, that I find valuable. Sometimes these bits are tiny, sometimes redundant, sometimes non-existent.
But, whenever I do find another solution online that does a better job, I immediately adopt it. Through practice, I've learnt to not look at and judge my solution or anybody else's. Someone's solution might impress me. But I often incorporate the little bits of learnings I found in my solution; into the solution I find online. Or the other way around.
One of the things I've wanted to accomplish is to design and create a fully procedural terrain system from Houdini to Unreal.
This was a personal project and a goal that I set for myself. I knew that it was already done in Houdini by Ubisoft and several people, years ago.
But to me at the time (about a year ago), it seemed daunting. The idea of designing a world, and all the various subsystems in it, was something very appealing to me. I figured that if I were to learn how to design such a complex and huge system, I would learn some very good procedural workflow strategies.
So, the reward or the goal of this project was not the end environment. The goal was to learn and practice designing design massive and complex systems with several subsystems in it.
Hence, I started designing a fully procedural open-world level in Houdini and Unreal. I would be happy to break down my process in another article once I polish my project.
In the near future, I intend to refine the skills I have acquired. I want to design many more systems in Houdini and have them playable in Unreal Engine. Houdini is getting a revamped Houdini engine exposing a lot more of the Houdini functionality in Unreal Engine. This excites me both as a procedural tech artist and as a game designer. This narrows the gap between Houdini and Unreal, and I always appreciate the freedom of Houdini's procedural system. Combining that with the cinematic rendering and life of Unreal is a dream come true.
I'm always improving myself and learning new things in Houdini. New solutions, new ways of thinking, and designing solutions for new problems. I want to refine my workflow and pipeline of designing tools, and implementing them in Unreal Engine, and designing interactive gameplay systems.
As for other skills, I really like sketching. So far in life, I've been sketching abstract shapes and designs, with little direction or composition. I want to learn how to sketch traditionally, on pen and paper. This isn't just an interest of mine that I want to pursue, but I believe it will also help in becoming a better designer and creative individual overall.