I’m still learning myself, but I posted your question on real time vfx discord channel, and reached out to a few people with more extensive Niagara experience as well. I’m sure in addition to myself, and answer to this would be really handy for lots of other people, so I hope we can get you a response soon
Best method I’ve come across so far is to generate good UV’s for your source mesh.
Then in Niagara use the Position from UV method from the SkeletalMesh interface to spawn on uniformly distributed uv’s
I remember Epic presenting it in one of the showcases for the Matrix demo they did.
Does it try to base it off the texture density for each UV shell?
The method itself just spawn on a UV coord, but if your UV’s are properly scaled by the area they represent, and the UV coords you generate are uniform, then the resulting distribution will also be uniform.
Apparently in skeletal meshes there’s a checkbox option for supporting Uniform Distribution
The “Support Uniformly Distributed Sampling” has worked is some cases, but it’s not super reliable unfortunately.
I have seen plenty of cases both professionally and in my free time where this did not produce significantly better results than spawning without the weight.
It’s worth checking though if it does improve it or not for the specific case you’re working with.
You stll get outlines because there is more overlap in dense areas, but overall it gets more venly distributed. Seen better with opaque particles here:
However, if you need it more evenly distributed, mesh reproduction is available to you and it has all the math needed to calculate the triangle surface area you need to get the distribution you are after.