# Can surface subdivision results be predicted?

I just took a online computer graphics course and studied surface subdivision.

I knew that surface subdivision could update a coarse surface into a fine one, but can we predict the updated surface shape depending on the original surface?

In my point of view I dont think it can be predicted, and based on this assumption, how can surface subdivision technique be used in animations? (For example, in Geri's game, surface subdivision is used to upsample the coarse model)

• Unless subdivision algorithms involve random number generators, their results are algorithmic. They are perfectly predictable because they are a function of mathematics. So what do you mean by "predict" in this context? Dec 29, 2022 at 15:07
• In case of animation, usually vertices belong with a weight to one or multiple bones of the object. When using subdivisions of surfaces with weights, you can use barycentric coordinates of these weights and interpolate them to apply the new vertices to bones respectively. Dec 29, 2022 at 18:27
• @NicolBolas Taking Geri's Game animation for example, At first I made a coarse model of the man's head, then if I apply surface subdivision, how can I predict that this coarse model can finally be a fine model that I want? Dec 30, 2022 at 1:59
• @Thomas so you mean I can use the weights to adjust the updated subdivision? Dec 30, 2022 at 2:02
• @Lake_Lagunita: "how can I predict that this coarse model can finally be a fine model that I want?" Again, I don't know what you mean by "predict" here. You press the button to invoke the algorithm, and it shows you what it looks like. If you're using a decent modelling package, you probably can mess around with the base mesh and see the subdivided version in near-real-time. Dec 30, 2022 at 2:42

It is possible to compute the limit surface of a subdivision surface. The limit surface puts vertices at the places where they would be when the subdivision is applied an infinite number of times. The limit position of a vertex in a Catmull-Clark subdivision surface can be computed using the following stencil. Given a vertex $$v$$ on the control mesh with valency $$n$$ surrounded by edges with midpoints $$m_i$$ (i being the i-th edge) and faces with centers $$c_i$$, we can find (or project to) the limit position $$p$$ as:

$$p = \frac{n-5}{n-3} v + \frac{4}{n(n+5)}\sum^{n-1}_{i=0}(m_i + c_i)$$

This works even for irregular points and control meshes containing arbitrary valency polygons. Then given a $$k$$ times subdivided subdivision surfaces you can project all point to the limit to see where they would end up on the limit surface. This formula is taken from https://charlesloop.com/SGA09.pdf end of section 3.2.

In the regular regions the surface is even more predictable as there the limit surface is a uniform bicubic B-spline. These splines can be directly computed and evaluated from the control net.

I knew that surface subdivision could update a coarse surface into a fine one, but can we predict the updated surface shape depending on the original surface?

For me it does not sound like a question like: are the new generated surface vertices predictable. It more sounds like: how can I predict the new generated surface with respect to the neighborhood surface?

Trying to answer it

The new generated surface usually depends on the tangents of the original surface. These tangents are often defined by normal vectors which are interpolated with respect to different algorithms. For example the algorithms "Curved PN triangles" and "Gregory patches" smooth the surface with respect to bezier curves. Other techniques like "displacement mapping", or different noise algorithms like "perlin noise", "simplex noise", "white noise" and a lot more add details to the new generated surface. What you do at the end, depend on your needs.

how can surface subdivision technique be used in animations?

Animation of character is usually based on skeletons like our physical human body works. The bones hold our body, the muscles change the orientation of these bones with respect to the neighboring bones. The surface above the bones (like our skin) are connected to one or more bones by having weights summed up to 1. The new generated vertices can use interpolation methods to define their weights. Alternatively textures can be used holding weight information about surrounding bones. Therefore the interpolated texture coordinates are used to find the correct pixel in the texture.