1

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)

  • 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? – Nicol Bolas Dec 29 '22 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. – Thomas Dec 29 '22 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? – Lake_Lagunita Dec 30 '22 at 01:59
  • @Thomas so you mean I can use the weights to adjust the updated subdivision? – Lake_Lagunita Dec 30 '22 at 02: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. – Nicol Bolas Dec 30 '22 at 02:42
  • @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 Dec 30 '22 at 08:10
  • @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 Dec 31 '22 at 08:50
  • @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 Dec 31 '22 at 11:19
  • @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 Dec 31 '22 at 14:22

2 Answers2

1

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.

Reynolds
  • 1,238
  • 6
  • 13
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.

Thomas
  • 1,245
  • 1
  • 4
  • 16