To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cad.devOpen lugnet.cad.dev in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / Development / 3416
3415  |  3417
Subject: 
Re: Line in the Sand
Newsgroups: 
lugnet.cad.dev
Date: 
Sat, 4 Dec 1999 02:05:21 GMT
Viewed: 
1597 times
  
Steve Bliss wrote...
Still discussing:
<http://www.geocities.com/partsref/bfcspec.txt>
and now
<http://www.geocities.com/partsref/bfcspecv4.txt>

I posted an update to the v4 spec just now.  It includes the changes suggested
by Jacob.

Things have been quiet lately, so I want to throw out a couple of questions:

Does anyone have an opinion on whether it would be preferable to go with the
original syntax approach (having several meta-statements), or the newer approach
(a single meta-statement, with options)?

Original:
0 CERTIFY ( BFC | NOBFC )
0 WINDING ( CW | CCW | UNKNOWN )
0 CLIPPING ( ON | OFF )
0 INVERTNEXT

Newer:
0 BFC [CERTIFY|NOCERTIFY] [CLIP|NOCLIP] [CW|CCW|NOWIND] [INVERTNEXT]

I prefer the newer with only one new meta-statement. This easily
identifies commands related to BFC.
However, the syntactical change doesn't solve the discussion about
the CERTIFY option, see later.

I have some suggestions for bfcspecv4.txt:
3 Certified.  A DAT file is certified if it complies with the specifications
3 in this document, and includes a 0 CERTIFY BFC statement.
"0 CERTIFY BFC" should be "0 BFC CERTIFY"


4 Control of the compliance/non-compliance state will only affect the current
4 file.  Subfiles will be affected indirectly, because it is not possible to
4 clip subfiles of non-BFC files, but the compliancy of the subfiles will not
4 be affected.
You could add: "i.e. it is not possible to clip a BFC subfile when
it is referenced by a non-BFC superfile, but the same BFC subfile
may be clipped when referenced from a BFC superfile"

4 CERTIFY
4 This tag indicates the DAT file is compatible with the
4 backface-culling extension.  Every DAT file must be clearly labeled if it is
4 compliant.  One way to accomplish is to place 0 BFC CERTIFY at the beginning
4 of the file, before the first operational command-line.
4
4 A second way to specify a file as compliant is to use any option, except for
4 the NOCERTIFY option, on a 0 BFC meta-statement, before the first operational
4 command-line.  This is an acceptable alternative, but the 0 BFC CERTIFY
4 method is recommended and prefered.

and on November 17th you wrote likewise in
http://www.lugnet.com/news/display.cgi?lugnet.cad.dev:3247
Any use of the 0 BFC command would indicate that the file is certified, except
for 0 BFC NOCERTIFY.  So, strictly speaking, CERTIFY is redundant.  Placing a 0
BFC CLIP or 0 BFC CW at the start of a file would be sufficient to certify that
file.

The pseudo-code doesn't reflect this. It always requires a 0 BFC CERTIFY.
And this implies 0 BFC CLIP and 0 BFC CCW. (which should be added)

When glancing at a BFC file I think it would be nice to see the winding-
state stated explicitly, rather than having to remember the default.

So my suggestion is these simple rules:
*0 BFC CCW|CW|NOWIND
*This defines the winding of the following polygons and also means that
*the file is "certified", i.e. "has been inspected", and therefore
*cliping is enabled, both for local polygons and subfiles.
*Winding-state can be changed any time by a new 0 BFC CCW|CW|NOWIND.
*
*In the (probably) rare cases of double-sided sections, the part-author
*can temporarily use 0 BFC NOCLIP and then 0 BFC CLIP. Both local
*polygons and subfiles in that section are not clipped.
*
*If you want to turn a subfile inside-out, add a 0 BFC INVERTNEXT just
*before the subfile reference.

See also http://www.lugnet.com/news/display.cgi?lugnet.cad.dev:3220
and http://www.lugnet.com/news/display.cgi?lugnet.cad.dev:3234

Can you rewrite the pseudo-code to accommodate both uses
or must we choose?


4 NOWIND
4 This option sets the winding-state to indicate that following polygons may be
4 wound in either clockwise or counter-clockwise, or may not be correctly wound
4 at all.
You should add the word "unknown" which has been used earlier in the
document, for example:
NOWIND
This option sets the winding-state to unknown indicating that following
polygons may be wound in either clockwise or counter-clockwise, or may
not be correctly wound at all.

4 There may be any number of WINDING
4 statements in a file, although it is recommended that changes to WINDING
4 be kept to a minimum.
It's not WINDING anymore...

4 INVERTNEXT
4 This option is used directly before a subfile command (linetype 1).  It is
4 a flag, indicating to the renderer that the following subfile reference should
4 have its orientation inverted, i.e. the inside/outside definition should be
4 swapped.  Inverted subfiles must be preceeded by an 0 INVERTNEXT statement,
4 and the 0 INVERTNEXT statement may not appear anywhere else in a file.
Change "0 INVERTNEXT" to "0 BFC INVERTNEXT"

4 {deleted invalid paragraph about assuming part-files are always right-side-out}
Hey, what did you do that for?
I think it is perfectly alright to assume that files in the ldraw\parts
directory are right-side out, (and therefore clippable) even though
not all superfiles are certified.

4 Recursive Procedure RenderFile
4 Parameters:
4   ModelFile string // File to render
4   AccumClip boolean // global clipping value yes/no
4   AccumInvert boolean // current inversion odd/even or normal/inverted
     TransformMatrix matrix // current transformation

4            RenderFile Command.Subfile,
4                       (AccumClip and LocalClip and Certified),
4                       (AccumInvert xor InvertNext)
                         TransformMatrix * Command.TransformMatrix

TransformMatrix could be renamed to AccumTransformMatrix like the other
parameters to RenderFile.

BTW, "CERTIFY" - shouldn't it be "CERTIFIED" ?

Maybe we can get this finalized before the end of the year.  Well, a guy can
dream, right? ;)

Yes, it would be nice (and necessary) to get opinions/approval/consent
from more part authors and programmers.
/Lars



Message has 1 Reply:
  Re: Line in the Sand
 
Sorry this is so long. I've tried to err on the side of quoting too much of Lars' message, rather than too little. Also, I've tried to be thourough in my replies. In related news, I've added a 'Current Issues' section at the top of the v4 document. (...) (24 years ago, 5-Dec-99, to lugnet.cad.dev)

Message is in Reply To:
  Re: Line in the Sand
 
Still discussing: (URL) and now (URL) I posted an update to the v4 spec just now. It includes the changes suggested by Jacob. Things have been quiet lately, so I want to throw out a couple of questions: Does anyone have an opinion on whether it (...) (24 years ago, 2-Dec-99, to lugnet.cad.dev)

85 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
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR