Subdivision schemes work by considering the vertices and their connectivity information to calculate averaging weights.

However, other than specifying which vertices are connected, and perhaps which weights to use (in the case of loop subdivision for example), edges don;t really play a role.

Same as faces. I am wondering if there is a subdivision scheme that attaches "weights" (and weights could be either scalars or matrices or similar vector fields) and has the faces and edges have a controllable effect on the convergence.

For example in the case of meshes, consider a cube. If the weights of the faces are 0, then the subdivision is just a regular subdivision. But if the weights of each face go towards infinity, then the limit of the convergence should be the original cube.

I am trying to find something like this, but I cannot find any associated literature with the topic.


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 can either be a integer or a floating point value. This value signifies how many subdivision steps this edge will be subdivided using sharp-subdivision rules. When subdividing an edge with sharpness $s$, it subdivide into two edges with sharpness level $s-1$. Until $s$ is 0 and the edge will be subdivided as normal.For fractional levels the last subdivision with $s \in [0,1]$ the vertices will obtain a blended position between the subdivided $p$ and the sharp position $p_s$, i.e. $(1-s)p + s p_s$.

The sharp subdivision rules boil down to the following. Vertices at the end of an sharpness tagged edge will remain in the same position and vertices on the sharp edge are refined using the stencil [1, 6, 1]/8 applied to previous, current and next points on the tagged curve respectively. New points are inserted at midpoints of edges.

This scheme can be generalized to faces by propagating the sharpness value of a face to its edges.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.