Wander - Fall
This is my dailies blog for the fall semester for the current short animated film production, Wander, releasing Spring 2019. As the Technical Director, I'm working on lighting, look development, and research & development for the film.
The official film blog can be found here.
My current focus is on familiarizing myself with Houdini as well as the Houdini to Arnold plug-in. While we originally considered doing some research into Unreal Engine or Redshift for this film to save on render time, we ultimately decided to stick with Arnold for rendering but will do a large part of it in Houdini (which will be more capable of handling fur, water, and our forest environment than Maya).
While I am learning Houdini, my task is to render an asset with MtoA and then bring that asset into Houdini and render it the same way with HtoA. I set up and rendered a simple scene in Maya with this basil plant model from CGTrader, assigned shaders, and created lights. My next step is to recreate this setup in Houdini to better understand the differences between Arnold for Maya vs. Houdini and the workflow for bringing assets from Maya into Houdini.
Being new to Houdini, I spent some time troubleshooting how to bring my assets from Maya into Houdini as fbx files or Alembic caches - I am still investigating how my process worked fine on one Linux machine but did not work on another. However, I tried setting up an even simpler scene in Arnold for Houdini and had some success thanks to the Solid Angle documentation.
The Arnold process in Houdini is very different than in Maya (especially in setting up and assigning shaders, which use a vopnet node) but the standard surface shader and light parameters appear to be essentially the same across the two versions.
I've been learning more about working in Houdini and rendering with Arnold for Houdini. I was able to replicate the basil scene from last week in Houdini the same way I had rendered it in Maya, so I'm looking forward to getting started with more lighting/look development tasks in Houdini to discover & address more potential issues. I've started working on a quick-start guide for our team and myself to provide instructions/reminders for common processes, and I'm hoping to add more to it and make it more specific to our production purposes as I learn more.
This week, I've been working with Houdini's height field terrain tools to create a ground plane for our forest and experimented with instancing geometry on the terrain.
The yellow tube is a placeholder that represents our character, Nia, and is approximately 1.4 meters (4 feet and 7 inches) tall, which is an average height for a 10-year-old girl.
The pond is about 7 meters deep, which is way deeper and larger than it needs to be -- however, it is easy to adjust the size, shape, and depth of the pond thanks to the procedural terrain tools.
The entire grid is about 150 meters, and the scale & amplitude of the noise is currently set to reflect the realistic elevation of a forest.
I found a solution to create previs trees using heightfield_scatter to generate & manipulate points on the surface of the height field. The render to the left was an unrelated project to create user-defined parameters to control attributes of instanced trees on the surface of an adjustable terrain.
We decided that we will create the path manually and place hero trees/carve out the pond in Maya and then later procedurally place & instance the trees around them with Houdini.
I created some quick preliminary UVs on an early retopoed duckling to try an initial test groom (and handed off to the rigger), but it was easier to learn the fur tools on a simpler/lower-poly model.
I am not pleased with the appearance of this teapot whatsoever, but I was able to get a grasp over the fur workflow in Houdini. While our modeler works on retopo, I'm planning to make some changes to this groom to make it more duckling-like.
Fix the bald spots (might be phasing/collision or density problem)
Adjust fractal clumping, possibly for more iterations? Input noise mask?
Lower thickness of hairs
Make hairs longer to make broader changes to silhouette
Adjust hair shader, make it brighter/more saturated with more sss
Create layered, fuzzy "down" look (with a thick furry layer at the base and a thinner, sparser fuzzy layer on top)
Our duckling, modeled by Eugenia Ramos, is close to final (we are still working on retopo and UVs), and we wanted to see what his silhouette looks like with fur & fluff. I spent this week learning Houdini's fur system and did a very, VERY ROUGH very initial test groom on a Utah Teapot to experiment with their grooming tools.
The patchy, bald sphere to the right was rendered with Arnold with the Arnold Standard Hair shader, which we are rendering the film with (I've been doing test renders with Mantra since it's accessible from my machine at home). Still need to make some more edits to the groom (especially the density & clumping) and some tweaks to the shader to make it more duckling-like.
Once our duckling is ready to be groomed, I will start working off photographic references as well as our concept artist's fur sketches to create the desired level and styling of fluff to best shape the duckling's silhouette.
While we passed the duckling model back and forth for drawovers and retopology critique, I started forming a simple look development rig with reference spheres and lighting to test shaders for our characters and props in a consistent lighting environment.
Though the environmental modeling won't start until the end of this quarter, I can use this previz geo to start testing some lighting in Arnold when I'm done working with fur as well as fur & water interactions.
I was also able to quickly scale up the size of our ground plane using the height field we set up in Houdini and create a new pond mask based on the previz pond modeled in Maya. I also quickly assigned temporary shaders to the previz geo in Maya to hopefully better visualize the shots in the previz animatic.
Since our duckling retopo is finished, I was able to get started on the a very rough first pass of the fur groom for the duckling. So far, the shaders are all temporary (the beak/leg shaders do not look right, and the hair shader needs some tweaking), but I've created some guide processes to set the basic length and direction and have a lot more work to do on the groom.
These are the concept drawings (drawn by Wynne Gettelfinger over Eugenia Ramos's duckling model) I'm referencing for the duckling groom, along with the photo references I posted a few weeks ago. I'm still planning to make a couple of the following changes as I move forward:
Work more with curve masks to set the direction of the fur
Add more fur around his hips/sides for a fluffier silhouette
Shorten the hairs between the eyes and on the forehead and add more density to those areas
Art direct/create bigger and more distinct and stylized clumps around midsection
Shape and lengthen the back of the duckling & the tail fur & feathers
Try different lighting setups to test specular/scattering in shader
Create the cowlick on the top/center of his head
Create a basic pattern with some brown & yellow fur to see the change in shader and the appearance of the density/specular roughness
We've been having some technical challenges with the modeling, rigging, and look dev of the duckling's eyes. The duckling has large eyes with large pupils & irises.
We've been trying to create it based on a spherical human eye, but in real life, birds do not have spherical eyes. Non-spherical eyes will be tricky to rig, but the refraction in the eyes are a little more accurate to actual birds.
I'm working on the eyes along with our facial rigger, Rachel Kimbrough, to find a setup that works for the duckling and hopefully the mother duck as well. I am doing some test renders with non-spherical eye models to see what looks appealing and will hopefully create the fewest rigging issues.
The eyes from the bird in the Pixar short Piper have also been a stylistic inspiration/goal for our duckling's eyes.
I've been working a little more on the groom and still have more work to do before it's final. Wynne's concept designs with different color pattern variations for the ducklings are finished as well, so I need to paint those color maps in Mari.
I created a non-spherical eyeball model with a temporary shader in Maya for the duckling. Once the eye model & the facial blendshapes are finalized, I will reexport the duckling from Maya into Houdini to test the deformations with the mouth closed & the fur applied.
However, I have to put the character look development & groom on hold to work on the environment more. I need to develop our system to procedurally assemble art-directed trees in Houdini, and I also need to work on set dressing the environment with proxy geometry for foliage and vegetation.
We also changed the depth & slope of the pond and will have some pebbles, rocks, plants, and reeds around the shore, so I need to eventually place those as well, so the animators can work with a finalized ground plane for the pond scene.
This week, I focused on putting together this quarter's poster for the film. Using a concept designed by Wynne Gettelfinger, the umbrella modeled & rigged by Rachel Kimbrough, and our proxy R&D tree modeled by Erin ONeal, I was able to assemble and shade, light, and composite the poster.
Below are some in-progress renders from the asset lookdev process. Everything was created in Houdini & Arnold, except the duckling textures (which were created in Photoshop).
Erin modeled this tree in Houdini using an l-system and copy stamping to test out our tree workflow - moving forward, our modelers will be sculpting the base of the tree (including the roots, trunk, and large branches) in ZBrush, and we will bring those trees into Houdini to procedurally place the "twigs" with leaves on those larger branches.
The tree was an interesting technical challenge for me as I didn't realize Arnold does not support packed primitives & the copy SOP in Houdini. Because the copy stamp workflow is too slow without packing, I had to use a workaround with instancing and Arnold procedurals (.ass files) to place our trees in our poster scene efficiently.
Though I am still finding a way to render my scene with .ass instances on the render farm (the .ass file contained absolute paths to the Arnold-generated .tx files?), I think we are one step closer to creating our super cool forest environment using less than a gazillion gb of RAM.
A few of the in-progress iterations of the poster.
Unfortunately for the duckling, I had started working on his fur before we decided what his uniform scale would be. Now that his model & rig are correctly scaled, I had to make some changes to the fur - my painted masks luckily did not change when I updated the skin, but many of the parameters (especially the fur length & density) had to be tweaked.
I've been working mostly on the duckling's fur and finally made a texture map for his fur & beak in Substance Painter. I've been trying to match the mohawk/swoopy cowlick he has on the top of his head in our concept art, but it looks quite strange like this and I need to modify the clumping more.
He still needs a lot more work, but he's getting closer to his final look.
The password to the video is ducks.
This week, I've been putting together an in-progress demo reel for the end-of-quarter VSFX Senior Show and trying to finalize the duckling.
Tatyana Dzyura and I rendered the turntables for the character models (Nia modeled by Eugenia Ramos, mom duck modeled by Tatyana).
Above is the duckling fur version used in the turntable. The images below are iterations from my IPR renders as I was working on the groom.
My priorities for this duckling currently include the following:
Increasing the hair density around the eye area
Fix the flipping/motion in the neck fur in turnaround
Resolve the connection point between the beak & the rest of the face (increase the density of the fur in that area?)
Make color texture map for legs
Add subtle color variation to the brown fur on his back
Lengthen tail fur/feathers
Work on eye lookdev/create eye texture maps
Additionally, I need to create color variations for his 2 siblings and run tests using an animated version of the rig. The fur won't be simulated, but I need to ensure the groom remains correct with the mouth closed/the body posed and moving (I'll be using the walk cycle from the reel above to test this).
While we have been rendering with Houdini to Arnold, HtoA is not available to us over winter break (we can't use it with the free Houdini Apprentice license). I had initially planned to work around this by creating shaders in Maya and working on environment set dressing with Mantra, we're considering rendering the film with Mantra instead of Arnold.
I have a couple tasks I need to work on over winter break.
Recreate lighting setup & shaders for the duckling in Mantra and compare appearance & render times between Arnold & Mantra
Rough environment set dressing with shaders & lighting setup in Mantra
HtoA doesn't support Houdini's packed primitives, and we need to optimize rendering our forest environment
UVs, texturing, lookdev, & grooming for Nia, the main character (once her retopo is complete)
Lookdev & optimize individual trees (once base tree model is complete)
Resolve/lookdev edge of pond/shoreline. Add plants & reeds to hide shoreline collision for fluid simulation
Write production-specific documentation for using Houdini, rendering, render farm, troubleshooting, how to use Linux
Also write documentation for setting up/tweaking sequence lights, shaders/shading networks, render settings, etc.
I'd also like to write some Python scripts to help automate some tasks and streamline/simplify the process of rendering shots for our team.
Improve my file renaming script to move files into specified directories (i.e., move files from render farm folder into other directory)
Compile all jobs for one shot into one directory & name frames correctly with our production naming convention
Possibly write a script to open/view rendered sequence in Nuke
Detect missing/corrupted frames from rendered sequence and print list of which ones need to be re-rendered
Ensure that all render settings/project directories are correct and that files/directories are properly named
User-friendly script to quickly/easily set up local command line render in Linux
Though this seems like a lot of work to do between traveling & holidays this winter break, I'm hoping I can get some more work done now to reduce the workload I'll have during winter & spring quarters.