2.
. 1 Snapshots of Triangular Meshes, LODs, and Edge our VRML Collapses implementation A polygonal surface is often represented with using a horse a triangular mesh, composed of a set of vertices model (original and a set of triangles, each triangle being a model provided triplet of vertex references. In addition, by Rhythm & triangular meshes have a number of vertex or Hues Studios). triangle properties such as color, normal, or LODs with texture coordinates. A corner is a couple (a) 247, (triangle, vertex of triangle). An edge is a pair of (b) 665, vertices, called endpoints, used in a triangle. An (c) 1,519 and edge collapse consists of bringing both endpoints (d) 4,350 trian- of an edge to the same position, thereby gles are eliminating two triangles (or one triangle at the accessed inter- boundary of the surface). The edge collapse has actively on a an inverse operation, often called vertex split. Pentium 133- A signiﬁcant number of automated methods MHz laptop PC for producing LOD hierarchies of a triangular using a VRML mesh rely on edge collapses or on clustering browser. vertices connected by edges, corresponding to applying several edge collapses in sequence. Methods differ in the particular strategy used for collapsing edges. For instance, Ronfard and Rossignac,8 Guéziec,12 and Garland and Heckbert13 ordered the potential collapses according to different measures of the deviation from the original surface that results. Hoppe’s4 approach minimizes a surface energy (based on 2 Forest of pairwise vertex distances) and other criteria. collapsed edges Guéziec,12 Bajaj and Schikore,14 and Cohen, obtained using Manocha, and Olano,15 bound the maximum a simpliﬁcation deviation from the simpliﬁed surface to the algorithm.12 original. Note that many very effective Vertices con- simpliﬁcation techniques work without collapsing nected by edges (notably triangle collapses,16 vertex marked edges removals,17,18 and the Superfaces method19). collapse to the same location.Rossignac,8 Xia and Varshney,9 and Hoppe10 did), wecan use a directed acyclic graph (DAG) to represent apartial ordering among the edge collapses, allowing forlocal (possibly view dependent) LOD control of a givenshape (similar to deFloriani11). tices and chooses representatives for them among theEdge collapses remaining vertices. A variety of polygon reduction techniques4,8,9 use edge It helps to use colors to illustrate this process. In thecollapses to create intermediate LODs. As Figure 2 beginning, every vertex and triangle is red. We use blueshows, applying such a polygon reduction technique cre- for vertices and triangles that are gradually removedates a forest (set of disjoint trees) of collapsed edges. from the mesh. We give the edge collapse a direction:Individual trees can be partially collapsed, with each one endpoint is removed and painted blue; the otherpartial collapse corresponding to an intermediate LOD. endpoint stays red (until a subsequent collapse removes it) and remains in the mesh (note that its actual coordi-Vertex representatives nates may be modiﬁed, but it keeps its index). The tri- A sequence of edge collapses creates a surjective map angles removed during the edge collapse are blue. Figurefrom the original surface to a simpliﬁed surface. With 3 (next page) illustrates the (directed) collapse of anthis technique, we don’t have to create new triangles. edge v1 → v2. The red vertex v2 becomes the representa-Instead, we use the surjective map to modify triangles tive of the blue vertex v1. A one-to-one correspondencefrom the original surface. To construct the surjective exists between the blue vertices and edge collapses.map, we assign a representative for each surface vertex. The representatives are preferably stored using anIn the beginning of the process, each vertex represents array, with one entry per vertex (red vertices are repre-itself. As edges collapse, the process removes some ver- sented by themselves). To build the simpliﬁed surface, IEEE Computer Graphics and Applications 69
3.
. VRML we path-compress the vertex repre- sentatives array as shown in Figures 3b and 3d. We refer to the resultant Representative array as the pc-rep array. To perform Vertex index pc-rep the path compression, we follow the v1 v2 representative hierarchy until we ﬁnd a root and make each element 1 2 2 in the path point directly to the v2 5 1 2 root.20 Triangles are stored using the v1 original vertex indices and, for a par- 7 11 15 ticular LOD, they’re rendered using 11 15 15 the pc-rep array. 12 12 12 is represented by Vertex and triangle levels (a) (b) (c) (d) Now we’ll explain how to assign levels to vertices and triangles as edges collapse. In what follows, 3 (a) During an edge collapse, the blue vertex v1 and blue triangles are removed. The arrow we’ll write that a vertex is in the star indicates a vertex representative assignment. (b) A vertex representative array and path- of an edge if it’s either an endpoint compressed representative (pc-rep) array. (c) Tree of representatives before path compression. of the edge or adjacent to an end- (d) After path compression. point. 1 1 1 1 0 1 2 3 2 2 4 5 6 7 1 1 2 1 2 1 2 8 9 10 11 2 2 3 12 13 14 15 I 5→1 II 6→2 III 2 9→13 IV 2 10→14 3 1 3 4 4 5 4 4 5 4 4 5 4 4 0 2 5 5 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 2 2 2 5 2 6 2 3 3 5 3 5 3 5 3 3 3 2 3 2 3 0 2 3 6 V 2 4→0 VI 2 1→2 VII 8→0 VIII 7→11 IX 11→15 (a) 7 4 7 7 7 I II 1 2 V 3 5 5 3 1 2 VI VIII 4 7 VII 5 7 2 6 5 IX 6 3 III IV 2 3 7 7 7 7 7 (b) (c) (d) 4 (a) A simple mesh. Nine edge collapses, numbered I through IX, affect the levels of the red and blue vertices as shown (numbers in black indicate the vertex identiﬁers; numbers in blue and red indicate the levels assigned to vertices during edge collapses). (b) Label- ing the blue triangles according to the edge collapse number (I through IX) that eliminates them. (c) and (d) Partitioning the surface in seven LODs. The ith LOD uses vertices and triangles with labels i, i + 1. . . ., 7. 70 March/April 1999
4.
. Consider the model of Figure 4, L2 L1 L0called the simple mesh, with 16 ver-tices and 18 triangles. We used nineedge collapses to simplify the mesh.We assigned levels to vertices as fol-lows: at the start all vertices are redwith Level 0. When an edge collaps-es, we compute the maximum Levell in vertices of the edge star andassign Level l + 1 to both the red andblue edge endpoints. L + 1 is also thelevel assigned to the triangles that Vertex indices Representativesbecome blue during the collapse. Weused levels of blue vertices and tri- Level nV nT Level nV nT Level nV nT 7 6 7 6 7 6angles to generate LODs. Levels of 8 0 8 0 8 0 2 7 5 9 7 2 7 5 9 7 2 7 5 9 7red vertices are used only temporar- 10 1 10 1 10 1ily for computing levels of blue ver- 11 0 11 0 11 0 1 1 13 12 1 13 12tices. To become familiar with this 12 5 12 5 12 5process, examine Figure 4 careful- 13 1 13 1 13 1 0 14 4 0 14 4 0 16 18 14 4ly—it provides the complete details 15 10 15 10 15 10of the edge collapses. In the end ofthe simpliﬁcation process, we incre- 5 Accessing different LODs of the progressive multilevel representation: Level 2 (left), Level 1mented the highest level and (middle), and Level 0 (right).assigned it to all red vertices and trian-gles (this is Level 7 in Figure 4). s Vertices and triangles are assigned a level startingPartitioning a surface into LODs from 0 (the most detailed level) to L − 1 (coarsest Once we’ve produced a partition of the vertices and level). Both are enumerated in order of decreasingthe triangles in levels (Figures 4c and 4d illustrate this level, and the maximum index nl for a vertex of a givenfor the simple surface), we can deﬁne the surface LODs. level l is stored.The ith LOD consists of all vertices and triangles of a level s For each vertex v with a level less than L − 1, a repre-greater or equal to i. In Figure 4 the coarsest surface level sentative may be supplied. A representative referencesis 7 and the ﬁnest is 1. To evolve from surface LOD i to j another vertex, with a higher level (and lower vertex< i, we simply provide vertex and triangles of levels j to i number) substituted for the vertex v whenever v is− 1. If a high granularity isn’t required, we can create missing from the current mesh. Representatives deﬁnefewer levels by merging any number of consecutive lev- a graph called a forest, which can be convenientlyels in a single level. (In fact, we reduced the number of stored using an array with one entry per vertex.levels to three from the same data in Figure 5.) s From this information, we can efﬁciently compute L Figure 5 shows how to access different LODs of the LODs: each LOD l, 0 ≤ l ≤ L − 1 uses vertices and tri-progressive multilevel representation. For Level 2 (left), angles of levels l, l + 1, …, L − 1. For each such trian-which has ﬁve triangles, follow the representatives hier- gle, if a vertex reference exceeds nl, we follow thearchy toward the roots until the representative indices forest of representatives as shown in Figure 5 until wefall below 7 (the current number of vertices). For Level fall below nl. For speed-up we path-compress the for-1 (middle), which has 12 triangles (and 13 vertices), est of representatives. The cost of pointing directly tofollow the representatives until they fall below 13 (rep- the roots from each node is slightly superlinear inresentatives for vertices below index 13 can be ignored terms of the number of nodes (see Tarjan20). By sub-and thus crossed out). Level 0 (right) shows 16 vertices stituting vertex references in triangles with their cor-and 18 triangles. All representatives can be ignored. responding forest root, we can switch directly from We next sort the vertices and triangles according to any level to any other level without explicitly build-their level, starting from the highest to the lowest level ing intermediate levels. Path compression is per-(red vertices and triangles have the highest level), and formed on a temporary copy of the representativesupdate the triangle vertex indices and the vertex repre- array (to preserve the forest hierarchy for subsequentsentatives to reﬂect the permutation (sorting) on the use) every time the LOD changes.vertices. This results in a progressive multilevel mesh as s Vertices of the LODs don’t have to be a proper subsetdeﬁned in the next section. of the original vertices (although it’s more conve- nient). When evolving from Level l of the triangularProgressive multilevel mesh mesh to Level l − 1 (increasing the resolution), the A progressive multilevel mesh with L different levels positions and properties (color, texture coordinates,is a particular triangular mesh as follows (instead of enu- surface normal) of the representatives of Level l − 1merating levels from 1 through L, we enumerate them vertices may be changed by reading them from a sec-from 0 through L − 1 for easier translation to a C- or Java- ondary array (or list). The primary array stores thetype array): original values. IEEE Computer Graphics and Applications 71
5.
. VRML only if no geometry compression #3-level progressive mesh method is available.) Batches of ver- {#level 2 vertices (4) tices and triangles are speciﬁed sim- -3.0, 3.0, 3.0, 3.0, -3.0, -3.0 ilarly to a typical triangular mesh, 3.0. -3.0} with the difference that some trian- {#level 2 triangles (2), followed with gles use vertex indices that poten- # representatives tially can refer to vertices in missing 6 Exemplary 6, 2, 8, 0, 1, batches. In Figure 6, the line ASCII ﬁle for 3, 8, 2} 6,2,8, 0,1, should be inter- storing a mesh {#level 1 vertices (3) preted as follows: when the system with three -2.3, 3.0,-3.0, 2.3, 2.3, 2.3} reads triangle (6,2,8) from the stor- progressive {#level 1 triangles (4) age or network, only vertices 0 to 3 LODs. This 4, 6, 7, 1, can be referenced (this single vertex example is 2D. 5, 2, 6, batch was read so far). Vertex 6 (# signs precede 6, 4, 5, requires a representative (this is 0) comments.) 4, 0, 5} as well as vertex 8 (1). The next time {#level 0 vertices (3) the system reads 8, this vertex’s rep- 2.3, 3.0, 2.3, 2.3, 3.0, 2.3} resentative is not speciﬁed again. {#level 0 triangles (no representatives #necessary) Low memory footprint 8, 3, 9, We perform a simple byte count 9, 1, 8, for specifying a generic mesh— 7, 8, 1, ignoring vertex and triangle prop- 8, 7, 6} erties—and assume that n vertices and approximately 2n triangles exist (this depends on the surface genus and number of boundaries; it’s exact for a torus). We also assume that the PROTO MultiLevelProgIfs system uses 4 bytes to store each ver- [ tex coordinate (typically a 4-byte ﬁeld SFString urlData “” float) and vertex index (a 4-byte ﬁeld SFBool debug FALSE int). A generic mesh would be ] stored using 36n bytes. Our repre- { sentation would use less than 40n 7 The ﬁle DEF ifs IndexedFaceSet { bytes, since vertex representatives— “ProgIfs.wrl” coordIndex [] the sole addition—aren’t supplied deﬁning a coord Coordinate { point [ ] } for all vertices (the additional cost PROTO for an } factor is at most 40/36 ≅ 1.1). IndexedFaceSet DEF script Script { that can be url “ProgIfs.class” Support for smooth transitions streamed and directOutput TRUE When we add detail to the trian- whose LOD can mustEvaluate TRUE gular mesh by lowering the level be changed from l to l − 1, we introduce the ver- interactively. ﬁeld SFString urlData IS urlData tices of Level l − 1 in the mesh. The ﬁeld SFNode ifs USE ifs new triangles are determined as eventIn SFBool update explained above, but for the new ver- eventOut SFBool isReady tices, the coordinates of their repre- } sentative are used ﬁrst, resulting in ROUTE script.isReady TO script.update a mesh that remains geometrically } the same as the Level l mesh (when all added vertices have a represen- tative in Level l). Then, gradually, the coordinates are interpolated linear- s Potentially, vertices can be added in a level without ly from that position to the new coordinates using a para- adding corresponding triangles, thus allowing addi- meter λ that varies between 0 and 1. tional freedom for changing the topology. VRML implementation Figure 6 shows a simple ﬁle format that summarizes In this section we describe our VRML 2.0 implemen- the information required in a progressive multilevel tation, based on deﬁning a new node using the PROTO mesh. (Recall that a progressive multilevel mesh is pri- mechanism and Java in the script node for the logic. Fig- marily a data structure. Files such as the one in Figure 6 ure 7 shows the PROTO that we deﬁned and Figure 8 should be used in practice for transmission and storage shows a sample VRML ﬁle using the PROTO. The new 72 March/April 1999
6.
.node behaves as an IndexedFaceSet, has the URL of 8 A simplethe ﬁle containing the data as the only ﬁeld (instance #VRML V2.0 utf8 VRML ﬁle usingvariable) to be set up when the node is instantiated, and the PROTOhas one eventIn that the browser uses to request an EXTERNPROTO MultiLevelProgIfs deﬁned inupdate. [ “ProgIfs.wrl.” The Java program in the script node implements two ﬁeld SFString urlData Using a VRMLfundamental functions. One function, called addLev- ] browser whenel(), appends a new level to the data structure after it’s [“ProgIfs.wrl”] adding a Back-read and thus implements progressive loading. The other, ground nodecalled setLevel(int level), implements fast switch- Shape { and someing between LODs, potentially setting a fractional level geometry MultiLevelProgIfs{ Appearancefor a geomorph using setLevel(ﬂoat level). urlData “horse.lod.gz” information, we The code has two threads: upon instantiation, a } can produce thethread downloads the data from the URL provided in } pictures shownthe urlData field, immediately returning control to in Figure 1.the browser. Then, whenever a level is completely down-loaded and ready for display, Java notifies the VRMLbrowser by sending an isReady event. After the brows- Figure 11 shows a progressive multilevel mesher regains control, it decides when to paint the new lev- obtained by clustering vertices and exhibiting topolog-els by sending an update event to the node. The main ical changes. Figure 11 also shows a geomorph betweenthread of the Java program handles the changes in LOD two levels of the model. As we’ll discuss in the next sec-of the IndexedFaceSet node. tion, we use representatives only for a selected number The download thread progressively downloads the of clustered vertices. Accordingly, when performing atotal number of LODs, vertex, triangle, and properties geomorph, we generally don’t have a complete mappingdata, and periodically updates the corresponding arrays between vertices of the higher and lower levels, unless(triangle, vertex pc-rep, vertex representative, and, more representatives are supplied than those requiredoptionally, property arrays). These arrays—which are strictly for discrete levels. As illustrated in Figure 11 geo-private to the script code but persist after the download morphs are nonetheless possible without this addition-thread ﬁnishes—are used later by the script code’s main al information. The results may sometimes be lessthread to update the IndexedFaceSet ﬁelds respond- visually pleasing.ing to browser requests. The main thread does this by set-ting and changing values of the coord and coordIndex Vertex clusteringﬁelds (and optionally of the other property ﬁelds) as a Although it was convenient in the section “Edge col-function of the data downloaded by the download thread lapses” to start with the speciﬁcation of a sequence ofand the requested LOD. Typically, the download thread edge collapses on a given mesh to build a progressiveautomatically updates the IndexedFaceSet ﬁelds with multilevel mesh, we can use more general input.the highest resolution LOD available as soon as all the We can easily build a progressive multilevel meshdata associated with it ﬁnishes down-loading. Note that we decided not to showthe VRML logic necessary to triggerthe change in LODs in Figure 7. This 9 A modelcan be done in many different ways. with textureFor instance, as shown in Figures 1, coordinates per9, 10, and 11 (next page), a simple vertex at theuser interface (including a slider) highest (a) andcan be spawned to interactively lowest (b) LOD.change the LOD. Another possibili- Correspondingty is to maintain a triangle budget in (a) (b) wireframethe VRML scene and change it using models area Script (for simplicity, using shown in Fig-JavaScript) depending on the ures 9c and 9d.object’s relative position in the We can switchscene. This triangle budget can be a between themfield of the PROTO that the Java in real time on acode handles. Pentium 133- In Figure 9, texture coordinates MHz laptopare speciﬁed for each vertex. A ﬁle computer.specifying this model must thus pro-vide texture coordinates in additionto the vertex positions (Figure 6 (c) (d)doesn’t show this). IEEE Computer Graphics and Applications 73
7.
. VRML 10 A model of marble using colors per ver- tices with 50,000 triangles at the highest resolution. 11 Nonmani- (a) fold model with levels of (a) 64, (b) 16, and (c) 4 triangles. Topo- logical changes, obtained by vertex cluster- ings, can be represented in a progressive multilevel mesh. (d) A geomorph between two (b) (c) levels of the model. (d) 74 March/April 1999
8.
.using the vertex clustering informa- 7 4 0 1tion provided by any polygon reduc- 8 9 5 6 12 Building a progressive multi-tion tool. To do this, we need the level mesh from two vertex cluster-vertices and triangles of the most ings (circles show which vertices aredetailed mesh and, for each cluster- clustered). The vertices are enumer-ing, a new set of vertices (of the 2 3 ated according to the level at whichmesh after clustering) and a map- they appear or disappear (top row).ping between the vertices of the pre- The system identiﬁes and enumer-vious mesh and the new vertices. ates the triangles that collapsed as a Figure 12 illustrates this process result of the clustering (bottomand shows a model for which two row). The ﬁrst clustering is shownsuccessive clustering operations were in green, while the second is shownapplied. in blue. Level 0 Level 1 Level 2 We’ll now explain how weobtained the resulting progressivemultilevel mesh shown in Figure 6. Vertices and trian- must occur after collapses j and k, deﬁning a partialgles are assigned levels and re-enumerated. For each ordering on the collapses. This partial ordering provesremaining vertex after clustering, we identify its ances- useful in selecting a consistent subset of the collapses fortors in the previous mesh using the mapping provided. a local simpliﬁcation or reﬁnement of the surface.Among its ancestors, we select one vertex as a “pre-ferred” ancestor based on geometric proximity. (Other Storing a partial ordering between collapsescriteria are possible.) We assign the remaining vertices Each edge collapse has a status: S stands for “split,”to Level 0 and the largest indices (for example, 7, 8, and meaning that the collapse hasn’t occurred yet. C stands9 in Figure 12). We also identify the triangles that for “collapsed,” meaning that the collapse has occurred.become degenerate during the clustering and assign If performing a certain collapse—for instance in Figurethem to Level 0 as well. Then we assign the largest tri- 4 collapse V with blue vertex 4 and red vertex 0 (4 → 0)angle indices to these degenerate triangles. (To avoid —requires that other collapses be performed before-visual clutter, Figure 12 doesn’t show this.) hand—for example, collapse I (5 → 1) and collapse III The remaining vertices (0 through 6 in Figure 12) and (9 → 13)—we add two edges (V → I) and (V → III) to atriangles are re-enumerated and the mapping adjusted directed acyclic graph (DAG). This means that situationsto take the re-enumeration into account. The operation in which V has status C and I has status S or III has statusthen repeats for the second clustering, for assignments S are impossible. We can store this DAG in various ways.to Level 1. We stop when all clusterings are processed. (Essentially, for each vertex of the DAG, we want to have This construction actually demonstrates that non-manifold models and topological changes can be rep-resented in a progressive multilevel mesh (thoseobtained by clustering vertices). In fact, Figure 11 #2-level progressive meshshows a nonmanifold mesh whose topology is gradu- {#level 2 verticesally simpliﬁed to that of a sphere (or tetrahedron). Fig- 0, 0, 0, 2, 2, 0, 2, 0, 2,ure 13 shows the corresponding multilevel ﬁle. 0, 2, 2} Returning to Figure 12, to specify the clustering oper- {#level 2 trianglesations, you would naturally specify that four vertices get 0, 4, 5, 1, 2,mapped into one, and that again four vertices get mapped 5, 4, 6, 3,into one. Does this mean that 4 + 4 = 8 representatives 6, 0, 5, 13 Vertices,should be speciﬁed in the multilevel mesh representation 4, 0, 6} triangles, and(or six, since when a vertex is its own representative, the {#level 1 vertices representativesinformation is implicitly recorded)? Not so, because rep- 1, 1, 0, 1, 0, 1, 0, 1, 1, for the ﬁrst tworesentatives are required only when vertices touched by 2, 1, 1, 1, 2, 1, 1, 1, 2} levels of thetriangles of a given level are missing from the current {#level 1 triangles (nonmanifold)level. It turns out that the information conﬁned in Figure 8, 6, 3, mesh of Figure6 sufﬁces to encode the LODs of Figure 12, with only three 3, 6, 9, 11. Note thatrepresentatives. (You may want to examine which rep- 9, 8, 3, three represen-resentatives are necessary in Figure 13.) 6, 8, 9, tatives sufﬁce. 7, 5, 9,Local surface reﬁnement 9, 5, 2, Here we assume again that a suitable algorithm gen- 2, 7, 9,erates a succession of edge collapses to produce LODs. 5, 7, 2,The actual order in which the collapses occur is irrele- 1, 4, 8,vant. However, when the algorithm validates a given col- 8, 4, 7,lapse i, the collapsed edge neighborhood is in a particular 7, 1, 8,conﬁguration, resulting from a few identiﬁable edge col- 4, 1, 7}lapses, say collapses j and k. We record that collapse i IEEE Computer Graphics and Applications 75
9.
. VRML Figure 15 shows how this DAG can locally reﬁne the Related Work on Progressive and View-Dependent surface using a consistent subset of vertex splits. You can Mesh Representations use various criteria to decide which vertices of the sur- face should be locally split (based on the distance to the The progressive meshes method introduced by Hoppe4 consists viewpoint or the relation between the surface normal of representing a mesh as a base mesh followed with a sequence of and viewing direction, and so on). Then, using the par- vertex splits (deﬁned in the sidebar “Triangular Meshes, LODs, and tial ordering deﬁned above, it’s easy to determine which Edge Collapses”). This permits progressive loading and vertex splits must occur and in which sequence they must transmission and view-dependent reﬁnement. Progressive meshes occur. Performing a topological sort on the DAG’s sub- can also be used to obtain a compressed representation of a mesh. graph represented by the vertex splits accomplishes this. The progressive multilevel meshes introduced here provide freedom on the granularity of LOD changes and permit switching Coupling with a geometry-compression between arbitrary LODs without constructing intermediate levels. method Also, arbitrary vertex clusterings can be encoded on manifold or Taubin et al.5 introduced the progressive forest split nonmanifold meshes, allowing changes to the topology. compression method, which represents a triangular Xia and Varshney9 applied edge collapses and vertex splits mesh as a low resolution mesh followed by a sequence selectively for view-dependent reﬁnement of triangular meshes. In of reﬁnements, each one specifying how to add trian- the section “From edge collapses to a progressive multilevel gles and vertices. Figure 16 shows the basic operation— representation,” red vertices resemble the “parents” and blue a forest split. After marking a forest of edges on the vertices the “children” in Xia and Varshney’s method. lower resolution surface, the surface is cut through the De Floriani et al.11 used a directed acyclic graph (DAG) to edges and the resulting gap is ﬁlled with a forest of tri- represent local mesh updates and their dependencies. In this angles. For the added triangles to form a forest, we article, we present a related DAG representation where each node impose topological constraints on the polygon reduc- represents an edge collapse and vertex split pair, and directed tion method. For instance, when using edge collapses, edges represent dependencies between collapses. we make sure that after removing the two triangles cor- Hoppe deﬁned vertex hierarchies to perform selective, view- responding to the collapse (of an interior edge), the set dependent reﬁnement of meshes.10 By querying neighboring faces of removed triangles still forms a forest (this occurs of a given edge or vertex, he can determine whether a given after the very ﬁrst edge collapse). collapse or split proves feasible in a given conﬁguration. The information to encode this operation can be Luebke and Erikson21 used an octree to represent vertex highly compressed. A simple encoding of the forest of hierarchies. Vertex representatives deﬁned here relate to “triangle edges requires 1 bit per edge (for example, a value of 1 proxies” in their work. for the edges belonging to the forest and 0 for the other edges). Since any subset of the forest edges forms a for- est, we can determine at a certain point that some edges VI must have a bit of 0, thus achieving additional savings. V 14 A directed The resulting bitstream can be further compressed acyclic graph I using arithmetic coding. The triangles for insertion representing VII form a forest as well. Various possibilities exist for a the partial IX II compressed encoding of their connectivity. For ordering of instance, for each tree of the forest, we can use 2 bits III edge collapses VIII per triangle to indicate whether it’s a leaf, has a left or corresponding IV right neighbor, or both. to Figure 4. Overall, a forest split operation doubling the number n of triangles of a mesh requires a maximum of approx- imately 3.5n bits to represent the changes in connectiv- a list of all the directed edges that enter the vertex and all ity. We obtain this bit count by multiplying the number the directed edges that exit from the vertex.) For our of edges marked (approximately 1.5 times the number approach, we chose to use hash tables keyed with the of triangles) by 1 bit and the number of triangles added vertex number. We also note that V has two collapse con- (n) by 2 bits. Note that it’s impossible to more than dou- straints and that I and III each have one split constraint. ble the number of triangles in a mesh when applying a When we split V, then we can decrease the number of forest split operation, because we can’t mark more edges split constraints of I and III. Similarly, we can increase or than what a vertex spanning tree has (one less than the decrease the number of collapse constraints. Figure 14 number of vertices, which is approximately half the shows the complete DAG for the surface of Figure 4. number n of triangles of the mesh). We can, however, The procedure we use for building the DAG is very make the encoding of changes in geometry (vertex dis- simple. First we examine the current level of all vertices placements and new properties) more compact by using belonging to the star (1-neighborhood) of the collapsed efﬁcient prediction methods along the tree of edges or edge. Each level greater than zero indicates that the cor- the gap obtained after cutting. responding vertex was the outcome of a collapse. Then The forest split compression can be coupled with our we determine the collapses that produced that particu- progressive multilevel representation as follows: As soon lar vertex (for instance, by recording this information as a forest split reﬁnement is transmitted, it can be inter- in a list or hash table). preted as a vertex clustering operation performed on the 76 March/April 1999
10.
. 15 An example of selective reﬁne- ment (the original mesh is shown on the left). The partial ordering of edge collapses and vertex splits enables a consistent subset of ver- tex splits (right) starting from a simpliﬁed mesh (middle). 16 The forest split reﬁnement operation: after marking a forest of edges on the lower resolution surface (left), the surface is cut through the edges and the resulting gap is ﬁlled with a forest of trian- gles (right).reﬁned mesh to obtain the previous mesh (since the cor- We exploited VRML’s capability to create new nodesrespondence between the vertices before and after the and implemented our method for streaming geometrysplit is implicitly known), and thus be decoded into an in VRML. We used Java in Script nodes to interactivelyadditional LOD by building a progressive multilevel mesh load and change the LODs. Java’s performance wasfrom vertex clustering. The addLevel() method very satisfactory. Some of the main difﬁculties we expe-described in the “VRML implementation” section may rienced were related to inconsistent or noncompliantthen be used to append the new level to the data struc- support of Java in Script nodes in VRML browsers.ture. A similar mechanism could be used to incorporate However, we found that Platinum Technology’s World-other geometry compression methods as well. view 2.1 for Internet Explorer 4.0 is a good environment to work with. When VRML browsers mature, we hopeConclusion that these issues will be resolved. We believe that we’ve We’ve described a framework for streaming polygonal provided one of the ﬁrst documented examples of howdata. Our LOD representation features the following to use Java in Script nodes to stream 3D geometry con-characteristics: tent in VRML. Our work can be extended in many ways. Whiles It can be built from the output of most automated poly- VRML supports a very general binding model for prop- gon reduction algorithms (using vertex clustering). erties (color, texture coordinates, and so on) of vari-s It requires only a 10 percent memory overhead in ous mesh elements (vertex, face, corner), this article addition to the full detail mesh. focuses on the geometry and properties bound to ver-s LODs can be accessed on-the-ﬂy by manipulating ver- tices—vertex colors in Figure 10 and texture coordi- tex indices. nates per vertex in Figure 9. Implementing the selectives Any granularity is possible, from individual vertex refinement of the LOD in Java would probably push splits to, for example, doubling the number of vertices. the limits of Java in script nodes (or the Externals It supports smooth transitions (geomorphs). Authoring Interface), because geometry refinements It’s complementary to a compression process: the data computations (in Java) and rendering (by the brows- can be put in our format after it’s transmitted in com- er) must be tightly coupled and exchange considerable pressed form. information. s IEEE Computer Graphics and Applications 77
11.
. VRML References André Guéziec is a research staff 1. ISO/IEC 14496-2 MPEG-4 Visual Working Draft Version 2 member at the IBM T.J. Watson Re- Rev. 5.0, SC29/WG11 document number W2473, 16 Oct. search Center. His main contributions 1998. are in the ﬁelds of medical imaging 2. R. Carey and G. Bell, The Annotated VRML 2.0 Reference (for co-registering computed tomog- Manual, Reading, Mass., Addison Wesley, 1997. raphy and X-ray image data), scien- 3. M. Deering, “Geometric Compression,” Proc. Siggraph 95, tiﬁc visualization (isosurfaces), and ACM Press, New York, 1995, pp. 13-20. computer graphics. His polygonal surface optimization 4. H. Hoppe, “Progressive Meshes,” Proc. Siggraph 96, ACM methods are part of an IBM product (Data Explorer) and Press, New York, 1996, pp. 99-108. are routinely used for radiotherapy planning and various 5. G. Taubin et al., “Progressive Forest Split Compression,” Proc. other visualization applications. He earned a PhD (with Siggraph 1998, ACM Press, New York, 1998, pp. 123-132. honors) in computer science from University Paris 11 Orsay 6. S. Gumbold and W. Strasser, “Real-Time Compression of in 1993. He has authored eight patents. Triangle Mesh Connectivity,” Proc. Siggraph 1998, ACM Press, New York, 1998, pp. 133-140. 7. A. Guéziec et al., “Simplicial Maps for Progressive Trans- Gabriel Taubin is manager of the mission of Polygonal Surfaces,” Proc. VRML 98, ACM Press, Visual and Geometric Computing New York, 1998, pp. 25-31. group at the IBM T.J. Watson Re- 8. R. Ronfard and J. Rossignac, “Full-Range Approximation search Center, where he leads a group of Triangulated Polyhedra,” Computer Graphics Forum, of researchers in the creation of new Proc. Eurographics 96, Vol. 15, No. 3, 1996, C67-C76. geometric computation and image- 9. J.C. Xia and A. Varshney, “Dynamic View-Dependent Sim- based algorithms and technologies pliﬁcation for Polygonal Models,” Proc. IEEE Visualization for 3D modeling, 3D scanning, network-based graphics, 96, ACM Press, New York, 1996, pp. 327-334. and data visualization. During 1998 he lead the effort to 10. H. Hoppe, “View-Dependent Refinement of Progressive incorporate IBM’s geometry compression technology into Meshes,” Proc. Siggraph 97, ACM Press, New York, 1997, MPEG-4 version 2. He earned a PhD in electrical engi- pp. 189-198. neering from Brown University, Rhode Island, in the area 11. L. DeFloriani, P. Magillo, and E. Puppo, “Building and Tra- of computer vision, and an MS in pure mathematics from versing a Surface at Variable Resolution,” Proc. IEEE Visu- the University of Buenos Aires, Argentina. He has authored alization 97, ACM Press, New York, 1997, pp. 103-110. 12 patents. 12. A. Guéziec, “Surface Simpliﬁcation with Variable Toler- ance,” Proc. Second Annual Symp. Medical Robotics and Computer-Assisted Surgery, Wiley and Sons, New York, Bill Horn currently manages the 1995, pp. 132-139. Advanced Visualization Systems 13. M. Garland and P. Heckbert, “Surface Simpliﬁcation using group at the IBM T.J. Watson Re- Quadric Error Metrics,” Proc. Siggraph 97, ACM Press, New search Center. He has a PhD from York, 1997, pp. 209-216. Cornell University in computer sci- 14. C. Bajaj and D. Schikore, “Error-Bounded Reduction of Tri- ence and has worked on a variety of angle Meshes with Multivariate Data,” Proc. SPIE, Vol. projects in mechanical computer- 2656, SPIE Press, Bellingham, Wash., 1996, pp. 34-45. aided design and 3D graphics. 15. J. Cohen, D. Manocha, and M. Olano, “Simplifying Polyg- onal Models using Successive Mappings,” Proc. IEEE Visu- alization 97, ACM Press, New York, 1997, pp. 395-402. Francis Lazarus works with the 16. T.S. Gieng et al., “Smooth Hierarchical Surface Triangula- Research Institute in Optical, Micro- tions,” Proc. IEEE Visualization 97, ACM Press, New York, wave, and Communications—Sig- 1997, pp. 379-386. nal, Image, and Communication 17. W. Schroeder, J. Zarge, and W.E. Lorensen, “Decimation Laboratory (IRCOM-SIC). IRCOM- of Triangular Meshes,” Computer Graphics (Proc. Siggraph SIC is afﬁliated with the University of 92), Vol. 26, No. 2, ACM Press, New York, 1992, pp. 65-70. Poitiers, France, where he is an assis- 18. J. Cohen et al., “Simpliﬁcation Envelopes,” Proc. Siggraph tant professor of computer science. He received his PhD in 96, ACM Press, New York, 1996, pp. 119-128. computer science in 1995 from the University of Paris VII, 19. A.D. Kalvin and R.H. Taylor, “Superfaces: Polygonal Mesh France. He was a postdoctoral researcher at the IBM T.J. Simpliﬁcation with Bounded Error,” IEEE Computer Graph- Watson Research Center, Yorktown Heights, New York, ics and Applications, Vol. 16, No. 3, May 1996, pp. 64-77. from 1996 to 1997, and he coauthored the IBM VRML 2.0 20. R.E. Tarjan, Data Structures and Network Algorithms, No. binary standard proposal. His research interests include 44 in CBMS-NSF Regional Conference Series in Applied geometric modeling, geometry compression, computer ani- Mathematics, Soc. for Industrial and Applied Mathematics mation, and 3D morphing. (SIAM), Philadelphia, 1983. 21. D. Luebke and C. Erikson, “View-Dependent Simpliﬁca- Readers may contact Guéziec at the IBM T.J. Watson tion of Arbitrary Polygonal Environments,” Proc. Siggraph Research Center, 30 Sawmill River Rd., Hawthorne, NY 97, ACM Press, New York, 1997, pp. 199-208. 10532, e-mail gueziec@watson.ibm.com. 78 March/April 1999
Be the first to comment