Subject: comp.graphics.rendering.renderman FAQ
Date: 4 Jan 1996 00:28:25 GMT

Archive-name: graphics/renderman-faq
Posting-Frequency: monthly


This is the Frequently Asked Questions (FAQ) list for the
comp.graphics.rendering.renderman newsgroup.  Please review this FAQ
before posting questions to c.g.r.r.


Contents: (* indicates changes since last time)
---------

Administrivia:
  Q: What is the charter for comp.graphics.rendering.renderman?
  Q: What other newsgroups have closely related material?
  Q: Where is comp.graphics.rendering.renderman archived?
General RI Questions:
  Q: What is "RenderMan"?
  Q: Where can I find documentation on the RenderMan Interface?
  Q: What's the difference between the procedural interface and RIB?
  Q: What features are required in the RenderMan Interface?  What features
     are optional?
  Q: What do I have to do in order to call my software "RenderMan compliant"?
Implementations:
* Q: What implementations of the RenderMan standard are available?
* Q: Is PRMan a ray tracer? / How can PRMan do reflections if it's not
     a ray tracer? / Was a ray tracer used for reflections in Toy Story?
* Q: Is there a Macintosh/DOS/Windows port of BMRT?  In the works?
     Will the author of BMRT let me do the port to Mac/DOS/Windows?
Miscellaneous:
  Q: What front ends (modelers, etc) support the RenderMan Interface?
  Q: What other net resources exist which are related to RenderMan?
  Q: Where can I get the Pixar videos?
  Q: What is the correct capitalization of "Pixar"?


Nomenclature:
.RI = RenderMan Interface, often refers to the spec document.
.RC = _The RenderMan Companion_ by Steve Upstill.
.SL = Shading Language.
.PRMan = Pixar's PhotoRealistic RenderMan product
.BMRT = Blue Moon Rendering Tools


===========================================================================


Q: What is the charter for comp.graphics.rendering.renderman?
-------------------------------------------------------------

   comp.graphics.rendering.renderman is an unmoderated newsgroup
intended for the discussion of the RenderMan standard (e.g.
definition, semantics, usage, tips), the RenderMan shading language
(e.g. posted shaders, questions, tips), particular RenderMan
implementations, software that uses the RenderMan interface (e.g.
RIB-producing modelers, third party shaders), and comparisons,
comments and questions about RenderMan in general.

   This group is NOT intended for the distribution of images or RIB
files.  Large data or binary files should be uploaded to appropriate
FTP sites and announced on the newsgroup, but not posted directly.



Q: What other newsgroups have closely related material?
-------------------------------------------------------

    comp.graphics.animation..: computer animation
    comp.graphics.algorithms..: algorithms for graphics
    comp.graphics.rendering.raytracing.: the technique of ray tracing
    comp.graphics.visualization .: visualizing scientific data
    comp.sys.next.programming..: programming NEXTSTEP
    alt.movies.visual-effects..: discussion of movie effects
    sci.image.processing..: technicalities of image processing
    alt.graphics.pixutils..: pixel and image utilities

The FAQ's for these groups (and most others) can be found at
ftp://rtfm.mit.edu/pub/usenet/news.answers and many of them have
HTML FAQ's at
http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-list.html



Q: Where is comp.graphics.renderman archived?
---------------------------------------------

    Beats me.  Anybody know the answer to this?




Q: What is "RenderMan"?
-----------------------

Here's the most brief explanation I could come up with:

    According to RI (p. 3): "The RenderMan Interface is a standard
interface between modeling programs and rendering programs capable of
producing photorealistic quality images."

    RenderMan is in many respects similar to PostScript, but for 3D
primitives.  The goal is to provide a standard mechanism for modeling
and animation software to send data to rendering systems in a device-
independent way, and with minimal regard to the actual rendering
algorithms being used.  A particular RenderMan implementation may use
scanline methods (z-buffer, REYES), ray tracing, radiosity, or other
methods.

    An important aspect of the RenderMan Interface is the Shading
