Among the many subdivision surface methods we chose the Loop's method. We did that because it is the simplest known method that produces smooth surfaces.
The method starts with a coarse triangular control mesh. At each level of subdivision, we replace every triangle by four smaller ones. We do this by introducing vertices into middle of the edges, and then we modify the locations of each vertex by taking a weighted average of the locations of its neighbors and the vertex itself.
This subdivision process, when continued, will converge to a surface that's tangent plane continuous everywhere.