Crowds & Simulation / Houdini & Procedural Workflows / Houdini
How to Make the Thanos Snap Effect in 3D | Houdini Tutorial
Written guide

Playing loads YouTube content. YouTube processes data after activation.
Watch on YouTubeIf the player is blocked or unavailable, use Watch on YouTube.
This dissolve effect combines two coordinated systems: a Boolean removes the visible object, while particles emerge from the advancing cut and disperse. A noisy cutting volume makes the boundary uneven; particle forces, lifetime, scale, and color turn that boundary into a moving cloud. The lesson finishes with a rendered sequence of a sphere disintegrating.
Although the title references the Thanos snap, the demonstration is an introductory Houdini effect rather than a reconstruction of a feature-film setup. It uses a historical shelf-created POP network, Point VOPs, and Mantra. The exact Houdini release is not established. A custom model is suggested as a replacement for the sphere, but character deformation, transferred textures, and production compositing are not demonstrated.
Animate the surviving volume before adding particles
Starting at 00:23, create a sphere and a box inside a Geometry object. Put the sphere in the first Boolean input and the box in the second. Use polygonal geometry and the Intersect operation: the visible result is the portion of the sphere still inside the box. As the box moves downward, less of the sphere remains inside it.
The cutter initially encompasses the sphere, with an example size of 2.2. It needs divisions because it will later be deformed. A dense initial setting makes interactive playback slow, so the instructor temporarily reduces the divisions. Keep this distinction clear: a faster working resolution helps evaluate timing, while the eventual cutter resolution affects how its noise can shape the boundary.
Insert a Transform on the box branch. Key its Y translation at the beginning, then move it down and key it again at frame 48. The recording treats this as approximately two seconds. Play the Boolean result before proceeding; the sphere should disappear progressively from top to bottom. Save the scene while the setup is still simple.
Add a Mountain after the cutter’s movement to make the dissolution edge irregular. This introduces a new coverage problem: the noisy cutter does not initially clear the whole sphere. At 11:00, the end translation is adjusted to −2.5 and the box size to 2.5 on each axis. These are values for this example, not general dimensions for arbitrary objects. Inspect both the starting enclosure and the final disappearance after changing noise or cutter size.
Separate the hero geometry from the emitting cut surface
The network needs the remaining solid and the exposed moving cut for different purposes. From 06:03, an output Null preserves the Boolean result for the hero object. A separate Blast branch uses Boolean output groups to isolate the surface that will emit particles. Another Geometry object imports the preserved output through Object Merge, so the visible hero can remain independent of the emitter branch.
This is an important troubleshooting sequence in the source. The instructor tries A Inside B, tries A Outside B, then realizes the wrong node was being displayed. Returning to the intended display node and the A Inside B selection produces the moving cut surface. The lesson’s useful check is geometric: when viewing the emitter alone, you should see the advancing layer at the dissolve boundary, rather than the entire surviving sphere.
Do not infer the desired emitter solely from a group’s name. Inspect which polygons the Boolean generated and what the Blast actually removes in the demonstrated input arrangement. The transcript does not provide a complete portable specification of all Boolean group and Blast toggles. Treat the displayed moving cut surface as the acceptance check when matching this step in the video.
Establish particle birth, lifetime, and collisions
At 12:31, apply the Source Particle Emitter shelf tool to the emitter geometry. The generated dynamics network calculates the motion; the source-particle object provides the resulting particles for appearance adjustments. Keeping those roles separate helps locate settings later: birth and forces belong to the simulation, while the subsequent Point VOP work changes how its output looks.
The first test uses downward gravity and a ground plane placed at Y = −1. Particles slide or scatter excessively even though the ground has friction, so the instructor also increases particle friction. This demonstrates why inspecting only one side of a collision can be misleading.
The artistic direction then changes to upward motion. The gravity vector is temporarily changed from the downward setup to a small positive Y force, later reduced from 1 to 0.5. These values are used to float the particles; the effect is deliberately stylized.
In the source’s Birth settings, continuous emission initially uses 5,000 particles per second, with an impulse count of zero. The default long lifetime leaves particles around far beyond the dissolve. Testing one second, then two seconds, makes their disappearance part of the effect. A life variance of one second around the two-second setting gives the demonstrated spread of roughly one to three seconds, avoiding a uniformly ending cloud.
Extend playback to 150 frames so the last emitted particles have time to disappear. Inspect emission velocity variation separately from the upward force: removing the variation produces much more uniform movement. In the POP Solver discussion at 21:04, additional substeps are presented as a way to improve temporal calculation when needed, with a simulation-cost tradeoff. The recording does not establish a universal substep count.
Shape the cloud with orbiting motion and drag
Add POP Axis Force around 22:05 and compare playback with the node enabled and bypassed. The particles now orbit around a Y-oriented axis while inside the force’s region. The instructor uses a top view to make that change easy to see, briefly exaggerates orbit speed, and then reduces it. Radius, position, shape, and falloff control where the effect acts; orbit speed controls the strength of the visible circling.
Around 26:04, POP Drag adds resistance and a directional wind component. The resulting trajectories are different from simply moving every particle upward. Some particles now travel below the intended floor, so the ground plane, which had been removed during the upward-only test, is restored at Y = −1.
That correction is part of the finished setup. A collider that seems unnecessary for one force configuration may become necessary again when the motion changes. Keep this collision plane out of the render; a separate visible ground surface is added later. Check trajectories through the whole animation, especially after changes to wind or orbiting force, rather than judging a single pleasing frame.
Use normalized lifetime to shrink and color particles
The initial render looks like uniformly sized spheres. From 29:00, a Point VOP on the particle output binds a value to pscale, with an exposed parameter controlling the overall size. A zero value makes the particles disappear; small nonzero values reveal the relationship between rendered size and the underlying points.
The age-driven network is built in stages:
- Divide particle age by particle life.
- Clamp that ratio to the range zero to one.
- Apply Complement to reverse the progression.
- Multiply by the exposed scale and an ID-based random contribution before exporting the resulting scale.
The initial age ratio makes particles grow as they get older. The instructor notices the direction is wrong and adds Complement around 32:02, so particles begin larger and shrink toward the end of their lives. Thinking of the complemented ratio as “remaining fraction of life” makes that correction easier to understand. This is an explanation of the demonstrated node relationships, not a replacement script.
There is a terminology error in the narration: age is described as frames. SideFX documents POP age and life in seconds. Their ratio still expresses progress through a particle’s lifetime because both quantities use the same units. This clarification comes from the SideFX particle attribute reference, rather than from a new simulation test.
Seed the additional random value from particle ID so the size contribution varies between particles. Then add a color Ramp and connect its output to Cd. A ramp alone only defines a palette; it needs a varying input to choose a location within that palette. The existing age-related signal supplies that progression. Test with strongly contrasting colors first to confirm that particles change color over their lives, then refine the palette.
After a scene interruption and recovery, the instructor adjusts the colors to an orange, white, and yellow-orange progression. Some of that adjustment happens off camera. The observed result is supported, but an exact reconstruction of every ramp stop is not available from the narration.
Balance density, scale, and shading through render tests
At 37:01, the instructor wants a denser dissolving edge without merely enlarging every particle. Birth rate is raised from 5,000 to 50,000, then tested at 500,000 before settling on 100,000 in this scene. These are continuous emission rates, not total particle counts. Reset to frame one and simulate forward after each birth-rate change; an existing cached view is not evidence that the new setting has been evaluated.
Particle scale is tuned separately. A value of 0.1 proves too large; 0.025 is preferred in the later render test. Judge the combination: a higher rate changes coverage and cost, while scale changes the apparent size of each element. Increasing one does not reproduce all the visual consequences of increasing the other.
Assign a Principled Shader to the particles and set its base color to white for the demonstrated particle-color setup. Add an environment light and inspect the resulting shading and self-shadowing. The remaining sphere receives a separate orange material. A visible grid is then added below it, with a light material for receiving shadows. Its height is corrected to −1 after it visibly cuts through the bottom of the sphere.
The separate collision and rendered ground objects now serve complementary purposes. If the render appears to lose the lower part of the hero, inspect the visible grid height before changing the Boolean or particle solver.
Enable both motion-blur controls and render the sequence
Create a camera around 47:02. The example initially uses 1080p and a 28 mm focal length, then locks the camera to the viewport for framing. In the Mantra output, select the frame range through 150 and enable Allow Motion Blur. The instructor also sets a shutter offset of −1 to shift the exposure timing for the desired trail.
The first render still lacks the expected blur. Around 51:00, the missing setting is found on the source-particle object: Geometry Velocity Blur is changed from No Velocity Blur to the enabled option. The renderer’s global permission and the particle object’s velocity-blur setting are separate requirements in this demonstrated setup. Check both before increasing shutter effects to compensate for absent blur.
Rendering proves slow at 1080p, so the final sequence is reduced to 800 × 800. Further lighting refinement is partly performed during a recording pause. Render to MPlay is then used to inspect the sequence, and Save Sequence As exports the images. Render to Disk is mentioned as an alternative, but a detailed disk-output configuration is not demonstrated.
The final check is temporal: the remaining sphere, moving emission boundary, particle trajectories, shrinking sizes, color progression, and late disappearance should read as one event. The source demonstrates that complete sphere effect. It does not establish that the same settings will work unchanged for a moving character, a different scale, or another renderer.