🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sys.next.programmer
2 messages
2 total messages Started by J. G. Gregory Mon, 27 Jul 1992 01:31
lines, arcs, curves in RenderMan?
#251
Author: J. G. Gregory
Date: Mon, 27 Jul 1992 01:31
19 lines
1167 bytes
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?

I thought RenderMan would have a standard way to get "zero thickness" objects  
like the way PostScript has strokes of 0 width -- It does the finest line  
possible on the device.  But the "RenderMan Companion" doesn't act like people  
draw lines, and I am confused.

Do I just do PostScript, pumping my own points through the 3DCamera's  
transform?  Use small cylinders? Polygons?

Please no news on The Theory of Renderman, etc.  I understand the high-end  
goals.  But I was under the impression that the 3Dkit would do a lot of the 3D  
transforms for me.  People even said, "Think of it as 3D PostScript".

I hope I'm missing something.
--J Gregory
Re: lines, arcs, curves in RenderMan?
#259
Author: Daryll Strauss
Date: Mon, 27 Jul 1992 17:38
43 lines
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.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads