Particle Disintegration Simulation with Geometry Nodes | Blender 3.5 Tutorial
By Alaskan FX
Summary
## Key takeaways - **Download Blender 3.5 Alpha Simulation Branch**: To use the new simulation nodes, get the 3.5 Alpha branch that includes them; there's a link in the description to download the geometry node simulation branch. [00:08], [00:20] - **Empty Controls Boolean Disintegration Mask**: Use an empty with mesh Boolean and icosphere to control which part of Suzanne gets disintegrated; plug object info transforms for precise masking. [01:09], [01:46] - **Distribute Points Only on Disintegrated Faces**: Use geometry proximity to icosphere with distance less than 0.0001 on distribute points on faces selection to spawn points only where boolean cut occurred. [02:49], [03:10] - **Store Velocity for Particle Inertia**: Store named attribute 'Vel' as vector, adding normalized normal scaled by random 0.005 to 0.02, to fire points with inertia frame by frame. [04:14], [05:04] - **Shrink Radius and Delete Small Points**: Subtract 0.002 from radius each frame; delete geometry when radius less than 0.01 to shrink points and save computation. [06:51], [07:27] - **4D Noise for Evolving Distortion**: Sample 4D noise texture with scene time seconds divided by 2 in W input, scaled around 1, for smooth evolving particle motion. [08:48], [09:45]
Topics Covered
- Full Video
Full Transcript
what's up everybody welcome back to the channel So today we're gonna be making this really cool procedural disintegration effect in Geometry nodes
using the new simulation nodes that are coming in blender 3.5 just like last time if you guys want to get the 3.5 Alpha branch that already includes these there's a link in the description below
you just click on that and then download the 3.5 geometry node simulation Branch right here so with that done I've just got a new blend file here and just like last time
the first thing I'm going to do is save my file because again this is an alpha branch and so it is very unstable so I'm going to start out by deleting
the default Cube and then I'm going to add in both a Suzanne head and an empty sphere I'll move this empty over just a little
bit click back onto Suzanne geometry nodes and add a new geometry node modifier so the first thing I want to do is I want to use this empty to control sort of like what part of Suzanne gets
disintegrated so I'm going to shift a and add in a mesh Boolean plug that in there then you can just grab your empty
from up there and I'll plug my object input slot into my group input so I can switch it in the future if I want to switch this to relative and just slide
it up here now I'm going to add in an icosphere and a transform node plug the icosphere into there then just
plug all of these transform values from your object info into the transform node once you've got that you can plug this geometry into the second mesh slot
and check hole tolerant now you can see our empty is booleaning our Suzanne head and if you add in a few more subdivisions that'll make it look a little bit
cleaner so the next thing we have to do is shift a
grab a distribute points on faces node then plug our Boolean mesh into the mesh slot
shift a and grab a geometry proximity node see I only want to distribute points on the faces that are basically where Suzanne just got like disintegrated so all these little
triangles here so what I'm going to do is just find the distance from each point because that'll
act like Smooth shading sort of to the icosphere which we can't see but is still there and so if I add in a math node
set to less than I can use this distance value and plug this into the selection and as long as I set this to something
really really small like .0001
then we can plug this distribute points on faces node into our output and you can crank up the density to see it more but we're only Distributing
points now on the faces that we want to so with that we can actually add in our simulation input node and our simulation
output node now then shift a and like last time we're going to use a join geometry node plug this in here
and ALT shift click to plug this simulation output into your group output and I'm just going to slide these over because we're going to need a lot of
space if we can so now we can grab a set position node so the first thing I want to do is I want to fire each of these points away
basically in the direction of the normal of the face that they're spawned on now just like last time the first thing I have to do is add a store named
attribute in here set it to vector and I'm going to name it to Vel and I'm going to grab an attribute node set it to Vector as well name it to the
same thing and plug this both into the offset and into the value slot on the store named attribute Now by just modifying this attribute between each frame it'll make sure that
our points have sort of like inertia and velocity as the simulation goes on so I'm going to shift right click actually to just add in a junction there
shift a grab a vector math node set that to add and you're just going to want to plug the normal into the second slot shift d and normalize
and then again you're going to want to add in a scale node now I want to add in a little bit of Randomness I don't want it to be completely uniform for each particle
so I'm going to shift a grab a random value node and an index node just plug that into the seed and then
plug this into the scale and you can adjust these values as you like but I've found values of .005 and .02 to work
pretty well now if you come down here to the bottom you can click horizontal split to add in a new window switch this to a timeline editor
and now if we click play you'll see our points are sort of just shot out of all the faces now another thing we can do is add in a scene time node
and plug the frame value into the seed on our distribute points on faces node so now if we reset it you'll see we get much more of like a random Cloud looking effect so I'm going
to distort this with some noise to make it look a lot better but before we do that I want to come over here and I want to add a set point radius
node in here and I want to add a set point radius node right here between the distribute points and the join geometry nodes I'm
going to use this set our points basically get smaller with age and to do that it's a very simple setup we just
need a math node and a radius node set it to subtract on the math node now you can just plug this radius output
into the top slot and I'm going to subtract .002 from the radius each frame
subtract .002 from the radius each frame so we can plug that into the set point radius and then I'm going to set my initial Point radius to .08 and these
will look quite large right now but don't worry we're going to fix that in a sec so if you hit play you can see now the points get a lot smaller but then they
get a lot bigger and that's because the radius value can be negative blender only cares about the absolute value so I'm going to add in a delete geometry
node duplicate this math node set this to less than plug the value output into here and then
set this threshold to something like .01
and now whenever the point gets to a certain radius it will just delete it and this has two benefits it both looks nice and it actually saves you a lot of
computation power if you're using a lot of points now to make this look pretty I'm going to add in a set point radius node over here
grab my radius note again and another math node just set this to divide and then I'm going to divide by something like 30 Maybe
and yeah now you can see we have much more of just like a tiny cloud of points you can make these a little bit larger if you like and you can actually grab a group input node as well so that you can
control this in the future and yeah that looks pretty good for now but like I was mentioning earlier we're going to want to add some noise Distortion to this
so to do that you can just shift d duplicate this add node slide it down a little bit and then I'm going to shift a add a noise texture
and a scene time node and a math node now we can plug the seconds value into this math node set this to divide
divide by two set our noise texture to 4D and I'll plug this here into the W slot I found this gives a really nice Evolution look but based on the scale of
your effect you're going to want to adjust this divide value because obviously at smaller scales you're going to have a lot more quick Distortion and at larger scales it's going to be much
more slow and now I'm going to grab this Vector math node again set all my bottom values to 0.5 plug the
color into the top slot and then again I'm going to give myself a scale node here plug that in there plug this into here
and I'm going to set this scale value to something like .03 and if I press play
something like .03 and if I press play now you'll see it doesn't look too great and that is because our scale value is set way too large I like something around one ish give or take
for this scale of an object and now you can see that looks a whole lot better I think for demonstration purposes right now I'm going to set my point radius to
something a lot larger just so you can sort of see the motion a lot better and if we actually add in a join geometry way over here at the end
and plug in our Boolean mesh from earlier you'll see how the effect really looks and you will have to fidget with this W value unfortunately because sometimes as
you can see here it ends up throwing points back through Suzanne a lot you can actually use the reflection and collision setup that we built in the last video to make the points just
bounce off of Suzanne if you like I'm not going to do that just because I like this effect to work a little bit quicker but that is 100 a possible use of that effect from the last video I'll put a
link up in like the corner at the end of the video if you want to click on that but I'm just going to shift d on this math node switch it to add
and then I'll just fidget with my seed value until I get something that I really like now that looks pretty good to me so now the last thing I'm going to do is just
here at the end I'm going to add a regular old store named attribute node and a set material node I'll plug my group input into the
material slot here and then I'm going to plug my radius value directly into the store named attribute save this as something like PR for Point radius
and then I'm going to come back to my distribute points on faces node add in a group input plug this value here into the density then we can actually hop over into
shading real quick and I'll show you one quick trick that you can use in your shading editor switch over to rendered View
give Suzanne a new material then come down here to the material slot and add another one now I want to keep Suzanne as material one and then I'm going to set all my
points to material 2.
so I can just select that back in my interface I'll click back onto it here and if I set this to something like black you'll see now we can actually
separate out the points and the mesh now if we bring in an attribute node and name this to the same thing we used to store our Point radius value and then
use a math node you're going to have to multiply this by a lot because if you'll recall our Point radius is all in like values of a thousandths
so multiply this by something like a hundred Ctrl shift click to plug that into the output then you can grab a color ramp and you'll see you actually have this
gradient effect that you can use in a whole bunch of ways to affect your materials I like to use it on my emission strength personally
then you can set this to something like maybe blue Ctrl shift click and now you have this really cool like Point disintegration effect I think it
looks really nice again adjusting these values gives you a lot of customizability again this is a completely animatable effect as you can see here it does look a little bit
better in One Direction than the other but you can do a lot of different things with this So yeah thank you guys so much for watching if you enjoyed this consider
liking subscribing All That Jazz and I guess right now happy holidays Merry Christmas hope you all have a fun and festive holiday season
Loading video analysis...