- The idea behind find_first_points() was to evaluate the function only at "lattice points" to cache them in the hash table. The function evaluation (bvh traversal and actual densfunc()) take 95% of the time in polygonization, so any gain made in this area contributes a lot to speed. But, to be honest, I just coded it this way out of laziness temporarily :-) I could make a version with 26 directions and check how it behaves. If all values will be cached, the speed shouldn't be much worse, and surface accuracy is number 1 priority after all.
- I don't exactly know what you mean by caching the surface? Updating only the part of the surface that was influenced by a moving metaball or something else? This could be a serious improvement, but not in the case when all metaballs are moving (eg. a fluid simulation). Could you explain it more?
- Sorry, but I don't have the energy to look at these papers right now (very tiring day at uni, a lot of science done :-)). They look very interesting at first glance. Will check them out in detail later.