Pixar Animation Studios Open Subdivision Technology Review


Uploaded by Autodesk on 10.08.2012

Transcript:

The first thing we have is we have our first guest
presentation of the day.
We have Pixar is going to be here showing us a bit of
technology they've been working on that they've now
open sourced and made available to the public.
And they are going to show us how that's currently
functioning inside of Maya as well.
So Manuel, why don't you take it away.
Thank you, Sean I'm here this morning on behalf of Pixar
Team GPU, and we would like to introduce our latest
technology, which we have released under the code name
of Open Subdiv.
As you may probably have guessed, this is something
that has to do with subdivision surfaces.
As a way of introduction, I would like to address some of
the very long and very rich history that Pixar's had with
subdivision surfaces.
In fact, we actually even discovered when preparing
these slides that it goes even much further than we thought.
The first inception of subdivision surfaces was from
Ed Catmull and Jim Clark, all the way back in 1978.
I think I only four years old back then.
That was the first seminal paper.
However, it took about 20 years for the technology to
mature and reach production animation level, and be
introduced in Pixar's very first short,
Geri's Game, in 1998.
Today, we're now in 2012, and we're coming back.
Thanks to a collaboration with Microsoft Research, Charles
Loop and Matthias Niessner, as well as Tony DeRose and Mark
Meyer, with a new technology that is called, "feature
adaptive GPU rendering of subdivision surfaces." This is
a technology that Open Subdiv is based on.
This is what we would like to introduce today.
So first, please allow me to expand a little bit on some of
the advantages, and the reason why Pixar likes to use
subdivision surfaces everywhere, and
likes them so much.
Well first off, we really enjoy the extreme flexibility
that we can achieve with any kind of arbitrary topology
through subdivision surfaces.
It's very efficient to model smooth shapes.
So when you want to do a rounded face for a human
character, for instance, subdivision surfaces ensure
that we always get an exactly rounded shape.
No polygonal edges, no approximations, this is just a
perfect rounded shape.
But at the same time, we also have introduced a number of
features, such as semi-sharp creases, which help us
modeling really complex man-made shape with hard
surfaces and fine details, such as car bodies, or things
which have sharper edges.
So it's very versatile, and it's very flexible
topology-wise.
And to prove my point, I brought here a little clip
from our latest feature film, Brave, and you may have seen
this already so I'm going to let this loop play.
This image, or these images here, are entirely using
subdivision surfaces.
All the geometry that you're seeing on screen, apart from
the hair and the river, obviously,
is subdivision surfaces.
The rocks, the bear, the trees.
Everything here is a
Catmull-Clark subdivision surface.
So this is repeated, I think, a couple of times.
Now I would like to bring you a little bit behind the
curtain, and show a little bit of the magic of the software
that our animators are using to create these great and
amazing visuals.
This here is a capture of the same animation that you've
just seen, but from our internal
software called Presto.
And this already uses Open Subdiv.
So what you're seeing here is Catmull-Clark surfaces, and I
would like to draw your attention to the very clean,
very smooth look of this shape.
This is actually very important if you're an
animator because you need the precision to position exactly
the shape the way you want it.
For instance, if I'm looking at the face, and I want to
sharpen the facial expression on my character, a clean look
is much easier to read the emotions, and read the facial
expressions.
Here's another example where we're focusing on the ear of
the character.
Please notice the difference between the polygonal mesh,
the coarse control cage, and the very soft look of the ear
of the limit surface.

