Hierarchical B-Splines

Josh Taylor's CS779 Webpage


The purpose of this project is to implement Hierarchical B-Splines. The use of a Hierarchical B-Splines (HBS) is local refinement, the ability to manipulate an area on a surface in such a way that you can contain or control the area affected.

A HBS starts as a simple B-Spline Tensor Product Patch. The local refinement property is obtained using overlays, a refined B-Spline Tensor Product Patch. The surfaces are stored relative to one another creating a Hierarchy.


An overlay on an overlay, note the decreasing patch size

Refinement limits the area of effect of curve manipulations. The more refined a curve is the more local the changes and the sharper the peaks that can be created, as shown in the image below. We start with a (N x N) blank patch (I use 6x6 for simplicity, but the editor can handle any N), Overlays are placed through menu commands and positioned using the keyboard. When an overlay is placed on the desired section of curve, you commit it and its derived coordinates are determined by its parent surface.


3 peaks at increasing refinement (sharper peaks are more refined)

 

Offset referencing is used to prevent tears in the curves and to maintain the hierarchy of overlays. When a curve is edited, all its overlays must move accordingly. In the screen shots below, I created a sharp peak, then I edited the base curve and the peak moved accordingly without a tearing in the surface. Editing is done using control points


a sharp peak


The peak after editing the root surface


Completed

Extras

Constraints

 


Josh Taylor
Graduate Student (SCG)
University of Waterloo
jktylr@hotmail.com