<p>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 <span class="math-container">$v$</span> on the control mesh with valency <span class="math-container">$n$</span> surrounded by edges with midpoints <span class="math-container">$m_i$</span> (i being the i-th edge) and faces with centers <span class="math-container">$c_i$</span>, we can find (or project to) the limit position <span class="math-container">$p$</span> as:</p>
<p><span class="math-container">$$p = \frac{n-5}{n-3} v + \frac{4}{n(n+5)}\sum^{n-1}_{i=0}(m_i + c_i)$$</span></p>
<p>This works even for irregular points and control meshes containing arbitrary valency polygons. Then given a <span class="math-container">$k$</span> 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 <a href="https://charlesloop.com/SGA09.pdf" rel="nofollow noreferrer">https://charlesloop.com/SGA09.pdf</a> end of section 3.2.</p>
<p>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.</p>

CC BY-SA 4.0
2023-01-03T11:15:36.933Z
2023-01-04T08:26:29.727Z
2023-01-04T08:26:29.727Z
Reynolds
<blockquote>
<p>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?</p>
</blockquote>
<p>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?</p>
<p><strong>Trying to answer it</strong></p>
<p>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 &quot;Curved PN triangles&quot; and &quot;Gregory patches&quot; smooth the surface with respect to bezier curves. Other techniques like &quot;displacement mapping&quot;, or different noise algorithms like &quot;perlin noise&quot;, &quot;simplex noise&quot;, &quot;white noise&quot; and a lot more add details to the new generated surface. What you do at the end, depend on your needs.</p>
<blockquote>
<p>how can surface subdivision technique be used in animations?</p>
</blockquote>
<p>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.</p>

CC BY-SA 4.0
2022-12-31T09:10:20.763Z
2022-12-31T09:10:20.763Z
Thomas
<p>I just took a online computer graphics course and studied surface subdivision.</p>
<p>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?</p>
<p>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)</p>

CC BY-SA 4.0
2022-12-29T15:07:42.037Z
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?
Nicol Bolas
CC BY-SA 4.0
2022-12-29T18:27:37.260Z
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.
Thomas
CC BY-SA 4.0
2022-12-30T01:59:21.733Z
@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?
Lake_Lagunita
CC BY-SA 4.0
2022-12-30T02:02:39.050Z
@Thomas so you mean I can use the weights to adjust the updated subdivision?
Lake_Lagunita
CC BY-SA 4.0
2022-12-30T02:42:57.813Z
@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.
Nicol Bolas
CC BY-SA 4.0
2022-12-30T08:10:46.387Z
@Lake_Lagunita please take a look at "curved PN triangles" and "Gregory patches". These are 2 algorithms to soften the surface with respect to bezier curves. Alternatively for terrains for example you can use "perlin noise" or "simplex noise" to add detail to your surface. You can also use displacement mapping to add details.
Thomas
CC BY-SA 4.0
2022-12-31T08:50:30.123Z
@NicolBolas - I think the OP wants an analytic expression for the surface, rather than a recursive evaluation. e.g., Bezier surfaces can be rendered by subdivision, but have closed expressions for a parametric point on the surface.
Brett Hale
CC BY-SA 4.0
2022-12-31T11:19:59.617Z
@NicolBolas Brett Hale 's answer is what I mean. I think the reason of using surface subdivision to refine a coarse model is to create a good model the creator wants. However this process is a recursive evaluation, it will finally come to a specific shape but it may be much more different of the shape that the creator wants.
Lake_Lagunita
CC BY-SA 4.0
2022-12-31T14:22:29.790Z
@Lake_Lagunita: A creator should be creating it inside a tool. And tools can allow them to manipulate the base surface while showing them exactly what the finished surface looks like. I don't really see what having a closed expression can accomplish that doing the subdivision won't also accomplish.
Nicol Bolas
<subdivision>
Can surface subdivision results be predicted?
Lake_Lagunita
# Can surface subdivision results be predicted?

(Asked by: username_0 on 2022-12-29)

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)

**Tags:** subdivision

> **Comments:**
> **username_1**: 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?  
> **username_2**: 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.  
> **username_0**: @username_1 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?  
> **username_0**: @username_2 so you mean I can use the weights to adjust the updated subdivision?  
> **username_1**: @username_0: "*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.  
> **username_2**: @username_0 please take a look at "curved PN triangles" and "Gregory patches". These are 2 algorithms to soften the surface with respect to bezier curves. Alternatively for terrains for example you can use "perlin noise" or "simplex noise" to add detail to your surface. You can also use displacement mapping to add details.  
> **username_3**: @username_1 - I think the OP wants an analytic expression for the surface, rather than a recursive evaluation. e.g., Bezier surfaces can be rendered by subdivision, but have closed expressions for a parametric point on the surface.  
> **username_0**: @username_1 username_3 username_3 's answer is what I mean. I think the reason of using surface subdivision to refine a coarse model is to create a good model the creator wants. However this process is a recursive evaluation, it will finally come to a specific shape but it may be much more different of the shape that the creator wants.  
> **username_1**: @username_0: A creator should be creating it inside a tool. And tools can allow them to manipulate the base surface while showing them exactly what the finished surface looks like. I don't really see what having a closed expression can accomplish that doing the subdivision won't also accomplish.  

---

## 2 answers

### Answer by username_4 on 2023-01-03. Score: 1 | Accepted answer

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.


---

### Answer by username_2 on 2022-12-31. Score: 0

> 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.


---