Language (SL).  SL breaks the restrictive paradigm of surfaces being
described by a small number of parameters (Ka, Kd, Ks, etc.).  SL
allows the user to write her own arbitrarily complex descriptions of
how lighting and shading should be computed.



Q: Where can I find documentation on the RenderMan Interface?
-------------------------------------------------------------

    The official RenderMan Interface 3.1 specification is surprisingly
readable for a standard document, but not in any way a tutorial.  A
must for any serious RenderMan user, it's available directly from
Pixar for US$20 (in the US, including S&H) or US$25 (outside US,
includes S&H by air).  Their address is:

.Pixar
.1001 West Cutting Blvd.
.Richmond, CA  94804

It turns out that a PDF version of the 3.1 spec (with corrections!)
was distributed on the SIGGRAPH '95 course notes CD-ROM.  So if you
have access to this, you can print it yourself.

    _The RenderMan Companion: A Programmer's Guide to Realistic
Computer Graphics_, by Steve Upstill (Addison-Wesley, 1989, ISBN
0-201-50868-0) is an excellent introduction to the procedural API and
the Shading Language.  Unfortunately, it doesn't address RIB at all.

    If you're interested in SL, or procedural shading in general,
check out _Textures and Modeling: A Procedural Approach_, by Ebert,
Musgrave, Peachey, Perlin, and Worley (Academic Press, 1994, ISBN
0-12-227760-6).  The source code (including RM shaders) can be found
at URL ftp://archive.cs.umbc.edu/pub/texture.

    Moving to the more obscure, there are good course notes from
Siggraph '90 (course 18 - The RenderMan Interface & Shading Language)
and Siggraph '92 (course 21 - Writing RenderMan Shaders), and the 
soon-to-be-printed Siggraph '95 notes (course 4 - Using RenderMan
for Animation Production).

    Here are some technical papers that discuss either the RenderMan
Interface or some of the technologies behind its implementation(s):

    Cook, Carpenter, and Catmull. "The Reyes Image Rendering Architecture",
.Computer Graphics 21(4):95-102, 1987.  (Describes the rendering
.method that prman uses.)

    Hanrahan and Lawson. "A Language for Shading and Lighting Calculations",
.Computer Graphics 24(4):289-298, August 1990.  (Describes SL.)

    Reeves, Salesin, and Cook. "Rendering antialiased shadows with
.depth maps", Computer Graphics 21(4):283-291, July 1987. (Describes
.the methods that prman uses to compute shadows.)

    Slusallek, Pflaum, and Seidel. "Implementing RenderMan--Practice,
.Problems and Enhancements."  Proceedings of Eurographics '94.
.(Describes their implementation.)





Q: What's the difference between the procedural interface and RIB?
------------------------------------------------------------------

   Two bindings exist for the RenderMan Interface.  The first is a 
procedural API, i.e. a collection of library routines callable from
a C program.  Those functions all start with Ri, for example RiBegin().
The procedural API is explained in great detail in _RC_ and in the RI
standard document.

   The second binding is called RenderMan Interface Bytestream (RIB).
RIB is an ASCII (or binary) metafile format.  In general, there is a
one-to-one correspondence between the API calls and their equivalent
RIB directives.  RIB is useful for archival and later rendering,
rendering over a network, and hacking scenes by hand.  RIB is
unfortunately not documented in _RC_, but is exhaustively detailed in
_RI_.

   The usual way that RenderMan is used is for a program (modeler) to
make the procedural API calls.  The program is linked to a library
which, for each API call, outputs the corresponding RIB to a file.
That archived RIB can later be sent to a standalone renderer which
inputs the RIB and outputs rendered images.




Q: What features are required by the RI?  What is optional?
-----------------------------------------------------------

    The full list of requirements for a RenderMan-compliant renderer
is given in RI on pp. 5-7.

    Basically, a RenderMan-compliant renderer should minimally provide
the following features:

