Donnerstag, 18. Juni 2009

Recurcive and Adaptive Catmul Clark Subdivision Surface ::: C&C Basis

C&C Basis ::: Purely Geotrical Researches

My goal is to achieve a recursive, non-uniform & adaptive catmul-clark subdivision face script in Maya/Mel/Python.
In that way I hope have a control about the remeshing method face by face.
Recursive means that Catmul-Clark Subdivision method use several iterations.
Non-uniform means that I want to achieve a gradient between a staight (zum beispiel: a cube, c&c subdiv=0 figure 1) and a smooth geometry (zb: a cube, c&c subdiv = 1).
Adaptive means that I want to adapt this subdivision to my geometry.









So first, let take a look inside the Catmul-Clark Subdivision. How does it work?
Sources: Rapid Evaluation of Catmul-Clark Subdivision Surfaces, by Jeffrey Bolz and Peter Schröder

The Catmull–Clark algorithm is used in subdivision surface modeling to create smooth surfaces. It was devised by Edwin Catmull (of Pixar) and Jim Clark in 1978 as a generalization of bi-cubic uniform B-spline surfaces to arbitrary topology. In 2005, Edwin Catmull received an Academy Award for Technical Achievement together with Tony DeRose and Jos Stam for their invention and application of subdivision surfaces. Wikipedia.


Catmull–Clark is a recursive algorithm using this following 4 steps refinement scheme:
Step#01: Draw the Face-point F
Add a Face-point F, as a centroid of all original points for the respective face.







Step#02:
Draw the Edge-point E
Add an Edge-point E, as the average of the two neighbouring face points, and of the two original vertex of the edge.






Step#03: Draw the new Vertex V

Step#03.01: Add a point P, as centroid of all surrounding vertices of the face






Step#03.02:
Add a point Q, as centroid of all surrounding Face-Point F






Step#03.03:
The new vertex V is the centroid of these tree points, P (weight=1), Q (weight=1) and S (weight n-2), where S is the position of the original vertex and n the number of edges of this vertex.




Step#04: Create the new edges of the polygon

Connect the point E, with the two points F and the two points V








Variante #02: This remeshing method is not necessary uniform. We can for example subdivide all the neighbouring faces, and keep the middle face without any transformation. This face is called an “open face”. In this case, the calculation is a little bit different.
Step 01#: In this case, the point-Face is the same as the original method for all the faces except the open-face : Add a Face-point F, as a centroid of all original points for the respective face.
Step 02#: In this case, the Edge point is simply the middle of the edge.
Step 03#: New Vertex Vi
for each original point of the open face, Si, draw a new point Vi, centroide of Si (weight=6), Si+1 (weight=1) and Si-1 (weight=1). With Si+1 the next point of the open surface and Si-1, the previous point.
Step#04: Create the new edges of the polygon (in the case called “soft-edges”)
Just draw a line between the Face point F and the Edge point E, and two lines between the Edge point E and the two new vertices, Vi+1 and Vi-1.










0 Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]

<< Startseite