Silhouette finding using specialized graphics hardware like OpenGL is simple to implement and not as dependent on ``clean'' models. However it is less flexible and does not allow the user to change line weight. The software methods we discussed are more complex and depend on ``clean'' models which must have shared vertices, otherwise internal boundaries can not be checked for silhouettes. However the software methods provide more flexibility and, potentially, better performance.
Model | Faces | Edges | Naive | Gauss | Num Sil |
S Crank | 24999 | 35842 | .027 | .0198 | 3873 |
L Crank | 169999 | 254941 | .165 | .096 | 12469 |
Sphere | 78804 | 117611 | .082 | .016 | 273 |
Level | No Overlap | Overlap |
12294 | 3138 | |
1 | 4844 | 2221 |
2 | 5978 | 3569 |
3 | 4666 | 5943 |
4 | 9704 | 22615 |
Table 1 presents the information of two extreme cases. These cases are based on orthographic views. Under perspective projection some form of bounding volume hierarchy would have to be employed [29] to increase the efficiency. Both the simplified and the finely tessellated versions of the crank shaft model have many sharp features, while the sphere has very small dihedral angles.
The current implementation of the hierarchy method uses an icosahedron with four levels of subdivision which generates 1280 faces. On the sphere this method is extremely efficient. When using overlapping bins, all of the edges are stored in the leaf nodes. When using non-overlapping bins only 84% of the edges are in the leaf nodes and 2132 are on level zero. Table 2 shows the number of edges stored at every level of the hierarchy for non-overlapping and overlapping hierarchies. The overlapping method did a much better job, even on the simplified crank model.
Parallelizing the silhouette extraction with the rest of the rendering can cause the extraction time to be negligible. A separate thread can extract silhouettes while the polygons are being rendered to shade the model or initialize the Z buffer. This parallelization takes only three-thousands of a second for the sphere and five one-hundredths on the large crank shaft model. If you are using software visibility algorithms this technique would probably prove to be more effective.