[x3d-public] Ran across an interesting example.

Leonard Daly Leonard.Daly at realism.com
Fri May 19 07:08:35 PDT 2017


Even more than normals or colors, the node declares an illegal 
IndexedFaceSet. In 13.3.6 IndexedFaceSet of 19775-1 
(http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#IndexedFaceSet) 
the first paragraph, last sentence after the node definition

    Each face of the IndexedFaceSet shall have:

     1. at least three non-coincident vertices;
     2. vertices that define a planar polygon;
     3. vertices that define a non-self-intersecting polygon.

In you example coordIndex='0 0 1 -1 0 1 1 -1 2 2 3 3 -1 0 3 3 0 -1 0 3 2 
1 -1 1 2 2 1 -1 1 2 3 0 -1' or separately listing the vertex coordinate 
indices:

1: 0 0 1 -1
2: 0 1 1 -1
3: 2 2 3 3 -1
4: 0 3 3 0 -1
5: 0 3 2 1 -1
6: 1 2 2 1 -1
7: 1 2 3 0 -1

The polygon definitions #1, 2, 3, 4, 6 do not meet criteria (a). Since 
all three are requirements, this definition is not legal. The spec is 
silent about what a player should do, so crashing is technically legal 
(but undesirable).


Leonard Daly



> John,
>
> This is an interesting example, because technically it is not legal 
> X3D  !!
>
> That said, having saved it as a file, and tried it on the X3D 
> Validator, it passed validation !!
>
> Your analysis is correct. Reviewing the standard explains why. Look at 
> ISO/IEC 19775-1 clause 13.3.6 IndexedFaceSet 
> (http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#IndexedFaceSet).
>
> We’ll start with the eighth paragraph, which includes the words:
>
> “If the /normal/ field is not |NULL|, it shall contain a node derived 
> from /X3DNormalNode/ whose normals are applied to the vertices or 
> faces of the IndexedFaceSet in a manner exactly equivalent to that 
> described above for applying colours to vertices/faces (where 
> /normalPerVertex/ corresponds to /colorPerVertex/ and /normalIndex/ 
> corresponds to /colorIndex/).”
>
> Now let’s look at what should happen for colorIndex when 
> colorPerVertex is false. This is specified at list item d.1. two 
> paragraphs earlier. It reads:
>
> “If the /colorIndex/ field is not empty, one colour is used for each 
> face of the IndexedFaceSet. There shall be at least as many indices in 
> the /colorIndex/ field as there are faces in the IndexedFaceSet. If 
> the greatest index in the /colorIndex/ field is N, there shall be N+1 
> colours in the /X3DColorNode/. The /colorIndex/ field shall not 
> contain any negative entries.”
>
> Notice the last sentence, where it say there shall not be any negative 
> values.
>
> So, applying these principles to the normals, we can see that there 
> should be no negative values.
>
> Perhaps the Schematron could be improved by adding a rule to check for 
> this scenario. And thinking about it, it would probably be possible to 
> do it in JSON, although it would be complicated.
>
> All the best,
>
> Roy
>
> *From:*x3d-public [mailto:x3d-public-bounces at web3d.org] *On Behalf Of 
> *John Carlson
> *Sent:* 19 May 2017 10:57
> *To:* X3D Graphics public mailing list <x3d-public at web3d.org>; 
> x3dom-users at lists.sourceforge.net
> *Subject:* [x3d-public] Ran across an interesting example.
>
> Below X3D XML NOT viewable  in X3DOM, (Octaga??), Instant Player 
> (console goes into infinite loop),  H3D complains about: (Unnamed 
> Normal.vector.  Field has size 6).  I think it may be because 
> normalIndex has -1’s when normalPerVertex=false??? If I take out the 
> -1’s, it’s viewable in X3DOM, Octaga, InstantPlayer, and H3D.  The 
> content still needs work, of course (It’s supposed to be a cube!).
>
> X3DOM’s console looks like:
>
> x3dom-full.js:4743 Uncaught TypeError: Cannot read property 'x' of 
> undefined
>
>     at x3dom.registerNodeType.defineClass.nodeChanged.nodeChanged 
> (x3dom-full.js:4743)
>
>     at x3dom.NodeNameSpace.setupTree (x3dom-full.js:2869)
>
>     at x3dom-full.js:2869
>
>     at Function.Array.forEach (x3dom-full.js:2)
>
>     at x3dom.NodeNameSpace.setupTree (x3dom-full.js:2869)
>
>     at x3dom-full.js:2869
>
>     at Function.Array.forEach (x3dom-full.js:2)
>
>     at x3dom.NodeNameSpace.setupTree (x3dom-full.js:2869)
>
>     at x3dom-full.js:2869
>
>     at Function.Array.forEach (x3dom-full.js:2)
>
> What does quality assurance report?  I don’t get any significant 
> warnings from X3D-Edit or X3DJSAIL, that I can tell!
>
> Not sure about the standard, but leaving out the -1’s makes sense if 
> normalPerVertex = false, I think.  I’ll let others weigh in about the 
> standard.
>
> Thanks,
>
> John
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" 
> "http://www.web3d.org/specifications/x3d-3.3.dtd">
>
> <X3D profile='Interchange' version='3.3' 
> xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' 
> xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.3.xsd'>
>
>     <head>
>
>         <meta name='title' content='template.json'/>
>
>         <meta name='identifier' 
> content='http://coderextreme.net/X3DJSONLD/template.json'/>
>
>         <meta name='description' content='Template for an Indexed Face 
> Set'/>
>
>         <meta name='creator' content='John Carlson'/>
>
>         <meta name='created' content='4 April 2017'/>
>
>     </head>
>
>     <Scene>
>
>         <Group>
>
> <Shape>
>
> <IndexedFaceSet DEF='IndexedFaceSet' colorIndex='0 0 0 -1 0 0 0 -1 0 0 
> 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1' coordIndex='0 0 1 
> -1 0 1 1 -1 2 2 3 3 -1 0 3 3 0 -1 0 3 2 1 -1 1 2 2 1 -1 1 2 3 0 -1' 
> creaseAngle='1.57' normalIndex='0 -1 0 -1 1 -1 2 -1 3 -1 4 -1 5 -1' 
> normalPerVertex='false'>
>
> <Color color='0 1 0'/>
>
> <Coordinate point='0 0 1 0 1 1 1 1 1 1 0 1'/>
>
> <Normal vector='1 0 0 -1 0 0 0 1 0 0 0 -1 0 -1 0 0 0 1'/>
>
> </IndexedFaceSet>
>
> </Shape>
>
>         </Group>
>
>     </Scene>
>
> </X3D>
>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>
>
> _______________________________________________
> X3dom-users mailing list
> X3dom-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/x3dom-users


-- 
*Leonard Daly*
3D Systems & Cloud Consultant
LA ACM SIGGRAPH Chair
President, Daly Realism - /Creating the Future/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20170519/ae1cc1e7/attachment-0001.html>


More information about the x3d-public mailing list