Delphi: Geometry-Based Connectivity Prediction in Triangle Mesh Compression
Delphi: Geometry-Based Connectivity Prediction in Triangle Mesh Compression
Abstract
Delphi is a new geometry-guided predictive scheme for compressing the connectivity of triangle meshes. Both
compression and decompression algorithms traverse the mesh using the EdgeBreaker state machine. However,
instead of encoding the EdgeBreaker clers symbols that capture connectivity explicitly, they estimate the location
of the unknown vertex, v, of the next triangle. If the predicted location lies sufficiently close to the nearest vertex,
w, on the boundary of the previously traversed portion of the mesh, then Delphi estimates that v coincides with w.
When the guess is correct, a single confirmation bit is encoded. Otherwise, additional bits are used to encode the
rectification of that prediction. When v coincides with a previously visited vertex that is not adjacent to the parent
triangle (EdgeBreaker S case), the offset, which identifies the vertex v, must be encoded, mimicking the Cut-
Border Machine compression proposed by Gumhold and Strasser. On models where 97% of Delphi predictions are
correct, the connectivity is compressed down to 0.19 bits per triangle. Compression rates decrease with the
frequency of wrong predictors, but remains below 1.50 bits per triangle for all models tested.
Categories and Subject Descriptors (according to ACM CCS): I.3.2 [Computer Graphics]: Graphics Systems -
distributed/network graphics; E.4 [Coding and Information Theory]: Data compaction and compression
Keywords: triangle meshes, connectivity coding, geometric prediction, geometry compression
1
The name Delphi is inspired by the ancient Greek oracle at Delphi. Pythia, the medium of the Oracle, responded to questions in words that
could only be understood by a priest of Apollo, the god of Truth. The priest translated the answers to the seeker.
Coors&Rossignac: Delphi 1 / 12
estimate triangle connectivity by predicting the location of the tip vertex, v, of the next triangle. If v is too far from
all boundary vertices, Delphi estimates that that the tip vertex is a new vertex (EdgeBreaker C case). Otherwise, it
guesses that v is the closest boundary vertex. If the guess is correct, only the confirmation bit needs to be
transmitted. If not, additional bits are transmitted to rectify the guess. The corrections are encoded using different
bit-length symbols chosen to minimize the entropy. Because most Dephi's guesses are correct (up to 98% in our
experiments), connectivity information is often compressed to a fraction of a bit per triangle, as reported below. For
instance, for a variety of models re-sampled with the Piecewise-Regular Meshes approach26, between 96% and
98% of Delphi’s guesses are correct, resulting in an entropy of 0.3 and 0.4 bits per vertex, or equivalently, 0.15 and
0.2 bits per triangle.
Previous work
In this section, we review several techniques for the loss-less compression of the connectivity of triangle meshes.
The connectivity of a “simple” mesh (defined as a connected, zero-genus, manifold triangle mesh) may be stored as
a sequence of t triangle descriptors, each triangle been represented by 3 integer labels. Each label identifies one
amongst the v vertices and hence requires log2(v) bits. Organizing triangles into strips5, where each new triangle
shares an edge with the previous one, reduces the above storage by nearly half. The use of a buffer to cache a small
number of labels4 may further reduce the expected cost.
The Topological Surgery method of Taubin and Rossignac21 compresses both a triangle-spanning tree and its dual
vertex-spanning tree by encoding the lengths of consecutive single-child nodes. Both trees suffice to decode the
connectivity of the simple mesh. For complex and reasonably regular meshes, the expected cost of encoding both
trees amounts to less than two bits per triangle. However, the overhead of the run length encoding may result in a
significantly higher average cost for irregular or small meshes.
Rossignac's EdgeBreaker compression scheme16 was the first one to propose a tight linear worst-case bound of the
connectivity compression. The original method guarantees 4 bit per vertex (denoted b/v for simplicity). This
guaranteed upper bound was later improved to 3.67 b/v11 and to 3.60 b/v8. This upper bound on storage does not
rely on statistic-based entropy or arithmetic coding schemes, which are discussed below and, in general, perform
poorly on small or irregular meshes. EdgeBreaker visits all the triangles of a mesh one at a time, walking from a
previously visited triangle to one of its not-yet visited neighbors through their common edge, called the “gate”. For
manifold meshes, the tip of the new triangle is either a “new” vertex (case C) that has not yet been encountered or
an “old” vertex of the boundary separating the previously visited portion of the mesh from the rest. EdgeBreaker
distinguishes four types of “old” vertices, depending on whether they appear in that boundary immediately before
the gate (case L), immediately after the gate (case R), both (case E), or neither (case S). The succession of case
types produced by this traversal are encoded as a succession of symbols from the set {C,L,E,R,S}, called the clers
sequence. These situations and the associated clers symbols are shown in figure 1 (left). The arrow indicates the
direction to the next triangle. Previously visited triangles are not shown. Note that in the case S, EdgeBreaker
moves to the right, using a recursive call, and then to the left. Figure 1 (right) gives an example of the clers
sequence of a small region of a simple mesh. A detailed description of the EdgeBreaker compression and
decompression and extensions to meshes with handles and holes are discussed in16,18,29. Because half of the
triangles correspond to case C in a simple mesh, one may chose to encode them using a single bit (for instance 0),
while the remaining four cases may be unambiguously encoded using 3 bits each (110 for L, 101 for R, 111 for E,
and 100 for S). This simple code guarantees to compress the EdgeBreaker-generated clers sequence of any zero-
genus manifold mesh with exactly 4.0 bits per vertex. The clers sequence of meshes encountered in practice may
be compressed even further, sometimes to less than 1.8 bits per vertex, using variable-length entropy codes17.
When the mesh has a sufficiently large number of vertices and most of them have exactly six neighbors, the clers
sequence can provably be compressed down to 1.62 bits per vertex19.
R
v v v R R
T T T
L C L E
L C R
v v S R
E
T T R
C
S E
Figure 1: EdgeBreaker cases and the associated clers symbols for the triangle marked T (left). An
example of the EdgeBreaker traversal generating the clers sequence: CRSRLECRRRLE
For zero-genus meshes, the clers sequence is sufficient to represent the complete connectivity. It explicitly encodes
the location of the tip vertex for cases C, L, E, R. For the S case, the original EdgeBreaker decompression16
Coors&Rossignac: Delphi 2 / 12
computed the offset, i.e. the number of edges that separate the gate from the tip vertex of the new triangle along the
border. The computation was performed by tracking the edge-count changes imposed on the boundary portion
joining the gate to the tip, by the operations that separate the S symbol from the matching E, which makes the edge-
count zero. A more efficient decompression algorithm, called Wrap&Zip17, interprets the clers sequence to build a
simply connected triangulated polygon, obtained by gluing the triangles along the triangle-spanning tree. During
this process, it orients the border edges of that polygon in an upward direction with respect to the vertex-spanning-
tree that is the dual of the triangle-spanning-tree. Each time it finds two border edges that point away from their
common vertex, it zips them into an internal edge. An elegant third alternative, called Spirale Reversi9, processes
the clers sequence from the end, and thus avoids the zipping process.
Although developed independently, EdgeBreaker bears strong similarities with Gumhold and Strasser’s cut-border
machine6. For manifold meshes without holes, the principal difference lies in the fact that cut-border explicitly
encodes an offset with each S symbol, while EdgeBreaker does not.
Similarly to the Topological Surgery, to EdgeBreaker, and to Cut-Border, Touma and Gotsman’s valence
coding23 also encode the vertices along a vertex-spanning tree. However, instead of the five EdgeBreaker cases,
they distinguish only two cases, split and add, which correspond to the EdgeBreaker's cases S and C. Instead of the
other symbols, they encode the valence of each vertex, i.e., the number of incident triangles. Thus, each C symbol
is associated with an integer valence and each S symbol (as in the cut-border machine) is associated with an integer
offset. Their decoder keeps track of the valence defect of all border vertices. When the defect of a vertex v reaches
1, a new triangle is automatically inserted in the star of v, turning it into an interior vertex. Thus L, R, and E
triangles are recovered automatically and need not be encoded. Experimental results show that this approach
compresses connectivity down to less than 0.2 b/v for very regular meshes, and between 2.0 and 3.5 b/v for the less
regular meshes found in practice.
Alliez and Desbrun1 replace the deterministic traversal of Touma and Gotsman’s approach by an adaptive
traversal that attempts to minimize the number of split operations (EdgeBreaker’s S cases). To do so, they choose
the border edge bounded by vertices with the smallest number of free edges as the new gate. This optimized gate
selection was further improved in Angle-Analyzer13, where Lee, Alliez and Desbrun use both connectivity and
geometry to direct the mesh traversal. They select the gate using connectivity and geometry criteria, as the border-
edge having the highest number of incident triangles and also the minimum angle with a neighboring border edge.
The optimal combination of these two criteria dramatically decreases the frequency of S symbols. Thus, by
combining the simplicity of EdgeBreaker with the statistical benefits of valence-based coding, they improve
connectivity compression by 40% over the original valence coding approach23.
Delphi Encoding
In this section, we present Delphi, a new geometry-based predictive connectivity compression scheme for encoding
the clers sequence produced by the EdgeBreaker mesh traversal. For simplicity of the exposition, we focus on
simply connected meshes that are homeomorphic to a sphere. The proposed approach applies to more complex
meshes as well, but the cost analysis and encoding are more complicated.
The Delphi compression does not encode the clers sequence directly. Instead, it tries to guess each clers symbol
and encodes the confirmation and, when necessary, the corrections to these guesses. The guess is based on the
geometry and connectivity of the previously visited triangles.
The Delphi decompression performs the same guesses and decodes a confirmation bit that either confirms that the
guess is right or indicates that it is not, in which case a corrective string of subsequent bits will select the correct
code. For cases where an S case was wrongly guessed, that corrective string will also include an encoding of the
offset. Including the offset explicitly is necessary, because subsequent Delphi guesses rely on connectivity
information that would not be available if one of the EdgeBreaker decompression schemes were used to estimate
the offset by looking ahead along the clers string16, by delaying the zip operations17, or by reading the clers string
backwards9. The sequence of confirmation bits and of corrections is called the Apollo sequence.
In the following, we will explain how to guess the clers symbol of each triangle and how to encode the Apollo-
sequence.
Definitions
A corner c is the association of the triangle c.t with one of its bounding vertices, denoted c.v. The next corner
around a triangle in counterclockwise direction (with respect to the outward normal) is denoted c.n, the previous
corner c.p, and the opposite corner c.o. We say that corner b is opposite to c if c.n.v=b.p.v and c.p.v=b.n.v.
The Corner Table proposed in18 encodes all of the connectivity information as an array of tuples (c.v,c.o). Because
entries of c.p, c, and c.n are consecutive in the Corner Table, c.n, c.p, and c.t may be trivially computed from the
integer value of c by using integer division by 3.
The location (i.e. geometry) of the vertex c.v associated with the corner c is denoted c.v.g.
As in the original EdgeBreaker algorithm, we move from a triangle F to an adjacent triangle T at each step of the
mesh traversal. F and T share a common edge, G, called the gate. Let c be the “tip” corner of T that is not incident
upon any one of the vertices of G, as shown in figure 2. Let Length(G) denote the length of the gate. The
Coors&Rossignac: Delphi 3 / 12
information transmitted by Delphi must identify the vertex c.v. Let g(c) be the estimate on the location of c.v.g. In
practice, we compute g(c) using the parallelogram rule23: g(c) = c.n.v.g+c.p.v.g–c.o.v.g, but more elaborate
estimates could be used.
Let B denote the set of all border vertices in the boundary of the decoded portions of the mesh. As we have
assumed that the mesh is simply connected, the vertices of B form one or several cyclic chains {c.p.v, Vr, …Vl,
c.n.v}, called hereafter “loops”, along the oriented border. One of these loops contains the gate. We will call it the
“active loop”.
For zero-genus meshes, we know that c.v is either a new vertex or already part of the active loop. Let B’ be the set
of vertices of the active loop excluding the gate vertices c.n.v and c.p.v. Let X be the vertex of B’ that is the closest
to g(c). Let d:=Dist(X,g(c)) denote the distance between them. X is a prime candidate for c.v. We will use the
distance d to decide whether X is our guess or whether we are guessing that c.v is a new vertex (case C).
Already traversed area
Active loop
B’
X
T g(c) d
c.v
v
c
c
Vl c.n c.p Vr
G
c.o F
Connectivity prediction
When the distance d between the predicted location g(c) of the tip of the next vertex and the closest border-vertex,
X, exceeds a threshold, we assume a C triangle. In such a situation, the corrective vector gp = c.v.g – g(c) between
the prediction g(c) and actual vertex location c.v.g will be encoded.
When d is smaller than a threshold, X will be our guess. If that guess is correct, the decompression may
immediately convert it to one of the four cases: L, E, R, or S, depending on whether X is V1, or Vr, or both, or
neither as shown in figure 3:
• If X = V1 = Vr, then we guess that T is of type E.
• If X = Vr, then we guess that T is of type R.
• If X = Vl, then we guess that T is of type L.
• Otherwise, we guess that T is of type S.
The threshold for d is proportional to the length of the gate G. More precisely, if d>τ*Length(G), we guess that T is
of type C. We have established experimentally that the setting τ=0.6 consistently resulted in the most correct
guesses across all models that we tested.
A single confirmation bit in the transmission stream suffices to indicate whether our guess is correct. If so, we
know the code of T (i.e., we have decoded its EdgeBreaker symbol using one bit), but we also know which vertex it
is (even for S cases) and can thus zip the border immediately during decompression, avoiding the zip delays
introduced in17 and not requiring the transmission of offsets that are associated with S triangles6, 23 to identify the
tip-vertices of S triangle.
If the confirmation bit indicates that the guess is wrong, we may need additional information to rectify it. Note that
a false guess does not necessarily indicate a wrong symbol. We might wrongly guess c.v as X and concluded an S
situation, when in fact, we do have an S case, but with a different tip vertex.
In the following, we explain how we encode the rectification for each wrongly guessed symbol. The encoding
depends on the guessed symbol and on the edge-count in the active border. We start with the case where we
wrongly guessed a C as shown in figure 4. Then we discuss the cases where we wrongly guessed L, R, S, or E (see
figure 5).
Coors&Rossignac: Delphi 4 / 12
Wrong C guess
If we guessed a C and in fact c.v is a vertex in B’, the confirmation bit in the transmission stream indicates that our
guess was wrong. The subsequent bits specify the correct case (L, E, R, or S).
• If the vertex-count, |B’|, of the active loop (not counting the gate’s vertices) is 1, the new triangle is of
type E.
• If |B’|=2, only two possible symbols {L, R} have to be distinguished. Thus a single bit is sufficient.
• Otherwise, E situation is impossible and we only need to distinguish between the three remaining cases: L,
R, or S. In an S case, we need at most log2(|B’|) additional bits to encode the offset necessary to locate
c.v along the border. However, experimental results have shown that in most cases the offset is 2 or 3 (see
also6) and thus can be encoded compactly.
Guess C in
X X
g(c) g(c)
Situation R Situation L
X
X
g(c) g(c)
Situation S Situation E
Wrong E guess
If we wrongly guessed that the next triangle is of type E, we must be in a situation where the active loop has only 3
edges, i.e., X=V1 and X=Vr, because an E is guessed only with |B’|=1. Hence, the correct guess must be a C
situation. The confirmation bit is sufficient and no additional bits are necessary to rectify the guess.
Wrong R guess
If we wrongly guessed that the next triangle is of type R (X=Vr), the subsequent bits are used to distinguish
between the three remaining symbols {L, C, S}. An E symbol is not possible here. When the rectified symbol is an
S, the offset must also be encoded.
Wrong L guess
If we wrongly guessed that the next triangle is of type L (X=V1), we must distinguish between the remaining
symbols {R, C, S}. An E symbol is not possible. When the rectified symbol is an S, the offset must be encoded.
Wrong S guess
If we wrongly guessed that the next triangle is of type S, the four remaining symbols {C, L, R, S} are possible. (An
E symbol is not possible here, because an E situation occurs only with | B’|=1. In which case, we would have
guessed C or E, but not S.) Even if S is the correct guess, the tip-vertex might not be X. So, when the correction
states that the guess of S is correct but the tip is wrong, additional bits must be transmitted to identify the correct
tip-vertex in the active loop. These situations are rare because the number of S cases is relatively small and many of
them are correctly identified.
Impossible cases
Taking into account the current length of the active border |B’|, some cases are not possible.
Coors&Rossignac: Delphi 5 / 12
- If |B’|=1, only cases C and E are possible. |B’|=1 implies V1=Vr. L, R and S situations are not possible. In this
case, the validation bit suffices to distinguish between the two possible cases: C or E.
- If |B’|=2, then B’ only contains the vertices V1 and Vr. Neither an E nor an S situation are possible in this case.
If the guess is wrong, one additional bit is sufficient to rectify the situation. For example, in case of a wrongly
guessed R, one bit indicates that the guess is wrong, and an additional bit distinguishes between a C and L
situation.
- Finally, when |B’|=3, there is only one vertex in the active border besides V1 and Vr and thus that vertex is the
only acceptable tip-vertex for an S case. There is no need to send corrective bits to identify the tip in a wrongly
guessed S triangle. Furthermore, a wrongly guessed S case cannot be an S with a different tip-vertex.
Guess wrong R
Guess wrong L
Guess wrong S
X X X X
g(c) g(c) g(c) g(c)
Guess wrong E
X
g(c)
Situation C
Figure 5 Wrongly guessed non-C triangles. The gray triangle shows the actual situation. The yellow
triangle visualizes the parallelogram prediction.
Coors&Rossignac: Delphi 6 / 12
Using a careful analysis of these situations and exploiting the restrictions described above, we hade devised and
evaluated several variable length schemes for encoding the corrective string of bits.
Dephi encodes the clers sequence as a series of entries, one per symbol. An entry may have one, two, or three
fields. The first field is always the confirmation bit. Hence the entry (t) indicates that the Delphi guess was right.
As explained earlier, in some cases, a wrong guess may be rectified by the decompression without any additional
information, thus, some entries may be of the form (f), indicating a wrong guess. Other wrong guesses may require
sending the correct clers symbol, and hence will have two fields, for example (f,C) will indicate that the guessed
symbol was wrong and that the correct symbol is a C. We use the notation RS to refer to the second field, which
indicates how to rectify the symbol.
Finally, in some cases, when the guess was wrong and the correct symbol is an S, one may also need to transmit the
offset for identifying the tip of an S triangle. In such cases, the entry will have 3 fields: (f,S,o).
Thus, we have only four possible forms for an entry: (t), (f), (f,S,o), or (f, RS), where RS stands for C, L, E, R, or S.
Such a sequence of entries is called the Apollo sequence and is used by the Delphi decompression to interpret the
connectivity guess. Figure 6 shows the Apollo sequence of the example introduced above, in figure 1.
Figure 6: Effect of restricted search for X on quality of prediction (left), number of wrongly predicted S situations
(middle) and runtime (right).Runtime was measured on Toshiba Satellite Notebook, Pentium 4 1.2 GHz,512 MB
RAM,Delphi implemented in Java using JDK 1.4.2
Surprisingly, the overall prediction is improved by restricting the search to a few vertices to the left and right of the
gate. As you can see in figure 6 (left), best predictions are achieved with only looking at the vertices left and right
of the gate. However, the number of wrongly predicted S situations drastically increases in this case (figure 6
middle). In particular, the limited search increases the number of S symbols wrongly predicted to be C and
decreasing the number of C symbols wrongly predicted to be S. The runtime of the restricted search is given in the
right diagram of figure 6. As expected, compared to the search of X on the entire active border, the restricted search
is much more efficient.
As rectified S are expensive due to the additional offset information, the number of wrongly predicted S situations
should be minimized. However, due the runtime performance gain, we recommend to restrict the search for X to 4
or 5 vertices left and right to the gate.
Statistical analysis on the example of the Horse model
We analyze the frequency of right and wrong guesses and of the various corrections we use the example of a
typical mesh with 96966 triangles and 48485 vertices that represents a horse shown in figure 8.
Coors&Rossignac: Delphi 7 / 12
To gain a better understanding of the various statistics, we have also collected, for each step of the compression:
the guessed symbol GS and the current length |B’| of the active loop. We report statistics for the various
combinations of guessed symbol, GS, correct symbol, RS, and loop length, |B’|.
Table 1 shows the distribution of correctly and wrongly guessed triangles as a function of the length of the active
loop. A total of 17% of the guesses are wrong.
Out of these, 98% happen when the active loop has more than 3 vertices, in addition to the vertices that bound the
gate. Hence, treating short loops as special cases does not have a significant impact.
P(f) 0.1710
P(|B’|=1|f ) 0.0162
P(|B’|=2|f ) 0.0025
P(|B’|>=3|f) 0.9813
Table 1: Probability of wrong guesses (top) and conditional probability of the edge-count |B’| of the border loop
for wrong guesses is given for short loops.
The next table shows the probability PXY of encountering a wrongly guessed symbol GS=X and its rectification
RS=Y in cases where an active border length is greater than 2
PXY RS=C RS=L RS=R RS=S Sum
GS=C -- 0.0033 0.5209 0.0143 0.5385
GS=L 0.0082 -- 0.0067 0.0004 0.0153
GS=R 0.2751 0.0013 -- 0.0163 0.2927
GS=S 0.0580 0.0003 0.0932 0.0020 0.1535
Sum 0.3413 0.0049 0.6208 0.0330 1.0000
Table 2 Probability of guessed and rectified symbols combinations.
Figure 8: Delphi compression of the horse model (96966 triangles). Correctly predicted triangles are colored
green, wrong ones red. About 83% of the connectivity is correctly guessed leading to a bit rate of 1.47 b/v.
Note that 62% of the mistakes are R-type triangles. 84% of them are wrongly guessed as a C triangle. The next
major source of mistakes are C-type triangles, which account for 34% of all wrong guesses. 80% of them are
mistaken for R-type triangles.
Thus, when a guessed C (GS=C) proves to be wrong, the correct symbol is usually R, and vice versa, in case of a
wrong guess GS=R, most rectified symbols are C. An entropy encoder may exploit this bias.
Another interesting fact is that a rectified symbol S occurs in only 3% of wrong guesses. Thus, when the
probability of a wrong guess is 0.17, the combined probability of a wrongly guessed S symbol is only 0.51%.
Therefore, the offset needs to be encoded for only one half of a percent of the triangles. Table 3 shows the
distribution of that offset. The offset is 2 in 90% of the cases and is 3 in 6% of the cases. Using an arithmetic coder,
the offsets are encoded with less than 1.1 bits each in these cases.
Coors&Rossignac: Delphi 8 / 12
Offset
2 0.90
3 0.06
>3 (max 560) 0.04
Figure 7: Example Apollo encoding: The first triangle was correctly guessed to be of type C. Thus, the
Apollo sequence starts with the entry (t). The parallelogram rule predicts the tip of the next triangle to be
at g(c), as shown top left. Since g(c) is too far from the active border (red line), we guess that the second
triangle is also of type C. Unfortunately, that guess is wrong. The correct triangle, shown in gray, is of
type R. Hence, the second Apollo entry is (f,R). The third triangle is correctly guessed to be of type S with
the correct tip. Hence the third entry is (t). The complete Apollo sequence is ((t), (f,R), (t), (t), (t), (t), (t),
(t), (t), (f,R), (t), (t), (t)).
Statistical encoding
The naïve fixed-format encoding described above may be significantly improved using a more optimal variable
length coding that exploits the statistical distribution of the symbol frequencies. To do so, the streams of
confirmation bits, symbol-rectification codes, and offset values are decomposed into separate layers and
compressed separately using an adaptive entropy encoder, such as the range encoder used in Alliez and Desbrun1
for example. However, compression results vary using different encoders. Therefore, we adhere to the current
practice in the Geometry Compression Community and report the entropy of the Apollo sequence as the sum of the
entropy of these three streams. A good arithmetic encoder comes close to this entropy measure.
The confirmation bit layer is a sequence of symbols in{t, f}, one per triangle. The entropy of that stream is
–plog2(p)–(1–p)log2(1–p), where p is the probability of a correct guess. For instance, when p=0.83, the entropy of
the confirmation bit layer is 0.66 bits per triangle.
The symbol rectification layer contains the sequence of correct symbols, RS, for all wrong guesses. In the case of
wrong guesses may be compressed by combining two observations: (1) some of the cases are impossible in
particular combinations of guessed symbol and loop length and (2) more importantly, the majority of rectified
symbols may be guessed correctly, because they are a C when the wrong guess was R and vice versa.
Each rectification sub-layer is treated independently leading to the following entropies:
• Sub-layer GS=C : Entropy 0.2290 (-(0.006*log20.006 + 0.9675* log2 0.9675 + 0.0265 * log2 0.0265))
• Sub-layer GS=L : Entropy 1.1409
• Sub-layer GS=R : Entropy 0.3476
• Sub-layer GS=S : Entropy 1.0398
By multiplying the entropy of each sub-layer by the probability of each sub-layer and adding the results and
multiplying by the probability of having to use a rectification (0.17*(0.2290*0.5385 + 1.1409*0.0153 +
0.3476*0.2927 + 1.0398*0.1535) ), we obtain an entropy for the symbol rectification layer of 0.0684 bits per
triangle.
As stated above, the offset layer has an entropy of 0.011 bits per triangle.
Adding all thee (0.66 + 0.0684 + 0.011), we obtain a total entropy of 0.74 bit per triangle for the horse model.
Comparative analysis
The first order entropy compression discussed above leads to 0.74 bits per triangle for the horse model of figure 8.
The corresponding clers sequence produced by EdgeBreaker has a first order entropy of 0.88 bits per triangle.
Thus, Delphi’s geometry-based prediction yields an entropy improvement of 15%.
Experimental results
To put the above horse example in perspective, a series of meshes (figure 9) have been tested with the Delphi
compression. The connectivity compression results (Table 4) are given in bits per triangle of the calculated first
order entropy encoding. The results are compared with the first order entropy of the corresponding EdgeBreaker
clers sequence (EB).
The results show that a good connectivity guess improves EdgeBreaker clers sequence compression. For very good
connectivity guesses like the Mannequin model, the Apollo encoding improves EdgeBreaker by a factor of 3.
When the probability of a wrong guess exceeds 40%, the Delphi encoding stops being advantageous.
Coors&Rossignac: Delphi 10 / 12
Model #V #T Delphi bpt (p(t)) EB
Horse 48485 96966 0.74 (83%) 0.88
Cow 2904 5804 0.80 (83%) 1.13
Body 711 1396 1.13 (65%) 1.30
Mannequin 11704 23402 0.19 (97%) 0.60
Venus 8268 16532 1.42 (59%) 1.43
Neferiti 299 562 1.09 (69%) 1.29
David 24085 47753 1.45 (58%) 1.40
Table 4 Compression results (in bits per triangle). The percentage of correct guesses is given for the Delphi
compression.
Coors&Rossignac: Delphi 11 / 12
References
1. P. Alliez, and M. Desbrun, “Valence-Driven Connectivity Encoding for 3D Meshes”. Eurographics 2001 Conference
Proceedings, 2001.
2. P. Alliez, and M. Desbrun, “Progressive Encoding for Lossless Transmission of 3D Meshes”. SIGGRAPH 2001 Conference
Proceedings, 2001.
3. D. Cohen-Or, D. Levin, and O. Remez, “Progressive Compression of Arbitrary Triangular Meshes”. Visualization 99
Conference Proceedings, pp 67-72, 1999.
4. M. Deering, “Geometry Compression”, Computer Graphics, Proceedings SIGGRAPH'95, 13-20, August 1995.
5. F. Evans, S. Skiena, and A. Varshney, “Optimizing Triangle Strips for Fast Rendering”, Proceedings, IEEE
Vizualization'96, pp. 319--326, 1996.
6. S. Gumhold and W. Strasser, “Real Time Compression of Triangle Mesh Connectivity”, Proc. ACM SIGGRAPH, pp. 133-
140, July 1998.
7. H. Hoppe, “Progressive Meshes”. Siggraph 96 Conference Proceedings, pp 99-108, 1996
8. S. Gumhold, “Towards optimal coding and ongoing research”, 3D Geometry Compression Course Notes, SIGGRAPH
2000.
9. M. Isenburg and J. Snoeyink, “Spirale Reversi: Reverse decoding of the EdgeBreaker encoding”, Computational Geometry,
vol. 20, no. 1, pp. 39-52, October 2001.
10. A. Khoddakovsky, P. Schroeder, and W. Sweldens, “Progressive Geometry Compression”. Siggraph 2000 Conference
Proceedings, pp 271-278, 2000.
11. D. King and J. Rossignac, “Guaranteed 3.67V bit encoding of planar triangle graphs”, 11th Canadian Conference on
Computational Geometry (CCCG'’99), pp. 146-149, Vancouver, CA, August 15-18, 1999.
12. D. King and J. Rossignac, "Connectivity Compression for Irregular Quadrilateral Meshes" Research Report GIT-GVU-99-
29, Dec 1999.
13. H. Lee, P. Alliez, and M. Desbrun, “Angle-Analyzer: A Triangle-Quad Mesh Codec”, Eurographics 2002.
14. R. Pajarola, and J. Rossignac, “Compressed Progressive Meshes.” IEEE Transactions on Visualization and Computer
Graphics, pp 47-61, 1999.
15. J. Rossignac and D. Cardoze, “Matchmaker: Manifold Breps for non-manifold r-sets”, Proceedings of the ACM Symposium
on Solid Modeling, pp. 31-41, June 1999.
16. J. Rossignac, "EdgeBreaker: Connectivity compression for triangle meshes", IEEE Transactions on Visualization and
Computer Graphics, 5(1), 47-61, Jan-Mar 1999.
17. J. Rossignac and A. Szymczak, "Wrap&Zip decompression of the connectivity of triangle meshes compressed with
EdgeBreaker", Computational Geometry, Theory and Applications, 14(1/3), 119-135, November 1999.
18. J. Rossignac, A. Safonova, and A. Syzmczak, "3D Compression Made Simple: EdgeBreaker on a Corner-Table", Invited
lecture at the Shape Modeling International Conference, Genova, Italy, May 2001.
19. A. Szymczak, D. King, J. Rossignac, “An EdgeBreaker-based Efficient Compression Scheme for Connectivity of Regular
Meshes”, Special issue of Journal of Computational Geometry: Theory and Applications, Vol 20, No 2, Oct 2001.
20. H. Tzschach, and G. Haßlinger, Codes für den störungsfreien Datentransfer, Oldenburg 1993 (in German).
21. G. Taubin and J. Rossignac, "Geometric Compression through Topological Surgery", ACM Transactions on Graphics,
17(2), 84-115, April 1998.
22. G. Taubin, A. Gueziec, W. Horn, F. and Lazarus, “Progressive Forest Split Compression”. SIGGRAPH 98 Conference
Proceedings, pp 123-132, 1998.
23. C. Touma and C. Gotsman, “Triangle Mesh Compression”, Proceedings Graphics Interface 98, pp. 26-34, 1998.
24. W. Tutte, “A Census of Planar Triangulations”. Canadian Journal of Mathematics, 14:21-38, 1962.
25. I. Guskov, K. Vidimce, W. Sweldens, and P. Schroeder, “Normal meshes,” in Siggraph’2000 Conference Proceedings, July
2000, pp. 95–102.
26. A. Szymczak, J. Rossignac, and D. King. “Piecewise Regular Meshes: Construction and Compression.” To appear in
Graphics Models, Special Issue on Processing of Large Polygonal Meshes, 2002.
27. M. Attene, B. Falcidieno, M. Spagnuolo, J. Rossignac, “SwingWrapper: Retiling Triangle Meshes for Better EdgeBreaker
Compression”, Genova CNR- IMA Tech. Rep. No. 14/2001. To appear in the ACM Transactions on Graphics. Volume 22,
No. 4, October 2003.
28. S. Valette, J. Rossignac, R. Prost. “An efficient subdivision inversion for Wavemesh-based progressive compression of 3d
triangle meshes”, Submitted for publication. 2003.
29. H. Lopes, J. Rossignac, A. Safanova, A. Szymczak and G. Tavares. “A Simple Compression Algorithm for Surfaces with
Handles”, ACM Symposium on Solid Modeling, Saarbrücken. June 2002.
Coors&Rossignac: Delphi 12 / 12