Adjustable NURBS tollerance


#1

I’d very much like some access to (adjust) the usual NURBS tollerance or threshold numbers.

The tolerance, for example, used to determine if end points are the ‘same’ when creating surfaces, is something I’d like to be able to adjust. Possibly on a ‘per’ surface creation basis.

Also, some visualization of which end points are considered within tollerance, and which are not, would be useful.

Hunting down exactly which end point is ‘slighlty’ out of tollerance, is a pain in the rear.


#2

Thank you for this suggestion, @Leith! This is a good suggestion, and I’ll add it to our backlog.

What’s the use-case for this feature in your work? Any example would be great.


#3

This particular feature isn’t so much a use-case feature as perhaps a workflow issue. When I first started using the app, I found that drawing curves that seemed to intersect with snapping, didn’t always net curves that intersect at the corners. Which, both messed up the surfacing, and also left little curve ends. Which were both a pain to track down.

It’s possible it’s because I was working on a 50 meter long object in a “meters” unit scale. It may be that the scale I was working at was mismatched with the engine’s default tolerances for snapping and such. I’m not sure. I’ll do some experimentation to see if I can get a better handle on it.

As for examples: I’ll give some images that explain a bit how my patch modeling workflow is currently going. I’m in the middle of finding a good workflow. So this is more experimental as a workflow at the moment.

Attached find two images. Both from Houdini.

I’ve imported the IGES file directly from uMake. And you can see my curves and surfaces that I used to define a surface with a freeform curve cage in uMake. The surface isoparms are very ugly. As expected from building square surfaces from longer curves that I don’t really have ideal control over. Also, the patch normals are inverted all over the place, which can’t really be seen in uMake itself so easily, but reveals on export.

Were I doing this in Maya rather than uMake, I would be:

  1. Cutting up the curves and rebuilding (replacing with a matched curve) constantly. The rebuilt curves always being uniform (reparamatarized) curves of the same complexity. Which keeps the square patch isoparms lined up with one another at the edges. This is important for being able to mesh/stitch the patches perfectly.

  2. Making sure every patch had correct normals and flipping them if they don’t. Again, so I can generate a valid mesh.

The second image is of a fully automatically re-patched version of the former. I was able to do some Houdini-foo to make up for the things I can’t easily do in uMake. The end result is a very clean quad mesh. If you look carefully, you’ll see some hard patch edge intersections have gone soft. This is actually purposeful in this case. I’ve built this mesh with 3 segments per curve and then put two levels of subdivision on top. This is because I wanted to smooth out the tangents at the patch edges. Mostly because I was lazy and didn’t do such a good job of it making the original curve cage. But if I wanted to keep my cage’s crisp edges and tangents, I could, by doing something like 10 or 20 curve divisions instead.


#4

Thanks for this insightful explanation! When we first created uMake (3 years ago), we thought the current level of curves tangency would be sufficient, but as the iPad progressed and uMake evolved, we think we can definitely do better. We will investigate further how can we improve.