SubD Ex;port

 From:  Michael Gibson
478.14 In reply to 478.13 
> Isn't it "just" making a NURBS cage with a control point at the location of each
> vertex in the control mesh?

Well, to begin with a NURBS cage is limited in that it has to have a rectangular grid layout, you can't just connect any arrangement of points together to make a standard NURBS cage. It has to be a regular layout, like a grid of 16 points in a 4 x 4 layout for example. However, the first subdivision for Catmull-Clark results in all quad polygons which then can give a grid layout.


> Seams like sub-d curve algorithms are nearly identical to NURBS' b-spline interpolation algorithm, eh? ;)

It is identical in areas of the sub-d control cage that have a simple quad layout - that is where every vertex is a part of 4 faces around the vertex. The problem is in areas where there is a different number than 4 faces around a single vertex, faces that have these vertices in them are not identical to a NURBS surface and have to have something special done to them to be represented as a NURBS, like some kind of approximation.


> If you were to do the same with the convert-to-NURBS-and-trim-technique, you'd have
> to be able to do the joined-into-one-object-thing, which you just told me was impossible, right?

Yes, sorry I wasn't clear - the convert-to-NURBS-and-trim-technique would not give you any new ability to edit the surface by moving points on trim curves, trim curves would operate the same way as now. What it would give you is a new way to edit the shape of the underlying surface of the trim.


> Therefore, using the car example again, you couldn't use it to cut out the wheel
> holes or windows or doors or headlights, or in any other way make the general
> shaping, because these holes would have no effect on the base mesh that
> describes the general shaping of the car... Am I right?

You could still use trims to cut out wheel holes or windows or doors or headlights just as you can do it now. You just would not edit the surface by yanking on those holes directly, you would edit the surface by editing the control cage, and then the trim curves would either squish with the edits to the underlying surface, or they could be reapplied through new intersection calculations by a construction history operation mechanism.


The only way that I can see for getting trimming plus direct natural editing of the surface by the trim curves is to actually divide the base geometry into smaller pieces during the trim, like polygon trimming does. But this creates a huge problem because after a few trims in the same area you get quite a large number of little teeny-tiny slivery fragments. Tons of little tiny fragments begin to get difficult to work with in several ways - they put a lot more stress on a lot of procedures. For example the more little tiny slivery pieces you have the more likely that a boolean operation is going to have a difficult time processing them and figuring out which pieces are supposed to be sliced cleanly. Fillets are difficult to calculate across a ton of little tiny surfaces instead of across a single larger surface with trim curves on it, etc...

- Michael