Simulating complex snow effects

I recently watched a video from Disney Animation Studios, on how to simulate snow in modern CGI renderers. It quickly left my brain slobbering over the idea of attempting something of similar quality in Blender! So I’ve given this a bit more thought today…

To my surprise, I soon realized I have no idea how to do realistic snow effects in Blender, as most of those presented there! Sure… simple snow particles falling from the sky are a piece of cake, it would be silly to even make a thread asking about that. What I’m curious about is mainly stuff like this:

Question #1: How do you make falling snowflakes stick to select surfaces (cold objects) and build up over time? Basically I’m interested in a simulation where no snow is added manually by the artist, such as in the form of a mesh: You add a generator for snow particles, a normal object snow falls on (eg: a Suzanne head made out of metal), then watch the particles touching the mesh stick to it and build up on it. I assume there’s a type of particle physics to do collisions and clumping… but for large environments it would take trillions of particles with way more RAM and CPU than anyone has to spare, so there must be a way to simplify.

Question #2: What’s the easiest way to simulate objects interacting with settled snow, such as leaving trails or throwing it around? If you have a ground plane, a meter of deposited snow on top of it, then throw a rigid body rock down on the ground… how do you make it leave a hole in the snow, and also cause chunks of it to break and fly upward? Or what if you have a character walking through the snow, and want their feet to leave trails and holes while sending pieces of snow flying around (see above image)?

Question #3: Oppositely to the above question, how do you best simulate snow interacting with solid objects? If you throw a block of snow at a wall, how do you make it realistically shatter, like a part solid yet part wet powder (see above image)?

Question #4: This is an even trickier one: Suppose you have a character that has fur and / or hair in a scene containing snowfall. Is it possible to realistically simulate snow particles attaching to hair and fur? Think of how a dog’s fur looks like when they get out of a pile of snow, or how a woman’s hair looks after snow falls on her head… bits of snow remaining attached to the hairs and occasionally falling while melting over time.

Question #5: Lastly, I’d like to know how to create complex wind patterns that affect snow. I’m already familiar with simple wind fields and basic turbulence. But what if you want snowflakes to follow complex wind patterns, like spiral winds or intersecting wind currents? Can force fields be controlled by curves for instance, so you may bend the direction of wind using a curve?

Someone did a copy on pixar snow a while back using Molecular Addon

Noticed that earlier, it looks very realistic indeed! But… can such a thing only be done with an addon? Does vanilla Blender have no features for simulating good snow physics?

You know, Diney spent time to create their very own snow simulator from scratch. So it’s not a problem to use an add-on for that. Plus, I think it would be unecessary complex to simulate an action like a snowball thrwon in a wall and the melting. I mean, artists use tricks to achieve this kind of complex effect, it’s not done in one move. I’m not familiar with tricks in CG, so I can’t say more, but you see what I mean ?

Sure: The ideal way is to find the cheapest way to simulate the desired visuals. Problem is that when you want good close-up details, you need to use better and better tricks. In this case I was pondering which the best might be.

Also I believe I have an answer for one of the questions: A snow block breaking after hitting a wall should be possible to simulate using the builtin cell fracture addon. Which can crack an object into multiple pieces, that then fall independently in a rigid body simulation. You probably need a whole lot of cracks for powdery or wet snow, but at least it works :slight_smile: