Particles in systems using Skeleteal Vert/Surf Location don’t spawn on the surface of most models.
When I assign a skeletal mesh or character to the exposed Parameter of my particle system, I’m getting inconsistent results. more often than not, the particles are spawning at points well off the model. This gets even worse as the characters animate.
I’ve demonstrated the issue int he following video:
I have tested this with the Mixamo charactrers and they all have this issue as well as characters from our game. The default UE4 BlueMan does NOT have this issue. Also, several Skeletal Meshes I have brought in from MAX have been okay.
Create a Cascade Particle system and give the emitter a Skeletal Vert/Surft Location parameter
Add the particle system to your level
Add a Skeletal mesh actor to the level
expose the parameter on the particle system
Assign the Skeletal mesh actor to the exposed Skeletal Vert/Surf Location
optional: Add an animation to the skeletal mesh and simulate or play the level
I’ve seen this issue in 4.4.x and the 4.5 preview builds obtained from the launcher as well as a custom build from GitHub of 4.4.0
After some experimentations, I noticed that it only happens to particles that are supposed to spawn on vertices (and tris) weighted to only one bone. So, trying to clean up the weights tables (or using the Remove Zero Weights function in Max) is a really bad idea, in this case.
I dirty-fixed it by weighting other bones to the vertices that were set to 100% on one joint. The minimum seemed to be either :
One bone at 95%, an other at 5% (under 0.05, it didn’t seem to work). Not a good solution as it mess with the original skinning.
One bone at 100%, at least two at 0%. Doesn’t change the skinning, but you have to be careful when applying the empty weights, as it’s unlikely that you have two unused bones sitting there for this purpose.