Alien Drone Attack

In The Making


March 7, 2025


Week 05: Ground Destruction - Debris and Particles

Refining the ground destruction by adding debris and particles has been one of my favorite parts of this project. In this breakdown, I will walk you through the process of setting up the debris emitter, instancing geometry, and configuring a Popnet for particle simulation.

I. Debris and Particles Sourcing

I started by extracting the inner faces from two previously set up fracture configurations. Next, I scattered a copious number of points, setting the stage for the mathematical magic to come.

According to the shared by Gabriel Neville, an FX Lead at MPC FILM, the method of sourcing points for debris emission is demonstrated below:

  • This code is responsible for finding neighboring points within a specified maximum distance (MaxDist). It iterates through the list of neighboring points and checks if the point's name (@name) is different from the current point's name. If they are different, it sets the color (@Cd) of the current point to red (1, 0, 0) and assigns the index of the neighboring point to i@neighbourPoint.

    Additionally, it calculates the distance between the current point and the neighboring point and stores it in f@distance. If this distance is less than a specified minimum distance (MinDistance), it sets the distance to the MinDistance.

    This part is like a detective looking for nearby points. It checks if any points are close to each other. If it finds a point nearby, it marks it as a "neighbor." It also measures how far these points are from each other. If they're too close, it makes sure they're at least a certain distance apart.

  • This code calculates the actual distance between the current point and its neighbor using the previously calculated distance. It then checks if the actual distance is greater than the distance multiplied by a distance multiplier (DistanceMult). If it is, it sets the color to yellow (1, 1, 0) and sets i@active to 1, indicating that this point is active.

    Here, it checks if a point is far enough from its neighbor. If it is, it gives the point a special color and says, "Hey, you're active!" Imagine it as giving a high-five to points that are far apart.

  • This sets a specific frame number. In simpler terms, it's like telling the program to remember that on frame 100, something important will happen.

  • Inside a SOP solver, this code checks if the point is active (i@active == 1). If it is, it sets i@activeFrame to the current frame number (@Frame).

    Then, it ensures that i@activeFrame does not exceed the activeFrame value of the previous frame by using min().

    This is like having a notebook to remember things. It notes sown which frame something became active. It’s saying, “Hey, on this frame, you became important!”

  • If i@activeFrame is not equal to the current frame (@Frame), it removes the current point.

    If a point is no longer needed, it's removed from the program.

  • If i@activeFrame is greater than 36, it removes the current point.

    If a point has been active for an extended period, it's cleared from the scene.

II. Debris instancing

Once I successfully set up the sourcing, I instanced various debris geometries onto the points. Since each point has its own pscale and orient attributes, the instanced debris naturally varies in appearance. After defining the velocity, I ran another Rigid Body Dynamics simulation for the debris, using the drone and the main concrete destruction as colliders. To optimize performance, all debris pieces use simple box colliders, significantly speeding up the simulation.

Debris Sourcing

Debris RBD Simulation

II. Particle Simulation

Particles are great substitution for tiny pieces that falling out from the destruction, adding another layer for the effect without increasing the amount of geometry

Particles Sourcing

Particles Simulation

References

Links of references & assets:

Ground Impact in Houdini Tutorial (Part 2) - Fine Debris - REBELWAY

Previous
Previous

Week 04: Destruction Week 03

Next
Next

Week 06: Dust and Helicopter Destruction Test