Article View: comp.sys.next.programmer
Article #259Re: lines, arcs, curves in RenderMan?
From: Daryll Strauss
Date: Mon, 27 Jul 1992 17:38
Date: Mon, 27 Jul 1992 17:38
43 lines
2864 bytes
2864 bytes
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.
Technical Details
Message-ID:
<1992Jul27.173858.5324@aero.org>Path:
arc1-ca.pugleaf.net!sparky!uunet!usc!aero.org!Aero.org!straussReferences:
<1992Jul27.013112.1645@proforma.com>Show Full Headers
Complete Article Headers
Newsgroups: comp.sys.next.programmer Path: arc1-ca.pugleaf.net!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