Spline based modeling

Haven’t you ever gotten tired of all the triangles needed to render high detail sculpts and models? Sometimes I wonder if there is a better way than the geometry-based approach we are used to. High poly counts make for slow renders and limited detail levels. If there was another way to do it I would use it. A while ago I came up with the idea to use spline based modeling and rendering. Instead of having lots of triangles it would feature smooth surfaces that had no resolution built into it so any curved surface would be just that - a curve, not a geometry. The idea is to use splines to represent the model, kinda like subsurf modeling in how you control it, but based on mathematical curves instead of geometry. This would massively speed up renders and allow insane amounts of detail with no render cost.

So my idea would use spline-based modeling with infinite levels of detail which would be rendered by a special renderer that renders curves instead of triangles. It would literally calculate the shading of the surface based on the angle of the surface to the camera at that point for each pixel. This would require a specially built renderer that renders curves instead of geometry. Has anyone else ever thought of this idea? Is it feasible?

The system would have special controls for edge sharpness and weight much like subsurf modeling in Blender. It would be a radically new system for modeling and rendering. Tell me what you think in the comments below!

There’s already systems in other apps. that work similar to this (Nurbs, T-splines, Spline patches, ect…). The tricky part though is creating something that’s just as easy, flexible, and fast as traditional Sub-D modeling.

Nurbs for instance tend to be optimized for mechanical modeling, other systems are simply not as easy to create complex forms with and would make it more difficult to create new tools for. Polygonal modeling is simply far easier to create advanced functions and features for and is far easier for artists to understand and start using (not to mention that computer memory today makes the amount needed for smooth surfaces less of an issue).

This doesn’t even touch the fact that the simplicity of polygons mean they can be rendered quite fast and are not difficult at all to render on the GPU (the equations needed for real curves meanwhile make things a bit more complex).

Nurbs are surfaces based on splines, but trimming and aligning two curved surfaces to mate without seams is a huge challenge. It’s feasible in regular patterns, such as in mechanical modeling, but very hard in organic modeling. Come up with a general solution to that problem, and you may have something.

Subdivision surfaces also have “infinite levels of detail”, and don’t have the mating problems of Nurbs, because the cage geometry implicitly connects the different subdivision surfaces.

Here is an interesting paper explaining why Pixar prefers subdivision surfaces to Nurbs, and another to their open source hardware accelerated subdivision surface renderer.

http://graphics.pixar.com/library/Geri/paper.pdf

http://graphics.pixar.com/opensubdiv/docs/intro.html

Ace Dragon: I see. So I guess polygons are faster. Makes sense.

davesf: Thanks for the links! I didn’t know much about subdivision modeling.

Also adding to what Ace mentioned, splines will still need to be converted to polygons first before rendering. The graphics APIs (OpenGL, Direct3D, Vulkan) all receive geometry data in the form of triangles, lines (straight lines) and points.

So in the end, there’s really no speed advantage in rendering NURBS… quite the opposite, rather.

However, there’s something that’s somewhat remotely related to your idea. Voxels - 3D pixels. 3D-Coat uses voxels for very high resolution sculpts. It offers a great speed advantage during sculpting.

i have to admit, I’m a big fan of spline based modelling, and it’s possibly he single thing I miss most since my switch to Blender.

For example, this is 100% spline based modelling (it was a challenge).

EDIT: So as not to confuse anyone, this is in C4D, not Blender.

Attachments