16 votes
Accepted

Visualizing the Lane-Riesenfeld Algorithm

The Lane-Riesenfeld algorithm subdivides the control polygon of a B-spline to create a new control polygon with the same limit spline. It's made up of two steps: first, duplicating all of the control ...
gilgamec's user avatar
  • 881
8 votes
Accepted

How do people come up with subdivision schemes?

The subdivision schemes are not arbitrary. Catmull-Clark, arguably the most used subdivision scheme, generalizes bicubic B-splines to meshes of arbitrary topology. Most, other subdivision schemes ...
Reynolds's user avatar
  • 1,089
5 votes
Accepted

What subdivision algorithm advances have occurred since Catmull-Clark?

More of an extended comment than an answer: What do you mean by "optimization and accuracy"? Do you mean computational efficiency for some particular application, like ray tracing, physical ...
Etienne's user avatar
  • 166
4 votes
Accepted

If you can use subdivision surfaces for 2D curves

Subdivision can be used for curves in 2D just as easily as for surfaces in 3D. Usually the subdivision algorithms applied to 2D are called subdivision curves. Subdivision curves do not suffer from the ...
Reynolds's user avatar
  • 1,089
4 votes
Accepted

Where do the coefficients in the Catmull-Clark subdivision algorithm come from?

I'm just going to add a few more details to the paper that Stefan linked to. First of all, the matrix $H_1$ displayed in the paper is incorrect; every element should be multiplied by a factor of $\...
eigenchris's user avatar
4 votes

What is this triangle sub-division scheme called?

Instead of subdividing until reaching certain edge length on screen, you should look into GPU Gems 2 article "Adaptive Tessellation of Subdivision Surfaces with Displacement Mapping" by Michael ...
JarkkoL's user avatar
  • 3,596
3 votes
Accepted

Subdivision scheme where the faces and edges have weights (not necessarily scalar weights)

What you are looking for is semi-sharp creases. You can find it in section 3 of this paper: https://graphics.pixar.com/library/Geri/paper.pdf Basically, each edge is given a sharpness value $s$. This ...
Reynolds's user avatar
  • 1,089
3 votes

Where do the coefficients in the Catmull-Clark subdivision algorithm come from?

The derivation is presented in the original paper that introduced CC subdivisions as a generalisation of B-Spline patches: https://people.eecs.berkeley.edu/~sequin/CS284/PAPERS/CatmullClark_SDSurf.pdf
Stefan Werner's user avatar
2 votes

B-Spline patches on the tessellation shader. How to get the control points

For regular quad faces, what you want to do is send the vertices for the quad you're evaluating and the eight neighboring quads around it: a total of 4x4 vertices. The B-spline needs to know where the ...
Nathan Reed's user avatar
  • 24.7k
2 votes

Problems with Subdivision Surfaces

Both T-splines and subdivision surfaces are capable of handling an arbitrary topology input mesh, whereas NURBS can only handle meshes with regular topology. Complex NURBS objects are therefore made ...
Reynolds's user avatar
  • 1,089
1 vote

How do I evenly subdivide the projection of a circle in 3D?

When doing it inside shader stages, one possibility is the following using vertex- and tessellation-shader (only one triangle (3 lines) are needed): Within the vertex shader you can calculate the NDC ...
Thomas's user avatar
  • 1,027
1 vote
Accepted

Can surface subdivision results be predicted?

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 ...
Reynolds's user avatar
  • 1,089
1 vote
Accepted

Catmull–Clark issue with plane corners

The procedure only works for closed meshes or closed parts of a mesh with boundaries. For vertices $V_{i}$ on the boundary of an mesh you have to use the following rules: $$V_i = \frac{V_{i-1} + 6 V_{...
Reynolds's user avatar
  • 1,089
1 vote
Accepted

How to smooth out a voxel grid?

If you have this data in a 3d array where a block is a 1 and no block is a 0 you can apply a 3d blur and then set all voxels that are left with a value higher than 0.5 to 1 and those that arent to 0. ...
Sebastián Mestre's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible