prateekchandan / Advanced-CG-High-Resolution-Sparse-Voxel-DAGs

Paper presentation
http://www.cse.chalmers.se/~kampe/highResolutionSparseVoxelDAGs.pdf
15 stars 3 forks source link

representing arbitrary levels of detail with sparse voxel DAGs? #1

Open micahscopes opened 7 years ago

micahscopes commented 7 years ago

Over the last year, I've been dipping my feet into this subject, and must admit that I'm a little intimidated, but confident that this is the way forward for my project.

From what I've read, it seems like it should be possible to store and read sparse voxel DAGs (1) up to arbitrary levels of precision and (2) for hyper-volumes of dimensions greater than 3.

My use case is rendering fractals similar to the Mandelbulb. Here is an example of one rendered using Fragmentarium: https://vimeo.com/155587929 . That particular set is 16 dimensional, but many I've worked with are even higher than that. Since we can only visualize 3 at a time, this animation was made by oscillating the positions in the other 13 hidden dimensions.

Currently, the renderer I'm using recalculates the entire fractal every time I rotate or zoom. This is incredibly wasteful, especially when zoomed in to tiny, detailed regions of the fractal, which require many iterations to calculate. What's more, 16 bit floating point error really adds up when there are more dimensions to a fractal's formula.

What I'm trying to say is that a ray caster is no place to render a volumetric object. What I really want is to calculate the volume in one step, caching it to a file or in memory, then stream the appropriate parts into a ray caster or some other kind of renderer.

Sparse voxel DAGs seem like an ideal solution to this problem.  If I wanted to calculate some finer details of the volume, I'd like to be able to just pick up where the renderer last left off, appending additional nodes to the DAG. This would amount to some branches of the DAG being arbitrary longer than others. I imagine being able to calculate small regions of the volume without needing to store complete details of the entire object.

The issue is that until now I've only ever seen sparse voxel DAGs used with predetermined resolutions. How hard would it be to store and read them at varying levels of resolution? Does it feel possible to you guys?

micahscopes commented 7 years ago

@brentrwilliams do you have any thoughts?