brvdln
(Brv)
June 8, 2026, 9:01pm
49
Pierre Cuvilliers:
There is almost no math involved in merging the surfaces in one face pack, the face packs are already decided and tagged at that point, and all the CVs and individual surfaces have been calculated and written to memory. All that’s left to do is combining surface spans that are almost always geometrically compatible.
The slow down is because this is the only step that happens entirely by reading and writing the same Brep object in memory, rather than reading the SubD object and writing the Brep object. The amount of data that is read and written grows quadratically in the number of faces in the face pack (in the current implementation), and you get to do that in a memory allocation that is already huge (the Brep), in a data structure that is not as efficient to modify as SubDs (Brep components are in contiguous arrays, when SubD uses memory pools), and it can’t be easily parallelized because you are reading and writing the same memory at the same time.
All that to say that I agree there is a problem here, and I intend to fix it soon.
@pierrec , sorry, but I found an easier way to explain how ToNURBS works. For CAD modelers like me, you can see how ToNURBS works in this video I made. As you can see, it shows Rhino’s calculation process when the command starts.