.Complete hierarchical graphics state
.Orthographic and perspective viewing transformations
.Hidden surface removal
.Pixel filtering and antialiasing
.Gamma correction and dithering before quantization
.Produce images containing any combination of RGB, A, and Z at a user
.  specified resolution
.Support all of the geometric primitives of the standard (including
.   quadrics, polygons, bilinear and bicubic patches, and NURBS)
.Provide the 14 standard light source, surface, volume, and
.   displacement shaders

    This is actually quite a lot -- you'll find few rendering systems,
free or commercial, which provide as many features as even the minimal
RenderMan requirements.

    In addition, RenderMan-compliant renderers may support several
optional capabilities.  Many of these features are very advanced, and
some rendering algorithms simply cannot support certain features, so
the availability will tend to vary from implementation to
implementation.  The optional capabilities include:

.Solid Modeling (CSG)..Trim Curves for NURBS
.Multiple Levels of Detail.Motion Blur
.Depth of Field...Area Light Sources
.Deformations...Displacements
.Spectral Colors...Texture Mapping
.Environment Mapping..Bump Mapping
.Shadow Depth Mapping..Volume Shading
.Ray Tracing...Radiosity
.Programmable Shading (in Shading Language)
.Special Camera Projections




Q: What do I have to do in order to call my software "RenderMan
---------------------------------------------------------------
compliant"?
-----------

    You must support all of the required features, including all of
the geometric primitive types.  You must implement all of the API
calls or RIB requests, even for features you don't support (i.e. at
least have function stubs so your library accepts the calls).  You
must not allow information to be sent through any alternative calls
not defined by the interface, and you may not use any alternate
language for programmable shading.

    If you write a RenderMan compliant renderer, you must obtain a
no-charge license from Pixar (in writing).  You basically attest that
your software is compliant with the standard and that you won't abuse
Pixar's trademark and copyrights.

    Modeling programs which use the RI standard (i.e. output RIB or
make the API calls) may do so without a license, but must display
Pixar's copyrights as follows:

.The RenderMan (R) Interface Procedures and Protocol are:
..Copyright 1988, 1989, Pixar
..  All Rights Reserved




Q: What implementations of the RenderMan standard are available?
----------------------------------------------------------------

   There are currently two widely used RenderMan-compliant renderers:
PRMan and BMRT.  Several other proprietary implementations no doubt
exist (I know of a couple), but to the best of my knowledge they are
not available commercially or otherwise.

   Pixar's PhotoRealistic RenderMan ("PRMan", for short) is the most
