Information Technology Reference
In-Depth Information
account. But as in many visualization systems, it is not mandatory to render the
entire geometry with full detail and some simplification for distant objects is
accepted. So, the level of detail technique [ 11 ] can be applied to increase the
system performance.
Keeping a low polygon count is the key point to achieve high frame rates, so
before sending geometry to the render stage in the graphics pipeline, the model is
processed and only parts near to the camera are built in high level of detail. Distant
parts are built in lower level of detail, but it is well-balanced enough that major
features of the borehole (such as its direction and curvature) are not lost and can
still be visualized from distance, while that small details from distant sections are
ignored. As the camera moves through the borehole, the level of detail is
dynamically updated, so the user always visualizes the high-resolution mesh when
it's near enough, ensuring that the user will never see problems on the geometry
due to the low resolution.
In Fig. 13.8 , we present a fake borehole built for demonstration only. The first
frame (a) shows a borehole represented with full resolution. Here, all the borehole
data is used for rendering. The next frame (b) shows how the borehole should be
represented with a lower resolution. The sections are not interpolated, so each one
is in fact a hexagon, and only a small fraction of the original data is used to build
the geometry, this maintains the overall shape of the borehole, but small variations
are lost. The last frame (c) mixes these two visualizations and shows a high-
resolution borehole for parts that are near to the camera. As the camera moves
away, lower detail level is required, while the viewer still has the impression that
the geometry is unchanged. This happens because, different from this example, in
the actual system we only apply the level of detail for parts that are really far away
from the camera and smaller geometry changes may go unnoticed.
13.4.2 Concurrent Mesh Manipulation and Parallelism
As described in Sect. 13.3.2 —Preprocessing, the borehole data is loaded without
locking the visualization window. Whenever a thread finishes loading a part of the
borehole, it is immediately sent to the rendering without major performance costs.
The process for changing the level of detail after the model is fully loaded uses a
similar technique.
For memory space reasons, only one mesh for a given part of the borehole is
stored in the GPU memory at a time. Whenever the level of details changes, a new
mesh with a different level of detail is again built by the CPU and sent to the GPU.
The older mesh is still rendered until the new mesh is ready, so a gap is never
formed while the meshes are changed. The building process of a new mesh is done
by a concurrent thread, so no slow down is noticed. When it's ready for rendering,
the older mesh is removed from memory and the new one becomes visible.
The borehole is divided in a variable number of meshes depending on the
borehole size. Anytime the level of detail should be changed, i.e., when the camera
Search WWH ::




Custom Search