<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:inherit;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:inherit;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:inherit;}
span.od
        {mso-style-name:od;}
span.ev
        {mso-style-name:ev;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Fix X3D JSON hand generated schema to make the following errors.  I would tend towards going to the autogenerated schema, but it needs review, perhaps. This is part of the review of the schema.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Note these are under development,</p><p class=MsoNormal><o:p> </o:p></p><div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0><tr><td style='padding:0in 0in 0in 0in'><div style='border:solid windowtext 1.0pt;padding:1.0pt 1.0pt 1.0pt 1.0pt' id=vt100><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>BallBounce.json:            "@name":"warning",                                  </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>BallBounceSimple.json:            "@name":"warning",                            </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>BallJoint.json:            "@name":"warning",                                   </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>BodyGeometry.json:            "@name":"warning",                                </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>BounceTrimesh.json:            "@name":"warning",                               </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>CarDemoMain.json:            "@name":"warning",                                 </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>CarDemoMain.json:            "@name":"warning",                                 </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>CarDemoWorldModel.json:            "@name":"warning",                           </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>DoubleHingeJoint.json:            "@name":"warning",                            </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>MotorJoint.json:            "@name":"warning",                                  </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>MovingBody.json:            "@name":"warning",                                  </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>SingleHingeJoint.json:            "@name":"warning",                            </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=od><span style='color:#BFBFBF'>SliderJoint.json:            "@name":"warning",                                 </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:111%;background:black'><span class=ev><span style='color:#BFBFBF'>UniversalJoint.json:            "@name":"warning",                              </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre></div></td></tr></table></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This error has been reported many times with out any action.</p><pre style='line-height:110%;background:black'><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/BallBounce.json                                                           </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=ev><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/BallBounceSimple.json                                                     </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/BallJoint.json                                                            </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=ev><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/BodyGeometry.json                                                         </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/BounceTrimesh.json                                                        </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=ev><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/DoubleHingeJoint.json                                                     </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/MotorJoint.json                                                           </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=ev><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/MovingBody.json                                                           </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/SingleHingeJoint.json                                                     </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><pre style='line-height:110%;background:black'><span class=ev><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/SliderJoint.json                                                          </span></span><span style='color:#BFBFBF'><o:p></o:p></span></pre><p class=MsoNormal><span class=od><span style='color:#BFBFBF'>0 Ajv 3.2 Validation failed on C:/x3d-code/www.web3d.org/x3d/content/examples/Basic/RigidBodyPhysics/UniversalJoint.json                                                      </span></span></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Sent: </b>Saturday, January 5, 2019 8:55 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] Basic examples. -geometry field should be array(MFNode) for RigidBody and according to X3DUOM</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 1/4/2019 9:04 PM, John Carlson wrote:</p><p class=MsoNormal>[...]</p><p class=MsoNormal>> When should -geometry be an SFNode and when should it be an MFNode (array in JSON Schema)?</p><p class=MsoNormal>> </p><p class=MsoNormal>> Geometry is still an MFNode for NurbsSet and RigidBody in X3DUOM.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Architecture Specification ISO 19775-1 governs all typing.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Strict typing in X3D is of course our best friend, it prevents Garbage In Garbage Out (GIGO) in scene content so that players and loaders can do the right thing exceedingly well.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>To facilitate checking on important questions like this, the X3D Tooltips include convenience links to various references relating to each node.  Let's explore.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>===================================</p><p class=MsoNormal>Shape geometry field is SFNode:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Tooltips: Shape</p><p class=MsoNormal>                http://www.web3d.org/x3d/tooltips/X3dTooltips.html#Shape.geometry</p><p class=MsoNormal>                [geometry accessType inputOutput, type SFNode, NULL node] [X3DGeometryNode]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Architecture, 12.4.5 Shape</p><p class=MsoNormal>                http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/shape.html#Shape</p><p class=MsoNormal>                SFNode  [in,out] geometry   NULL     [X3DGeometryNode]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Architecture, 11.3.5 X3DGeometryNode</p><p class=MsoNormal>                http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rendering.html#X3DGeometryNode</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thus Shape geometry only accepts a single node which must in turn implement X3DGeometryNode interface - there are a lot of those.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>===================================</p><p class=MsoNormal>RigidBody geometry field is MFNode:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Tooltips: RigidBody</p><p class=MsoNormal>                http://www.web3d.org/x3d/tooltips/X3dTooltips.html#RigidBody</p><p class=MsoNormal>                TODO missing entry for geometry field</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Architecture, 37.4.10 RigidBody</p><p class=MsoNormal>                http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rigid_physics.html#RigidBody</p><p class=MsoNormal>                MFNode     [in,out] geometry             []      [X3DNBodyCollidableNode]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D Architecture, 37.3.1 X3DNBodyCollidableNode</p><p class=MsoNormal>                http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rigid_physics.html#X3DNBodyCollidableNode</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thus RigidBody geometry only accepts an array of nodes implementing X3DNBodyCollidableNode interface.  The only two such nodes are CollidableOffset and CollidableShape.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>=====================================</p><p class=MsoNormal>Similar patterns for 27.4.9 NurbsSet:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/nurbs.html#NurbsSet</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>   MFNode  [in]     addGeometry                [X3DNurbsSurfaceGeometryNode]</p><p class=MsoNormal>   MFNode  [in]     removeGeometry             [X3DNurbsSurfaceGeometryNode]</p><p class=MsoNormal>   MFNode  [in,out] geometry          []       [X3DNurbsSurfaceGeometryNode]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>etc.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>===================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>And so, as you well know, (...wait for it...) this is why we have X3D Unified Object Model (X3DUOM) to help define these specification requirements.  Excerpt documenting the RigidBody case follows, see definition for "geometry" field matching the above references.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                X3D Unified Object Model (X3DUOM)</p><p class=MsoNormal>                http://www.web3d.org/specifications/X3DUOM.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                http://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><ConcreteNode name="RigidBody"></p><p class=MsoNormal>    <InterfaceDefinition specificationUrl="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rigid_physics.html#RigidBody"></p><p class=MsoNormal>       <componentInfo name="RigidBodyPhysics" level="2"/></p><p class=MsoNormal>       <Inheritance baseType="X3DNode"/></p><p class=MsoNormal>       <field type="SFFloat"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="angularDampingFactor"</p><p class=MsoNormal>              default="0.001"/></p><p class=MsoNormal>       <field type="SFVec3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="angularVelocity"</p><p class=MsoNormal>              default="0 0 0"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="autoDamp"</p><p class=MsoNormal>              default="false"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="autoDisable"</p><p class=MsoNormal>              default="false"/></p><p class=MsoNormal>       <field type="SFVec3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="centerOfMass"</p><p class=MsoNormal>              default="0 0 0"/></p><p class=MsoNormal>       <field type="SFFloat"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="disableAngularSpeed"</p><p class=MsoNormal>              default="0"/></p><p class=MsoNormal>       <field type="SFFloat"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="disableLinearSpeed"</p><p class=MsoNormal>              default="0"/></p><p class=MsoNormal>       <field type="SFTime"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="disableTime"</p><p class=MsoNormal>              default="0"</p><p class=MsoNormal>              minInclusive="0"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="enabled"</p><p class=MsoNormal>              default="true"/></p><p class=MsoNormal>       <field type="SFVec3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="finiteRotationAxis"</p><p class=MsoNormal>              default="0 1 0"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="fixed"</p><p class=MsoNormal>              default="false"/></p><p class=MsoNormal>       <field type="MFVec3f" accessType="inputOutput" name="forces"/></p><p class=MsoNormal>       <field type="MFNode"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="geometry"</p><p class=MsoNormal>              acceptableNodeTypes="X3DNBodyCollidableNode"/></p><p class=MsoNormal>       <field type="SFMatrix3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="inertia"</p><p class=MsoNormal>              default="1 0 0 0 1 0 0 0 1"/></p><p class=MsoNormal>       <field type="SFFloat"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="linearDampingFactor"</p><p class=MsoNormal>              default="0.001"/></p><p class=MsoNormal>       <field type="SFVec3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="linearVelocity"</p><p class=MsoNormal>              default="0 0 0"/></p><p class=MsoNormal>       <field type="SFFloat" accessType="inputOutput" name="mass" default="1"/></p><p class=MsoNormal>       <field type="SFNode"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="massDensityModel"</p><p class=MsoNormal>              default="NULL"</p><p class=MsoNormal>              acceptableNodeTypes="Sphere|Box|Cone"/></p><p class=MsoNormal>       <field type="SFNode"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="metadata"</p><p class=MsoNormal>              default="NULL"</p><p class=MsoNormal>              acceptableNodeTypes="X3DMetadataObject"</p><p class=MsoNormal>              inheritedFrom="X3DNode"/></p><p class=MsoNormal>       <field type="SFRotation"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="orientation"</p><p class=MsoNormal>              default="0 0 1 0"/></p><p class=MsoNormal>       <field type="SFVec3f"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="position"</p><p class=MsoNormal>              default="0 0 0"/></p><p class=MsoNormal>       <field type="MFVec3f" accessType="inputOutput" name="torques"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="useFiniteRotation"</p><p class=MsoNormal>              default="false"/></p><p class=MsoNormal>       <field type="SFBool"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="useGlobalGravity"</p><p class=MsoNormal>              default="true"/></p><p class=MsoNormal>       <field type="SFString"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="DEF"</p><p class=MsoNormal>              inheritedFrom="DEF_USE"/></p><p class=MsoNormal>       <field type="SFString"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="USE"</p><p class=MsoNormal>              inheritedFrom="DEF_USE"/></p><p class=MsoNormal>       <field type="SFString"</p><p class=MsoNormal>              accessType="inputOutput"</p><p class=MsoNormal>              name="class"</p><p class=MsoNormal>              inheritedFrom="globalAttributes"/></p><p class=MsoNormal>       <containerField default="bodies" type=""></p><p class=MsoNormal>          <enumeration value="body1" appinfo=""/></p><p class=MsoNormal>          <enumeration value="body2" appinfo=""/></p><p class=MsoNormal>          <enumeration value="bodies" appinfo=""/></p><p class=MsoNormal>       </containerField></p><p class=MsoNormal>       <ContentModel></p><p class=MsoNormal>          <GroupContentModel name="ChildContentModelCore" minOccurs="0"/></p><p class=MsoNormal>          <GroupContentModel name="RigidBodyContentModel" minOccurs="0"/></p><p class=MsoNormal>       </ContentModel></p><p class=MsoNormal>    </InterfaceDefinition></p><p class=MsoNormal></ConcreteNode></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>