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