A few of you have asked for an update on the Rhino WIP subdivsion surface project that was mentioned at RM 2014.
We are adding a core subdivision surface object to Rhino and it will be available for testing in Rhino WIP in the next month or so. If the state of the code is solid by the time Rhino 6 ships, it will be part of Rhino 6. Otherwise it will remain in Rhino WIP until it is ready for commercial use.
The core geometry component will be the ON_SubD class which will be part of opennurbs. All subdivision code will be available in the Rhino plug-in SDK. It is not known at this time if the subdivision surface evaluation code will be part of the free opennurbs file IO source code toolkit.
The ON_SubD class will have full support for Catmull-Clark quad subdivision surfaces and for Loop-Warren triangle subdivision surfaces.
The Rhino subdivision surface control polygons have no limits on vertex valences (edge and face counts) or facet edge counts.
Boundaries, creases, corners (fixed vertices) and darts (internal creases ending in a smooth point) will be supported for both subdivision types. The limit surface curves for boundaries and creases are uniform cubic splines which means that Rhino NURBS surfaces and polysurfaces can abut subdivision surfaces and be joined into Rhino polysurface.
Fast and exact meshing of the limit surface will be used for display. In the current prototype, the limit surface mesh is calculated faster than it can be displayed. A refreshing bit of news in light of the slower polysurface meshing you are used to.
Rhino subdivision objects will be automatically converted to cubic NURBS polysurfaces or meshes when a subdivision object is selected as input to a command that is expecting a polysurface or mesh. The customer experience we want is that if a command expects a surface and something looks like a surface, then the object works in the command. (This is the way extrusion objects behave in Rhino 5)
The ON_SubD object is designed to support custom subdivision algorithms that plug-ins can provide. The SDK for custom subdivision support is currently in the conceptual phase and this feature will not be ready for Rhino 6.
Currently, the basic ON_SubD geometry object is designed, Catmull-Clark subdivision, Catmull-Clark limit surface evaluation and meshing, and conversion of Catmull-Clark subdivision objects to NURBS is finished. The Rhino object and grips will be added in the coming weeks.
This work started with Giulio’s Weaver Bird project. Giulio is taking the lead on work involving the .NET SDK. Giulio and Mikko are collaborating on the overall customer experience and special attention will be focused on making sure subobject selection and the gumball work well with subdivision objects. Dale Lear is doing the core ON_SubD design and evaluation code and C++ SDK.
I will add some pictures of the limit surfaces of a few test objects to this topic. If you have a subdivision control polygon you want us to test, please post a Rhino .3dm file with a mesh object of the control polygon and we will add it to our test suite.
Thank you for your interest in this project. When it ships in a public WIP, the announcement will be in this topic.
– Dale Lear