EDIT:
My first approach is still below, but I found a problem with it. If the large empty region is on a border (outside the convex hull of your points), it won't be detected. Putting points on the border like I did with the corners doesn't help because the triangles can be made bouncing from your points to those new points.
Another approach, which ought to work but might be too expensive to compute, is to generate a mesh of evenly spaced points across the space and use a nearest neighbors algorithm on each of the points in this mesh to find the point from your original points that's closest. The mesh point that is most distant from anything is the center of the biggest empty region.
I don't know how to find the second most empty region.
OLD ANSWER:
I think you're on the right track. I'm trying to do a similar thing for a scientific application in Python (where my problem is N-dimensional).
Take your set of points and add the corners of the space to the set of points.
Then you can do a Delaunay triangulation (this the dual of Voronoi diagram) in 3 dimensions. (The library call in Python is scipy.spatial.Delaunay
.)
Go through all the triangles (in 3 dimensions, these are tetrahedrons) and calculate their volume. (The library call in Python is scipy.spatial.ConvexHull.volume
.) I think these are your biggest empty spaces, or if they're not, it's at least an indicator of a big empty space.