 Jake Taylor
|
Anybody done much research on rendering metaballs BESIDES using marching cubes? Found some interesting papers on the subject (namely http://wwwcg.in.tum.de/Research/data/Publications/Vis10EfficientSPHRendering.pdf ) but haven’t played with much myself.
Anybody have any experience with the subject?
|
 Matt Swoboda
|
Yea, ive tried a bunch of things in this area.. Tried raytracing the metaballs directly (on CPU actually) – which we never used / released as it wasnt quite good enough..
Tried rendering the metaballs to a volume and then converting to SDF then raymarching (on GPU) – see frameranger for that. Works well except the field is sparse so you cant march too efficiently. Also you are still limited to a certain grid resolution.
And then some things with screen space splats which is pretty fake – NVIDIA have some demos with that technique.
|
 Jake Taylor
|
Yeah, played with NVidia’s curvature flow technique, if that’s what you’re referring to. Still got the same nasty issues as with all splatting techniques though, namely edge artifacts. This paper seems interesting though..
|
 Jake Taylor
|
upon more inspection, it seems this just provides a nice way to generate a volume, then you must march (as you mentioned) through a sparse volume.
I also know our good friend Mentor has done some work in this area, achieving ~60k balls in around 30fps on a mid-grade laptop GPU using DirectCompute and a view-space grid like the one mentioned here, but instead of trying to generate an SDF texture, he had bucketed the balls into his grid. I don’t remember any more details, though. Looks like something I’ll have to play with :)
|
 Matt Swoboda
|
I did a pretty similar thing – bucketing the balls in a view space grid and raytracing, but on CPU. It was just a bit too slow to be usable in production – 20k balls at ~15 fps on a dual core a few years back. Maybe on gpu nowadays.. :)
|
 niels
|
What do you guys mean by “bucketing” the balls in the viewspace grid?
|
 Jake Taylor
|
It basically just means using a grid that is aligned to the view space instead of a uniform grid in world space (Fig. 3 in the paper I linked in the first post shows a good picture of this). Then, for each cell, store a list (a bucket) which contains all balls whose influence would affect the cell.
|
 niels
|
Ah, that explains. Thanks!
|
Latest comments