Pixar in a Box – Khan Academy
pixarinabox.org
pixarinabox.org
Everyone should check out these lessons:
Journey into cryptography: https://www.khanacademy.org/computing/computer-science/crypt...
Journey into information theory: https://www.khanacademy.org/computing/computer-science/infor...
I use it for everything including X rated content from adult sites
It extracts the audio then "huff-duffs" it; i.e., puts it into an RSS feed you can consume with your podcatcher of choice. Check it out, it's great.
Here's the code if you're curious:
https://github.com/alangpierce/Audicademy
And there's a feature-incomplete web version that lets you navigate to any video and play it (requires a recent version of Chrome):
Otherwise, it's like reading the theory section of documentation without getting to use the program.
I didn't go through the whole thing initially. Excellent examples.
Thanks for your hard work. It is indeed an amazing series.
I just watched the videos of the first few sections of this math course and they're all very nice and I feel I really understand how to draw parabolas now, but the section I just watched ends with a proof.
I'm not convinced by the proof at all, it goes very fast through the basics and is very quick to point out the different relations between the ratios and the points. Now I know I've never been very quick with proofs, and I know the whole idea of Khan Academy is that you can pause and replay whenever you like, but I feel just a video isn't enough to explain even a simple geometric proof like this. Did you test this on any students? Could they reproduce the proof?
(p.s.: many events cause a bar to appear on the top of the page that pushes the entire page down, that's very not-done in web ux and causes disorientation and frustration with the user especially if the site is slow to respond (which the site is for me))
I agree that some students will not recognise the crux of the proof, but will simply see something ends up being equal to something else in some identity without understanding how that relates to what was being proved.
Euclid's Elements (an ancient Greek textbook on Geometry) is a good model in this regard. He first states what he is to prove. He then starts from the assumptions and finishes with what he was to prove. Each step in between is justified.
We also do this for the bonus step in Character Modeling (my favorite lesson!)
Our plan is to continue collecting more feedback on these different styles and find out what works best.
Is there some way we could please SUBSCRIBE to notifications that wonderful speakers like these are coming to our area?
Okay, yes, I know this isn't your job, but please... you might be able to help me! :)
This is a tough area for us in general, unfortunately.
I've written an RSL tutorial that has been online for past 15 years (it's currently offline, I'll put it up again) and I've had people from all over the world from different studios (big and small) thank me.. it seems RSL doesn't have much resources online and considering this is tied to Pixar - do you have plans for RSL?
Pixar has ditched RSL in favor of BSDFs written in C++, so there is no real reason for learning RSL anymore. Open Shading Language (OSL) is a new shading language which is getting more and more use in the industry, but it's completely different by design.
PBRT is a great resource too. I don't know if they opted out of literate programming? I can't stand that for some reason. I've leafed through PBRT though. I've learned (back in the day, hah) from Shirley's Ray Tracing book and bibles that Andrew Glassner wrote (Principles of Digital Image Synthesis) which I still consider awesome resource.
The current edition of Physically Based Rendering still uses literate programming, but most of the maths are separated from the code, so you can skip over most of the code. Even if you can't stand I can really recommend reading it, as it's a great book. Shirley's Realistic Ray Tracing is still very useful these days, but obviously it's lacking the state of the art. If you really want to avoid any code you should read Veach's PhD thesis [2] and then some papers on BSDFs [3], shapes [4] and ray tracing acceleration [5].
[1] http://wjakob.github.io/nori/
[2] http://graphics.stanford.edu/papers/veach_thesis/
[3] http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.html
[4] http://www.graphics.cornell.edu/pubs/1997/MT97.html
[5] http://www.nvidia.com/object/nvidia_research_pub_012.html
What's amazing about this video series is that they have actually captured the elements that _can_ be taught to kids of various ages and skill levels. Man how I wish there were a resource like this when I was younger.
To understand basic 3D computer graphics, you need some linear algebra, matrices, some analytic geometry, and some trigonometry, but not much calculus. Once you learn what a 4x4 matrix multiply can do, you have most of the key ideas. You need that to use OpenGL effectively. Actually, you only need about 10% of each of those areas of math, but you do need that 10%. "Graphics Gems" has some good background.
(Physics engines, though... I used to work on that, and struggled through two-volume books on nonlinear differential equations.)
So the title appears to come from the suggestion that there'a a well of infinite potential in terms of creative usages of math in computer animation. Or at least that's what I read into it.
[1] by which i mean, inferior estimation of BSDF on/in model, but much much faster.
I understand why you might want to do this in practice, but it still doesn't seem to be that important to teach as an introduction.
In "regular" Reyes (and I may just have this wrong - I was unaware that the hybrid technique you describe was common) I though you were a) locally approximating surfaces and b) applying local shaders. These shaders are typically inferior estimates of the BSDF at that location compared to other techniques, but can be very memory efficient.
In the hybrid approach you describe, you avoid at least (b) above by doing the shaders by path tracing, say, but localized to where your rasterizer has discovered. So you aren't benefiting in anything but speed, so this seem more an implementation detail than anything fundamental.
So I don't see how dropping this sort of detail from any introductory course is anything but sensible. There should probably be a discussion of space/speed/distributional issues in general, but at a higher level.
Again, I'm not questioning why anyone would want to implement it, just why anyone would find it odd to leave out from an introductory course.
- Reyes batches camera-visible geometry into grids of micropolygons and microvoxels. These micro-elements are then shaded using any method you please (which, in the case of Pixar movies since Monsters University, has been raytraced physically based illumination). The micropolygons are projected to the image plane and stochastically sampled, much more akin to traditional rasterization. There is no raytracing for camera-visible geometry, and all projections must be linear.
This style of doing things was to exploit locality in screen space. It assumes that the image can be broken into "buckets", and the information outside the bucket can be destroyed when the bucket is finished. This used to be true when RenderMan was first designed, but now that everybody is raytracing their illumination, it is less of a useful optimization.
This also means that shading happens at discrete times. Usually everything is shaded at the shutter-open instant, so specular highlights will be smeared in an unphysical way, because their motion is not properly correlated with the geometry motion.
I should also point out that Renderman keeps an internal radiosity cache in Reyes mode, which is basically just stored colors of illuminated geometry. This cache is queried by raytracing when computing indirect illumination, and a cache of the whole scene is kept for each bounce. Pixar only uses one or two bounces in Reyes mode due to the heavy memory cost. Note that view-dependent indirect illumination is not possible with this scheme-- Second bounces (and deeper) are always diffuse only. (It is possible to avoid this, but it tends to be slow because Reyes makes all kinds of generally-untrue assumptions about its ability to batch shading which fall apart in second+ bounce shading).
- Path tracing fires rays for camera-visible geometry. In most path tracers, including RenderMan RIS, each ray hit generates a new shading exec. This means that time-jittering for camera motion blur also trivially produces time-jittered shading, so (among other things) moving specular highlights will be correct, and view-dependent indirect illumination is possible. Because of this live-shading aspect there is no radiosity cache, and so much deeper levels of indirect illumination bounces can be used (compare 8 bounces to Reyes' typical 2, for example).
Also, because camera-visible geometry is raytraced, it is possible to do interesting things like nonlinear projections.
* Discarding data when finishing a bucket means that you have to produce final-quality pixels before moving on. Path tracing allows the renderer to produce an initial, crude pass over the pixels and then refine from there. This leads to quicker initial feedback and makes interactivity possible.
* Object instancing is much more practical with ray tracing.
* Before hybrid REYES/ray tracing, you'd have to bake out shadow maps and other passes before you could get to the beauty render. Even with ray tracing you might still be baking point clouds for GI. With path tracing you can do it all with one render pass.
On top of that, it's important to stay on the cutting edge, both in terms of keeping RenderMan a competitive product, and in terms of keeping the internal challenges interesting and fresh-- which is necessary for attracting top talent and preventing the company from getting into a rut or a routine.
Sidenote, you could have always done raytracing in PRMan, even with REYES. You just bring your own trace(). BMRT was often used as a trace() engine, until they came up with Entropy and Pixar sued them out of existence (NVidia bought them).
Any projects in the works to tie this into Khan Academy's CS offerings? I work at a school which is about to pilot a programming class with 3d animation, but I found the content which you guys have put up to be far more engaging. If there were an accompanying suite where students could code and render an entire scene (especially if some Pixar assets were included!) it would absolutely be incredible and a great resource, and I certainly wouldn't hesitate one second to transition our course into it.
Great lessons.
That's how I learned it.