Akio Inagaki has shared a comprehensive breakdown, detailing the working process behind the Houdini-powered procedural scaffolding generator, explaining how instancing was used, and revealing how procedural materials were integrated.
Greetings! My name is Akio Inagaki, a passionate 20-year-old student, currently immersed in my second year of studying Game Graphics Production at Howest Digital Arts & Entertainment, with a particular focus on the captivating world of technical art. It all began when I embarked on a Procedural Introduction course last year, where I was challenged to create a procedural vintage skyscraper using Houdini. This experience ignited my fascination with Houdini's procedural approach, propelling me into a world of endless exploration and learning.
Before diving into the exciting journey of developing the scaffolding generator, I had the privilege of contributing to several projects that allowed me to refine my skills. Collaborating on game prototypes and engaging in small-scale procedural art experiments were pivotal moments that paved the way for the complexities and challenges of the scaffolding generator project.
Moreover, I am excited to share that I am actively seeking an internship opportunity for the upcoming first semester of 2024. This period presents a valuable chance for me to apply my Houdini expertise and expand my horizons under the guidance of experienced professionals.
I made the decision to learn Houdini last year, captivated by its power and potential for procedural workflows.
During my learning journey, I relied on a variety of resources to master the software. I extensively followed Houdini breakdown videos and talks available on platforms like YouTube. Additionally, the JoyOfVex blog on CGWiki proved to be an invaluable resource for diving into Houdini's VEX language. My advice to students interested in learning Houdini is not only to watch tutorials, but also to actively replicate and experiment with the concepts they learn. Houdini has its own unique way of thinking, which can be challenging at first but immensely rewarding once grasped.
The inspiration for the scaffolding generator came from the awe-inspiring Project Titan demo created by SideFX, showcasing the benefits of a procedural workflow. Intrigued by the scaffolding tool featured in the demo, I searched for tutorials or resources to understand its construction, but found none. Determined to create my own version, I embarked on the project.
My goal was to develop a real-time, efficient, and flexible scaffolding tool that could be used to construct large-scale environments with ease and interact with the environment. I wanted to enable users to effortlessly modify meshes, materials, and overall aesthetics, all within the Unreal Engine environment.
The setup of the scaffolding generator involved a meticulous process, blending various tools within Houdini to achieve the desired outcome. One of the critical components was leveraging Houdini's point instancing functionality for optimal performance.
To begin, I created point clouds in Houdini and assigned each point a path to an Unreal-ready mesh. These meshes were then seamlessly instanced onto the designated points within the Unreal Engine environment, resulting in the desired scaffolding structure. Some of the additional features I incorporated included stairs, nets, and ground interaction, elevating the overall functionality and flexibility of the generator.
Main Structure Breakdown:
Stairs Breakdown:
Rosette Rings Breakdown (a rosette is a circular component that connects different parts of a scaffolding structure together, providing stability and support):
Houdini's instancing capabilities played a crucial role in the success of the scaffolding generator. As one of my primary goals was real-time performance and scalability, object instancing alone was insufficient. To address this, I utilized point instancing within Houdini.
Point instancing and object instancing are two methods used in computer graphics to efficiently duplicate and render multiple instances of an object. Here's a simple explanation of both concepts and a comparison between them:
To provide users with flexibility in material customization, I integrated procedural materials created in Substance 3D Designer. These materials were designed with exposed parameters, allowing users to tweak and experiment with different variations and styles. You could, for example, change the name written on the kickboard, the condition of the scaffolding, the colors, or you could just swap the default meshes with your custom-made assets to match your desired aesthetic. By empowering users to adjust material properties within the Unreal Engine environment, the scaffolding generator becomes a versatile tool that adapts to their creative vision and aesthetic preferences.
While creating the points to instance Unreal meshes was a relatively straightforward process, the real challenge lay in correctly orienting and assigning specific meshes to each point. One of the most difficult aspects of the project was the placement and orientation of the rosette rings. To tackle this, I had to meticulously determine which points should instance which rosette ring type and then orient those point groups accordingly. To achieve this, I moved each primitive to the center of the world and used their positions to assign them to the desired rosette ring type group. Quaternion transformations were then utilized to precisely orient the points in the required direction. This complex process ensured that the scaffolding generator achieved the desired level of accuracy and visual fidelity, despite the inherent challenges involved.
Developing the scaffolding generator was a challenging endeavour, especially while balancing it with my other coursework. Although I had initially intended to allocate more time, my commitment to maintaining high grades in my other courses limited the available development time.
Consequently, I had to rework various aspects of the tool and incorporate unfinished features that I had envisioned, such as stairs, nets, and additional point instances. Despite these challenges, I persevered and managed to bring the project to fruition.
Thank you for investing your time in reading my breakdown. I sincerely hope that you have found the information valuable and gained some intriguing tips from it. It has been a pleasure for me to share my insights and experiences. If there are any additional questions or if you would like to delve deeper into any specific aspects, please do not hesitate to reach out!