modified {{article.lastModStr}}
{{videoUrlObj.title || videoUrlObj.oEmbed.title}}
{{videoUrlObj.description || videoUrlObj.oEmbed.description}}
{{ article.videoUrls | totalDuration }}

RenderMan For Blender Getting Started with 21

Created by Ryan Gordon.

This tutorial is meant to get you up and running with Pixar's RenderMan 21 with PRMan-for-Blender. By the end of this tutorial you will have Pixar's RenderMan installed on your computer and will have lit and shaded a simple Cornell box scene using RenderMan. For the purposes of this tutorial Pixar's RenderMan will be abbreviated as PRman.

Step 1: Installing PRman.

The first step to working with PRman is to install it. This can be done by downloading either the commercial or non-commercial versions of PRman. You can get the non-commercial version here. After downloading the installer follow the directions to set up version 21 where you would like it to be installed, by default it will install to “Program Files" on Windows and “/opt/pixar/" on Linux machines. Please take note of where PRman is installed at just in case you run into issues later on.

Troubleshooting Tips:

  • For issues installing PRman please visit the forums, here with the error message you received.
  • If you are working with a Debian based Linux OS you can convert the rpm package you are given using the alien rpm to deb converter. Further steps for non-rpm Linux installation can be found here

Step 2: Installing the PRman-for-Blender addon.

Now that you have PRman we need the addon to make Blender work with PRman. The addon in question is hosted at GitHub. You should grab the latest release from the releases section here.

To actually use the addon though we need to install it in Blender, so open up Blender and go to the addons tab (CTL-ALT-U). From here you can click on the install addon button and select the downloaded zip file.

After the addon is installed you can configure which version of PRman it will use and other important options. As seen below you can select where the output images and rendering files will be placed.

Step 3: Render a scene.

Now that you have the addon set up you should take it for a spin, and what better way to do that than to recreate one of the most classic scenes from computer graphics history, the Cornell box, context. I have attached a blend file that contains example geometry for a basic Cornell box if you want to use it instead of starting from scratch. Also included is the final product but I would recommend that you try yourself before looking at what I did.

With the introduction of PRman 21 we have a great new shader, PxrSurface, which can serve as most materials if fed the right set of parameters, serving as an uber shader for your Renderman projects. If you want more information on its various parameters have a look at the documentation here. In this scene PxrSurface will compose all of the surface materials that we will make.

For the surfaces of the cube we will use the PxrSurface shader with just the Diffuse lobe active and color the different sides of the cube with red, green and yellow. The cube in the center is also using just a plane Diffuse surface shader.

Sphere and Texture Materials:

The sphere and the back sign however are using some extra parameters. For the sign in the back instead of one solid color we use a PxrTexture node, which allows us to use an image as the color source. PxrTexture accepts all common types of image formats (png, jpg, etc.) so feel free to use what you want. For fine control over the texture you can use PxrManifold2D which allows adjustment of the s and t (x and y) of the texture mapping.

For the sphere however we still use a solid blue color but with specular and displacement turned on. The surface shader comes with a specular lobe which for the sphere is turned on and the roughness is set to a low value causing the sphere to look a little like new plastic. Additionally the PxrDisplaciment shader has been used along with PxrWorley to produce random divots in the sphere. You can adjust all of these shaders to produce the effect you are looking for but for this scene the general rule was the smaller the better.


The lights in the scene use the basic PRman lights. For the area light just by pressing the add Renderman Light you pretty much have what you need set up for you. From there you can just tweak the size of the light, the intensity, and the exposure.

For the light at the top of the box you can add a light emission shader to a flat plane and adjust it just like an area light. This procedure works for all normal geometry so you can make some very interesting lights if you want to.

While the geometry light is pretty good, in every situation you can, use the area and other basic light types as they are optimized as lights already.


To render the final scene you can either use the internal Blender view-port to view the result or you can use IT Pixar's image tool. The difference between IT and Blender internal is one of which frame buffer do you want to use. IT has a very fast refresh that can be seen for almost every pixel. The Blender frame buffer though has the advantage of rendering right into the image viewer just like Cycles and Blender Internal do it. Either way once you are ready to see your creation you can press F12 or just the render button and away it goes.At the end of shading the scene I ended up with the following result. As you can see it is also quite noise free. This was done using the denoiser that PRman ships with. It can be activated by toggling its option in the external render panel.


At this point you should now have a fairly good idea of how to get started with Pixar's Renderman. If you have any questions about this tutorial please let me know below or on the Renderman for Blender forums. For help using PRman with Blender can also be answered on the forums. If you find a bug please report it either on GitHub or on the forums, your help in finding bugs produces a better addon for everyone. Now from here go and make some inspiring art.

Project Assets
  • {{tag.name}}

Log in to post a comment

{{ commentBody.length || "0"}} / 10 characters

No Comments, Yet