Daniil Rodin for CAGD course, 2016 Gregory Patches Daniil Rodin for CAGD course, 2016
Problem cases: Curve Nets Let us examine the following problem: Given a curve net, find a smooth surface that interpolates it.
Problem cases: Curve Nets Simple case: given four curves σ(u, 0), σ(u, 1), σ(0, v), σ(1, v) find a smooth surface σ(u, v) that interpolates them.
Problem cases: Curve Nets Simple case: given four curves σ(u, 0), σ(u, 1), σ(0, v), σ(1, v) find a smooth surface σ(u, v) that interpolates them. “Simple” solution: σ(u, v) = lerp_v(σ(u, 0), σ(u, 1)) + lerp_u(σ(0, v), σ(1, v)) - lerp_u(lerp_v(σ(0, 0), σ(0, 1)), lerp_v(σ(1, 0), σ(1, 1)) Where lerp_t(x, y) = (1 - t)x + ty This is called a bilinear Coons patch.
Problem cases: Curve Nets It looks nice, but we cannot connect such patches with G1 continuity, because cross-boundary derivatives depend on data outside the boundary. This can be solved by choosing different blending functions, ones that have zero derivatives at endpoints (e.g. Hermite blending functions).
Problem cases: Curve Nets
Problem cases: Curve Nets This requires additional input of mixed derivatives (also knows as twist vectors).
Problem cases: Curve Nets Also, it cannot handle cases like this, since cross-boundary derivatives of neighboring patches must agree.
Problem cases: Subdivision Let us consider a more practical case: subdivision. Subdivision is one of the popular modeling techniques. It takes a rough polygonal model of any form or topology and smoothens it.
Problem cases: Subdivision Catmull-Clark subdivision is one of the most popular techniques. It has a simple recursive algorithm and its limit surface is actually bi-cubic B-spline surface with C2 continuity except at some points where it has C1. The limit surface can also be easily evaluated explicitly… but not everywhere.
Problem cases: Subdivision Catmull-Clark subdivision (and many others) is designed mainly for quad-based meshes and behaves really well when everything is made of quads and each vertex has exactly 4 adjacent edges: C2 continuity and fast evaluation everywhere. But it is not always the case.
Problem cases: Subdivision Two main concerns: Non-rectangular patches Vertices with N != 4 adjacent edges (called extraordinary vertices) Everywhere else is a smooth easily-evaluated paradise. Basically, we have good regions (brown) and not-so-good ones (violet).
Problem cases: Subdivision Actually, it is very similar to what we saw earlier.
Problem cases: Subdivision A simple way to overcome the problem: just subdivide! All non-rectangular patches are gone after the first iteration. All the extraordinary vertices are isolated after two iterations (after which we can evaluate the adjacent patches) Looks great, but… everything is now 16 times harder to compute. We can definitely do better.
First approach: Bicubic Bezier patches At the borders we have bicubic Bezier patches, so let us try to use bicubic Bezier patches near extraordinary vertex:
First approach: Bicubic Bezier patches There are control points that have to satisfy continuity conditions with two different neighbors at the same time. Can we do something about it?
Gregory Patch idea
Gregory Patch idea
Gregory Patch
Gregory Patch Observations and interesting facts: It behaves as a cubic Bezier on the border Singularities at the corners Actually a rational 7x7 Bezier patch
Gregory Patches Advantages: Allow independent processing of edges (main reason to use it) Can approximate an extraordinary patch with only 20 control points Disadvantages: Internal derivatives are complicated (but we want other derivatives anyway) Corners are singular (computations need to be done more carefully)
Your Questions
Thank you!