Points cloud particle system (PCS) upgrade

I did some experiments with the current points cloud particle system and I quickly encountered shortcomings of it. I think Babylon.js would benefit if the point cloud system wasn’t too bare-bones. At minimum I would like to see these to be resolved:

  • Points are not spread evenly when using a mesh to layout surface points. The points are packed towards corners of faces. Is this a bug?
  • Points have fixed screen space size. When zooming out from a point cloud, the cloud starts to look much denser than intended. Would be much better if the particles were scaled properly like normal particles do.
  • Customizable point textures or change the current one to a smooth circle one. The default square one doesn’t look nice unless the size is set to very small.
  • As a bonus, set size to individual points would be very cool feature.

With these fixes babylon.js point clouds would look much nicer and comparable to how they look with three.js.

let me invite @JohnK who is the father of that feature

some answers:

Points are not spread evenly when using a mesh to layout surface points. The points are packed towards corners of faces

Not a bug, we display the vertices. This is not what your 3js example is doing I guess they are using a specific material (like our material grid). I know that @PirateJC was also interested by this new material

Points have fixed screen space size. When zooming out from a point cloud, the cloud starts to look much denser than intended. Would be much better if the particles were scaled properly like normal particles do.

Again this could be fixed with a PointMaterial

There’s definite interest in this space for sure. I have been dabbling with the idea of creating a node material and post process to help render a point-cloud type effect, but my interest was more on the material side instead of actual point cloud data. Curious about overlap though…it’d be interesting to think about how the material could help render a more pleasing affect for point clouds.

You could adapt this Create Points on the Mesh Surface - Babylon.js Documentation to give you more of what you are after.