[comp.graphics] 3D wide lines?

thom@hpfcdq.UUCP (02/13/87)

I would like to find out what people think about "wide lines" in a 3D world.
I heard some interpretations of this that could be considered a bit bizarre.
I would like to know what people perceive is in use today, is needed by 
applications, and/or would be used if it were available.

I will couch my discussion of the topic in terms of the formal graphics 
standards that exist and that are currently under development, since this
is what I am familiar with and this is what helped spawn the question in
the first place. 

In the beginning, with GKS, there was the concept of a polyline, the primitive.
One form of control over the rendering of the polyline was the specification
of a linewidth scale factor.  This linewidth scale factor was described as
defining an attribute of the primitive which was applied when the polyline
was rendered.  Linewidth, in this framework, is an attribute that is applied
on the view surface; it is something used in distinguishing this polyline
from another polyline.  It is not a refinement of the geometry of the 
polyline - polylines are infinitessimally (sic?) thin, but for convenience
are rendered with some width so you can see them.

GKS is 2D.  Then came some 3D standards that were refinements of GKS (GKS-3D
and PHIGS).  They both have the same model as GKS in this regard.

The tricky stuff has been introduced by the CGM and CGI, which are both 2D
standards.  In addition to the linewidth model described above, the CGM/CGI
has introduced a mode of linewidth rendering, called "absolute" (the other
called "scaled") which treats the width of a line as if the line were 
really flat.  In the 2D world (independent of endpoint mitering) you could
consider these "absolute" wide lines as rectangles.  The key here is that
the width of the line is affected by coordinate transformation.

So this brings me to my question.  Just how do you extend this "absolute"
linewidth concept to 3D?  

One straight-forward conceptual extension would be to render the lines as
strings, where the thickness of the string or cylinder is defined by the
linewidth.  One new variable that might be the analog of the pen tip in
2D would be the shape in 3D.  The best analog in the real world that I can
think of is the Playdoo machines where you select a template and squish
the playdoo through the desired shape.  Of course, this all does sound a
bit silly doesn't it.  That is my point.  What do people really need for
linewidth in 3D?  Do they need this concept of "absolute" linewidth which
elevates the concept of width of a polyline primitive to that of redefining
the geometry of the primitive, or do they just need the "scaled" type of
linewidth where linewidth is an attribute of the rendering on the view surface
and is not an attribute of the model or geometry?

One other interesting thing to consider about "absolute" linewidth is its 
implication on systems that do lighting and shading.  If linewidth defines
the geometry of a polyline to be an area rather than line primitive, the 
lighting calculations would need to apply to it.  I guess if you accept
the cylinder rendering method for 3D, why not light and shade the darn 
cylinder!

Any comments and insights are greatly appreciated.

-- Tom Morrissey
decvax!hplabs!hpfcla!thom