home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.next.programmer
- Path: sparky!uunet!usc!aero.org!Aero.org!strauss
- From: strauss@Aero.org (Daryll Strauss)
- Subject: Re: lines, arcs, curves in RenderMan?
- Message-ID: <1992Jul27.173858.5324@aero.org>
- Keywords: renderman
- Sender: news@aero.org
- Organization: The Aerospace Corporation
- References: <1992Jul27.013112.1645@proforma.com>
- Date: Mon, 27 Jul 1992 17:38:58 GMT
- Lines: 51
-
- In article <1992Jul27.013112.1645@proforma.com>, jgg@proforma.com (J. G. Gregory) writes:
- |> I am sure I am missing something, but I open myself to abuse by asking a
- |> potentially stupid question:
- |>
- |> How do you draw lines, arcs, or other curves in the 3Dkit?
-
- The short answer is that 2D primitives don't exist in RenderMan.
-
- 3D kit gives you the ability to mix PostScript and RenderMan, but only
- in limited ways. You can place the PostScript underneath or above the
- RenderMan output. For example, you can place a TIFF file as the
- background with a 3D object in front of it, or you can create a 3D
- object and annotate it with the PostScript on top. You can't have
- PostScript that both occludes and is occluded by the 3D object.
-
- In a purely theoretical sense, the problem is that 2D objects are
- invisible in a 3D world. A line, being infinitesimally thin, doesn't
- render as any pixels no matter where you place the camera. PostScript
- has the same problem with its lines. The PostScript solution is to make
- zero with lines be a device dependent thickness such that they image as
- one pixel thick.
-
- I suppose that RenderMan could do a similar thing by defining a bunch of
- 2D (lines, arcs, etc) primitives map them into curved cylinders with a
- device dependent thickness that would render to one pixel wide. The
- appropriate thickness would have to change depending on the distance the
- 2D object is from the camera. That might make things easier, but Pixar
- would essentially end up implementing all of PostScript in RenderMan. I
- also suspect it would really mess up your sense of depth, because your
- line would change size within the scene. So, I don't think it makes
- sense.
-
- RenderMan is a scene description language. You provide it with the real
- data for the scene and it provides a rendering of that scene. You're
- asking for a way to mix non real objects into the scene. RenderMan
- doesn't support that. You could create the objects (cylinders) yourself,
- but that varying width would make life difficult. You could query the
- camera in the cylinders renderSelf method to perform a mapping from
- screen coordinates to world coordinate over the pixels where the
- cylinder will be, and then use that to set the width of the cylinder,
- but that's a really ugly hack. I'd suggest that if the
- foreground/background PostScript doesn't do what you want, then you need
- to rethink what you are trying to do in RenderMan.
-
-
-
-
-
-
-
-
-