;-)
PoV-Ray is a free ray-tracer available online in many platforms. Did I say free? Yes, free. But, it doesn't do many of the wonderful things Renderman does. So feel free to use it, but you'll have to learn to use it on your own. There's a pretty well-written tutorial online.
printf) or using procedural interface calls which
results in the output of RIB. We'll use the latter.
.rib file.rib files and see for yourself. In general, if the .rib file
has very simple geometry but complicated lighting calculations then distributed
rendering will win. Sometimes it's more efficient to use two or three machines
rather than many machines. This all depends on the particular .rib
file, the load on the network and the load on the render servers at the time.
Your mileage may vary, but in general try local renderings first, then try
distributed renderings using machines in the lab that aren't being used by
anyone.
render command with a single argument, the
.rib file you want to render, and render
will either display the output to the screen or to a file, depending
on what your Display was set to.
The interaction you should see (if you set it to write to a file) is:
unix% render foo.rib unix%and as a side-effect, your file (let's call it
foo.tif) has been created.
-h flag on your call
to netrender. Here's an example:
unix% netrender -h holmes.cs -h shapiro.cs foo.rib holmes.CS.Berkeley.EDU: Network RenderMan Server 1.1a shapiro.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar unix%
ars - All Render Servers~cs184/bin there is an executable called
ars (this stands for "All Rendering Servers") which will
return a list of machines optimized for the machine you are
on. Unfortunately the HPs have an upper-limit on the number of
machines which can be passed into netrender. The program
ars determines which machine you are on and selects a
close-to-optimal list of machines for you to render on. (You get twice
the render servers if you use an SGI machine) So, all you ever have to
do a distributed render is type:
unix% netrender `ars` foo.ribwhich if you were on an SGI would return:
unix% netrender `ars` foo.rib benet.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar ellison.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar heller.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar kilmer.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar melville.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar millay.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar miller.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar shapiro.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar sinclair.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar stowe.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar alcott.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar wright.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar thayer.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar thoreau.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar warren.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar holmes.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar walker.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar whitman.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar hughes.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar laviera.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar sandburg.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar unix%
netrender for files that render fine using render, ala:
unix% render hard.rib unix% netrender `ars` hard.rib (lots of these deleted for space reasons) machine.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar Bad bucket completion message.: Error 0 unix%or
unix% render hard.rib unix% netrender `ars` hard.rib (lots of these deleted for space reasons) machine.CS.Berkeley.EDU: Network RenderMan Server 1.1a PhotoRealistic RenderMan 3.5d Copyright (C) 1988-94 Pixar *** Error code 255 unix%In these cases, try replacing the
ars with selected parts of what ars returns. So if ars returns:
unix% ars -h benet.CS -h ellison.CS -h heller.CS -h kilmer.CS -h melville.CS -h millay.CS -h miller.CS -h shapiro.CS -h sinclair.CS -h stowe.CS unix%you might want to manually try a
netrender to half of those, ala:
unix% netrender -h benet.CS -h ellison.CS -h heller.CS -h kilmer.CS -h melville.CS hard.rib unix%
.tif file(s)unix% tiffdspy foo.tif unix%and if you have a sequence of files
foo1.tif, foo2.tif, etc., you can use tiffdspy for multiple images (as long as they are the same size) as in:
unix% tiffdspy foo*.tif unix%
/usr/local/prman
/usr/local/prman/look/examples/
netrender, just call it again. Many errors are a result of an overloaded network license server and will be resolved after someone else's job is finished. Also, try removing the number of machines that are being called from netrender.
render, netrender, tiffdspy, etc) are set up already.
unix% mkdir ~/renderman ; cd ~/renderman unix% cp ~cs184/prman/example/* . unix%You will find 4 files:
Makefile - standard Makefile
cube.c - geometry of a cube
simple.c - simple example
hard.c - hard example (animation, texture, recursive geometry)
cube.c is a simple file in which we specify a unit cube centered around the origin whenever someone calls UnitCube().
The file simple.c specifies the full scene (lights, camera, etc) for our first .rib file.
To compile this and automagically generate the .tif image, you just make the simple.pic, as in:
unix% gmake simple.pic
gcc -ansi -I/usr/local/prman/tutorial -I/usr/local/prman/include -c cube.c
gcc -ansi -I/usr/local/prman/tutorial -I/usr/local/prman/include -c simple.c
gcc -ansi -I/usr/local/prman/tutorial -I/usr/local/prman/include -o simple.gen simple.o cube.o /usr/local/prman/lib/librib.a -lm
simple.gen >simple.rib
render simple.rib
unix%
this will create some new files:
cube.o - the object file for cube.c
simple.o - the object file for simple.c
simple.gen - the executable for simple.c which, when run, generates the file...
simple.rib - the RIB file for simple.c
simple.tif - the TIFF file for simple.c
hard.c which generates 3 images:
![]() |
![]() |
![]() |
hard0.tif - Note the wood texture and the recursive geometry. |
hard1.tif - Note the wood texture changing and the geometry rotating. |
hard2.tif - Note the wood texture morphed to blue and the geometry continued to rotate. |
Makefile funMakefile is pretty general. You can:
gmake all (same as just plain make) - compiles and renders all the examples in the directory.
gmake pics - generates all the pictures in the directory (equivalent to make all)
gmake rib - generates the RIB files but does not render them
gmake exec - generates the executable .gen files without executing them
gmake clean - Removes all .slo, .o, .gen, .rib, and .tif files
pic, rib, gen) you can just generate them for one file (and not for both simple and hard by just saying gmake file.keyword as in:
gmake simple.pic - generates the pictures for simple.c
gmake hard.rib - generates the rib file for hard.c but does not render it
gmake simple.gen - generates the executable .gen file for simple.c without executing it.
.rgb (through a simple script) and use the
SGI movie player in ~cs184/bin.sgi/movie while sitting on an SGI (see below)
mpeg_encode
imgcopy (available on both HPs and SGIs, so this is preferred):
unix% foreach i (hard*.tif) ? /usr/sbin/imgcopy -fSGI $i $i.rgb ? end
unix% foreach i (hard*.tif) ? tifftopnm $i | pnmtosgi > $i.rgb ? end
.rgb files, sit on an SGI and run the
program ~cs184/bin.sgi/movie like so:
unix% ~cs184/bin.sgi/movie *.rgband the right mouse button allows you to control lots of cool things about the animation - loop it, slow it down, go frame by frame, etc. I've set up
.rgb files from the hard.c animation (but I made
the cube rotate a bit more for this animation) and they are in: ~cs184/prman/movie/hard[0-2][0-9].rgb. So you would see the movie I created by typing (sitting in front of an SGI):
unix% ~cs184/bin.sgi/movie ~cs184/prman/movie/*
comp.graphics.rendering.renderman