Method 1 often provides the best cleanup result, since the tool then has access to any simulation data it needs. DOPs outputs packed primitives with all simulation data still stored on the surface, rather than it accidentally being packed inside a primitive. The first input needs static geometry to be plugged in. It is important that the static geometry AND the DOPs data share a common name attribute! The tool will otherwise not know what geometry belongs to which template point.
The optional bounding input can receive any watertight mesh or volume, which gets used in an internal group SOP. The optional constraint relationship geometry needs to be the geometry imported from DOPs. (Instructions further down the page)
When using method 2, you are importing a BGEO sequence cached out in a different scene. After the file node used to import your sequence, you should run it through a "pack" node, which should pack your geometry based on a name attribute. To be safe, put an "* / asterisk" in the "Transfer Attributes" parameter field. This will hopefully provide the tool with the data it needs. The tool will remove unrequired data by itself! After the pack node, you should put down a "Timeshift" node, with its frame parameter set to "1". This will make sure the tool gets static geometry on its first input connection.
As for the bounding and constraint input, the same rules as method 1 apply.
The constraint geometry is optional for the tool, but it is highly recommended! The reason for this is that the tool can then exactly figure out what will ever get disconnected during the simulation. The images explain how to obtain the constraint relationship geometry, which can also be read more about in depth HERE. After this has been obtained, the data should look similar to what you see on the last image. You can now either cache this out, or directly plug it into the fourth input of the tool.
The input mode determines if the rest points should be used on the internal "transformpieces" node. It is often the case that rest points are required on objects you pack yourself due to missing attributes. Packed primitives coming directly out of a DOP network dont have this problem, hence the naming.
There are three output modes the user can pick from in the dropdown menu.
1. Animated Optimized Geometry - This will clean up your destruction simulation, and will use the specified static geometry to be copied onto the optimized template points. (Default Mode)
2. Static Optimized Geometry - This will clean up your destruction simulation, but will only return the static cleaned up geometry at the specified starting frame.
3. Animated Transforms - This will clean up your destruction simulation, but will only return the animated cleaned up template points. This is useful if any custom stamping of geometry is desired.
The framerange specified in this parameter controls the framerange at which the tool will return the configured output. This allows the user to only clean up specific parts on an animation timeline. (Useful for LODing when zooming out in a shot)
The cleanup method determines how the tool will handle cleaning the supplied data. There are two main methods at this time:
1.1 Proximity Based - The tool will try to figure out what chunks have similar transformation data throughout their animation cycle. Any chunks starting and landing approximately the specified cluster search radius will be batched together as one chunk during the cleanup.
1.2 Proximity & Constraint Based When using the proximity methhod, the user is also able to specify constraint geometry in the fourth input. Providing the tool with constraint geometry during this mode, allows the user to completely exclude any chunks not attached to any others in any way. This allows some finer details to remain in the simulation, yet cleans up the bigger details.
When this toggle is checked, the tool will add a separate color to each unique packed primitve. This allows you to quickly see how everything is being optimized. The exploded view will only become editable when the output mode has been set to "Static optimized Geometry".
When this toggle is checked, the tool will calculate if the movement of any chunk is less than the specified threshold.(in units) All chunks less than the specified threshold will be batched into a single chunk, stationary at the specified starting frame.
The user is able to toggle the fuse checkbox, to control whether or not points stored inside packed primitives should be consolidated. The fuse distance controls how close points should be to eachother before being consolidated. After this step happens, the tool will automatically check for any inside faces, and will remove these from watertight geometry only! If your animation looks weird after playing around with this parameter, try lowering the value!
The user is able to toggle on bounds clamping only when a watertight bounding volume is connected to the third input of the tool. When clamping bounds, the tool will check if any packed primitive is leaving the specified bounding volume, and will move these to the specified "Clamp Position".
When computing vertex normals, if normals of vertices around a single point are less than or equal to the specified angle (in degrees) apart from each other, they will be averaged together, weighted by the vertex angle in each polygon.
The Data Cleanup allows the user to specify existing point and primitive attributes, which will be removed from the output geometry.
In this test case provided by Mike Lyndon, I had access to these input data: Static Geometry, Template Points (Directly from DOPs), and the Constraint Relationship Geometry.
After connecting the tool with the input data, I set the cleanup method to "Constraint Based", which means the tool tries to figure out what is ever going to be connected throughout the simulation. The tool already did a pretty good job without any manual tweaking. We already reduced the packed primitives count by over 86%!
However, the simulation still doesn't look like the result we're after. A lot of clusters still have similar transformation data.
After visualising the constraint relationship geometry, it became quite obvious why the tool hadn't optimized all chunks with similar transformation data. As seen on the image, there are a lot of constraint "islands", which do not share atleast 1 connecting element. This means that the tool identifies these clusters as unique groups. Therefore not batching them together.
After concluding that solely using the constraint network to clean this simulation does not deliver perfect results yet, I decided to utilize the Freeze Threshold parameter. After enabling the checkbox, the default value already provided me with the desired result. (The chunks don't move throughout the simulation, therefore 0 is fine)
Now compared to the original 2000 packed primitives, we reduced it to only 59! Thats a reduction of over 97%!!!