Presentation is loading. Please wait.

Presentation is loading. Please wait.

Daniil Rodin for CAGD course, 2016

Similar presentations


Presentation on theme: "Daniil Rodin for CAGD course, 2016"— Presentation transcript:

1 Daniil Rodin for CAGD course, 2016
Gregory Patches Daniil Rodin for CAGD course, 2016

2 Problem cases: Curve Nets
Let us examine the following problem: Given a curve net, find a smooth surface that interpolates it.

3 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.

4 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.

5 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).

6 Problem cases: Curve Nets

7 Problem cases: Curve Nets
This requires additional input of mixed derivatives (also knows as twist vectors).

8 Problem cases: Curve Nets
Also, it cannot handle cases like this, since cross-boundary derivatives of neighboring patches must agree.

9 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.

10 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.

11 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.

12 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).

13 Problem cases: Subdivision
Actually, it is very similar to what we saw earlier.

14 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.

15 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:

16 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?

17 Gregory Patch idea

18 Gregory Patch idea

19 Gregory Patch

20 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

21 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)

22 Your Questions

23 Thank you!


Download ppt "Daniil Rodin for CAGD course, 2016"

Similar presentations


Ads by Google