widely used implementation.  These guys are, after all, the
originators of the standard, so their implementation is of very high
quality.  PRMan is used by many production houses, including ILM,
Digital Domain, Disney, and others.  It was used to render effects for
The Abyss, Terminator 2, Jurassic Park, Casper, Apollo 13, and many
other films.  And of course, it was used to render Toy Story.

   PRMan is available on several UNIX systems (retails for $3500 per
processor), and also bundled with other Mac/PC products like Pixar
Showplace and Macromedia Macromodel.  The NEXTSTEP operating system
comes with prman and qrman (Quick RenderMan, Pixar's RIB previewer).
Call Pixar for product information.

   Larry Gritz has a shareware implementation, called the Blue Moon
Rendering Tools (BMRT).  It supports ray tracing and radiosity, area
lights, full implementation of SL, volume and imager shaders, and
other advanced features.  It also comes with real-time RIB previewers
(under X11 and/or OpenGL).  BMRT runs on SGI, HP, NEXTSTEP, Linux, IBM
RS/6000, and DEC Alpha.  There are no Mac, Windows, or DOS versions.
It is available from ftp://ftp.gwu.edu/pub/graphics/BMRT.  More
information about BMRT is available from
http://www.seas.gwu.edu/student/gritz/bmrt.html




Q: Is PRMan a ray tracer?  How can PRMan do reflections if it's not a
   ray tracer?  Was a ray tracer used for reflections in Toy Story?
----------------------------------------------------------------------

   PRMan IS NOT A RAYTRACER.  It uses the Reyes algorithm (more or
less as described in the 1987 SIGGRAPH paper).  Environment and
reflection mapping do quite reasonable approximations to reflection
and refraction, in a fraction of the time it usually takes a ray
tracer.  Sometimes the reflections don't look quite correct compared
to a ray tracer, but this is almost never a problem and almost always
worth the time savings.

   Pixar used the very same version of PRMan for Toy Story (and all
their other work) as they sell to the public.  You can see examples of
how well PRMan does reflections and refractions, not only in Toy
Story, but also in The Abyss and Terminator 2.




Q: Is there a Macintosh/DOS/Windows port of BMRT?  In the works?
   Will the author of BMRT let me do the port to Mac/DOS/Windows?
-----------------------------------------------------------------

   In short: No.  It is unlikely that the list of supported platforms
will grow in the near future.  It's extremely unlikely that BMRT will
ever be ported to the Mac, DOS, Windows, NT, or any other non-UNIX
environment.

   BMRT is currently supported on SGI, Linux, HP, NEXTSTEP, IBM
RS/6000, and DEC Alpha.  If you have a PC, I strongly recommend
looking into Linux, a free (!) UNIX implementation that runs on Intel
486/Pentium systems.  NEXTSTEP also runs on Intel-based hardware, and
comes with PRMan built in (and can also run BMRT).

   BMRT's author doesn't wish to release source code, nor does he
currently want to port to non-UNIX OS's (on which he has neither the
access nor expertise, nor the desire to acquire either).  He's turned
down offers to port to Cray (among others), so it's not likely you'll
convince him to port to the Mac.  This is not a snub at users of the
Mac or any other platform, just a reality of the life of the author
and his finite time and resources.




Q: What front ends (modelers, etc) support the RenderMan Interface?
-------------------------------------------------------------------

Caveat: this information was supplied by many people, so it's hard to
verify its accuracy, and it certainly contains individuals' opinions.
Often, this info comes from the companies supplying the products.  I
do not necessarily endorse any of the products listed, though if I
find out that any are particularly bad, I will note it.

    Vertigo's Animation Machine software (modeler & animation system)
has very nice support for RenderMan output, but it's only a polygon
based modeler.  You can generate RIB files or render directly.
Vertigo comes with the prman runtime library linked in for integrated
rendering, or you can buy Vertigo bundled with prman.  Their phone
number is 604-684-2113.

    Macromedia's MacroModel's is a spline-based modeler.
CAD-accurate, with automatic 2D and 3D snapping. Non-modal, so objects
are created in relation to each other, with an integrated
interface. Near realtime shading without need for hardware
assist. Draw with standard 2D tools (or import FreeHand EPS), then go
3D. Exports DXF, bitmap.  No animation -- it's a modeler. Internal
rendering is draft quality, but it includes Pixar's RenderMan for
photorealistic rendering. You can pick up a non-saving demo version,
for both Mac and Win, on the Macromedia Showcase CD from your local
distributor (in North America, 800 326 2128). Bundle, imho, is a
steal.  (Note from lg: the RIB output has a couple places where it
doesn't conform to the standard, and needs some hand editing to work
with BMRT [prman seems to accept it anyway].  In particular, the
lowercase interface calls must be properly capitalized.)

    MicroStation is a general purpose CAD program which can be used as
a modeler.  It supports NURBS, CSG, fillets, and blends, and can
output RIB.  It's available for UNIX, DOS, and Windows.  I believe it
is actually written by Bentley Systems, but is marketed by Intergraph.
Cheap academic versions are available ($150?).  Bentley Systems can be
reached at: (610)458-5000 or academic@bentley.com (regarding the
academic package.)

    3DReality from Stone Design Corp. (505) 345-4800 info@stone.com
Runs on NEXTSTEP.  A little long in the tooth and has some quirks, but
it's built of dynamically loadable bundles and offers a very accesible
API for adding your own shapes, tools, etc. Reads and writes RIBS just
fine. Really, really good academic discounts and very friendly tech
support.

   Intuitiv'3d from Intuitive Systems, Inc. tel: 415-852-0245
