I am currently doing some experiments in order to simulate liquids. I have a collection of 3D points that interact with each other to form a body of water.
I would like to form a mesh from these points by adding faces between the points that represent the surface of the body of water, in order to make it look more like actual water. To do this, I need to figure out which points in this collection represent the surface of my body of water. The points that are inside this surface will be hidden by the mesh. The points move in real-time, so a fast technique would be preferable.

(source: ayarger.com)
My initial idea was to calculate the mean of all the points and use it to discover which points are farthest away. I ran into a problem when I asked myself which points I would take...the top 10 farthest points? The top 20? What if the body of water is irregular and not spherical?
Any help would be appreciated. Thank you!
Hint: I think you want the vertices of the convex hull of the given set of points ( the vertices of a polyhedron).
I just discovered that you can do this reasonably fast in Mathematica. Here is how to find the vertices of the convex hull for a random set of 50 points in a cube:
pts = RandomReal[ {-1, 1}, {50, 3}]; polyh = ConvexHullMesh[pts]; MeshCoordinates[polyh]