Welcome to the Laboratory. Here I'll publish variouse tests and tutorials.
Post Productions with RPF
How working with the Rich Pixel Format (RPF) increases post-production flexibilty.
The Rich Pixel Format allows to include a lot of additional per-pixel information into 2-dimensional images for use in post production. This gives the artist great post-production flexibility, like including objects and effects right into a 3d-scene or deleting single objects from the scene all together after the scene is rendered; without having to re-render a single frame.
Much like you can include an alpha channel in targa-files for example, you can include additional channels into rpf-files, the alpha channel beeing just one of many. The Rich Pixel Format itself is an advanced version of the more general RLA-format, providing more channel options specifically relevant to 3D Studio MAX scenes. These channels include:
Alpha Channel: a greyscale picture representing the transperancy of the objects against the background.
Z-Buffer: a greyscale picture indicating the relative depth for each pixel in the 3d-scene.
Material Effects: seperates objects with different Effect Channel IDs by assigning random colors for each ID.
G-Buffer: seperates Object IDs by assigning a random color for each ID.
UV Coordinates: saves the range of UV mapping coordinates as a color gradient, like that shows where mapping seams occur.
Normal: represents the orientation of normal vectors as greyscale gradient (lighter: normal pointing toward the view, darker: normal pointing away from view).
Non Clamped Colors: reveals areas in the image where pixels exeeded the valid color range and were corrected.
Coverage: Saves the coverage of the surface fragment from which other values (Z-Depth, Normal etc) are optained. This feature is aimed at developers for solving antialiasing problems (antialiasing beeing the notoriouse cause for problems when it comes to handling diffent channels, since it creates partially blurred edges where its impossible to tell if a certain edge pixel is actually part of a certain object or not).
Node Render ID: Saves each object as a solid color.
Color: Saves the color returned by the material shader.
Transparancy: Assigns a greyscale value for every pixel according to it transperancy.
Velocity: Saves a value representing the velocity vector of each pixel (for example for post-production motion-blur)
That all is a lot of Information for each pixel, and compositing tools like AfterEffects or Combustion can make full use of this information. For example you can now assign effects to single objects (G-Buffer) or even a certain material (Material Effects) without having to mask them, fiddle with chroma keying or render all elements individually and then put them together again in post production.
Example:
In this example I rendered a simple flythrough in an alley of boxes. 100 frames (ping-ponged in the video below), saved as a series of rpf-files with Z-Buffer and G-Buffer Channels. I assigned individual Object IDs to each pair of boxes (1 to 10).
Now with the additional information available i can place and animate 2D-elements (text in this example) into the finished renderings as if it were still "real" 3D, since the Z-Buffer provides relative depth Information for each pixel of the 2D-images. You can see the text going behind the boxes, but it could also intersect objects. Additionally i animated an effect hopping from one pair of boxes to the next, using the Object IDs stored in the G-Buffer channel to tell the compositing application which pixels to apply the effect to.