fax:415-852-1271, info@intuisys.com.  Runs on NEXTSTEP.  Sports a
terrific interface but is rather slow.  Great realtime previews of
lighting and shape, so-so modeling tools, great shader manipulation,
including "MetaShaders" which store surface, color, displacement and
lighting shader info in a single entity.  Reads RIBS but saves to its
own proprietary format (.i3dw)

   solidThinking from Gestel Italia, Ph.:++39 444 964-974
Fax: ++39 444 964-984 Email: info@solid.gestel.it
   For NEXTSTEP, this industrial-strength modeler from Italy
approaches Alias in its power and refinement. Great modeling tools
including NURBS, control of every RenderMan parameter, fast and smooth
manipulation of objects and lights. Reads and writes RIBS, reads
Wavefront, TDDD and DXF files too. Support for things like particle
animation, 3D mice and BMRT is planned.

   WaveMan, a Wavefront-to-RenderMan conversion tool, is available
from Minds Eye Graphics (mindseye@infi.net, 804-643-3713).

   Side Effects PRISMS animation system for SGI's running UNIX, has a
pretty complete implementation, 416/504-9876, get blurb from Janet
Frasier.  PRISMS 5 is polygonal, so it spits out polygons, but can
also do patch meshes.

   Alias PowerAnimator (also for SGI), versions 5 & 6, output rib,
NURBS including trim curves.

   The Valis Group's Pixel Putty Solo for the Mac ($349 retail, $299
direct?) offers an extremely versatile and fluid spline-based modeler
featuring nine different NURBS, lattice deformations and boolean
operations on patches, direct rendering to RenderMan using .slo
shaders, and event-based key frame animation with inverse kinematics.
More information can be had from Valis at: VALISGROUP@aol.com or
1-800-VALIS-04.

   Alias Sketch 2.0 for the Mac is a spline and polygon surface
modeler which supports NURBS but does not have shader support.  Price
is around $600.

   Autodesys form*Z is a CAD modeler on the Mac which goes for $1500.
Polygons, CSG, and spline meshes are supported.  No direct shader
support.

   VIDI's Presenter Professional for the Mac ($1500) is a
spline/patch-mesh based modeler with excellent RenderMan support; you
can manipulate shader parameters and everything.

   Pixar used to sell Showplace for the Mac and Typestry 2 for the
Mac and PC.  They're nice little programs if you can get your hands
on them, but Pixar no longer sells these.

   WavesWorld, a set of UI, modeling and animation objects available only
atop NEXTSTEP, available via http://wave.www.media.mit.edu/people/wave/
An object oriented framework consisting of two "kits" of objects and
lots of examples, WavesWorld is based directly atop the RenderMan
interface.

  FastCad 3D by Evolution Computing; 437 South 48th Street, Suite 106;
Tempe, AZ 85281; Phone: (602) 967-8633.  FastCad 3D is a 3-D modeling
system capable of producing a RIB file for rendering with a program
like Pixar's Renderman for Windows.  This DOS program can produce 3D
models quickly due to the fact that it is written in Assembly
language.

Animal Logic (Australia) sells a product called Softman for Softimage,
which reads SI scene files and converts for RenderMan output.  It has
a real nice shader interface with all params animatable. Automatic
shadow and reflection generation, and texture creation from different
file formats, individual object shading control, motion blur on object
motion, vertex, and camera, all in a nice motif interface. Contact
Animal Logic 61 2 906 1232 or support@dl.oz.au.

   DesignCad 3D for the Mac ($300) and DOS ($500) is a polygonal
surface modeler which outputs RIB.  Supports CSG.  No direct shader
support.

   Envisions Solutions sells Envision-It, which converts DXF to RIB.
Not a modeler.  Sells for around $200.

   Lost In Space makes a product called Siren which converts SoftImage
