[x3d-public] [x3dom-users] Ran across an interesting example.

Andreas Plesch andreasplesch at gmail.com
Fri May 19 11:51:02 PDT 2017


Hi Roy,

yes, of course, I just did not read far enough. Sorry for the confusion,

-Andreas

On Fri, May 19, 2017 at 10:14 AM, Roy Walmsley <roy.walmsley at ntlworld.com>
wrote:

> Andreas,
>
>
>
> Thanks for your comments. Looking back at the standard again, that is
> ISO/IEC 19775-1 clause 13.3.6 IndexedFaceSet, notice what it says under
> list item e.1.:
>
>
>
> “If the *colorIndex* field is not empty, colours are applied to each
> vertex of the IndexedFaceSet in exactly the same manner that the
> *coordIndex* field is used to choose coordinates for each vertex from the
> Coordinate node. The *colorIndex* field shall contain at least as many
> indices as the *coordIndex* field, and shall contain end-of-face markers
> (−1) in exactly the same places as the *coordIndex* field. If the
> greatest index in the *colorIndex* field is N, then there shall be N+1
> colours in the *X3DColorNode* node.”
>
>
>
> In this case the end-of-face markers in *colorIndex* are required to
> match the end-of-face markers in *coordIndex*. As we have already noted
> the *colorIndex* rules also apply to *normalIndex*. Therefore, all three
> can have, in the right circumstances, -1 values. This is reflected in the
> node signature for each of these three fields.
>
>
>
> All the best,
>
>
>
> Roy
>
>
>
> *From:* Andreas Plesch [mailto:andreasplesch at gmail.com]
> *Sent:* 19 May 2017 14:35
> *To:* Roy Walmsley <roy.walmsley at ntlworld.com>
> *Cc:* John Carlson <yottzumm at gmail.com>; X3D Graphics public mailing list
> <x3d-public at web3d.org>; x3dom mlist <x3dom-users at lists.sourceforge.net>
> *Subject:* Re: [x3dom-users] [x3d-public] Ran across an interesting
> example.
>
>
>
> Hi Roy,
>
>
>
> sorry, I did not see your response in time.
>
>
>
> I do think the signatures for colorIndex and normalIndex should be
> corrected to not include "or -1". Currently, they state:
>
>
>
> MFInt32 []       colorIndex        []   [0,∞) or -1
>
> MFInt32 []       normalIndex        []   [0,∞) or -1
>
>
>
> Perhaps these were just copied from coordIndex ? Or did VRML allow the -1 ?
>
>
>
> On the other hand the signature for texCoordIndex is correct:
>
>
>
> MFInt32 []       texCoordIndex     []   [-1,∞)
>
>
>
> -Andreas
>
>
>
>
>
>
>
> On Fri, May 19, 2017 at 6:24 AM, Roy Walmsley <roy.walmsley at ntlworld.com>
> wrote:
>
> 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
>
>
>
>
>
> --
>
> Andreas Plesch
> 39 Barbara Rd.
> Waltham, MA 02453
>



-- 
Andreas Plesch
39 Barbara Rd.
Waltham, MA 02453
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20170519/a4fbb9e0/attachment-0001.html>


More information about the x3d-public mailing list