Computer Graphics & Geometry
Maxim Kazakov
Moscow Institute of Physics and Technology
e-mail:max_kazakov@hotmail_com
Contents

(1),
where Level is a recommended dataset hierarchy level, ë xû is an integer less or equal to x, s is a distance to the cell center and d=Ö 3 is a diagonal length of the level 0 cell. This formulation assumes that cells from different hierarchy levels used for the isosurface reconstruction have their edge length depending on the hierarchy level chosen as follows:
Length=2level, level Î [0..N] (2),
where level is a hierarchy level, N is a maximal hierarchy level employed, zero hierarchy level corresponds to the original dataset.
Another issue is that the camera frustum formed by clipping planes bounds a visible volume region that is only a fraction of the entire volume. One can restrict the isosurface construction process to be performed only in the visible volume part. This condition should be considered for a substantial decrease of processing time in applications where the either observer does not see the entire dataset at a time or this situation is rather rare [7].
Both issues mentioned above can be considered along with an isosurface mesh reuse and its incremental updates caused by changes in the observer position and the dataset modification to reduce processing times and the number of polygons. Mesh cache or reuse is one of the major differences of our method from [17] where the mesh is reconstructed from the scratch for each frame.
Supporting incremental mesh updates for the moving observer results in several difficulties in its implementation. First, level-of-detail changes in the considerable number of cells after the observer makes a step in the scene or changes a point of his/her interest. This requires finding those cells and updating isosurface patches in them according to a new detailing level. Next, movement of the camera frustum requires processing the certain dataset parts for the isosurface extraction and merging with the existing mesh while eliminating isosurface patches associated with the cells that leave the frustum.
5.1. Initial isosurface construction
Before the construction of the initial visible isosurface part, it is necessary to initialize data structures required for the hierarchical isosurface reconstruction, e.g., the surface containment bitmasks for each dataset hierarchy level of interest. This initialization starts from cells of the original dataset where each cell is examined for presence of an isosurface patch in it. The checking succeeds if dataset samples at the cell vertices have different signs resulting in “one” set in the corresponding place in the bitmask for the original dataset level. Otherwise, “zero” is set.
Next, the bitmasks for the remaining hierarchy levels are initialized. This initialization requires only the bitmask from the previous level to be available as “one” is set when one of the child cells from the previous level has “one” set in the bitmask from their level.
The initial observer position and viewing direction along with depth of a view control the viewable volume part. For simplicity, this volume part is approximated with an axis–aligned box that contains it. The isosurface construction starts with covering this box by cells from the coarsest dataset hierarchy level. Each cell that has an isosurface patch in it (that is detected by inspecting the corresponding bitmask) is checked if its level is equal to one given by (1). If it is the case, the cell gets triangulated and triangles are added to the resulting isosurface mesh. Otherwise, the cell is processed recursively until the level recommended by (1) is met. During the triangulation, the stitching procedure (see Section 4) is applied, if necessary. Information about non-empty cells that meet the criterion (1) is inserted into the hash table for future usage. This hash table allows for easy lookup for cell information by its position and level. If a surface patch was constructed for a cell, then cell information in the hash table is updated with the reference to the triangles constituting the patch.
This initialization activity results in the isosurface mesh constructed for the visible part of the scene with detailing levels depending on the distance to the observer or a point of observer’s interest. Another result is the prepared internal structures (such as the bitmasks and the hash table) that will be used for handling of future mesh updates with the observer movement and dataset modifications.
5.2. Processing incoming volume parts
As the observer moves, both position and size of the closest axis-aligned bounding box containing the camera frustum change. Let us denote this bounding box at the previous camera position as W prev and W curr at the current position. The volume that comes into the camera frustum box at the current frame is proportional to W prev \ W curr and it can be divided up into several axis-aligned boxes B1..Bn. For each such box we apply the procedure similar to one described in the previous subsection to construct the new isosurface part. The only difference comes from the following consideration. When the previous isosurface part was constructed, the cells intersecting its box boundary were possibly added. The isosurface construction for the new volume regions should account for those cells and omit from processing those ones intersecting the common boundary of W prev and W curr . The result of applying this procedure is illustrated in Fig. 2.

![]() |
![]() |
![]() |
![]() |
![]() |
|
![]() |
|
![]() |
![]() |
![]() |
![]() |
![]() |
| |
Computer Graphics & Geometry