[x3d-public] [...] HAnim2 X3D4 BoxMan update: does ClassicVRML Grammar allows ROUTE in children?

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Thu Jan 5 09:00:15 PST 2023


Patrick, thanks for these important insights.

 

Am looking closely and tracing the grammar.  As you know, such grammars are
very important because they formally and unambiguously describe what is
allowed.  Also pretty tricky to follow!

 

*	Extensible 3D (X3D) encodings, Part 2: Classic VRML encoding Annex A
(normative), Grammar
*
https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.h
tml

 

Am finding following excerpts of interest.  Hopefully addition of
color-coding helps:

 

a.	node ::=

  nodeTypeId { nodeBody } |

  Script { scriptBody } |

  ComposedShader {composedShaderBody} |

  PackagedShader {packagedShaderBody} |

  ShaderProgram {shaderProgramBody} ;

b.	nodeBody ::=

  nodeBodyElement |

  nodeBodyElement nodeBody |

  empty ;

 

c.	mfnodeValue ::=

   nodeStatement |

   [ ] |

   [ nodeStatements ] ;

 

d.	nodeStatements ::=

  nodeStatement |

  nodeStatement nodeStatements ;

 

e.	nodeStatement::=

  node |

  DEF nodeNameId node |

  USE nodeNameId ;

 

f.	nodeBodyElement ::=

  initializeOnlyId fieldValue |

  inputOutputId fieldValue |

  initializeOnlyId IS initializeOnlyId |

  inputOnlyId IS inputOnlyId |

  outputOnlyId IS outputOnlyId |

  inputOutputId IS inputOutputId |

  routeStatement |

  protoStatement ;

 

g.	routeStatement ::=

  ROUTE nodeNameId . outputOnlyId TO nodeNameId . inputOnlyId ;

 

h.	statement ::=

  nodeStatement |

  importStatement |

  exportStatement |

  protoStatement |

  routeStatement ;

 

i.	sfnodeValue ::=

  nodeStatement |

  NULL ;

 

 

So it looks like there are several chains of interest as follows:

 

1.	mfnodeValue > nodeStatements > nodeStatement > node > nodeTypeId {
nodeBody } > nodeBodyElement > routeStatement > ROUTE

 

2.	sfnodeValue > nodeStatement > (etc. as shown immediately above in
chain 1)

 

3.	statement > routeStatement > ROUTE

 

>From these three chains in ClassicVRML grammar, it appears logical to
conclude that ROUTE is allowed to appear wherever an MFNode, SFNode or
statement is allowed to appear.

 

That would be a consistent match with the parent-child relationships defined
in X3D XML Schema and DTD.

 

Hopefully I have the chain of logic correct here.  All scrutiny and review
is welcome, we definitely need to get this right.

 

If there is any unintended omission in the Backus-Naur logic here, then
great!  We can agree now on corrections, and fix any issues in this year’s
expected update of the ClassicVRML encoding from X3D3 to X3D4.  Correction
of converters can also proceed immediately upon achieving consensus.

 

*	Wikipedia:  Backus-Naur form
*	https://en.wikipedia.org/wiki/Backus-Naur_form

 

Again thanks for careful strictness, careful checking of model content is
one of our greatest strengths.

 

Have fun with ClassicVRML X3D!  8)

 

all the best, Don

-- 

Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu

Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149

X3D graphics, virtual worlds, Navy robotics https://
faculty.nps.edu/brutzman

 

-----Original Message-----
From: x3d-public <x3d-public-bounces at web3d.org> On Behalf Of Patrick Dähne
Sent: Thursday, January 5, 2023 3:05 AM
To: Joseph D Williams <joedwil at earthlink.net>
Cc: X3D Public Mailing List (x3d-public at web3d.org) <x3d-public at web3d.org>
Subject: Re: [x3d-public] [...] HAnim2 X3D4 BoxMan update

 

 

> Am 05.01.2023 um 03:33 schrieb Joseph D Williams <
<mailto:joedwil at earthlink.net> joedwil at earthlink.net>:

> 

>             • Classic VRML does not allow to declare ROUTEs inside MFNode
fields. Move them outside.

>  

> There may be other x3d Statements and some rules, but I don’t see any spec
language for what you describe regarding ROUTE.

 

The (only) relevant part of the „Classic VRML encoding“ spec is „Annex A:
Grammar“:

 

 <https://www.web3d.org/documents/specifications/19776-2/V3.3/index.html>
https://www.web3d.org/documents/specifications/19776-2/V3.3/index.html

 

The grammar is written in Backus-Naur form. It is the „Scheme“ of classic
encoding. Have a look at the rule „mfnodeValue“. You won’t find the symbol
„routeStatement“ on the right hand side of that rule.

 

ROUTEs are only allowed:

 

1. At the top level of the scene

2. Inside the node body (between fields)

 

In my opinion it does not make much sense to forbid ROUTEs inside MFNode
fields, and I am actually surprised that someone implemented it such
strictly.

 

Bye,

 

Patrick

 

 

_______________________________________________

x3d-public mailing list

 <mailto:x3d-public at web3d.org> x3d-public at web3d.org

 <http://web3d.org/mailman/listinfo/x3d-public_web3d.org>
http://web3d.org/mailman/listinfo/x3d-public_web3d.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230105/e8777c4e/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5353 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230105/e8777c4e/attachment-0001.p7s>


More information about the x3d-public mailing list