I'll make a thread showing what I did, here is the flipbook :)
I divided this into 3 main parts; the ground sim, which ended up not being a simulation at all but it can be, the snow simulation and the dust simulation
To make the ground collapse I created an attribute with a falloff and displaced the geometry according to the attribute's value
This is what it should look like.
This step can be replaced with an actual simulation since this only acts as a collider for the snow and dust, but this is much faster and easier to art direct
This step can be replaced with an actual simulation since this only acts as a collider for the snow and dust, but this is much faster and easier to art direct
For the grains to be generated there needs to be a volume. Super easy to make; I extruded the ground upwards and with a transform node I flattened the top to make it look more like snow. The boolean is just to generate a smaller area and debug or run small tests.
Standard set up here, not much to see. These are the values I used; probably 3x or 4x the number of grains is what gives a solid result, be careful tho, it's going to take a long time to simulate!!
SNOW! well, kind of. This is to give the constraints different values, making them break under different amounts of stress. This part is fairly art directable since these values are created using a series of noises in a point vop node and the tinies amount of vex.
Inside the vellum solver, we need to do some vex trickery to get a ripple as if the ground underneath is lifting upwards. Why didn't I deform the ground directly? because I didn't think about it :D
This is what it looks like when viewing the ripple attribute
Forgot to say that this needs to be set up so that the breakthresholdscale attribute actually has an effect on the constraints
Now just clean some attributes that won't be used to reduce the space it's going to take on disk and remove eventual points that fell below the ground; this is not a problem with the current setup, but it will be useful if the ground collapsing is a simulation and has gaps
I found two ways to render the snow, using SSS (slowER), and using volumes, really thick volumes. I ended up going with volumes (still took 16h per frame @ 720p).
If rendering with SSS everything is good after the null, if not, just add a volumerasterizeparticles and an empty vdb
If rendering with SSS everything is good after the null, if not, just add a volumerasterizeparticles and an empty vdb
for the dust to work properly there need to be colliders; I just gathered all my colliders on the right side, including the snow, and turned them into VDBs that will be used later.
To generate the smoke we need the snow particles and we need to figure out how they're moving and how fast.
Going through this again I'm not too sure this was the easiest way and I can't remember why I didn't just use the velocity of the particles but hey! it works so...
Going through this again I'm not too sure this was the easiest way and I can't remember why I didn't just use the velocity of the particles but hey! it works so...
DUST! Just turned the particles into a volume.
For the smoke sim anything goes really, the only important thing is that the smoke goes down and not up; I made the ambient temperature higher than the smoke temperature, but just inverting the gravity should be fine
For the smoke sim anything goes really, the only important thing is that the smoke goes down and not up; I made the ambient temperature higher than the smoke temperature, but just inverting the gravity should be fine
AND THAT'S IT!
or at least I think it is
or at least I think it is
