Point Cloud Display
It would be nice to have a point cloud display mode on a per object basis.
Why?
- bounds display speeds up the viewport but lacks a lot of accuracy
- wireframe display mode offers accuracy but the speedup is not as significant
- point cloud display would increase viewport performance with highpoly objects especially in large scenes while preserving a certain object readability, especially useful for archviz and environment artists
How?
- point cloud mode could work like wireframe like an overlay, in fact, there already is an overlay for loose points that can maybe be modified to work with meshes that contain more 3D data than just vertices
- for highpoly objects only a fraction of the points (vertices) should be displayed to keep the viewport snappy, this could also be adjustable with a point density slider
- maybe the amount of points could depend on the distance from the view, in the foreground 100% gradually decreasing to something like 1-3% in the background
- for readability there should be some sort of color variation maybe based on object color
I did a quick test for reference: I took a tree model with about 2 million vertices and created
a) a linked collection instance containing that single tree (visible in viewport and render, left model)
b) a linked collection instance containing the tree (hidden in viewport and visible when rendering) and an extremely reduce version of the tree containing no edges and faces and only 0,2% of the original vertices (about 4.000 vertices, visible in viewport and hidden when rendering, right model) note that you can still determine the shape of the tree by the loose vertices = point cloud.
For the test I set up a simple hair particle system with collection instance a) and b) and kept increasing the number of particles respectively.
Results: a) viewport started lagging at 500 particles, at 1.000 particles working with the blend file was impossible
b) viewport started lagging at 100.000 particles, at 200.000 particles working with the file was impossible
So with this 'workaround' it is possible to have 200x more particles in a scene than with a standard collection instance. Imagine what's possible with a hard coded more optimized point cloud display.
3 Comments
wow good idea. it seems quite easy to do with bmesh just removing faces and edges. and in amount backface culling could help to reduce the amount of points. after reducing the density should depend on the distance between vertices but talking about particles isn't it possible to have infinite amount of particles now. I think pablo was telling this 3 blender today ago
* @zgorg2004 * I actually don't intend to completely delete the faces and edges. It might be enough to just hide them like wireframe hides faces. That way you wouldn't have to create an extra 'proxy' object. But that's just what I made up in my mind. If it is better to work with bmesh and delete some geometry why not?
I don't no if you can have an unlimited amount of particles. I guess that's theoretically possible but in the end depends on your hardware and if these particles are displayed in the viewport, if they are just points or meshes, ... Practically, I experienced a limitation in my quick test.
yes please.... a proxy system