top of page
  • Vimeo
  • LinkedIn

Breakdowns

A collection of deeper explanations covering some of my more techincally complex pieces.

USD CFX Workf low

In "Witch's Cat" I was in charge of developing the bulk of tools and workflow for FX and CFX artists. As such I created a multitude of prebuilt Houdini nodes.

​

A large bulk of these were neatly wrapped simulation nodes that allowed for 80% of simulation work to be done without needing to dive into the networks. This saved us on a lot of intense shot work with each team only having 3-4 artists. A large majority of shots only required a few button presses and then artist oversight. This allowed the artists to run multiple simulations in parallel since we didn't have access to distributed simulation.

​

In addition, USD allowed us to keep our heavy simulation nodes outside of the lighting/rendering unlike previous BYU short film workflows. This significantly decreased the workload on our lighting and rendering department as their end of pipeline files would open in seconds rather than minutes. It also made it possible for us to work in parallel as artists would get basic lighting setups started while CFX was in process, and once done or edited, a simple interface allowed almost instantaneous loading of final caches. In addition, due to the work of our Pipeline Lead, these final USD caches allowed us to bypass the lionshare of the packaging process for rendering. Having the entire pipeline in USD, including the multiple GB CFX caches, meant we could begin rendering in seconds rather than hours like the last pipeline. 

​

Singe's Groom Complexities

Singe was a complex character to bring to life. His original design presented a flat, 2D graphical style that revolved around extreme flexibility in squash and stretch of the body and large character defining elements of groom. In order to make sure these two portions of his design came into 3D, I was put in charge of both his model and groom. 

 

One of the biggest challenges with his model was trying to create a character that could both act quadrupedally and as a more human-like character. This largely came down to working around his front paws and neck. His front paws were designed to act more like hands with finger-like claws that could be used to grab and manipulate things, in comparison with his traditional back feet. His neck and head proportions went through many iterations to be large enough to be expressive and look sizeable comparable to our two humans without completely losing the long necked design and straying too far from being recognizably a cat.

​

One final thing of particular note was the separation of his ears and wings from his body mesh. This was done largely to simplify rigging and allow for dynamic poses where the wings and ears could be fully rotated and translated around the body. This greatly added to the technical complexity of his groom.

Singe's groom came with three large technical complexities. His cheeks, his disconnected geometry, and his optimization. 

​

Singe's cheeks were designed to be extremely graphic in nature, sticking off the side of his face and providing great expressional flexibility. This meant in some way we needed to be able to move and control the sides of his cheeks to amplify his expressive capability. Rather than rely on our small CFX team to animate guide curves for every single shot, I developed a pipeline to allow the animators direct control of the cheeks as if they were just another control on the body. At my request our riggers set up 3 maya follicles on the side of singes head that were connected to singes facial rig. These follicles were then extracted from the animation alembics and processed into a form of houdini curve that stayed at origin but translated and rotated as dictated by the rig and animation team. These curves then were used to guide the curves of the cheeks. Through a mix of blending and clumping iterations the animated curves create Singe's moving cheek fur. This greatly reduced the stress on the CFX team and allowed the animators to adjust Singe's cheek silhouette to contribute to his facial performance with minimal work. 

​

His disconnected geometry presented another challenge as without any work. His black fur made intersections extremely noticeable as seams were seen in the highlights around the ears and wings. To mitigate this the areas of fur around his ears and wings are lifted in order to hide the disconnected geo. Intersections within the geo of the ear and wings were calculated to get the immediate area around the base of the geometry. The main issue with this is lifting the fur right underneath the area of issue affects the area behind the geo as adjusting the long cat hair at its root affects the fur further back along the body. Using the fur itself as a vector I shift the affected area along the body to affect the roots ahead of the intersecting geo. This allows the wings and head to be moved almost anywhere along the body while preserving a smooth transition in the fur. 

 

Lastly as part of a small student production, Singe's fur had to stay extremely optimized as our data cap was relatively small and if the CFX files got too large 80% of our machines would be unable to render the end product. As such singe and the other characters had built in intermediary files to allow final geo to be rebuilt and deleted as needed. In addition, Singe required an undercoat to hide the gapping created by his more greasy, clumpy hair. In order to do this all his groom work had to be reduced massively to only 4-8 points with only the absolutely needed data values. By keeping the guide grooms on back up and implementing an extremely lean output, Singe's CFX data cost was kept on the level of our other human characters. 

Quick Thread Deformation

"The Witch's Cat" was set to feature a large amount of cloth, thread, and yarn. As such we were stuck at the crossroads of how to make high enough quality cloth textures to do justice to the high material and texture quality our shading department was shooting for. My work on cloth shaders in the past made me question the ability to get the perfect opacity and displacement needed for loose knit cloth. 

​

From a previous piece one of my peers did, I knew it was possible to create embroidery out of rendering curves in arnold. While the standard houdini deformation tools were considered, I found it extremely expensive and time wasting as the thousands of points of thread each had to deal with 5-10 different point weights. It scaled exponentially and became worse with any extra details like multiple threads per yarn, fly aways, and dense patterns.

As such I determined we needed a custom deformation tool. After some research I determined a UV based deformation would work best, since we will be working with relatively detailed geometry and the elements would be based on individual pieces of geometry, relatively flat to the surface. Using a mixture of xyz distance and prim uv, I would lay a sheet of thread curves over top of the UV's of the geometry and assign each point of the threads with a uv position and a vertical displacement value. This is then used to wrap the threads almost exactly like a texture around the geometry of the cloth. This allows extremely dense threads that only need 3 floats and one transformation to calculate their position. This allows millions of points to be calculated in seconds with no expensive weight or lerp calculations. Due to the version of houdini we were working in, this had to be pre-cached before render, but ideally with the proper tools this could be made into at render time transformation, saving on the biggest downside of having to cache the per frame calculations. 

​

After handing off my prototype tool to Zach Wood, our pipeline lead, it became an extremely integrated part of our film. Character artists were allowed to design the procedural thread patterns using templates Zach and our texturing lead, Anna Hales, put together. This would be turned into a sheet and cut into UV's almost exactly like how real cloth is cut and tailored into real outfits. This tech also was put into other parts of the film, like the cloth FX caused by magic hitting items uses the tech but manipulates the vertical displacement to make it seems as if the entire piece was being stitched together out of thin air. The witch's dress scales use a similar tool made by Zach but use two points that deform along the cloth and a vector between them to calculate the direction, angle, and translation of the cloth to help avoid intersection and create a really nice fanned look when bent. 

​

As such the usage of UV point deformation became an essential part within our film. There was even a seam tool I started prototyping using very similar tech where you'd assign seams and generate UV displaced threads along the edge of cloth seams, but was scrapped due to time constraints. Without the work me and many others put into these tools, our scope and execution would have been vastly limited to more traditional outfits and FX. 

bottom of page