Figure 2. The silhouette drawing process of a ball. final rendering result from a normal view angle, we can see that the silhouettes have been drawn. So far, we know that silhouette is actually the back faces of the model that are not covered by the front faces. This method can easily draw silhouette outlines with uniform thickness. When we write a shader programm on GPU, we can implement this effect using only two passes. B. Thickness Control of Silhouette Outlines The thickness of the silhouette outlines drawn by triangle shell technique is controllable. Since silhouettes are drawn by shifting each vertex along its normals, if we shift each vertex using different offsets, lines with variant thickness will be drawn. Therefore, to determine the offset for each vertex automatically, is our key issue. According to Goodwin's theory, the aesthetically pleasing lines seem to have a general rule that the thickness is approximately equal to isophote distance, as described in formula (1). But in practice, the line thickness is changeful, that rule is not an absolute truth. So, we proposed an approximate approach, which can give a aesthetically pleasing silhouettes rendering result, and meanwhile can be implemented in real-time. The rule put forward by Goodwin can be described intuitively as the following 4 aspects: • The farther the model is from the camera, the thinner the lines are. • Lines should be thin at detail regions, thick at relatively flat regions. • Lines should be thin at bright regions, thick at dark regions. • The thickness of lines should be clamped to a certain range. First, the farther the model is from the camera, the thinner the lines are. We make the line thickness inverse proportional to depth. In triangle shell technique, if the vertex offset is fixedly proportional to the model size, the line thickness will meet this rule naturally. Here, we shift