From: gfo@de-montfort.ac.uk (Gary Fozzard)
Newsgroups: comp.sys.sgi
Subject: Re: NURBS basis function on SGI's
Date: 10 Nov 92 00:47:43 GMT



On Mon, 9 Nov 1992 C.G.C.vanDijk@nl.tudelft.io wrote:

> > I'm a grad student at UCCS (The University of Colorado at Colorado Springs),
> > and I'm doing a NURBS project for my geometric modeling course.  We're using
> > some Indigo SGI's, and I'm running into a problem with trying to figure out
> > what the basis function should be.
> 
> After three years of working with Nurbs as a PhD student, I now have the
> opinion that this is an elusive and tricky subject, and certainly not easy.
> A professional using Nurbs cannot rely on Foley and van Dam alone.  Farin's
> 'Curves and Surfaces for Computer Aided Geometric Design' 2nd (3rd?) edition,
> Academic Press, is becoming the standard reference work.
> 
> Anyway, the basis functions of a Nurbs are defined by their (polynomial)
> degree and a knot partition (i.e. a knot vector and an index where to start
> on this knot vector).  That is it - for everybody, including Foley/vanDam,
> Farin and SGI.  It might be true that everbody uses a different notation, with
> indices starting at zero or one, or using an 'order' (degree+1) instead of
> a degree, or implicit or recursive formulas; but all these formulas are the
> same, and with some maths can be converted to each other.
> 
> It is common to use a 0/0 = 0 convention, but very careful specification of
> the start and end value of indices in the recursive formula also works.
> 
> On your Indigo, you can specify the degree and the knotvector, thereby making
> any legal B-spline basis function that exists.  You can even give weights to
> your control points, seen by some as relative scaling of the basis functions.
> The trouble starts when you want to know where to place your control points.
> That depends all on your application; the field of CAGD has been trying to
> figure this out for over thirty years now.
> 
> I do not think that more _real world_ examples in the Iris manuals will solve
> your problem for you.  Look at it this way: the Iris manual tells you how to
> specify the color for one pixel.  But if you do not get into Computer Graphics,
> you can never write your own ray-tracer by using the Iris manuals alone..
> 
> Hope I did not put you off :-)
> 
> Casper
> 
> Casper G.C. van Dijk               "Broken words,
> Delft University of Technology      never meant to be spoken"
> the Netherlands                                    Bob Dylan
> 

No not at all!  I have been looking at NURBS for only one year
and have found a way to make the perform the way I want about
30% of the time!    This came about through a lot of hard work
at the terminal I can tell you.    In the end We decided to stick with
our own suface topologies.  

We have an FE model of garment drape which is essentially I triangulated
grid.  We had two options for rendering this which were either direct
gouruad shading or whatever.. or the interpolation of a NURBS surface
throught the points in the grid.

I got GOOD results with NURBS for simple shapes but have been only
80% there when trying to trim a nurbs surface to look like a garment
panel!  Hence we have dropped NURBS for a bit till I can dedicate
a year of my life to getting it right.!

Bye the way, in case you were wondering why we ever looked at NURBS
for this app anyway:

1) The NURBS library does nice things like autotriangulation of the
mesh with viewing position.

2) the trimmed nurbs would allow us to use exact pattern data to
trim the panel instead of the rather poor resoultion of the FE
mesh.

Oh well, best get back to it..


+--------------------------------------------------------------------+
+ Dr Gary      Post:  CIMTEX, De Montfort University Leicester,      +
+ Fozzard             The Gateway, LEICESTER LE1 9BH, UK.            +
+ CAD          Phone: +44 533 577586 (direct dial)                   +
+ Cell         Email: gfo@uk.ac.dmu                         (JANET)  +
+ Coordinator         gfo@dmu.ac.uk                 (International)  +
+--------------------------------------------------------------------+