Snow Personal Project

A few weeks ago I decided to set myself a personal project after seeing this tutorial about making snow using Blender. I decided to adapt the tutorial into Maya. I wanted it to be a quick weekend render which I achieved, but I wanted to take it further and render a sequence which was more polished.

Here is the final result:




I'm pretty happy with the result and the comp process I used, as it let me put into practice some new techniques I had been looking into, such as making use of World Point, Normal and Depth passes more.

I also used this project as R&D for Big Top and Dino Diner's use of Renderman, this project highlighted a few issues, mainly with XGen and getting it to batch render. I found using nHair to be quite effective and simple to use however, so I think it is a good alternative. I also wanted to get good file and scene management going on so that its easier when we have to start doing it on a bigger scale.

My workflow for this project started out in Maya, creating the camera, basic geometry for the scene and planning out what I wanted where. All I started with for the snow was a subdivided plane, which I used to shape basic mounds in the snow.

I then sent this to Mudbox, which I used to sculpt to tracks into the snow, overall this process was pretty simple but I did go through several iterations, making use of different stencils and generally improving the look of the sculpt over the different versions.

One thing that caused me a few issues was getting the displacement map out of Mudbox and into Renderman correctly, between details on the Renderman documentation and some tutorials I found the proper node setup for Renderman to get the correct displacements. In Maya I now had the plane in the viewport, which when rendered gave me the detailed snow model.

The grass originally started out life in XGen, which I have rendered one frame of here:



I think I have now gotten my head around most of XGens nuances, and the grooming tools are great for creating a specific look efficiently and naturally, however I ran into a lot of trouble getting it to batch render in Renderman 21, which is something I have had on and off issues with in the past. After a lot of searching and trying various possible solutions I gave up with it and switched over to nHair, which I had not used before. The process was quite different.

To begin with I created very simple mock geometry to act as my tufts of grass, using Mudbox again I was able to draw curves onto this geometry which would be my guides for the grass. I exported these curves back to Maya and attached the hair system I created to these curves. Overall the setup was a lot more simple that I expected it to be, and its very easy to alter the look and position, and the hair was ready to be simulated, something I can't say about XGen. It was also easy to manage in the scene and didn't create its own part of the Maya directory that needs to go with it, and it can be referenced between scenes simply, so overall easier to manage.

I think the XGen result looked better but I did have more experience and spent more time creating the look for it than with the nHair. 
nHair workflow is something I will be looking into more, especially in more efficiently creating the guides, to add detail to shaders or create hair and fur for characters.

 Going back to Mudbox I painted a mask on top of the tracks to use in the shader, in order to have a snow tracks texture in these areas (PxrTexture2 below). 
The snow shader was a big part of creating the scene as snow is very complicated. I opted for the new PxrSurface material. I set the Diffuse and Specular levels based on some reference from Google and the video tutorial. One workaround I had to find was to create speckles, as the tutorial method did not work in Maya.
The best way I found to create this was using a PxrVoronoise at a very small scale. I then remapped this to make it very speckled, and plugged it into the glow (or emission) channel in the Shader.
I also had a SubSurface element to the shader, giving the smaller details on the snow some light bleeding. As well as an overall bump across the surface.
I think the shader could do with some improvement and tweaking to refine it further, especially with the subsurface and playing with the emission effect.

The Snow Shader

Lighting wise I used a HDR from HDR Labs which is a great source. This gave me a base lighting, I added my own keylight from the left of the image to give it the look I wanted.

Overall it's still a little too noisy, which I will need to get better at addressing when it comes to final renders for the films, but I have found an excellent new guide on the Renderman forums which I will be reading for a second time and using alongside my Dino Diner R&D.

I spent a lot of time compositing this image as I wanted to get a really nice final result. I rendered out all of the standard passes, Diffuse, Specular, Emission, Subsurface, Depth, some Matte ID masks, but also Curvature, Normal World and Point World. This gave me a lot of control and I was able to do a lot of work to improve the image in Nuke.




Here is the overall Comp, the top section is the AOV rebuild and alterations, middle is grading and addition of the background. To the left is the particle system for the falling snow, and the green section is my lens effects tree.

On part of the comp which was new for me was making proper use of the World Point pass, which allowed for some really interesting work. I didn't want emission speckles within the type track, as not enough light would get there to cause speckles. To solve this I used the World Point pass, which contains XYZ data for the scene in its RGB channels. Y, the height data, is stored in G, so by grading this channel I was able to create a point mask of the tyre treads, and use this as a mask on the emission pass to remove speckles from the tyre tread, solving the problem.



Another use of the same mask allowed me to darken the tyre treads themselves, adding some more shadowing, here I have changed the grade to bright red so you can see the results more clearly.


I did a similar technique using the Curvature pass from Renderman, which as the name suggests, outputs data on the angle of geometry in the scene, this combined with my MatteID passes allowed me to grade areas of the snow at the bottom of slopes.

I think these are some really powerful changes that can be made in Nuke which add to the image. Plus I am confident in using them now to be able to offer more solutions to things we can't figure out in Render for Big Top and Dino Diner. I think this project has been pretty good overall, definitely a lot of fun and it taught me a lot about several different parts of the pipeline and forced me to find alternate workflows.
From here I'll be looking more into Renderman optimization, denoising and nHair.


Popular posts from this blog

Life Drawing - Session 1

Big Top Plastic Shaders

Renderman Conversion Script