Pixar is best known for its CGI-animated feature films (like ToyStory) and all these films share similar high quality graphics, eye-candy visual effects and top notch computer animation technology.
Why Pixar short films are so successful ?
[highlight color=”yellow”]The main reason that makes Pixar to differ from the other animation studios it’s their smooth and realistic human shapes that are easily recognizable from the audience. To do that, they use a technology called Subdivision Surfaces[/highlight]– and that’s our topic of discuss today. In this article I would like to bring you a little bit of behind the curtain and show you the magic that all software animators are using to create these great animated visual. So, today we are going to expand a little bit on some of the advantages and on the reason why Pixar likes to use Subdivision Surfaces everywhere and why likes them so much.
The history of Subdivision Surfaces
The first inception of Subdivision Surfaces concept was from Ed Catmull and Jim Clark all the way back in 1978 when the first seminar paper was published: “Recursively generated B-Spline surfaces on arbitrary topological meshes“. However it took about 20 years for the technology to mature and reach an animation production level and introduce Subdivision Surfaces in character animation. This concept was used in Pixar’s very short (5 min) first film (after the success of Toy Story) called Geri’s Game in 1998. Today in 2012, Pixar comes back thanks to a collaboration with Microsoft Research (Charles Loop, Matthias Niessner and as well as Tony DeRose) came up with a new technology feature called Feature-Adaptive GPU Rendering of Subdivision Surfaces. This is the technology that Pixar is using and this is what they are opening for everyone under the codename of Open Subdiv.
What is Open Subdiv and why do we care
To understand what Open Subdiv does, you need to focus on the “div” part that the same word (division) proclaims. Go to Youtube and watch a short Pixar’s film (like this one) and pay attention to the facial expressions around mouth, lips, eyes and eyebrows. Observe how clean and smooth is the look of that shape. A clean look is much easier to read the emotions and facial expressions and that’s why division is needed to achieve this. If you still struggling to get my point, do the maths: 12/24 = 6/12 = 3/6 = 1/2 . The most people will understand 1/2 much easier than 12/24. Do an experiment and try for yourself. Similar to Open Subdiv, Pixar uses less information to express the facial expressions much more easier and directly to the people who watch the film. So that’s the main reason why Subdivision Surfaces are so popular and why Pixar likes them so much. Instead of that, Subdive has lot’s of more features to introduce…
[dropcap]First off[/dropcap] Pixar really enjoys the extreme flexibility that they can achieve with any kind of mesh topology through Subdivision Surfaces. It’s very efficient to model smooth shapes. For instance, when you want to do a round face for a human character, subdivision surfaces ensure that you always get an exactly rounded shape — meaning no polygonal edges nor approximations — this is just the perfect rounded shape. In the same time, Open Subdiv introduces a number of features such as “Semi-Sharp Crease” which help us modeling really complex man-made shape with hard details and surfaces. To fine tune these details, such as bodies or things who might have more sharped edges, Open Subdiv is very versatile and flexible topology-wised. Make no mistake here, all images are entirely using Subdivision Surfaces, thus Open Subdiv. Yes sir, all the geometry you see on screen (the rocks, the birds, the characters, the trees etc) is done using Subdivision Surface. It’s everywhere inside all Pixar’s films.
The most critical element that shows the advantage of Open Subdiv is its performance. In modern days animators need to be able to interact with Pixar’s surfaces at speed and at interactive frame rates. In order to achieve this Pixar had to leverage modern GPU architecture and now support GPU computing for Tessellation and internal computing through nVIDIA CUDA. They also support OpenCL, GLSL and OpenMP on CPU, so Open Subdiv is trying to be as versatile as possible, as well as multi-platform. In this way sculpting and painting possibilities were never that easy. You don’t need to use Windows, Mudbox, Ptex and Renderman, but using Open Subdib you are free to use Blender for sculpting and painting and then exported into Maya (there is a Linux version only for Red Hat and Fedora x64, although there are guides showing how to install it in Ubuntu) for animation workflow. The mesh will be sub dived dynamically on the CPU running 45-55 FPS, meaning that you can interact and deform the object without losing framerates.
It’s Open Source
All this technology is now free to use thanks to Pixar. It’s currently available on github and it’s still on beta because of still missing some critical optimization features. Furthermore they ‘re hoping for the release by end of the year. But as the hour is still young, and you can’t hold on yourselves, you can go download the source code and start playing now. The Open Subdiv it is written to be very robust, very fast and more importantly: Pixar is now legally granting license to all necessary SubDivision patterns. In other words they have decided it is more important for the industry to be able to share this technology and therefore they felt that in the past maybe developers had to work around some intellectual property and that’s so they decided it was better if we all share it.
To simply put, apart from expensive tools such as Presto and Renderman, you are able to use Open Subdiv for your project using any custom and 3rd party animation, modeling and painting application (e.g. Blender). Pixar said that they want the whole ecosystem of applications to be consisted and available for everyone and here we stand today, after “passing over Steve Job’s dead body“, now Pixar’s technology is Open Source!
[button color=”orange” link=”http://graphics.pixar.com”]Open Subdiv[/button]