design, implementation, and evaluation of the surface mesh data … · imp lucy dual dragon 1 1 1...

71
Design, Implementation, and Evaluation of the Surface_mesh Data Structure class Vertex_iterator { public: /// Default constructor Vertex_iterator(Vertex v=Vertex()) : hnd_(v) {} /// Cast to the vertex the iterator refers to operator Vertex() const { return hnd_; } /// are two iterators equal? bool operator==(const Vertex_iterator& rhs) const { return (hnd_==rhs.hnd_); } /// are two iterators different? bool operator!=(const Vertex_iterator& rhs) const { return !operator==(rhs); } /// pre-increment iterator Vertex_iterator& operator++() { ++hnd_.idx_; return *this; } /// pre-decrement iterator Vertex_iterator& operator--() { --hnd_.idx_; return *this; } private: Vertex hnd_; }; Daniel Sieger and Mario Botsch Graphics & Geometry Processing Group Bielefeld University Germany Universität Bielefeld

Upload: others

Post on 25-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Design, Implementation, and Evaluationof the Surface_mesh Data Structure

class Vertex_iterator{public: /// Default constructor Vertex_iterator(Vertex v=Vertex()) : hnd_(v) {} /// Cast to the vertex the iterator refers to operator Vertex() const { return hnd_; } /// are two iterators equal? bool operator==(const Vertex_iterator& rhs) const { return (hnd_==rhs.hnd_); } /// are two iterators different? bool operator!=(const Vertex_iterator& rhs) const { return !operator==(rhs); } /// pre-increment iterator Vertex_iterator& operator++() { ++hnd_.idx_; return *this; } /// pre-decrement iterator Vertex_iterator& operator--() { --hnd_.idx_; return *this; } private: Vertex hnd_;};

Daniel Sieger and Mario Botsch

Graphics & Geometry Processing GroupBielefeld University

GermanyUniversität Bielefeld

Page 2: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 3: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Introduction

Mesh data structures• Fundamental for research and development• Time-consuming to implement

Existing libraries (Mesquite, CGAL, OpenMesh, ...)• Strengths and weaknesses• Complexity• Performance

2

Page 4: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Introduction

Mesh data structures• Fundamental for research and development• Time-consuming to implement

Existing libraries (Mesquite, CGAL, OpenMesh, ...)

• Strengths and weaknesses• Complexity• Performance

2

Page 5: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Introduction

Mesh data structures• Fundamental for research and development• Time-consuming to implement

Existing libraries (Mesquite, CGAL, OpenMesh, ...)• Strengths and weaknesses

• Complexity• Performance

2

Page 6: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Introduction

Mesh data structures• Fundamental for research and development• Time-consuming to implement

Existing libraries (Mesquite, CGAL, OpenMesh, ...)• Strengths and weaknesses• Complexity• Performance

2

Page 7: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Introduction

Our approach:• Systematically analyze design choices• Careful and efficient implementation• Comprehensive evaluation

3

Page 8: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 9: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Design Goals

Compromise between• Efficiency• Memory• Applicability• Ease of use

4

Page 10: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Design Goals

Compromise between• Efficiency• Memory• Applicability• Ease of use

4

Page 11: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Design Decisions

5

Page 12: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Element Types

Computer Graphics: triangle meshes

6

Page 13: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Element Types

Simulation: quad meshes

7

Page 14: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Element Types

Voronoi diagrams, Polygonal Finite Elements

Þ support arbitrary polygonal elements

8

Page 15: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Element Types

Voronoi diagrams, Polygonal Finite Elements

Þ support arbitrary polygonal elements

8

Page 16: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Connectivity Representation

face-based vs. edge-based

9

Page 17: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Face-Based Representations

• Store faces and references to• Defining vertices• Neighboring faces

✐✐

✐✐

✐✐

✐✐

2.1 � Face-Based Data Structures 23

Vertex

Point position

FaceRef face

Face

VertexRef vertex[3]

FaceRef neighbor[3]

Figure 2.2. Connectivity information stored in a face-based data structure.

Because it is simple and efficient in storage, this representation is usedin many file formats such as OFF, OBJ, and VRML. Similarly, it is rel-evant for a class of efficient rendering algorithms that assume static data(OpenGL vertex arrays, see [Shreiner and Khronos OpenGL ARB WorkingGroup 09]).

However, without additional connectivity information this data struc-ture requires expensive searches to recover the local adjacency informationof a vertex and hence is not efficient enough for most algorithms. Beforegoing on we identify a minimal set of operations that are frequently usedby most algorithms:

� Access to individual vertices, edges, and faces: This includes theenumeration of all elements in unspecified order.

� Oriented traversal of the edges of a face, which refers to finding thenext edge (or previous edge) in a face. With additional access tovertices, for example, the rendering of faces is enabled.

� Access to the incident faces of an edge. Depending on the orientation,this is either the left or right face in the manifold case. This enablesaccess to neighboring faces.

� Given an edge, access its two endpoint vertices.

� Given a vertex, at least one incident face or edge must be accessible.Then for manifold meshes all other elements in the so-called one-ringneighborhood of a vertex can be enumerated, i.e., all incident faces oredges and neighboring vertices.

These operations, which enable both local and global traversal of the mesh,relate vertices, edges, and faces of the mesh by connectivity information(and orientation). We now review several data structures devised for fasttraversal of surface meshes.

10

Page 18: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Face-Based Representations

Pros:+ Simplicity+ Memory consumption

Cons:– Variable size data types– One-ring traversal– No explicit edges

11

Page 19: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Halfedge Data Structure

• Store pairs of oriented halfedges

54

3

21

1. Target vertex2. Next halfedge3. Previous halfedge4. Opposite halfedge5. Adjacent face

12

Page 20: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Halfedge Data Structure

Pros:+ All entities and relations represented+ Constant size data types+ Efficient adjacency queries

Cons:– Memory consumption

Þ use a halfedge data structure

13

Page 21: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Halfedge Data Structure

Pros:+ All entities and relations represented+ Constant size data types+ Efficient adjacency queries

Cons:– Memory consumption

Þ use a halfedge data structure

13

Page 22: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Storage Scheme

List-based+ Easy removal

– Performance– Memory consumption– Memory layout

Array-based+ Performance+ Memory consumption+ Memory layout

– Garbage collection

Þ use array-based storage

14

Page 23: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Storage Scheme

List-based+ Easy removal

– Performance– Memory consumption– Memory layout

Array-based+ Performance+ Memory consumption+ Memory layout

– Garbage collection

Þ use array-based storage

14

Page 24: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Storage Scheme

List-based+ Easy removal

– Performance– Memory consumption– Memory layout

Array-based+ Performance+ Memory consumption+ Memory layout

– Garbage collection

Þ use array-based storage

14

Page 25: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Entity References

Pointers+ Direct memory access

– Invalid upon resize– Memory consumption

Indices+ Validity checks+ Memory consumption

– Indirect memory access

Þ use indices

15

Page 26: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Entity References

Pointers+ Direct memory access

– Invalid upon resize– Memory consumption

Indices+ Validity checks+ Memory consumption

– Indirect memory access

Þ use indices

15

Page 27: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Custom Properties

Extended entitiesclass Vertex{

Vec3 position;Vec3 normal;float weight;

};Vertex vertices[N];

+ OOP design

– Static at compile-time– Memory layout

Synchronized arraysVec3 positions[N];Vec3 normals[N];float weights[N];

+ Dynamic at run-time+ Memory layout

– Synchronization

Þ use synchronized arrays

16

Page 28: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Custom Properties

Extended entitiesclass Vertex{

Vec3 position;Vec3 normal;float weight;

};Vertex vertices[N];

+ OOP design

– Static at compile-time– Memory layout

Synchronized arraysVec3 positions[N];Vec3 normals[N];float weights[N];

+ Dynamic at run-time+ Memory layout

– Synchronization

Þ use synchronized arrays

16

Page 29: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Custom Properties

Extended entitiesclass Vertex{

Vec3 position;Vec3 normal;float weight;

};Vertex vertices[N];

+ OOP design

– Static at compile-time– Memory layout

Synchronized arraysVec3 positions[N];Vec3 normals[N];float weights[N];

+ Dynamic at run-time+ Memory layout

– Synchronization

Þ use synchronized arrays

16

Page 30: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Custom Properties

Extended entitiesclass Vertex{

Vec3 position;Vec3 normal;float weight;

};Vertex vertices[N];

+ OOP design

– Static at compile-time– Memory layout

Synchronized arraysVec3 positions[N];Vec3 normals[N];float weights[N];

+ Dynamic at run-time+ Memory layout

– Synchronization

Þ use synchronized arrays

16

Page 31: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Custom Properties

Extended entitiesclass Vertex{

Vec3 position;Vec3 normal;float weight;

};Vertex vertices[N];

+ OOP design

– Static at compile-time– Memory layout

Synchronized arraysVec3 positions[N];Vec3 normals[N];float weights[N];

+ Dynamic at run-time+ Memory layout

– Synchronization

Þ use synchronized arrays

16

Page 32: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Ease of Use

Genericity+ Customization

– Accessibility– Documentation

Simplicity+ Accessibility+ Documentation

– Customization

Þ strive for simplicity

17

Page 33: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Ease of Use

Genericity+ Customization

– Accessibility– Documentation

Simplicity+ Accessibility+ Documentation

– Customization

Þ strive for simplicity

17

Page 34: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Summary

Supported element types Þ arbitrary polygons

Connectivity representation Þ halfedges

Storage scheme Þ arrays

Entity references Þ indices

Custom properties Þ synchronized arrays

Ease of use Þ simplicity

18

Page 35: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 36: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Implementation Overview

• Based on OpenMesh

• Massively simplified• Single class, no complicated hierarchy• Templates reduced to a minimum• OpenMesh: 8400 lines of code• Surface_mesh : 2250 lines of code

19

Page 37: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Implementation Overview

• Based on OpenMesh• Massively simplified• Single class, no complicated hierarchy• Templates reduced to a minimum

• OpenMesh: 8400 lines of code• Surface_mesh : 2250 lines of code

19

Page 38: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Implementation Overview

• Based on OpenMesh• Massively simplified• Single class, no complicated hierarchy• Templates reduced to a minimum• OpenMesh: 8400 lines of code• Surface_mesh : 2250 lines of code

19

Page 39: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Example: Smoothing

#include <Surface_mesh.h>

int main(int argc , char** argv){

Surface_mesh mesh;

mesh.read(argv [1]);

Vertex_property <Point > points = mesh.get_vertex_property <Point >("v:point");Vertex_iterator vit , vend = mesh.vertices_end ();Vertex_around_vertex_circulator vc , vc_end;

for (vit = mesh.vertices_begin (); vit != vend; ++vit){

Point p(0,0,0);Scalar c(0);vc = vc_end = mesh.vertices (*vit);do{

p += points [*vc];++c;

}while (++vc != vc_end );points [*vit] = p / c;

}

mesh.write(argv [2]);}

20

Page 40: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 41: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Evaluation Overview

Libraries:• Mesquite• CGAL• OpenMesh

21

Page 42: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Models

Imp Model300k vertices, 600k triangles

Lucy Model10M vertices, 20M triangles

Dual Dragon Model100k vertices, 50k polygons

22

Page 43: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 44: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Memory Consumption

Imp Lucy Dual DragonMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

88 2.8 16172 5.5 30105 3.4 19

67 2.2 1460 1.9 12

Imp Lucy Dual DragonMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.4666666667 1.4736842105 1.33333333332.8666666667 2.8947368421 2.5

1.75 1.7894736842 1.58333333331.1166666667 1.1578947368 1.1666666667

1 1 1

0

0.75

1.5

2.25

3

Imp Lucy Dual Dragon

1111.171.161.12

1.581.791.75

2.50

2.892.87

1.331.471.47

Mesquite CGAL_list CGAL_vectorOpenMesh Surface_mesh

Imp Model300k vertices600k triangles

Lucy Model10m vertices20m triangles

Dual Dragon Model100k vertices50k polygons

Mesquite

– Variable storage

– 64-bit references

– Helper data

CGAL

– 64-bit references

– List: Generally higher

OpenMesh

– Status information

23

Page 45: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Memory Consumption

Imp Lucy Dual DragonMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

88 2.8 16172 5.5 30105 3.4 19

67 2.2 1460 1.9 12

Imp Lucy Dual DragonMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.4666666667 1.4736842105 1.33333333332.8666666667 2.8947368421 2.5

1.75 1.7894736842 1.58333333331.1166666667 1.1578947368 1.1666666667

1 1 1

0

0.75

1.5

2.25

3

Imp Lucy Dual Dragon

1111.171.161.12

1.581.791.75

2.50

2.892.87

1.331.471.47

Mesquite CGAL_list CGAL_vectorOpenMesh Surface_mesh

Imp Model300k vertices600k triangles

Lucy Model10m vertices20m triangles

Dual Dragon Model100k vertices50k polygons

Mesquite

– Variable storage

– 64-bit references

– Helper data

CGAL

– 64-bit references

– List: Generally higher

OpenMesh

– Status information

23

Page 46: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Memory Consumption

Imp Lucy Dual DragonMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

88 2.8 16172 5.5 30105 3.4 19

67 2.2 1460 1.9 12

Imp Lucy Dual DragonMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.4666666667 1.4736842105 1.33333333332.8666666667 2.8947368421 2.5

1.75 1.7894736842 1.58333333331.1166666667 1.1578947368 1.1666666667

1 1 1

0

0.75

1.5

2.25

3

Imp Lucy Dual Dragon

1111.171.161.12

1.581.791.75

2.50

2.892.87

1.331.471.47

Mesquite CGAL_list CGAL_vectorOpenMesh Surface_mesh

Imp Model300k vertices600k triangles

Lucy Model10m vertices20m triangles

Dual Dragon Model100k vertices50k polygons

Mesquite

– Variable storage

– 64-bit references

– Helper data

CGAL

– 64-bit references

– List: Generally higher

OpenMesh

– Status information

23

Page 47: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Memory Consumption

Imp Lucy Dual DragonMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

88 2.8 16172 5.5 30105 3.4 19

67 2.2 1460 1.9 12

Imp Lucy Dual DragonMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.4666666667 1.4736842105 1.33333333332.8666666667 2.8947368421 2.5

1.75 1.7894736842 1.58333333331.1166666667 1.1578947368 1.1666666667

1 1 1

0

0.75

1.5

2.25

3

Imp Lucy Dual Dragon

1111.171.161.12

1.581.791.75

2.50

2.892.87

1.331.471.47

Mesquite CGAL_list CGAL_vectorOpenMesh Surface_mesh

Imp Model300k vertices600k triangles

Lucy Model10m vertices20m triangles

Dual Dragon Model100k vertices50k polygons

Mesquite

– Variable storage

– 64-bit references

– Helper data

CGAL

– 64-bit references

– List: Generally higher

OpenMesh

– Status information

23

Page 48: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 49: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Benchmarks Overview

Circulator Faces around vertex, vertices around face

Barycenter Compute barycenter of verticesNormals Compute and store face & vertex normals

Smoothing Move vertices to barycenter of neighborsSubdivision Face split & edge flip

Collapse Face split & edge collapse

EdgeFlip

FaceSplit

EdgeCollapse

24

Page 50: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Benchmarks Overview

Circulator Faces around vertex, vertices around faceBarycenter Compute barycenter of vertices

Normals Compute and store face & vertex normalsSmoothing Move vertices to barycenter of neighbors

Subdivision Face split & edge flipCollapse Face split & edge collapse

EdgeFlip

FaceSplit

EdgeCollapse

24

Page 51: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Benchmarks Overview

Circulator Faces around vertex, vertices around faceBarycenter Compute barycenter of vertices

Normals Compute and store face & vertex normals

Smoothing Move vertices to barycenter of neighborsSubdivision Face split & edge flip

Collapse Face split & edge collapse

EdgeFlip

FaceSplit

EdgeCollapse

24

Page 52: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Benchmarks Overview

Circulator Faces around vertex, vertices around faceBarycenter Compute barycenter of vertices

Normals Compute and store face & vertex normalsSmoothing Move vertices to barycenter of neighbors

Subdivision Face split & edge flipCollapse Face split & edge collapse

EdgeFlip

FaceSplit

EdgeCollapse

24

Page 53: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Benchmarks Overview

Circulator Faces around vertex, vertices around faceBarycenter Compute barycenter of vertices

Normals Compute and store face & vertex normalsSmoothing Move vertices to barycenter of neighbors

Subdivision Face split & edge flipCollapse Face split & edge collapse

EdgeFlip

FaceSplit

EdgeCollapse

24

Page 54: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Results: Imp Model

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

3479.57 15039.9 11406.4 23228.9 0 05329.89 7298.91 6642.29 4976.79 506.158 1582.942358.51 3879.86 5064.38 2467.66 312.607 02359.36 2443.59 5356.68 2071.79 423.925 1987.441773.38 1937.05 4173.33 1795.62 294.27 1536.75

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.9621118993 7.7643323611 2.7331651223 12.936423074 0 03.0054979756 3.7680545159 1.5916043064 2.7716276272 1.7200462161 1.03005693831.3299518434 2.0029735939 1.2135105539 1.3742662701 1.0623135216 01.3304311541 1.2615007357 1.283550546 1.1538020294 1.4405987698 1.2932747682

1 1 1 1 1 1

0

1.75

3.5

5.25

7

Circulator Barycenter Normals Smoothing Subdivision Collapse

1111111.291.44

1.151.281.261.33

0

1.061.371.21

2.001.33

1.031.72

2.77

1.59

3.77

3.01

00

12.94

2.73

7.76

1.96

Mesquite CGAL_list CGAL_vector OpenMesh Surface_mesh

Mesquite

– Virtual functions

– One-ring traversal

– Variable storage

– No topology changes

CGAL

– Extended entities

– List: Memory layout

– Vector: No removal

OpenMesh

– Circulators

– Properties

25

Page 55: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Results: Imp Model

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

3479.57 15039.9 11406.4 23228.9 0 05329.89 7298.91 6642.29 4976.79 506.158 1582.942358.51 3879.86 5064.38 2467.66 312.607 02359.36 2443.59 5356.68 2071.79 423.925 1987.441773.38 1937.05 4173.33 1795.62 294.27 1536.75

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.9621118993 7.7643323611 2.7331651223 12.936423074 0 03.0054979756 3.7680545159 1.5916043064 2.7716276272 1.7200462161 1.03005693831.3299518434 2.0029735939 1.2135105539 1.3742662701 1.0623135216 01.3304311541 1.2615007357 1.283550546 1.1538020294 1.4405987698 1.2932747682

1 1 1 1 1 1

0

1.75

3.5

5.25

7

Circulator Barycenter Normals Smoothing Subdivision Collapse

1111111.291.44

1.151.281.261.33

0

1.061.371.21

2.001.33

1.031.72

2.77

1.59

3.77

3.01

00

12.94

2.73

7.76

1.96

Mesquite CGAL_list CGAL_vector OpenMesh Surface_mesh

Mesquite

– Virtual functions

– One-ring traversal

– Variable storage

– No topology changes

CGAL

– Extended entities

– List: Memory layout

– Vector: No removal

OpenMesh

– Circulators

– Properties

25

Page 56: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Results: Imp Model

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

3479.57 15039.9 11406.4 23228.9 0 05329.89 7298.91 6642.29 4976.79 506.158 1582.942358.51 3879.86 5064.38 2467.66 312.607 02359.36 2443.59 5356.68 2071.79 423.925 1987.441773.38 1937.05 4173.33 1795.62 294.27 1536.75

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.9621118993 7.7643323611 2.7331651223 12.936423074 0 03.0054979756 3.7680545159 1.5916043064 2.7716276272 1.7200462161 1.03005693831.3299518434 2.0029735939 1.2135105539 1.3742662701 1.0623135216 01.3304311541 1.2615007357 1.283550546 1.1538020294 1.4405987698 1.2932747682

1 1 1 1 1 1

0

1.75

3.5

5.25

7

Circulator Barycenter Normals Smoothing Subdivision Collapse

1111111.291.44

1.151.281.261.33

0

1.061.371.21

2.001.33

1.031.72

2.77

1.59

3.77

3.01

00

12.94

2.73

7.76

1.96

Mesquite CGAL_list CGAL_vector OpenMesh Surface_mesh

Mesquite

– Virtual functions

– One-ring traversal

– Variable storage

– No topology changes

CGAL

– Extended entities

– List: Memory layout

– Vector: No removal

OpenMesh

– Circulators

– Properties

25

Page 57: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Results: Imp Model

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL-vectorOpenMeshPoly_mesh

3479.57 15039.9 11406.4 23228.9 0 05329.89 7298.91 6642.29 4976.79 506.158 1582.942358.51 3879.86 5064.38 2467.66 312.607 02359.36 2443.59 5356.68 2071.79 423.925 1987.441773.38 1937.05 4173.33 1795.62 294.27 1536.75

Circulator Barycenter Normals Smoothing Subdivision CollapseMesquiteCGAL_listCGAL_vectorOpenMeshSurface_mesh

1.9621118993 7.7643323611 2.7331651223 12.936423074 0 03.0054979756 3.7680545159 1.5916043064 2.7716276272 1.7200462161 1.03005693831.3299518434 2.0029735939 1.2135105539 1.3742662701 1.0623135216 01.3304311541 1.2615007357 1.283550546 1.1538020294 1.4405987698 1.2932747682

1 1 1 1 1 1

0

1.75

3.5

5.25

7

Circulator Barycenter Normals Smoothing Subdivision Collapse

1111111.291.44

1.151.281.261.33

0

1.061.371.21

2.001.33

1.031.72

2.77

1.59

3.77

3.01

00

12.94

2.73

7.76

1.96

Mesquite CGAL_list CGAL_vector OpenMesh Surface_mesh

Mesquite

– Virtual functions

– One-ring traversal

– Variable storage

– No topology changes

CGAL

– Extended entities

– List: Memory layout

– Vector: No removal

OpenMesh

– Circulators

– Properties

25

Page 58: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 59: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Simplicity & Properties

Working with a custom edge property in Surface_mesh

Surface_mesh mesh;

// allocate property storing a point per edgeEdge_property <Point > edge_points

= mesh.add_edge_property <Point >("property -name");

// access the edge property like an arrayEdge e;edge_points[e] = Point(x,y,z);

// remove property and free memorymesh.remove_edge_property(edge_points );

26

Page 60: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Simplicity & Properties

Just declaring a custom edge property in CGAL

typedef CGAL:: Simple_cartesian <double > Kernel;typedef Kernel :: Point_3 Point_3;

template <class Refs > struct My_halfedge: public CGAL:: HalfedgeDS_halfedge_base <Refs >

{Point_3 halfedge_point;

};

class Items : public CGAL:: Polyhedron_items_3{public:

template <class Refs , class Traits >struct Halfedge_wrapper{

typedef My_halfedge <Refs > Halfedge;};

};

typedef CGAL:: Polyhedron_3 <Kernel , Items > Mesh;27

Page 61: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

User Feedback

• SGP 2011 graduate course on geometric modeling• 18 participants, varying experience• Q: Is Surface_mesh easy to use and understand?

Average Scores

Avg.

General impression of the course

Was the course at the right level of difficulty

I enjoyed taking this course

I learned a log during this course

Material covered will be useful in the future

Presentations were clear

Exercises helped to understand main concepts

Balance of presentations to exercises was appropriate

Mesh data structure are easy to understand and use

Documentation was adequate to complete the exercises

4.4

3.8

4.9

4.1

4.5

4.2

4.5

4.2

4.1

4.2

Individual Scores

5 4 5 5 5 4 5 3 4

4 4 5 5 4 4 4 4 3 3

4 3 5 3 4 4 5 3 4 4

3 2 5 2 5 3 4 4 2 4

5 4 5 4 5 5 5 5 5 3

4 4 5 4 5 4 5 5 4 5

5 5 5 4 4 4 5 4 4 5

5 4 5 5 4 5 5 5 5

5 3 5 4 5 4 5 5 5 4

4 4 5 3 3 5 4 4 5

5 5 5 5 5

4 3 5 2 5 5 4 5 5 5

4 4 5 5 5 3 5 4 4 4

3 4 4 3 5 3 4 4 4 4

5 4 5 5 5 4 5 3 4 4

4 4 5 5 5 5 5 3 5 5

5 3 5 5 4 5 4 4 3 4

5 4 5 5 5 4 5 4 5 5

5 5 5 4 3 4 3 4 4 4

General impression of the course

Was the course at the right level of difficulty

I enjoyed taking this course

I learned a log during this course

Material covered will be useful in the future

Presentations were clear

Exercises helped to understand main concepts

Balance of presentations to exercises was appropriate

Mesh data structure are easy to understand and use

Documentation was adequate to complete the exercises

1.0 2.0 3.0 4.0 5.0

4.2

4.1

4.2

4.5

4.2

4.5

4.1

4.9

3.8

4.4

Average Scores

terrible

strongly disagree

unsatisfactory

disagree

average

neutral

good

agree

very good

strongly agree

strongly disagree

disagree neutral agree strongly agree

Region 1 0 5 15 40 40

40%

40%

15%5%

strongly disagreedisagreeneutralagreestrongly agree

28

Page 62: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

User Feedback

• SGP 2011 graduate course on geometric modeling• 18 participants, varying experience• Q: Is Surface_mesh easy to use and understand?

Average Scores

Avg.

General impression of the course

Was the course at the right level of difficulty

I enjoyed taking this course

I learned a log during this course

Material covered will be useful in the future

Presentations were clear

Exercises helped to understand main concepts

Balance of presentations to exercises was appropriate

Mesh data structure are easy to understand and use

Documentation was adequate to complete the exercises

4.4

3.8

4.9

4.1

4.5

4.2

4.5

4.2

4.1

4.2

Individual Scores

5 4 5 5 5 4 5 3 4

4 4 5 5 4 4 4 4 3 3

4 3 5 3 4 4 5 3 4 4

3 2 5 2 5 3 4 4 2 4

5 4 5 4 5 5 5 5 5 3

4 4 5 4 5 4 5 5 4 5

5 5 5 4 4 4 5 4 4 5

5 4 5 5 4 5 5 5 5

5 3 5 4 5 4 5 5 5 4

4 4 5 3 3 5 4 4 5

5 5 5 5 5

4 3 5 2 5 5 4 5 5 5

4 4 5 5 5 3 5 4 4 4

3 4 4 3 5 3 4 4 4 4

5 4 5 5 5 4 5 3 4 4

4 4 5 5 5 5 5 3 5 5

5 3 5 5 4 5 4 4 3 4

5 4 5 5 5 4 5 4 5 5

5 5 5 4 3 4 3 4 4 4

General impression of the course

Was the course at the right level of difficulty

I enjoyed taking this course

I learned a log during this course

Material covered will be useful in the future

Presentations were clear

Exercises helped to understand main concepts

Balance of presentations to exercises was appropriate

Mesh data structure are easy to understand and use

Documentation was adequate to complete the exercises

1.0 2.0 3.0 4.0 5.0

4.2

4.1

4.2

4.5

4.2

4.5

4.1

4.9

3.8

4.4

Average Scores

terrible

strongly disagree

unsatisfactory

disagree

average

neutral

good

agree

very good

strongly agree

strongly disagree

disagree neutral agree strongly agree

Region 1 0 5 15 40 40

40%

40%

15%5%

strongly disagreedisagreeneutralagreestrongly agree

28

Page 63: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

User Feedback: Comments

“It is easy to use for users that have experience with CGALor OpenMesh. It is nice to have a template-free structure.”

“Much easier than OpenMesh.”

“I thought the data structure was quite easy to understandeven though I have never worked with a real mesh datastructure before.”

29

Page 64: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Outline

Introduction

Design

Implementation

EvaluationMemoryPerformanceEase of Use

Conclusions

Page 65: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Conclusions

Our approach:• Systematically analyze design choices• Careful and efficient implementation• Comprehensive evaluation

Our implementation of Surface_mesh :• Easy to use• Highly efficient• Low memory consumption

Other libraries:• Much more functionality beyond a pure data structure

30

Page 66: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Conclusions

Our approach:• Systematically analyze design choices• Careful and efficient implementation• Comprehensive evaluation

Our implementation of Surface_mesh :• Easy to use• Highly efficient• Low memory consumption

Other libraries:• Much more functionality beyond a pure data structure

30

Page 67: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Conclusions

Our approach:• Systematically analyze design choices• Careful and efficient implementation• Comprehensive evaluation

Our implementation of Surface_mesh :• Easy to use• Highly efficient• Low memory consumption

Other libraries:• Much more functionality beyond a pure data structure

30

Page 68: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Limitations & Future Work

Limitations:• Single Surface_mesh declaration in one application• Two-manifold surface meshes only

Future work:• Volumetric meshes• Include more libraries (VCGLib, LR, yours?)• Establish standard set of benchmarks

Þ http://graphics.uni-bielefeld.de

31

Page 69: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Limitations & Future Work

Limitations:• Single Surface_mesh declaration in one application• Two-manifold surface meshes only

Future work:• Volumetric meshes

• Include more libraries (VCGLib, LR, yours?)• Establish standard set of benchmarks

Þ http://graphics.uni-bielefeld.de

31

Page 70: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Limitations & Future Work

Limitations:• Single Surface_mesh declaration in one application• Two-manifold surface meshes only

Future work:• Volumetric meshes• Include more libraries (VCGLib, LR, yours?)• Establish standard set of benchmarks

Þ http://graphics.uni-bielefeld.de

31

Page 71: Design, Implementation, and Evaluation of the Surface mesh Data … · Imp Lucy Dual Dragon 1 1 1 1.12 1.16 1.17 1.58 1.75 1.79 2.50 2.87 2.89 1.33 1.47 Mesquite CGAL_list CGAL_vector

Thanks

... for your attention.

32