OpenVDB
unread,Nov 8, 2012, 1:28:01 AM11/8/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to openvd...@googlegroups.com
Hey Andy,
Sorry that it took me so long to get back to you, but we (the VDB team) are totally slammed with production requests and merging stuff from SideFX into the main VDB repository. It's all kosher - just a ton of work! We hope to have another major release next week. Anyway, back to your question about mipmaps and VDB. As you undoubtedly know brickmaps conceptually store LOD representations of the same volume in a single hierarchical tree structure. There are two reasons why this is problematic for VDB. The first one is simply that as of today the VDB data structure can only associate a single value with a given voxel coordinate, (i,j,k). While this value can exist at any of the tree's levels (we call it a "voxel value" if it lives at the leaf level and else a "tile value"), they never "overlap". As hinted this is merely a design choice that could change one day. This takes us to the second and most important reason why a single VDB grid is not well suited as a LOD representation. As you might know the VDB tree, by design, employs very large fan-out factors. In fact this is one of the reasons it has such good random access performance. However, as a consequence the re-refinement between tree level is very high, and probably too aggressive for LOD (>>2). This all sounds like bad news for VDB, but as suggested by yourself a simple approach involves a sequence of VDB grids, each representing a filtered LOD version of the previous grid in the sequence, should work! Since the VDB is sparse and generally has a small memory footprint, the overhead should be relatively small. While we haven't tried this in a rendering context (yet), we use exactly this approach for multi-resolution simulation, more specifically an elliptic multi-grid solver. We even have plans to add a "multi-tree-grid-type" in the near future that essentially encapsulating this idea in a single class. Let's stay in touch regarding this development!
Cheers,
Ken
PS: I'll add an efficient method to derive the min/max within an aa-bbox next week :)