Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Subdivision

Surface subdivision is a geometric modeling technique that defines smooth curves or surfaces as the limit of a sequence of successive refinements.

Developed as a generalization of spline surfaces, subdivision allows for the representation of complex, arbitrary control meshes while avoiding the topological constraints and "cracking" issues often associated with traditional Non-Uniform Rational B-Splines (NURBS).

Various algorithms have been established to handle different mesh types and desired continuity:

  • The Catmull-Clark scheme is frequently used for quadrilateral meshes to produce continuous surfaces, while
  • The Loop subdivision scheme is a popular approximating method specifically designed for triangular meshes.

By iteratively applying simple refinement rules—typically involving a "splitting" step to increase resolution and an "averaging" step to relocate vertices—subdivision transforms a coarse initial shape into a highly detailed, smooth limit surface suitable for high-end animation and scalable rendering.

Octa Loop

This example uses Loop subdivision to transform an octahedron into a sphere. The results below are based on Octa-Loop Subdivision Scheme (GitHub).

We create a unit radius octahedron template, and successively refine it into a sphere. The sphere is a useful baseline subject of study because it:

  • Can easily be approximated by a voxel stack at various resolutions,
  • Can easily be approximated by a finite element mesh,
  • Has a known analytic volume, and
  • Has a known analytic local curvature.

Base Octahedron

We created a unit radius template, octa_base.obj, with contents listed below:

v 1.0 0.0 0.0
v 0.0 1.0 0.0
v -1.0 0.0 0.0
v 0.0 -1.0 0.0
v 0.0 0.0 1.0
v 0.0 0.0 -1.0
f 1 2 5
f 2 3 5
f 3 4 5
f 4 1 5
f 2 1 6
f 3 2 6
f 4 3 6
f 1 4 6

Refinement

The refinement below was created with MeshLab 2022.02, Subdivision Surfaces LS3 Loop, based on Boye et al.1

Items with G are not on the repository; they are on Google Drive because of their large file size.

Geometric Metrics

  • The surface area of a sphere is , and when , .
  • The volume of a sphere is , and when , .

Using the Euler Characteristic for a sphere (), we can verify the progression from the base octahedron ():

Iteration ()Vertices (​)Edges (​)Faces ()Calculation ()
0 (Base)61286+12=18
118483218+48=66
26619212866+192=258
3258768512258+768=1,026
41,0263,0722,0481,026+3,072=4,098
54,09812,2888,1924,098+12,288=16,386
616,38649,15232,76816,386+49,152=65,538
765,538196,608131,07265,538+196,608=262,146

The recursive relationships for a closed triangular mesh:

  • Faces:
  • Edges:
  • Vertices:

Sculpt Baseline

We created Sculpt baseline meshes with the sculpt_stl_to_inp.py script as

(atmeshenv) ~/autotwin/mesh/src/atmesh> python sculpt_stl_to_inp.py

and create standard views in Cubit with

Cubit>
graphics perspective off  # orthogonal, not perspective view
up 0 0 1  # z-axis points up
view iso # isometric x, y, z camera
quality volume 1 scaled jacobian global draw histogram draw mesh list

to produce the following results:

iterimagecellsnodes nnpelements nelelement density nel
0sculpt0035x35x358,6967,3435,507
1sculpt0128x28x288,1336,9602,365
2sculpt0226x26x267,8336,7441,762
3sculpt0326x26x267,7316,6721,630
4sculpt0426x26x267,7316,6721,600
5sculpt0526x26x267,7316,6721,596
6sculpt0626x26x267,7316,6721,595
7sculpt0726x26x267,7316,6721,595

References

  • Octa-Loop Subdivision Scheme (GitHub)
    • Documentation detailing the Octa-Loop scheme, a variant of Loop subdivision optimized for octahedrally refined meshes.
  • Subdivision Surfaces Lecture Notes (Stanford University)
    • A comprehensive academic overview of subdivision concepts, including the mathematical foundations of the Catmull-Clark and Loop schemes.
    • Stanford cs468-10-fall Subdivision http://graphics.stanford.edu/courses/cs468-10-fall/LectureSlides/10_Subdivision.pdf and Google Drive repo copy
  • Catmull–Clark Subdivision Surface (Rosetta Code)
    • A technical resource providing algorithmic steps and multi-language code implementations for the Catmull-Clark subdivision process.
  • Recursively Generated B-Spline Surfaces (Original Paper)
    • The seminal 1978 paper by Edwin Catmull and James Clark that introduced the method for generating smooth surfaces from arbitrary topological meshes (referenced within the other materials).
  • Catmull, E., & Clark, J. (1978). Recursively generated B-spline surfaces on arbitrary topological meshes. Computer-Aided Design, 10(6), 350-355. https://doi.org/10.1016/0010-4485(78)90110-0
  • Loop, C. (1987). Smooth subdivision surfaces based on triangles [Master's thesis, University of Utah]. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/thesis-1.pdf
  • https://docs.juliahub.com/Meshes/FuRcu/0.17.1/algorithms/refinement.html#Catmull-Clark

  1. Boyé S, Guennebaud G, Schlick C. Least squares subdivision surfaces. In Computer Graphics Forum 2010 Sep (Vol. 29, No. 7, pp. 2021-2028). Oxford, UK: Blackwell Publishing Ltd.