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 / 3200
3199  |  3201
Subject: 
Re: Line in the Sand
Newsgroups: 
lugnet.cad.dev
Date: 
Mon, 8 Nov 1999 16:38:50 GMT
Reply-To: 
rui.martins@link.^Spamcake^pt
Viewed: 
2398 times
  
Steve:

I have a small linguistic correction, but except for that,
I consider the document finished:

  There will be a few requirements placed on the design of rendering programs,
  in order to achieve correct renderings.  Any program should may violate
                                                       ^^^^^^^^^^
Wouldn't "may" be sufficient?

  these requirements, if there is another way to acheive a valid rendering.

  Agreed, it's logical. Should is too strong ! not like must, but strong
anyway.

Rui:

<http://www.geocities.com/partsref/bfcspec.txt>

I don't have much time now, but here are several problems.

Examples:

check the following two statements:
---------------------------------------------------------------------------
To make this standard useful and effective, the LDraw parts library
must be updated to follow the new standard. Since it would be difficult to
rewrite the entire library in one update, the standard will allow for a
mix of extended and unextended files in one rendering.

---------------------------------------------------------------------------
2 Allowable Clipping.  A subfile can only have clipping applied when the
2 following conditions apply:
    - All superfiles are certified.
    - The current file is certified.
2    - No superfile has disabled clipping prior to referencing this
2      subfile.

---------------------------------------------------------------------------

Allows a mix of extended and unextended files in one rendering, but
to allow clipping, all files, have to be certified !?!?

All the files in the relevant _branch_ of the rendering
tree.

  of course, but all files start on one root, if that is no BFC certified,
  than no acceleration.

If you certify your model, then every certified primitive
will be drawn with back-face-culling when it is used for a
certified part.

  but a certified part can have sub parts not certified ! hence another
no-go.

You can't get it any better!

  Yes you can !
  Every file (primitive / subpart / part / model) once certified, will
benefit for it
self, as long as CLIPPING is LOCAL.

  There is only one problem, and that is the builder friendly INVERT
command context.
Example:

If some builder in the past made a file which enherently uses the
primitive/subpart inside-out, then when this primitive/subpart is
certified, all files that used it inside-out will have erroneously clipped
polygons.

I am shure that all you guys can figure out a solution for this, taking
into account the benefits of this option.

Some suggestion (haven't thought much one these iet):
- Only certify these error prune primitives after checking
  all the already made subparts/parts that use them are certified.
  Future subparts/parts should take the invert command into account.
OR
- supply the inside-out versions of these primitives, for compatibility
  with older files.
OR
- Impose your rule (all tree branches must be certified) ONLY for
  primitives (because they are the ones which are used inside-out
  sometimes), but not to the whole tree branch.
OR
- Create a New file extension '*.dtc', for *.dat files which ware clipping
certified.

Do you have any more suggestions / constructive criticism.

As soon as all the primitives are certified and people start
to insert certification flags in their models, all certified
parts will be drawn with back-face-culling.

  That will take a lot of time. we should see progress (acceleration)
  as soon as we start implementing it.

  One major acceleration will be the 'stud.dat' file, because, AFAIK
  no one uses it inside-out.

I repeat: You can't get it any better!

  see above.

This basicly resumes to:
- You won't benefit from the changes, UNLESS ALL the files you use
  are certified.

Wrong.

  In branches, obviously, try to be constructive ;).

- Every already made (Old) model, won't ever benefit unless it is
  redited.

Yes, but if it only refers to ordinary parts, that is just a
matter of inserting a "0 CERTIFY BFC" line in the file.

  NO, all your *.dat files in every tree branch born on the top level
  *.dat file (the model).

I presume that the modelling programs (such as MLCAD) will
insert the "0 CERTIFY BFC" line automatically in all models
built in the "builder mode" (but not in "parts author
mode").

  Good suggestion !

In some cases, it may be desirable to assume that a file is
right-sideout, (and therefore clippable) even though not all superfiles
are certified. One obvious example is files in the ldraw\parts
directory.

  This paragraph is another one, sorry to say this, but IMHO
this paragraph it's a mess. (Could someone explain better !?)

It means that there could be an option in the renderer that
tells it that some files assume that their supermodels are
certified, even if they (the supermodels) don't contain a
"0 CERTIFY BFC" line.

This is just an _option_ for the renderers, which can make
them use back-face-culling on old models without a
"0 CERTIFY BFC" line.

So now we can bend some of the rules, depending on path or something
else (which is not defined). How is this supposed to be implemented ?

The renderers are allowed to give the user the _option_ of
bending the rules slightly.

  These things makes me remember the word 'hacking', until you get your
code running.

And what about the suggestion that someone supplied, that the default
context should be clarified ?

In my opinion the language extensions should be written with curly
braces '{' '}' instead of '[' ']', because the later means optional
parameter and the previous means compulsory parameter with possible
options if the pipe '|' is used.

So IMHO it should be like this:
-----------------------
0 CERTIFY { BFC | NOBFC }
default: NOBFC

No, but you could write it like this:

{ 0 CERTIFY [ BFC | NOBFC ] }



Resuming the above, and all the other examples which were after this last
example:

  If you read the paragraph with the '{','}' ... etc (go read it again
please).

What it means is that with a rule like this:
0 CERTIFY [ BFC | NOBFC ]

you can come up with the following line:
0 CERTIFY

which is what should NOT be allowed ! Expecially in this case, if you
want this Meta-Command to be usefull/compatible for other certifications
in the future.

something like this:
{ 0 CERTIFY [ BFC | NOBFC ] }

is even worse, because it does not allow you to ommited the command
entirelly, this syntax as no logic at all. Maybe you swapped the context
of the '{' with the one of the '['.

But in any case, the whole command does not need to surrounded by
anything.

The default value is for the case where the statement is
omitted completely.

  The same ideia here, Agreed.

<SNIP>...

UNKNOWN = winding direction is unknown or variable.  This setting will
disable clipping, until the winding is reset.

Using someones expression, the UNKNOWN is 'syntatic sugar', because this
will be implemented internally as CLIPPING OFF.
If the user want's to inform that the 'winding' is not known,
then he can make a regular comment, and use CLIPPING OFF

This sounds correct, but do we want to eliminate this
syntactic sugar?

  why not ?
  Could you give a good reason !


See ya,

-----------
Rui Martins



Message has 3 Replies:
  Re: Line in the Sand
 
[ Still discussing (URL) ] Rui: (...) Yes, but generally it is no big deal to certify a model file - and there is the suggested option for the renderers mentioned further down for the lazy. (...) Yes, but we aren't all that stupid. We will of cause (...) (24 years ago, 9-Nov-99, to lugnet.cad.dev)
  Re: Line in the Sand
 
(...) Yes. WINDING UNKNOWN allows a DAT author to specify what is happening in the file more precisely than CLIPPING OFF. Adding WINDING DOUBLE-SIDED would allow even more author-precision, but there is no practical difference between DOUBLE-SIDED (...) (24 years ago, 9-Nov-99, to lugnet.cad.dev)
  Re: Line in the Sand
 
(...) As Jacob said, this is why the specification suggests that rendering programs allow the user to select the option of defaulting CLIPPING to on or off. (...) Huh? In that case, the uncertified primitive is not back-face-culled, but the (...) (24 years ago, 9-Nov-99, to lugnet.cad.dev)

Message is in Reply To:
  Re: Line in the Sand
 
Steve: I have a small linguistic correction, but except for that, I consider the document finished: There will be a few requirements placed on the design of rendering programs, in order to achieve correct renderings. Any program should may violate (...) (24 years ago, 6-Nov-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