FMX 2013 - OpenSubdiv

Date: 24.Apr 2013 | Reading Time: 3 minutes, 23 seconds

We startend the session with a quick history of subdivision surfaces. Invented by Pixar and first used in the short Gerry’s Game they made away with the constraints of both polygonal modeling as well as Nurbs modeling.

What’s wrong with Nurbs?

Nurbs surfaces are based on control vertices or hull points through which a b-spline is calculated. This leads to smooth curvature and inherent UVs. Both are good. However, Nurbs modeling relies on adding a multitude of Nurbs patches together to form you final surface. He problem arises at those patch seems where it can, and often is, mathematically impossible to create a seamless surface, much less when the “patchwork” is animated.

So Polygons then?

Short answer: nope.

Long answer: While polygons have no problem with arbitrarily complex surfaces or seem cracks, they have their own set of problems. First, they don’t have inherent UVs and unwrapping a complex mesh for texturing is no small feat. Second, to get smooth surfaces you need a very high amount of polygons or play cheap tricks with normals, which tend to quickly fall apart under scrutiny.

Subdivs

First, the world in general and Pixar in specific only calls then Subdivs. Not subdivision surfaces.

Also, they are the answer to all the problems above. Arbitrarily complex, while always maintaining a definably smooth, crack free surface. Also, with the addition of PTex there is no need for UV unwrapping anymore.

In addition, Subdivs support localized levels of subdivision. What that means is that the whole pipeline can work with the coarse base mesh. The modeler can then go into specific sections that need more definition, locally subdivide that area and make modeling changes there. Those will be saved and applied at render time. Bill showed an example of that at work. In Brave, which was originally supposed to play in winter, they had Merida’s horse run through a snowy plane. The plane itself had a resolution of about a vertex per square meter. Enough resolution to model snow drifts. However, for the horse’s path they locally increased the planes resolution to one square centimeter at render time to capture the fine detail of hooves disturbing the snowy surface.

At rendertime

The term “at rendertime” is misleading, because Pixar is now using a GPU implementation of the subdiv algorithm. The implications of that are far reaching.

At the simplest level “at rendertime” in the paragraph before means, the animator gets a live preview of those several hundred thousand faces in real time in the viewport (Maya’s Viewport 2.0 in this case, which has OpenSubdiv support built in already). Let me restate that, we saw a demo of a “low poly” mesh with about 3000 faces animated with bones that had the OpenSubdiv algorithm applied. What we saw on screen were about 3.8 million faces animated in real time. And since Subdivs have the added benefit of getting displacement at hardly any additional cost, those 4 million polygons were displaced as well. Very intriguing stuff.

This is not only interesting for VFX though. Since this realities GPU implementation also means games that adopt this will get much more visually complex. And in fact, while Bill could not mention any names, he went out of his way to let us know that major mobile company that produces very popular devices we all own and with the power to dictate the chip manufacturers what to put into their chips will implement hardware OpenSubdiv support within the year. Or as Bill put it, you will likely have devices with hardware support built in the next time you see me.

Good for Pixar. How do I get it?

That’s the nice part. You likely already have the technology available to you. For one OpenSubdiv is open source and all the licensing for the technology is available for free as well. Also, if you use Maya, you have access to all this already. Maya uses the exact same algorithm Pixar uses since Maya 5.0 and now also has the GPU implementation through Viewport 2.0.

So no excuses, get cranking!