scenes into RIB files.  Info is available from siren@lostinspace.com.
Siren converts Softimage 3D scene and model files into RenderMan RIB
and shader files. Siren 2.0 works only on SGI's running IRIX 4.0.5 or
later. It can read Softimage 2.66 scene/model files. SiRen only has a
comandline/scripted interface, but is now being upgraded to a point
and click version 2.1.  To run siren you must have a copy of the
Softimage Developers Kit.  US$2000 per license, bulk discounts
available. 30% discount for educational institutions. Source licensing
is available. Siren + Renderman deals available.  Pay for Siren2.0 and
get a free upgrade to Siren2.1 when it is released.

   VisLab 3D Animation Software has a full renderman interface. Normal
rendering is done entirely in hardware, but everything can be
automatically piped over to prman, or written out as an .rib
file. Both hardware and prman can also be combined in the same
scene. The interface is really great.

   Poser is a human shape and pose modeler from Fractal Design.  It
runs on Mac and PowerMac, and a Windows version is on the way.  It can
export RIB.  Details can be found at http://www.fractal.com/poser/
or by calling (800)297-COOL.

   If you know of other front ends or products which use RenderMan,
please send me a short paragraph and I will include it here.



Q: What other net resources exist which are related to RenderMan?
-----------------------------------------------------------------

Tal Lancaster of CalTech has set up a "RenderMan Repository" for
dissemination of shaders, RIB files, etc.  Among other things,
this site has pointers to just about everything else that has
RenderMan related stuff.  Here's the URL:
        http://pete.cs.caltech.edu/RMR/

The Ebert, et al. book _Texturing and Modeling_ (mentioned earlier)
has an FTP site with the examples from the book, including RenderMan
Shading Language source code:
.ftp://archive.cs.umbc.edu/pub/textures

Professor Ken Musgrave (one of the authors of the T&M book) taught a
graduate seminar at GWU on procedural texturing.  Student projects,
images, and shaders can be found at:
    http://www.seas.gwu.edu/graphics/ProcTexCourse/

Similarly, Stephen May recently taught a course on digital lighting
at Ohio State.  A Shading Language tutorial and student projects
can be found at these addresses:
.http://www.cgrg.ohio-state.edu/~smay/DigitalLighting/Course.html
.http://www.cgrg.ohio-state.edu/~smay/RManNotes/RManNotes.html

BMRT home page:  http://www.seas.gwu.edu/student/gritz/bmrt.html

Michael B. Johnson (a.k.a. "Wave") has a home page at:
.http://wave.www.media.mit.edu/people/wave/
He's built a lot of software that runs on top of RenderMan (see
the description of WavesWorld earlier in this FAQ).

Pixar home page:  http://www.pixar.com.  Not much there yet.



 

Q: Where can I get the Pixar videos?
------------------------------------

Pixar's animation video (which contains Luxo Jr, Reds Dream, Tin Toy
and Knickknick) is available directly from Pixar.  The cost is $25.00.
Just call 1 800-888-9856 or 510-236-4000.  The tape is available in
both VHS NTSC and PAL formats.
 



Q: What is the correct capitalization of "Pixar"?
-------------------------------------------------

   It's written "Pixar", just as it is throughout this FAQ.  I don't
know why people keep capitalizing it, perhaps they are trying to
duplicate the logo, which is in a particular typeface and happens to
be all caps.  In any case, it's not an acronym like IBM.  It's a
regular company name like Disney.



----------------------------------------------------------------------

This FAQ was mostly written and maintained by Larry Gritz, who wishes
to thank the contributions of: Antoine Durr, J.J. Hoesing, Steve
Hollasch, Michael B. Johnson, Joshua Kolden, Andrew MacRae, Nino
Mendolia, David Milner, Pohl Longsine, Steve Weintz, and others.

Please send comments, additions, gripes to: lg@pixar.com

-- 
Larry Gritz.....Pixar Animation Studios
lg@pixar.com.....Richmond, CA
