Hierarchical TIN’s

advertisement
Hierarchical TIN’s
......
Switch between detail
levels run-time
adjusting to the chosen
error measure and
tolerance.
Level N−1
......
Generate discrete
levels of detail using
separate triangulations
for each level.
Level 1
Level 0
1/24
Basic Principles
Use refinement or decimation to produce
for detail levels.
triangulations
that
!
During run-time we select the triangulation
satisfies
Each level has a maximum object-space error,
which is decreasing so that
.
2/24
Nested point sets
and
Our input data is a set of points and the triangulations
To minimize storage
have vertices
requirements we want
So each level in the triangulation stores only the vertices
3/24
Nested triangulations
We would like to do the same for the triangulations also
so that we can store each level as
However, for a Delaunay triangulation this is generally not
possible, since each inserted vertex in will modify the
.
influence area creating triangles that didn’t exist in
4/24
Domain Decomposition
So far we are not able to do view-dependent LOD,
because the entire mesh on a given level has the
same resolution!
We need to assign lower resolution to areas far from
the camera.
One solution is to split the mesh into smaller parts
with different detail levels.
We can split the domain into smaller parts in several
ways, but some kind of rectangular tiling is probably
most convenient.
5/24
Regular Grid Tiling
The simplest domain decomposition is a regular grid tiling.
0
1
2
3
e
Problem: converges towards a regular grid when far away!
6/24
Quadtree Tiling
Quadtree domain decomposition can cover larger areas
far away, since tile size varies with detail level.
Low detail
Earth
Medium detail
High detail
The terrain tile quadtree
(a)
A typical set of extracted tiles
(b)
Problem: Difficult to have nested point sets over large
areas!
7/24
The cracking problem
Regardless of which domain decomposition method
we use, we will run into the cracking problem.
Two tiles of different detail level will not necessarily
have the same border points.
This leads to undesirable cracks in the terrain
Level l+1
Level l
8/24
Transition Skirts
Split each tile into 5
regions: 4 borders and
a center area.
The border regions are
called transition skirts
and can be changed
during run-time.
Transition skirts are
paired so that for each
skirt there is a
corresponding skirt in
the neighbor tile.
SN
Each level has its own
transition skirts.
The triangulation
edges separating the
regions are
constrained (CDT).
Center
SE
SW
SS
9/24
Transition Skirts (2)
In this figure we see
transition skirt pairs for
two different levels of
two neighbor tiles.
inner border stays
constant because of
constraints.
For each skirt we
exchange the outer
border with the border
of the neighbor skirt on
enough levels to make
all the necessary
transitions.
Each skirt is
retriangulated for all
transitions, but the
10/24
Skirt Configurations
N−1
N−1
M
0
0
11/24
Summary
Very efficient run-time, since most of the work can be
done in a pre-process.
Can insert completely scattered data and features
such as roads and river networks.
Discrete level of detail (vs Continuous LOD) - Less
detail control.
Messy implementation!
12/24
Progressive Meshes
Developed by Hugues Hoppe, Microsoft Research.
Part of the DirectX 8 framework.
Selective, local refinement hierarchy of TIN’s.
13/24
Vertex Split/Edge Collapse
The basic operation in a progressive mesh framework is
the Vertex Split operation and its inverse, the Edge
Collapse.
vsplit
tn1
vl
tn2
tn1
vs
tn3
tn0
vl
vr
tn2
tl
vu
vt
tn0
vr
tr
tn3
ecol
Each vertex split, vsplit
replaces the parent vertex, with two children, and .
Two new triangles, and are created between the two
and
.
pairs of neighboring triangles
14/24
PM Representation
ecol
ecol
ecol
We can simplify an arbitrary mesh,
through a sequence
of edge collapses which yields a much simpler base
.
mesh,
!
vsplit
forms a PM
The tuple
vsplit
representation of .
vsplit
vsplit
vsplit
Because each ecol has an inverse, vsplit the
transformation process can be reversed:
15/24
Vertex Hierarchy
The sequence of vertex splits can be organized in a
vertex hierarchy as shown in this figure
M0
v1
v 10
^
M
v 14
v 15
v2
v 11
v4
v3
v5
v6
v8
v9
v7
v 12
v 13
Root nodes correspond to the vertices of the base
.
mesh,
Leaf nodes correspond to the fully expanded mesh,
.
16/24
Selective refinment
The vertex hierarchy permits selectively refined
meshes, i.e meshes not necessarily in the original
.
sequence
A selectively refined mesh corresponds to a “Vertex
and
in figure).
Front” through the hierarchy (
The selectively refined mesh, AKA the Active Mesh,
.
usually much simpler than the fully refined mesh
17/24
Illegal operations
Not all vertex split/edge collapse operations are legal.
This figure shows some illegal edge collapse situations
vu
vt
vu
vu
vt
vt
18/24
Preconditions
adjacent to both and , the
must be an active triangle.
2. For all vertices,
triangle
are active vertices.
and
is legal if
1.
An ecol
3. The edge collapse does not change the topological
type of the mesh.
2. The faces
is an active vertex
1.
Assume we have a vertex hierarchy of legal edge
is legal if
collapses. A vsplit
are all active faces.
19/24
Progressive Mesh construction
1. Start with the complete mesh,
The construction of the PM is a preprocess which does
the following:
.
2. Repeatedly do legal edge collapses in a sorted
manner so that the least significant data are
collapsed first. Store the object error, for each edge
collapse.
3. Stop when the base mesh,
is reached.
20/24
Progressive Mesh rendering
2. For each vertex record, check if
case, vsplit. If not, ecol.
initially).
1. Start with the previous rendered mesh (
. If this is the
3. For each vsplit and ecol we check recursively the
parent or children if further splitting or collapsing is
required.
4. When the entire mesh has been checked we can
render the triangles.
21/24
Continuous LOD: Geomorphs
To avoid “popping” in the mesh when changing LOD,
we may use geomorphs.
called a
such
looks like
.
We construct a temporary mesh,
Geomorph with a blend parameter
looks like
and
that
We have two meshes
and
of different LOD,
and we want to change from one to the other.
We can now do a smooth interpolation between
these two meshes, either by interpolating over time or
by interpolating over error, i.e
22/24
Geomorphs in a PM setting
For a PM, a geomorph is constructed by gradually moving
and either towards or away from , depending on if
it is a vsplit or ecol operation.
vu
α=0
α=1
vs
α=0
vt
23/24
Summary
VDPM uses 50-75% of the number of active triangles
required by bintree schemes for the same
screen-space error.
Local LOD control.
Progressive transmission (“Streaming”) of geometry.
Possible to insert feature lines.
Complex implementation.
Memory-hungry
24/24
Download