This project seems interesting I will try something on my side.
It will be difficult to display 10M points in 3d space, especially as spheres. Because if your sphere has 8 faces that would be 80M faces to display. You can try as cubes instead. It may be possible to display as a single triangle face, but you will have to orient it towards the camera. Even the best 3d programs sometimes struggle at loading more than 2 million faces (3dsmax, Maya..). So I think Javafx isn't made for that.
This page has a project similar to yours and aparently has difficulties displaying more than 40000 points
http://stackoverflow.com/questions/23749614/how-to-improve-javafx-3d-performance
I think you should load only the point you see. For example at zoom 1, you should display 1 out of 1000 points. You could do that with a step 1000 in your for loop that loads the points. Then you monitor the zoom level, and load more points when getting closer. It must be possible to retrieve the field of view of the camera, and also load only points that are in the FOV.