This compound automates the process of creating an efficient MPM granular simulation setup.
It computes the intersection of an animated object with a piece of terrain and builds three useful pieces of geometries which can be used for the MPM simulation: (1) A 'source' geometry for sourcing the MPM particles only where the animated object intersects with the terrain geo, (2) A 'container' geometry used as a collision object in the MPM sim, which holds the granular particles in place (lest they fall down due to gravity), and (3) A 'carved_terrain' geometry which simply returns the terrain mesh, post-carving. It can be useful to scatter points around the granular sim, for rendering purposes.
Note that the terrain needs to be of planar topology, e.g. one-sided - not like box.
The terrain and the animated object need to be supplied in the form of file-caches (Alembic .abc or .bob). A frame-range must also be specified so that the carver knows which frames to consider for the intersection between the animated object and the terrain.
A useful tip is to use a low-res terrain mesh (e.g. 10k polygons or less) the first time you try it, as large terrain meshes can bit a bit slow.