Projecting Textures onto Surfaces


Projecting textures or materials onto surfaces is a common technique for placing images onto objects. Projection techniques can be preferable to the alternative of texturing using Surface Parameterization, but it depends on the situation and the model. Pixar's RenderMan supports all of the standard texture projection types. 

Projections can also be built into Slim shading networks, using the method outlined here: Projections. Slim provides a powerful set of tools for generating projections in your shaders. In Slim the idea of shader space is defined by a Slim concept called a manifold. The workflow is straightforward. Plug a projection manifold into any color or float function, define the type of projection (planar, box, etc.), and then refer to a coordinate system by plugging a surface point manifold that declares the coordinate system into the projection manifold. This technique works exceptionally well with Slim's capacity to create layered shaders. Keep in mind that Projections can "stick" to deforming geometry through the use of reference geometry feature.

General  Projection Parameters

Projection - The Slim projection manifold provides a number of types of projections. 

PlanarX, Y, & Z 
The Planar projection treats the Appearance as a flat sheet: a slide, if you will, to be projected along the X, Y, or Z axis of the object. Another way of visualizing the effect on the object is this: if you imagine that the shader is a sheet of paint, using this projection is like pushing the object through the sheet. The top, bottom, and sides get smeared, and the back face has the image reversed. Using the planar projection on an object whose shape is decidedly not flat (a sphere, for example) can produce unexpected (but entertaining) effects.

PlanarZ Persp
The PlanarZ Persp projection is useful for creating non-orthographic projections. The most typical cases are creating projections that match the cone angles of spot lights and the field of view of cameras. You'll want to make sure that the Field of View parameter is appropriately set for the object that it is attached to. There's an example of using the Planar Z Persp projection in the shader recipe the Slide Projector Light.

The Autoplanar projection treats the shader as a flat sheet that gets pressed onto every face of a surface. Suppose you want to apply a shader to a pyramid. Using this projection the shader would be applied individually to each of the pyramid's faces, based on each face's orientation. However, in exchange for the generality of this projection you sacrifice control over individual faces. Autoplanar projections can produce unexpected (but entertaining) effects when used on curved surfaces.

This applies a shader from six directions, as if there were a large box around the object with a projector pointing inward attached to each side. The difference between this and Autoplanar is that Autoplanar applies a projection from as many directions as there are faces, instead of just six directions.

Box Spherical
Imagine a sphere with six copies of a texture on it, each texture occupying a sixth of the sphere. This then gets projected onto the surface. The size of the sphere is determined by the ProjRadius parameter. There are 12 seams where the six copies of the texture abut each other. On spheroidal objects there will be some distortion at the seams, but in general this is noticable mostly when there are straight lines in the Look. This projection allows seamlessly tiling textures to match at the seams.

This projection applies a shader as if it were a spherical sheet that was shrink-wrapped onto the object. It covers objects equally from all directions. The size of the sphere is determined by the ProjRadius parameter. There is one seam, at the back of the sphere. While there is no distortion at the seam, there is distortion toward the poles. Using this projection on an object whose shape isn't really spherical can create unusual results. This projection allows seamlessly tiling textures to match at the seams.

This shrink-wraps a shader in the shape of a cylinder onto an object. As you would expect, the sides get covered equally, but the top and bottom get the very top of the shader smeared across them. The cylinder is oriented so that you see the object's front through the front of the cylinder. The cylinder's radius is determined by the ProjRadius parameter. There is one seam, at the back of the cylinder. Although there is no distortion at the seam, there can be distortion elsewhere on anything but a perfect cylinder. This projection allows seamlessly tiling textures to match at the seams.



Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.