Subject:
|
Re: CW/CCW, vertex sequence, co-planar, convex
|
Newsgroups:
|
lugnet.cad.dev
|
Date:
|
Mon, 4 Oct 1999 18:45:17 GMT
|
Viewed:
|
717 times
|
| |
| |
John VanZwieten wrote in message ...
> It seems to me that there are two major "camps" in the CW/CCW debate.
Actually, I count three ideas.
> A. Face-by-Face Method
> Disadvantages might be:
> 1. It might become overly complicated (either for part authors or for the
> rendering program) to follow the trail of CW-ness.
> 2. Repeated 0 CW, 0 CCW, 0 Invert commands could make the part files messy.
>
> B. Part-by-Part Method
> With this method, a part is either [C]CW compliant or it is not. If it is
> marked compliant (perhaps with 0 [C]CW-Compliant at the beginning), then when
> it is drawn only [C]CW faces are drawn. Otherwise all faces are drawn.
>
> For a part to be considered compliant, all subparts and primitives used in the
> part must themselves be compliant. Thus the stud2.dat primitive would have to
> be altered to:
> Advantages of the part-by-part model would be:
> 1. Easier for rendering programs to deal with, since the program would only
> have to follow inversions down to the part level. For example, it would have
> to recognize that part x was inverted in submodel "a," which was inverted in
> the main model file, and so CW-ness will be double-reversed. But it could
> then draw all the CCW faces in the part (and its primitives) and skip the CW
> faces.
> 2. Part files would be altered considerably, but would only increase slightly
> in size or complexity.
>
> Disadvantages:
> 1. Subparts, because they are not closed, probably could not be evaluated
> with the part-fixer. Thus most parts using subparts would be ineligible for
> CW certification.
> 2. Pretty much dependent on creating a robust "part-fixer" program. Parts
> more complex than basic bricks & plates would be very difficult to fix
> manually.
The third option, which I believe would be best, is similar to your
part-by-part option. However, being "compliant" in this case simply means
that the file contains at least one FACE CW|CCW command before any polygon
definitions.
A part file is compliant if its polygon vertex orders are known.
The primitives used by the part file are completely irrelevant. Each
primitive may or may not have a FACE command in it. If they don't, then all
of their polygons are treated as UNKNOWN and are always rendered.
Perhaps "compliant" is a misleading term here. By having a FACE directive
in a file, the file is "backface culling ready".
Ideally some group of people will organize the primitives so that they each
have a FACE directive, which will be chosen (sometimes arbitrarily) to
minimize the number of anticipated INVERTs for parts using the primitives.
Then the individual parts files will be cleaned up, but doing the primitives
first would have the biggest initial impact on performance.
Now the only questionable situation is when a part with unknown vertex order
references a primitive that is known. In this case it may be necessary to
treat the primitive as unknown because the part obviously will not have been
checked to see if the primitive needs to be inverted.
-Gary
|
|
Message has 1 Reply: | | Re: CW/CCW, vertex sequence, co-planar, convex
|
| Gary Williams wrote in message ... (...) Well, inside/outside-ness also counts. It doesn't make sense to certify a part before ALL its subfiles have defined what is inside/outside. Until then you cannot determine whether or not you need any INVERTS. (...) (25 years ago, 8-Oct-99, to lugnet.cad.dev)
|
Message is in Reply To:
| | Re: CW/CCW, vertex sequence, co-planar, convex [DAT]
|
| It seems to me that there are two major "camps" in the CW/CCW debate. A. Face-by-Face Method This method suggests that CW-ness be ultimately evaluated on a face-by-face basis. Each quad in a primitive or part would hold a value of CW,CCW, or (...) (25 years ago, 4-Oct-99, to lugnet.cad.dev)
|
53 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
This Message and its Replies on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|