This is just an unofficial overview of the basics of what libvds is/does and how to use it. It is not guaranteed to be complete or accurate!

VDSlib supports view-dependent hierarchical dynamic simplification. The input vertices are grouped into the cells of a recursive octree spatial subdivision. The resulting tree is a collection of nodes, each with at most eight children. The single vertex to which a cell collapses, by default, is the average of all vertices in the cell (as an example, this could be changed to be one of the actual vertices based on some notion of importance).

1) Specify the input mesh.

Call vdsBeginVertexTree() and vdsBeginGeometry(), then create one node per vertex using vdsAddNode(). Specify triangles as three indices corresponding to the leaf nodes. VDSlib initially maintains all this information in global state. You finish by calling vdsEndGeometry(), which returns a list of all the leaf nodes that were created.

2) Build the vertex tree.

Call clusterOctree() to cluster nodes to form the vertex tree using vdsClusterNodes(). Then finish by calling vdsEndVertexTree(), which returns the root node of the tree.

vdsEndVertexTree() does several things:
- assigns ids to all the nodes
- sets the root as the sole boundary node, and sets all other nodes to inactive
- moves the data for each triangle from the global state to the subtris array of the deepest node (smallest cell) containing at least two of its vertices

3) Adjust the tree.

Use vdsAdjustTreeTopDown() to fold/unfold nodes. When a node is unfolded, its subtris become visible. Each subtri is added to the vistris list of the deepest node (smallest cell) at or above VDS_CULLDEPTH which contains all three of its vertices.

4) Draw the tree.

Use vdsRenderTree to walk the entire tree. The set of triangles in all the non-NULL vistris lists form the active triangle set. Calling vdsUpdateTriProxies() on each vdsTri in a node's vistris list calculates the proxy node corresponding to each corner (the deepest active/unfolded node that contains the corner).
