[x3d-public] Ran across an interesting example.

John Carlson yottzumm at gmail.com
Fri May 19 21:45:46 PDT 2017


Leonard, the point is to provide the user with useful debugging assistance, instead of leaving them in the dark…

John

Sent from Mail for Windows 10

From: Leonard Daly
Sent: Friday, May 19, 2017 10:08 AM
To: Roy Walmsley; 'John Carlson'; 'X3D Graphics public mailing list'; x3dom-users at lists.sourceforge.net
Subject: Re: Ran across an interesting example.

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: 
a. at least three non-coincident vertices;
b. vertices that define a planar polygon;
c. 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/20170520/c9731d17/attachment-0001.html>


More information about the x3d-public mailing list