Extract visible vertices from a 3D geometry model
Idea A:
Draw an invisible mesh that will occlude the points we don't want.

Create a mesh from the point cloud.
Render that mesh to a depth buffer but not to the color buffer.
Render the point cloud using a depth test &quot;closer or equal&quot;.

This approach should give the expected result, but the problem with it is the first part, which is not trivial at all.
Idea B:
Approximate the mesh with fat particles, that are big enough to hide points in the background.

Pick a size that is roughly the typical distance between two points.
Use that size as a particle diameter.
Render the point clouds using such large particles, to a depth buffer but not to the color buffer. Maybe offset that point cloud a little, so it's a bit farther from the camera.
Render the point cloud using points this time, and using a depth test &quot;closer or equal&quot;.

This method should be a lot simpler to implement than A, because there is no need to triangulate anymore. The result will not be perfect though: some points that should be visible might disappear, and some that shouldn't be visible will remain visible. Tweaking the particle diameter and offset will yield different results.
Idea C:
As a very cheap trick, just render the point cloud with a fog function. The farther points are from the camera, the less visible they are. This method won't hide any point, but still help reading the volume.