So this has been the impetus for us to
introduce Open Subdiv.
And all this technology, we've decided that, in fact, we
wanted to share with everyone.
So that's why we've taken it and made it open source.
It's currently available, it's on GitHub.
We're still in beta, we're still missing some critical
optimization features, and we're hoping for a release by
the end of the year.
But you can go, you can download the source, and you
can start playing with it now.
So first off, as you've just seen, this is what we use.
Our own internal animation software is written with Open
Subdiv today.
It's written to be very robust, and it's
written to be very fast.
And more importantly, and I'm going to choose my words very
carefully here because of some legally binding elements,
Pixar is now granting license to all
necessary subdivision patents.
In other words, we've decided that it is more important for
the industry to be able to share this technology.
And therefore, we have felt that in the past, maybe
developers had to work around some of our
intellectual property.
And we've decided that it was better if we all shared.
So please go to graphics.pixar.com, and you'll
get all the details, including access to the source code.
Enough of that.
Let me comment a little bit on some of the key features of
Open Subdiv.
Well first off, we're extremely careful about
consistency in multiple ways.
First off, we need to match exactly RenderMan.
What you model, what you sculpt, has to be eventually
what comes out of the renderer.
So we want to be using the same internal data structures,
and use the same algorithms in RenderMan.
In other words, we want to maintain completely numerical
match throughout the entire pipeline.
Second off, we also want a complete consistency in terms
of feature set.
So all the advanced features that you find in RenderMan,
such as semi-sharp creases, boundary interpolation rules,
and hierarchical edits are all fully supported, down to the
minutest detail.
And finally, we also want to ensure consistency throughout
our entire tool chain.
That means all our internal software, such as Presto,
RenderMan, and others, as well as our
third-party vendor software.
Our modeling, painting, sculpting applications, we
want the entire ecosystem of applications to be consistent.
That's why we decided to release Open
Subdiv as open source.
And finally, the most critical element, it's performance.
In modern days, we need animators to be able to
interact with our surfaces at speed, at
interactive frame rates.
And in order to achieve this, we had to leverage modern, GPU
architectures.
So we support GPU Compute for tessellation, and internal
computing through CUDA.
So we also support, not only CUDA, but OpenCL, GLSL, and
OpenMP on CPU, so we're trying to be as versatile as
possible, as well as multi-platform through Linux,
Windows, and OS X. So I would like also to show here some of
the consistency I was talking about a few seconds ago.
So I brought a little clip here, where on the right side,
you can see the RenderMan documentations.
Is this is really what ships for our customers with
[? PRMan ?]
And we're going to show you one surface that is very
simple at the core.
It's just a flat plane.
But by using some of our special editing tags,
hierarchical edits, and creases, we can achieve very
complex surfaces, just like this little spiky bump over
here, out of a flat surface.
So it's a very powerful way of editing, but more importantly,
as you can see, Open Subdiv code matches exactly the
renders you're going to get out of RenderMan.
So if you introduce Open Subdiv hopefully you can match
exactly the shapes that you can render in Renderman.
As well get a lot of advantages and simplicity of
achieving complicated shapes through very simple tagging.
So I'm going to stop this here and show another one.
This is to draw your attention to
semi-sharp creases features.
If you're really eagle-eyed, you might recognize the shape
as being the back of the dumpster truck
from Toy Story 3.
And on the right side, you can see the shape without
semi-sharp creases, and it's very soft, very smooth.
On the left side, however, is the same shape as seen in the
movie, but with its semi-sharp creases tag left activated.
So as you can see, the shape is really complex.
It looks like man-made steel, and also very interestingly,
catches some subtle specular highlights just on the edges.
Let me see if I can highlight over here in the corners, that
otherwise would be very difficult to achieve.
And yet the poly count is extremely low because we never
repeat vertices, we never have vertices close by.
This is really the coarse mesh in its most simplistic state.

What this brings to our workflows is, first off, well,
we get true limit surface display.
As I showed earlier in the clip, this is very important
to animators because they need this precision.
They need to be able to read facial expression, they need
to really see where the fingers of the creatures are,
if they need to grasp objects.
This really makes animating and editing very, very easy.
And because it's interactive, we can show this all the time,
it's always turned on.
There is no drawback.
So while we can animate while displaying full detail, there
is also another side effect that also becomes available,
and that's what has me very excited.
And that's what I'm actually about to start showing in a
few seconds, which is we have a number of new sculpting and
painting possibilities that were never available before.
So you may remember that we came here a couple of years
ago, and we demoed a workflow that took sculptures done with
Mudbox, exported through Ptex, and rendered in RenderMan.
And this on the right over here, by the way, is the first
character that we used sculpted in Mudbox
in one of our films.
You may recognize this toy from the Toy Story 3 movie.
And as I said, two years ago we came here and presented a
small demonstration of a sculpture in Mudbox, made by
Autodesk's very own Craig Barr.
Very talented Mudbox artist who was willingly giving us
one of his best assets, the Toad King creature here.
And as you can see, we've taken the creature, extracted
all the textures and displacement, as Ptex Texture
Map, and rendered them in RenderMan and we
produced this loop.
This year, we're coming back with Open Subdiv, and we're
going to try to show you how you can take all these
workflows, and leverage them also
inside of Maya 4 animation.
So I'm going to switch live now to my Maya session, and
show you Open Subdiv at work.
So first off, I would like to make a little disclaimer here,
this is not a tool.
This is really just a technical demo.
We prepared this specifically for this event over here.
In fact, we coded this about last week, so it's very, very
new, still a little buggy, I hope I'm not going to have a
disaster here.
But this will showcase what is possible with Open Subdiv.
So here in green is the control cage of the Toad King.
It's about 1,000 faces.
It's very, very lightweight, which means it's very easy to
deform and articulate inside of Maya.
Here behind it, is the wire frame mesh that is produced by
Open Subdiv.
And I'm going to select this, and show you some of that
performance that we can leverage out of Open Subdiv.
So let's subdivide a little bit.
Once, twice, three, and five times.
This is the mesh subdivided in real time interactively on my
GPU right now.
And I'm going to zoom on it to show you just the density that
we're able to achieve in real time.

