I’m trying to replicate a workflow similar to what Alias does.
In Alias, when you create a fillet between two theoretical surfaces, the fillet command generates the fillet boundary as a Bezier curve and uses that curve to trim the surfaces. As a result, the fillet connects to a trimmed edge that may have many control points, but the boundary itself remains a clean Bezier.
When I try to achieve the same thing in Rhino, the fillet edge is created as a multi-span surface from the start. On top of that, I don’t see a way to fit or enforce a Bezier curve onto the surface edge (if that’s even possible).
Has anyone found a way to get closer to the Alias-style behavior in Rhino, or is this a fundamental limitation of Rhino’s fillet workflow?
The only way I’ve found to deal with this is to change the degree of the multispan fillet in U to whatever you think will achieve tolerance (usually I just go straight to degree 7) and then remove all the knots from the multispan, leaving a single span degree 7 in U and a weighted V.
I’ve yet to come across a situation where the de-knotted multispan doesn’t achieve the same tolerance as the original multispan which begs the question why do we have to have these awful multispans in the first place?
Unfortunately it’s a long-winded process to convert all fillet segments if you have a long fillet run.
Well, this is the issue! And what Alias does is the opposite of it.
Instead of manually rebuilding the fillet into a single span after the trim, it defines the fillet boundary as a Bezier curve from the start and trims the parent surfaces with it. The Edge continuity G0 (atleast) is preserved because the boundary is trimmed from Bezier on Surface.
In Rhino, once we rebuild or de-knot the multispan fillet into a single span, we’re forced to re-match, and in almost ALL cases that introduces deviation. If Rhino could trim the base surfaces directly with a Bezier fillet boundary—rather than generating a multispan surface first—it would remove a lot of manual cleanup and make Class-A single-span workflows far more practical.
That would be a huge step forward for high-quality surfacing in Rhino.
In general trimming a surface with a single span (Bezier) curve will not result in a edge which is a single span curve (or exactly a NURBS curve) unless the shape of the surface is changed. That is how the basic math of NURBS curves and surfaces works. The edge curve can be approximated by a Bezier curve but the deviation from the “exact” trimmed edge may be larger than is acceptable.
An exception to the statement above is IF the trim curve exactly coincides with an isocurve of the surface then the trimmed edge will be exactly a NURBS curve.
So the question is what is Alias doing? Are you currently also working in Alias? If so create fillets in both Rhino and Alias using exactly the same geometry as the input?
Another possibiliity, particularly if you are not currently using Alias, is the situation you remember from Alias is different that what you doing in Rhino.
I used to use ICEM Surf and although the fillets were single span the edges of all trimmed (faced) surfaces were always multispan. Exactly the same as in Rhino.
I would encourage you to try the de-knotting and use a default value of degree 7 for U. I personally haven’t found any converted surfaces that are out of tolerance afterwards.
But, yes, it would be nice if the fillet tool spat out single spans instead of multispans!
I never said it would create a single-span edge. If you look at the red surface in the image I shared earlier, the trimmed edge clearly consists of multiple control points. However, in Alias, the fillet surface itself (blue) is single span and G2 continuous straight from the command.
I’m attaching a video from Alias that demonstrates this behavior and the functionality I’m referring to.
In ICEM (I guess Alias too) you get direct control over the U/V build of the fillet.
In Rhino this is hidden from the user and appears to be coded to create degree 3 multispan surfaces. Where it deviates from the file tolerance it’ll add in knots or break into a new degree 3 multispan. We just need this engine exposed to the user to decide how the fillet should be constructed and then have feedback on what tolerance has been achieved with those settings.
Hopefully @menno will save us from this multispan hell one day, he’s done a fantastic job fixing the patch tool! Thanks Menno!
In general it is not possible to exactly match a single span surface to a multispan curve or trimmed edge which is a multispan curve. That is why my statement above is important.
I agree. In the video it appears they are using a tool similar to RefitTrim to convert a trimmed surface to an untrimmed surface.