About / Context:
This is an effects shot I created for my dynamics 3 class at Gnomon taught David Stripinis. There were a few requirements for this project:
-
Simulate clouds using Houdini's Pyro tools
-
Some sort of cloud interaction with an object
This project was my first time for a lot of things which include: pyro in Houdini, Solaris, and Karma. I wanted to challenge myself and use Solaris and karma for this because how hard could it be! I very quickly learned that USD isn't just a file format. This project took four weeks from concept to
Process:
The first step for this project was creating all sorts of clouds. I didn't really understand DOPs at this point so learning about all the different micro solvers was interesting. It took a while and a lot of iterations but I was able to build a few shapes that I was happy with. Here are some of the early clouds:
And here are the shapes I settled upon.
I had heard of USD assets before but I didn't know what that meant. I did some research and with a little help from the SideFX docs I was able to turn my clouds into proper USD assets complete with proxies and variants. which made layout a lot lighter on my machine. I'm not going to go over the collision interaction as its super standard stuff.
USD/Solaris:
My journey into Solaris started with trying to create a proper USD cloud asset. I had heard that you can just import everything into Solaris and treat it as a layover stage to render. But if you want to get any benefits you need to set your stage and work "Properly". The research I did also helped me learn that USD only really shines with large teams of people collaborating. I tried to apply all that I learned in a way which made sense for me as a student.
Here are my cloud variants. I created them by arranging my original four sim clouds in different ways. They look a bit weird because of my polygon proxies. Looking back I should have spent more effort into making my proxies lower res and matching the actual surface better.
This is when the power of USD began to hit me. Having as many variations of clouds as I want, but the memory footprint of the original four clouds is super powerful. Not to mention viewport proxies. Using Solaris also massively impacted my layout workflow. Using the layout node I was able to really quickly art direct the massive cloud bank my ship is approaching. It took about 20 minutes to place 17,000 clouds and it has the memory footprint of just those four original clouds + instancing overhead. Not the most procedural setup but very art directable.
Lighting:
Most of the scene lighting is just an HDRI. But the lightning flashes were point lights I stuck in the clouds and then keyed in post. This was almost a mistake, I thought the time saved by being able to tune my lighting in post would offset the increased render time. However, Karma was not big on me putting point lights in my clouds and I needed to up my limits a lot for the rays to reach the lights through the volumes. If it weren't for my Envy system there was no way this project was getting out on time. On me for rendering with Karma before XPU was fully featured I guess.
I split the scene into multiple passes
I also should have rendered the cloud bank as a still frame, imported my camera into nuke, and just projected my image onto a sphere. I thought the parallax would be worth it... The interactive lighting on the ship was from some directional lights I placed and then keyed in nuke.