Zooming back, as you can see now, we have more vertices
than I have pixels on my monitor.
And this is where it becomes interesting.
So I'm going to toggle off wire frame very briefly.
So once again, very smooth surface.
And just for the eye candy, we threw in a little bit of
image-based lighting, in the shaders on the GPU.
So as you can see that our creature is standing in its
environment, fully lit.
And I'm going to bring now Ptex, because Ptex is an
integral part of Open Subdiv.
So here's the color that was painted again by Craig,
straight in Mudbox.
And you can see that we faithfully represent every
[? textile ?] of the original painting
that was done in Mudbox.
No artifacts, no seams, everything is clean.
That's exactly what you want to use.
And once again, we're still running at 45, 50 frames per
second, without really breaking a sweat.
I'm going to bring in Ptex Ambient Occlusion.
This has been, again, extracted out of Mudbox using
the Ambient Occlusion extraction.
So that adds a bit more refinements.
But really, what's really important at this point for us
to manipulate this sculpture, is really to see the true
displacement.
So once again, extracted through Ptex, here is the
displacement applied on the creature.
As you can see, we're breaking the
silhouette, with and without.
And we're extremely faithful, this is really
what you saw in Mudbox.
And just to show off a little bit more, those specular
highlights are glinting, they're kind of annoying.
So we leverage also Viewport 2.0 every feature, so I'm
going to turn on multi-sampling anti-aliasing.
So a little subtle, I'm not sure it's going to be very
visible on a monitor here.
But you can filter this using MSAA.
So once again, we're fully compatible Viewport 2.0 here.
We're not invading the system completely.
So that's all fine and good.
You could do this in Mudbox.
What's new?
Well, we're actually subdividing every frame, which
means that we can interact with this live.
And I need to show this, yes.
So on behalf of all animators in the audience here, I'm
going to apologize.
We rigged this very quickly, we're not artists.
This is really programmer artwork that
you're looking at.
But as you can see, we've articulated this, and I'm now
able to select a joint, an IK joint, and deform the surface
freely and interactively.
So I can move the entire creature, at will, from any
place, and it deforms at the same frame rate.
There's no frame rate hit over here, I can still hit the 50
frames per second.
And it all just works, and IK, of course,
works just the same.
In fact, Maya does all the hard work here, we're just
getting the mesh after it has been posed.
And I'm going to play back a little bit of the animation.
So once again, programmer animation here, put together a
bit at the last minute.
But as you can see, your sculpture in
Mudbox comes alive.
You can animate it, you can see the true exact extent of
the limit surface, with the [? sculpt ?]
[? applied ?]
in, with the Ptex.
There's no seems, there's no [? cracked ?].
It's exactly what you sculpted in Mudbox, now live in Maya
through Open Subdiv.
So I'm going to show a few more seconds
of eye candy here.

And turn on maybe the color, so you can see all the detail
on the surface interacting with the lighting.
Here you can see every scraggle, every little detail
of the scales.

All live, all real time, on your GPU, through Open Subdiv.

All right, so let's see.
Current slide.
In conclusion, so Pixar Team GPU, in collaboration with
Microsoft Research, we've worked very hard on this new
technology.
It's called Open Subdiv, we're live on graphics.pixar.com.
Please take your small devices, go and visit us.
The code is available on GitHub.
You can download it, you can compile
it, we welcome feedback.
There's also a presentation this afternoon from Matthias
Niessner, who collaborated very heavily on the
technology.
It's feature adaptive, GPU rendering of Catmull-Clark
subdivision surfaces.
It's at 2:00 PM in room 408A.
Please go and watch a talk if you're
interested in the gory details.
And that's it for me and Open Subdiv.
Thank you, Sean.
Thank you very much.

[APPLAUSE]