Home About Projects Contact
midjourney painter houdini blender unreal5

Aquarium - Hello World

Simple animation utilizing fish procedural rig.

Overview

This animation project was born out of an eagerness to explore the procedural functionalities of Control Rig in Unreal Engine 5. I decided to craft a minimalistic fish rig, allowing for swift animation. I also produced a short animation, leveraging these features, which was shared on social media platforms.

Role

This initiative was a personal venture that I executed alone from start to finish, with the exception of the audio element. The invaluable Jędrzej Weber delivered an exceptional musical accompaniment.

Tools and Resources Used

I strived to utilize the best tool for the job at every stage, with a special place reserved for generative AI. During the ideation stage, GPT4 aided in devising a compelling script, while Midjourney served as a tool for creating references for the fish character and the overall scene. The character's model and skeleton (with Morph Targets) were constructed in Blender, and textures were prepared in Substance Painter. Houdini was utilized for modeling the aquarium and producing a range of pre-animated aquatic plants equipped with skeletons. Additional models from Quixel Megascans were also integrated. The whole project was assembled and rendered in Unreal Engine 5.

Technical Details

After preparing references in Midjourney, I started modeling the main character and creating the skeleton. The first model version was unsubdivided, and the skeleton had minimal bones. This version was imported into Unreal Engine and Control Rig was developed on it. The procedural characteristic of this process allowed for later re-importing the subdivided mesh and denser skeleton without disturbing the rig's functioning.

I had never used Control Rig before, but it turned out that it contains the Spring Interpolate node. It enabled delayed movement of subsequent bones using weights for each bone. These weights were computed separately for the body and fins in the Construction Event, allowing for controlled manipulation of the fish's body animation. I aimed to keep the number of controllers modest, finally deciding on a main target, additional rotation controller, two side fin controllers, jaw controller and a look-at controller for the eyes.

Once the preliminary version of the rig was ready, I moved on to asset preparation. This stage included texturing the model in Substance Painter and sculpting Morph Targets for simple face animation. Later, I incorporated support for these Morph Targets in Control Rig, amplified the mesh density and bone count, and the fish asset was essentially ready.

I started building the scene by modeling the aquarium walls in Houdini and transferring it to Unreal. In Unreal, I prepared lights and shaders, including cheated caustics and a rippling water surface, and also some Niagara bubbles. The goal was to visually match the reference from Midjourney while ensuring dynamism in the scene.

Subsequently, I returned to Houdini to create water vegetation generators. These were prepared with skeletons and animated not through a vertex shader in Unreal, but via bone animation. This approach offers the potential for utilizing Unreal's physics engine and collision of objects with plants. After preparing several HDAs, I built a simple PDG network and generated multiple plant pieces with animations, which were imported into Unreal as FBXs.

Finding: The nature of procedural modeling in Houdini, and its KineFX system's reliance on points and lines rather than bones, means object skeletons are prepared during the modeling phase, eliminating the need for separate addition. Coupled with the Vellum simulation system, the Labs Maps Baker tool, and PDG networks, this creates an efficient pipeline for generating animated assets.

Finally, all that remained was to position the imported assets (including those from Megascans) in the scene and animate the fish. Thanks to the procedural rig, this phase was swift and seamless. However, there were some limitations, such as the inability for the fish to move backward. These are areas for potential improvement.

References

Prior to 3D implementation, I brainstormed with Midjourney, using the generated images as references. This applied to both the fish and the entire aquarium. Additionally, GPT4 was instrumental in forming the script for this project.

Conclusion

I like this project, as it showcases my work philosophy and the benefits yielded from it. Procedural solutions allowed me to minimize time-consuming tasks and bypass my limitations in animation and visual conception through procedural animation and generative AI.

← Projects