UFL CISE TR 01001: Modifications of PCCM
Jorg Peters*
University of Florida
1 Introduction
This note discusses some finer points of Patching CatmullClark
Meshes pointed out in the Siggraph talk. The modifications have
been implemented and examples are posted at [1].
(1) The normal of the PCCM surface at an extraordinary point is
free to choose. In particular, we may choose it as the normal of
the CatmullClark limit surface in the extraordinary point. We give
the corresponding formula below. (2) The perturbation of the mesh
for higherorder saddle points of even valence can lead to undesir
able flatness of the surface in the neighborhood of the extraordinary
point. There is a remedy. (3) Pulling and pushing control meshes
after a subdivision step allows the distribution of curvature e.g. cre
ating sharper features. This may be viewed,as is common in com
puter aided design, as adjusting the blend radius between primary
surfaces. This note shows how to include blend ratios, i.e. control
of the sharpness of transitions, into the PCCM framework.
2 Interpolation of the CatmullClark limit
normal
To make the normal of PCCM equal to the CatmullClark normal
we set the tangent coefficient Qlo to
o10 = Qoo + a (wnAPs3 + (A, + A+)P33),
Q3(2 + wo.)
n, = 1 +c +os( /2(9+c)),
default = 1,
A+(i,j)= An,(i,j + 1).
3 Higherorder saddle points of even va
lence
See [1] for illustrations.
A (simple) saddle point is surrounded by two dips and two raises.
A higherorder saddle point of even valence is surrounded by three
or more dips and raises. Such points occur for example in objects
of higher genus, e.g. where three or more handles meet. Since the
curvature of a smooth surface has a unique maximum and mini
mum direction if it is not zero, higherorder saddle points have zero
curvature.
Since the first piece of the boundary of a bicubic spline
patch generated by PCCM is of degree 2, zero curvature im
plies that the first piece should be a line segment. This is cor
rectly enforced by enforcing the alternating sum condition, r =
Ci=l( 1)Q (i)/n = 0. However, generating the correct
straight line segment has a sometimes undesirable shape effect by
pushing the flatness that should be local to the higherorder saddle
point out into the surrounding geometry. Note that the issue here is
beauty, not smoothness.
*NSF NYI CCR9457806
In the following we assume that r $ 0, e.g. r > 104.
One, often reasonable approach, is to simply accept a tangent
discontinuity and not enforce r = 0 noting that r decreases by
factor of 1/4 with each subdivision.
A second approach requires inserting an additional knot at u = 1
and defining a G1 rather than a C1 join across the edges of the
polynomial pieces attached to the extraordinary point.
A third approach is to render the PCCM patch without the square
[0, 1]2 (solid squares in Figure 1 of PCCM), i.e. trim out the polyno
mial piece attached to the higherorder saddle point. In place of the
hole we insert n Bezier patches of degree bi4. This increases the
degree of the boundary piece to 3 so that the curve is not necessar
ily a straight line segment if the first three coefficients are collinear.
This approach is explained below.
(1) We adjust the boundary curve in the Knot Insertion stage:
Qio + Qoo + AQio,
r2n= i(1)'Q2o(i)/n, eR
i=1
q(i) = (1)'ir20,
Q20 + Q2o + q,
Q21 + Q21 + q, Q12 + Qi + q.
Here Q2(1) = Qi2(1 1).
(2) We assemble the n bicubic patches with coefficients cij(1), I =
1,... n from the Knot Insertion stage. For simplicity we drop the
(1) that indicates the Ith patch:
C03 C13 C23 C33
C02 C12 C22 C32
C01 C11 C21 C31
C00 C10 C20 C30.
Qo02
Q01
Qoo
Q14+QZ Q4+~Qz Q24+Q22+Q44+Q42
2 2 I
Q12 Q22 Q2242
Q11 21 2+4
Q10 Q20 Q20+Q40
2
(3) We degreeraise this patch first in the udirection then in the
vdirection:
i 4i 0,... ,4, j 0,... ,3,
hij = ci1,j + cij,, i = 0,... 4, j = 0,.. .,3,
4 4
0,... 4, j = 0,... ,4
and obtain the bi4 patch
J 4 j
bij = 4hi,l + hi i
"' 4 4 '>
(4) We adjust the biquartic patches. The superscript + denotes a
shift: b (1) = bij (1 + 1) and c = cos(27r/n).
0t0
__ __p..
+i 0
>
P 0 4
bil + Brn4 ,
3c
rll = bol + (co02 col),
8
702 = ,, I (b l + b'd)/2 + g(c03
Sold,
b12 + b12 + ro2,
b2 + b21 + r02,
C02),
4 Blend ratios for CatmullClark Meshes
PCCM does not depend on the actual placement of the coefficients
in the CatmullClark mesh. In particular, we can choose differ
ent rules, say a least squares fit to data, to determine the location
of the mesh points. One option is to group the mesh nodes closer
together or spread them further apart in certain regions or to pull
points to distribute curvature. Since this basic idea was used ear
lier in the context of biquadratic splines and the application was
to define blends between polynomial patches in the sense of geo
metric design, the numbers governing the process are called 'blend
ratios'; semismooth creasing would be just as good a name for the
mechanism.
The question then is how to move a mesh predictably with the
least amount of (programming or user interaction) effort. This sec
tion describes such a mechanism in the context of the data structures
of PCCM. The work amounts to an extra pass along the boundaries
of an array for CatmullClark subdivision. The effect is to pull (or
repell) the boundary coefficients Pio of an edge towards a cubic
curve that is defined by the boundary coefficients at the coarsest
level. At the same time we pull the tangent coefficients towards
the boundary coefficients. These two effects should really have a
separate control but that would lead to more notation.
Every blendedge pq at level f has two associated scalars
a~ aqp e [0, 1].
If a q aq, = 1 the edge will be sharp. If a, = ap = 0 the
edge will be rounded. If aq = 1 and atp = 0 the edge will start
sharp and become more rounded.
Conceptually, after refining the quad to level f + 1, we also com
pute the refinement of the cubic boundary curve associated with
the blendedge. Then we average the control points of this bound
ary curve and the control points corresponding to the boundary in
the quad using aq and aqp. The only challenge is to update con
sistently in the neighborhood of vertices within the framework of
PCCM arrays.
For each quad, we store apq and aqp for each edge.
Let Pi be the ith control point, i = 0,... k, k = 2e of the
boundary in the quad at level L and P ,i and P_,i the control point
to the left and right of the boundary traversing from p to q. At
level f we first replace the oddlabeled then the evenlabeled control
points.
Fori =2,... ,k 1 andj =2i 1
C= (P + P')/2, a a aq + J aqp [0,1]
2k p 2k
Pj+l aC + (1 a)P +1
P,+ aC + (1 a)P+,
P l + aC + (1 a)Pt
* to
* 4111
I 0 4
,P
S
P
'sp
Figure 1: blend ratios
and for =1,... k 1 and j = 2i,
S=( 1 + 6Pi + Pi+)/8, a
1 + 0aC + (1 a)Pj+l
P+ + aC + (1
3 . 2k [, 1]
2kaq + 2k 0,1]
a)Pg+.
P+ L aC + (1 a)P'
For each vertex p with position P, neighbor node positions Pq
and the neighbors locally renamed v = 1,.. n (a,, determines
stretching perpendicular to edge pv) set
1 j 2k 1
Cv = (Pt + Ph)/2, a = Tav + 2k a E [0, 1]
p 4+ (1i av/n)P'+' + av/np'
+ (1 +
pl+1 au1 + a+1 pi
2
+ (1 a'a + a+1 ) (a G + (1 av)P+)
v,v+1 + aavv+iP + (1 a( ai+l)Cv, + (1 av,)a,+lC,+
+(1 a,)(1 a,+)Pl .
[1] L.J. Shiue, implementation snapshots
http://www.cise.ufl.edu/research/SurfLab/pccmdemo/index.html
