Sunday, August 7, 2016

open VDB notes

lead developer is ken museth - ken.museth@dreamworks.com

open VDB is a open source c++ library
it boasts a novel hierarchical data structure


developers mention since it is a tree structure anyway
- not external trees need to made for iteraction over voxels

Open VDB includes a suite of tools for manipulating voxels in the custom format
current release is 3.1.0

it is adopted by many other COTS software
the file format has option compression
vdb files have a 'delayed load' operation

voxel:
a voxel smallest addressable unit/space in the vdb volume file format

tiles: (unique to VDB)
represent large constant regions

Active State:
each voxel has a binary state (1bit boolean)
the significance of the bit is application independent
the underlying datastructure

"unbounded" - almost infinite index space.

its fast - it runs in constant time O(1)
its 'fast' with random access and sequential access

compact - small memory footprint
has fast IO

has dynamic topolgy

feature a set of conversion tools to convert from or to polygons
 

voxel: smallest addressable unit of volumetric space

Each voxel has a binary state (1bit boolean)
its fast - it runs in constant time O(1)
its 'fast' with random access and sequential access

Inspired by a B+ tree
its a "very" shallow tree
its a fixed depth tree of four
the root node is the only node that is dynamic

it was inspired by a "B+ tree"
its a "very" shallow tree
the path from root to leaf is always 4

it has a built in iteration tree (BVH - bouding Volume Hierarchy)


its a fixed depth tree of four

the root node is the only node that is dynamic

the "fan-out" factor is high in the beginning and then finite
(we want to cover a large index base)
Screen shot1

voxel iterator visits the values of the voxels
voxel iterator is internally composed of node iterators

in VDB voxels reside at the leaf node level
tiles - higher up in the hierarchy - represent a section of constant value
memory hierarchy

RAM is very slow (compared to CPU cahche) - but its dynamic
how to program for this structure - using cache oblivious algroithms

example shows the vdb as a level-set a distance field

bit-masks play a central role in vdb
a bitmask is the simplest way to set a state
no where in the data structure are we storing coordinates as we do for vertices of a polygon

voxels are implictly encoded in the bitstring
cheap bitwise operations are used ie shifting
you can think of the bits as storing the topology - not coordinates




No comments:

Post a Comment