-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchapter_09_surfaces.tex
More file actions
454 lines (320 loc) · 24.1 KB
/
chapter_09_surfaces.tex
File metadata and controls
454 lines (320 loc) · 24.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
\chapter{Menu Surfaces}\label{Menu_surfaces}
\minitoc
In most cases, these function only apply on selected surfaces, so, as a prerequisite, you almost always need to select surfaces in order to use what is described below.
\section{Edit first selected surface}
This menu opens the "Edit first selected surface" window (see Fig. \ref{actor_edit} p.\pageref{actor_edit}), in which several properties of a given surface object can be edited. This window can also be opened by clicking on "\includegraphics[scale=0.7]{images/06/objects/actor_edit.png}". An example of ROI usage can be found Fig. \ref{example_surface_roi} p.\pageref{example_surface_roi}.
\begin{figure}
\centering
\includegraphics[scale=1]{images/09/edit_surface/edit_surface2.png}
\caption{Edit first selected surface window. \textbf{1-} Object name : edit the name of the surface.Next and preceding object buttons: saves current settings and fetches next/preceding surface. View/hide object button. \textbf{2-} Object solid color : modifies the "solid color" property of this object. Object translucency : modifies the translucency this object. The number of points and triangles are available in this section. \textbf{3-} Object matrix : current position/rotation matrix of the object. Reinit matrix: set current matrix to identity. Refresh matrix: if edited outside this window, object's matrix is refreshed. Harden transform : apply current position matrix to all the vertices, and reset position matrix to identity. Apply matrix to all selected surfaces : set position/rotation matrix to all other selected surfaces. Apply matrix to all surfaces : set position/rotation matrix to all other surfaces even if they are not selected.\textbf{4-} Enable ROI: must be activated to enable custom clipping planes. Show/Hide ROI: show ROI to define interactively clipping planes. \textbf{5-} Existing arrays : list of all scalar/RGB color/tags arrays associated to the vertices of the surfaces. Edit array name : modifies the name of currently selected array. Duplicate array : duplicates currently selected array. Delete array : deletes currently selected array. Ok : save settings and closes window}
\label{actor_edit}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.25]{images/09/edit_surface/example_surface_roi.png}
\caption{Example of ROI box usage to digitize landmarks inside surfaces. \textbf{A-} Surface ROI is enabled, and ROI box is visible. \textbf{B-} Left drag click on the 6 spheres to edit ROI box bounds. \textbf{C-} Hide ROI box / or unselect surface. \textbf{D-} Now landmarks can be digitized inside surface.}
\label{example_surface_roi}
\end{figure}
\section{Structure modification}
\subsection{Smooth each selected surface}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses vtkSmoothPolyDataFilter.You may smooth an input
selected surface using this option (see Fig. \ref{smooth} p.\pageref{smooth}). A number of iteration and a
relaxation factor are required.\\
See vtkSmoothPolyDataFilter documentation for further information regarding this option.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/surface_smoothing_dialog.png}
\captionof{figure}{Surface smoothing dialog}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/structure/surface_smoothing_example.png}
\caption{Smoothing surfaces. \textbf{Left:} example of original input surface (left inner ear of \textit{Galago moholi}). \textbf{Right:} resulting output surface after 100 iterations using a relaxation factor of 0.1.}
\label{smooth}
\end{figure}
\subsection{Decimate each selected surface}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses vtkDecimatePro and vtkQuadricDecimation filters. Requirements : to use mesh decimation, a selected
surface is required (see for instance Fig. \ref{decimate} p.\pageref{decimate}). See vtkDecimatePro and vtkQuadricDecimation documentations for further information regarding
mesh decimation.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/decimation_dialog.png}
\captionof{figure}{Decimate window}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/structure/decimation_example.png}
\caption{Surface decimation. Left: point cloud rendering of input surface (left inner ear of \textit{Galago moholi}). Right: point cloud rendering of resulting output (vtkQuadricDecimation filter,
decimation factor: 95\%).
}
\label{decimate}
\end{figure}
\subsection{Densify each selected surface}
\noindent
\begin{minipage}{0.5\textwidth}
This option makes it possible to densify surfaces using either the vtkDensifyPolyData filter (1 new vertex created at the center of each triangle), the vtkLinearSubdivisionFilter (linear subdivision scheme), the vtkLoopSubdivisionFilter (loop subdivision sheme) or the vtkButterflySubdivisionFilter (butterfly subdivision scheme).
Requirements : to use mesh densification, a selected
surface is required. An example of surface densification is presented in Fig. \ref{densify} p.\pageref{densify}.
Note that mesh densification can become extremely slow
when using number of subdivisions larger than 1.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/densification_dialog.png}
\captionof{figure}{Densification dialog}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/structure/densification_example.png}
\caption{Surface densification. Left: wireframe rendering of input surface (left inner ear of \textit{Galago moholi}). Right: wireframe rendering of resulting output (method: 1 new vertex at the center of each triangle; number of subdivisions: 1).
}
\label{densify}
\end{figure}
\subsection{Fill holes of each selected surface}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses vtkFillHolesFilter.
Requirements : to use mesh hole filling, a selected surface is
required (see for instance Fig. \ref{fill_holes} p.\pageref{fill_holes}). See vtkFillHolesFilter documentation for further
information regarding hole filling.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/fill_holes_dialog.png}
\captionof{figure}{Fill holes window}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/structure/fill_holes_example.png}
\caption{Filling holes. Left: input surface: left inner ear of \textit{Galago moholi} having a hole in the round window. Right: resulting surface output.}
\label{fill_holes}
\end{figure}
\subsection{TPS deformation of each selected surface}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses vtkThinPlateSplineTransform filter.
Requirements : to use TPS deformation, a selected surface,
a series of ``n" normal landmarks and a series of ``n"
target landmarks (n>3) are needed. ``Normal" landmarks
are usually placed on the original selected input surface,
whereas ``target" landmarks are placed at a location in 3D
space which will drive the TPS deformation (see Fig. \ref{tps} p.\pageref{tps}). See vtkThinPlateSplineTransform documentation for further information regarding TPS deformation.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/tps_dialog.png}
\captionof{figure}{TPS dialog}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.31]{images/09/structure/tps_example.png}
\caption{Thin plate spline (TPS) transformation. Left: original distorted input surface of the cranium and mandible of \textit{Notharctus tenebrosus} (3D surface obtained from a cast of specimen AMNH 127167 from the American Museum of Natural History, New York City, New York, USA). 46 ``normal"
landmarks were placed on the surface and 46
``target" landmarks were placed in order to
restore bilateral symmetry. Right: resulting output (deformation : 100\%). Note
that the 46 ``target" landmarks are located on the output surface.
}
\label{tps}
\end{figure}
\subsection{Connectivity: separate each selected surface into independent regions}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses vtkPolyDataConnectivityFilter. This filter produces a new surface for each non-connected region of the selected input surface. 3D meshes of biological objects sometimes contain a multitude of small and biologically irrelevant independent regions. This ``noise" may have multiple origins: low quality of original 3D data, state of preservation of the specimen, threshold used to be able to visualize all relevant structures, etc... In order to extract relevant independent regions, only regions reaching a minimal size (minimal number of triangles) are transformed into new surfaces (see Fig. \ref{decompose34} p.\pageref{decompose34}). This process may take some time to be completed. All produced surfaces corresponding to independent regions can be manipulated independently.\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/structure/surface_decomposition_dialog.png}
\captionof{figure}{Connectivity decomposition dialog}
\end{minipage}
\noindent
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/structure/surface_decomposition_example.png}
\caption{Example of surface decomposition into non-connected surfaces. Left: original surface of the skeleton of a newborn \textit{Lemur catta} containing a large number of independent regions of size greater than 500 triangles. Right : Output result (independent surface objects) Filtered surfaces. All surfaces produced using this filter have more than 500 triangles and were given a random color. Note that several bones of the most distal part of the tail are absent, because they contain less than 500 triangles. }
\label{decompose34}
\end{figure}
\subsection{Connectivity: keep largest region for each selected surface}
This option uses vtkPolyDataConnectivityFilter.This filter produces a new surface for the largest independent region of the selected input surface (see Fig. \ref{largest_region} p.\pageref{largest_region}).
\begin{figure}
\centering
\includegraphics[scale=0.31]{images/09/structure/keep_largest.png}
\caption{Example of surface decomposition in order to keep largest region. Left: original 3D surface representing the skull of a newborn \textit{Tarsius bancanus}. Right: the resulting largest region in terms of triangle number.}
\label{largest_region}
\end{figure}
\subsection{Invert each selected surface}
A given surface can be inverted in order to show inner structures (see Fig. \ref{inversion} p.\pageref{inversion}).\\
\begin{figure}
\centering
\includegraphics[scale=0.32]{images/09/structure/inversion_example.png}
\caption{Example of surface inversion. Left: original surface of the skull of the type specimen of \textit{Pan paniscus}.
Right: backface culling rendering of the same surface after being inverted, revealing inner structures such as the endocranial cavity. }
\label{inversion}
\end{figure}
\subsection{Mirror each selected surface along Y plane}
This option uses vtkReflectionFilter, which produces a mirror image of the original selected input mesh (see Fig. \ref{mirror} p.\pageref{mirror}).\\
\begin{figure}
\centering
\includegraphics[scale=0.32]{images/09/structure/image_mirror.png}
\caption{Example of fossil restoration (\textit{Palaeolemur betillei} BOR613 specimen from the Musée d'Histoire Naturelle de Bordeaux, France) implicating the production of mirror images of missing parts.}
\label{mirror}
\end{figure}
\subsection{Merge selected surfaces into one single surface}
This options makes it possible to merge all selected surfaces into one single surface object.
\section{Wrapping methods}
\subsection{Create a convex hull for each selected surface}
This option uses vtkDelaunay3D. This filter produces convex hull surfaces for each selected surface. Convex hulls can be useful for instance to compute estimations of the total "volume" occupied in space by complex objects containing lots of holes (see Fig. \ref{convex_hull} p.\pageref{convex_hull}).
\begin{figure}
\centering
\includegraphics[scale=0.27]{images/09/wrapping_methods/convex_hull.png}
\caption{Convex hull computation. \textbf{Left:} original 3D surface representing the skull of a newborn \textit{Tarsius bancanus}. Bone volume: \textasciitilde100 mm3. \textbf{Right:} the resulting convex hull. Volume of the convex hull of the skull (=proxy for the volume of the "head"): \textasciitilde3653 mm3.}
\label{convex_hull}
\end{figure}
\subsection{Shrink and wrap 1 surface over a 2nd surface}
This option uses vtkSmoothPolyDataFilter to shrink a surface over the points of a second surface. \textbf{Warning:} the first (=impacted) surface should enclose the second (=observed) surface. This will approximately produce a convex hull of the observed object (see Fig. \ref{shrink_wrap_dialog} p.\pageref{shrink_wrap_dialog} and Fig. \ref{shrink_wrap_example} p.\pageref{shrink_wrap_example}).
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/wrapping_methods/shrink_wrap_dialog.png}
\caption{Shrink wrap dialog .}
\label{shrink_wrap_dialog}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.45]{images/09/wrapping_methods/shrink_wrap_example.png}
\caption{Convex hull computation. \textbf{Left:} A transparent sphere encloses the 3D surface representing the inner ear of a \textit{Galago moholi} and (level . \textbf{Right:} the sphere was skink-wrapped over the inner ear, resulting approximately in a convex hull.}
\label{shrink_wrap_example}
\end{figure}
\section{Boolean operations}\label{boolean_operations}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses the vtkBooleanOperationPolyDataFilter filter. This filter makes it possible to perform boolean operations (subtraction, union and intersection) involving two surfaces (see for instance Fig. \ref{boolean_example} p.\pageref{boolean_example}). \textbf{Warning:} this option works smoothly only when relatively "light surfaces" (less than a few thousand faces) are involved. Boolean operations on \textbf{large} free form surface object \textbf{will probably fail}. See vtkBooleanOperationPolyDataFilter documentation for further information.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/boolean_operations/boolean_dialog.png}
\captionof{figure}{Boolean operation dialog}
\end{minipage}
\begin{figure}
\centering
\includegraphics[scale=0.21]{images/09/boolean_operations/boolean_example.png}
\caption{Example of possible boolean operations involving a sphere (surface A) and a cylinder of hexagonal section (surface B). }
\label{boolean_example}
\end{figure}
\section{Surface alignment}\label{surface_alignment_section}
\noindent
\begin{minipage}{0.5\textwidth}
This option uses the vtkIterativeClosestPointTransform filter. This filter makes it possible to align two surfaces using the Iterative Closest Point (ICP) algorithm. In order to get good results, it is strongly advised to orient manually roughly the two surfaces in the same direction before running this algorithm
(see for instance Fig. \ref{surface_alignment} p.\pageref{surface_alignment}). See vtkIterativeClosestPointTransform documentation for further information.
\end{minipage}
\begin{minipage}{0.5\textwidth}\centering
\includegraphics[scale=0.5]{images/09/alignment/surface_alignment_dialog.png}
\captionof{figure}{Surface alignment dialog}
\end{minipage}
\begin{figure}
\centering
\includegraphics[scale=0.21]{images/09/alignment/surface_alignment.png}
\caption{Example of alignment of two mandibles of \textit{Tarsius bancanus}. A: the two surfaces in their initial orientation. B: the two mandibles were roughly manually oriented in the same direction. C: result of the ICP algorithm. The impacted surface (the one which was actually reoriented) is the blue one. }
\label{surface_alignment}
\end{figure}
\section{Rendering modification}
\subsection{Change transparency}
\noindent
\begin{minipage}{0.4\textwidth}
All selected actors can be given the same transparency using this option (at least one selected surface is needed).\\
Please choose a value between 0 and 100. 100 stands for ``opaque rendering". 0 stands for ``invisible surface".\\
\end{minipage}
\begin{minipage}{0.6\textwidth}\centering
\includegraphics[scale=0.5]{images/09/rendering/transparency.png}
\captionof{figure}{Edit transparency dialog}
\end{minipage}
\noindent
\subsection{Change object solid color}
Selected objects' solid color can be changed using the options that can be found inside this submenu. The "Custom color" option allows to define a color to apply to all selected objects (see Fig. \ref{edit_color_of_all_selected_surfaces} p.\pageref{edit_color_of_all_selected_surfaces}). Note that the transparency of all selected objects will remain unchanged.
\begin{figure}
\centering
\includegraphics[scale=0.21]{images/09/rendering/color.png}
\caption{ Edit color of all selected surfaces window. }
\label{edit_color_of_all_selected_surfaces}
\end{figure}
Furthermore, a set of 13 predefined colors is available via this menu. \\
A last alternative is to edit all selected objects' colors and transparencies at once by using the ``Default solid color of surfaces" control of the ``Edit color options" window (menu ``Edit $\rightarrow$Edit color options").
\section{Create 3D primitives}
When planning to print a 3D model composed of non connex elements (for instance : the cranium and the mandible of a single individual, or the skeleton of the fetus of a vertebrate specimen), you may need to manually place in 3D space connective surface elements linking those different parts. Such elements are referred to as "3D printing connective struts", and can be created via the "Cylindric connective struts" dialog (Fig. \ref{cylinders_dialog} p.\pageref{cylinders_dialog}) or via the "Cubic connective struts" dialog (Fig. \ref{cubes_dialog} p.\pageref{cubes_dialog}).
\subsection{Create cylindric connective struts}
Different options are available, and in particular, the cylinders can be given either conic of flat ends, and the cross-section of the cylinders can either be circular or elliptic (Fig. \ref{conic_non_conic} p.\pageref{conic_non_conic}).
Two practical examples of 3D printed objects using cylindric connective struts are shown in Fig. \ref{support_example} p.\pageref{support_example}.
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/create_3D_primitives/cylinders_dialog.png}
\caption{Create cylinders dialog. Different options are available. Several cylinders sharing the same properties can be created at once. Shaft length and radius can be defined, as well as the resolution (number of sides). Also, shaft section shape can either be circular or elliptical. The bottom and top sides of the cylinders can be either flat, or conic.}
\label{cylinders_dialog}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/create_3D_primitives/conic_non_conic.png}
\caption{Different cylinder shapes. \textbf{Top left}: flat ends + circular shaft section. \textbf{Top right:} conic ends + circular shaft section. \textbf{Bottom left}: flat ends + elliptical shaft section. \textbf{Top right:} conic ends + elliptical shaft section.}
\label{conic_non_conic}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=1.40]{images/09/create_3D_primitives/support_example.png}
\caption{Examples of 3D connective material usage. \textbf{A:} Cranium and mandible of \textit{Gorilla gorilla} (adult, male). Left: the 3D model of the skull is transparent, showing where the 3D connective cylinders have been placed in order to connect the mandible and the cranium. Middle: the same 3D model is rendered opaque. Right: 3D printed object. \textbf{B:} 3D model of the skeleton of a newborn \textit{Lemur catta}. The skeleton of this neonate specimen contains many non connected elements: many bones are not fully mineralized (skull bones, vertebrae) and most bones are separated in space. Left: the 3D model of the skeleton is transparent, showing the position of the many cylinders (two hundreds) of different lengths and diameters connecting the different bones. Right: 3D printed object. }
\label{support_example}
\end{figure}
\subsection{Create cubic connective struts}
Different options are available, and in particular, the cubes / box-shaped struts can be given any desired width, height and depth (see Fig. \ref{cubes_dialog} p.\pageref{cubes_dialog} and Fig. \ref{cubic} p.\pageref{cubic}).
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/create_3D_primitives/cubes_dialog.png}
\caption{Create cube dialog. The X,Y and Z lengths of the cubic / box-shaped connective struts can be defined here.}
\label{cubes_dialog}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/create_3D_primitives/cubic.png}
\caption{Example of cubic connective strut.}
\label{cubic}
\end{figure}
\subsection{Create icosahedrons / spheres}
Different options are available, and in particular, the icosahedrons / spheres can be subdivised a number of times, and their radius can be set as well(see Fig. \ref{icosahedrons_dialog} p.\pageref{icosahedrons_dialog} and Fig. \ref{spheric} p.\pageref{spheric}).
\begin{figure}
\centering
\includegraphics[scale=0.5]{images/09/create_3D_primitives/icosahedrons_dialog.png}
\caption{Create icosahedrons / spheres dialog. The number of subdivison, the radius and the type of 3D primitive (icosahedron or sphere) are defined here.}
\label{icosahedrons_dialog}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/create_3D_primitives/spheric.png}
\caption{\textbf{Top line:} from left to right: icosahedrons with subdivision levels of 0, 1, 2 and 3 . \textbf{Bottom line:} from left to right: spheres with subdivision levels of 0, 1, 2 and 3 .
}
\label{spheric}
\end{figure}
%\section{Delete small objects.}
\section{Select small objects}
This option permits to select all surface objects that contain less than a given number of triangles (see Fig. \ref{delete_small_objects} p.\pageref{delete_small_objects}). Selecting small objects can used subsequently to the surface decomposition tool, in order to remove small objects which are considered as not "relevant" or as "dirt" inside a complex 3D surface (see for instance Fig. \ref{cicada} p.\pageref{cicada}) and that would have been hard to remove otherwise.
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/remove_small_objects/triangles.png}
\caption{Select objects having a small number of triangles window.
}
\label{delete_small_objects}
\end{figure}
\section{Select small volumes}
This option is very similar to the one described just above, and permits to select all surface objects, the volume of which is less than a given value(see Fig. \ref{delete_small_volumes} p.\pageref{delete_small_volumes}). This way to select objects can used after the surface decomposition tool, in order to remove small objects which are considered as not "relevant" or as "dirt" inside a complex 3D surface (see for instance Fig. \ref{cicada} p.\pageref{cicada}) and that would have been hard to remove otherwise.
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/remove_small_objects/volume.png}
\caption{Select surfaces having a small volume window.
}
\label{delete_small_volumes}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.35]{images/09/remove_small_objects/cigale.png}
\caption{\textbf{A:} A surface object (a cicada) is "dirty" and contains many non-relevant objects which are not connected to the insect. \textbf{B:} The surface was decomposed into independant non-connected objects. \textbf{C:} Surface objects containing less than 5000 triangles are selected and can then be removed by pressing "DEL". An alternative could have been to select all surface objects, the volume of which is less than a given value. \textbf{D:} All surface objects containing less than 5000 triangles were removed. \textbf{E:} Two other larger and "non-relevant" objects were manually selected and deleted to further clean the cicada.
}
\label{cicada}
\end{figure}