The long and short of it is that I create dynamic material instances for each piece to be dissolved. That instance has a parameter that controls how disintegrated it is. 0.0 is not disintegrated at all, 1.0 is fully disintegrated. The material uses a blend mode of Masked, and there’s a noise texture is plugged into the Opacity Mask pin. Well, it’s not directly plugged in to the Opacity Mask - I use the parameter to drive some image processing on the noise filter and then use the filtered texture to drive the opacity mask.
When the character is hit, I create a dynamic material and replace its existing material with the dynamic one. I also make the skeleton (which is a separate USkeletalMeshComponent from the main character mesh) visible and give it a different instance of the dynamic material.
I set the dissolve parameter over time from 0 to 1 on the body. I think the example above dissolves in about .75 seconds. After a delay of .2 seconds, I dissolve the skeleton the same way.
There’s more to it than that, and more parameters, but that’s the basic approach. I’m planning to do an in-depth tutorial. I’ve started writing it, but it may take me a little while to find time to get it done.