[x3d-public] List of Differences between Spec and X3DUOM

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Thu Nov 23 18:39:35 PST 2023


Hooray, thank you Holger!

v/r Don
________________________________
From: Holger Seelig <holger.seelig at yahoo.de>
Sent: Thursday, November 23, 2023 9:05:38 AM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>
Cc: X3D <x3d-public at web3d.org>
Subject: Re: List of Differences between Spec and X3DUOM


NPS WARNING: *external sender* verify before acting.


Tested again, and did not found any issues :), Thanks again.

--
Holger Seelig
Leipzig, Germany

holger.seelig at yahoo.de
https://create3000.github.io/x_ite/

Am 21.11.2023 um 18:06 schrieb Brutzman, Donald (Don) (CIV) <brutzman at nps.edu>:

Thanks for excellent followup.  Again thanks for essential value.  Belated revisions:


X3D XML Schema update activity:
https://www.web3d.org/specifications/x3d-schema-changelog.txt

20 NOV 2023, seelig, brutzman
- X3DEnvironmentalSensorNode size field has accessType inputOutput which affects
  ProximitySensor TransformSensor VisibilitySensor GeoProximitySensor
- HAnimHumanoid motionsEnabled field is an attribute, not an element
- ArcClose2D Disk2D Rectangle2D TriangleSet2D field solid has default value false
- Extrusion fields have accessType initializeOnly, creaseAngle has type SFFloat
- HAnimHumanoid fields jointBindingPositions jointBindingRotations jointBindingScales
  have default value of empty array
- HAnimMotion fields channels, joints have type SFString
- HAnimMotion field enabled has default value true
- Text field solid has default value false


X3D DTD update activity:
https://www.web3d.org/specifications/x3d-dtd-changelog.txt

20 NOV 2023, seelig, brutzman
- ArcClose2D Disk2D Rectangle2D TriangleSet2D field solid has default value false
- HAnimMotion field enabled has default value true


Regarding default value of height field, no embedded commas are in spec or X3DUOM.

  *   Field MFDouble 'height' in node GeoElevationGrid has different value (Spec <=> X3DUOM): 0, 0 !== 0 0.

Regarding FloatVertexAttribute, Matrix3VertexAttribute,Matrix4VertexAttribute name field, type xs:NMTOKEN (name token) is a restriction on string type in an effort to avoid whitespace and illegal characters.  We use this type restriction a number of other times in the schema as well.

  *   https://www.web3d.org/x3d/content/X3dTooltips.html#NMTOKEN
  *   NMTOKEN<https://www.w3.org/TR/REC-xml/#sec-common-syn> is an XML term for Name Token<https://www.w3.org/TR/REC-xml/#sec-common-syn>. NMTOKEN is a special kind of CDATA<https://www.web3d.org/x3d/content/X3dTooltips.html#CDATA> string that must match naming requirements for legal characters, with no whitespace characters allowed. Additionally, from XML specification: disallowed initial characters for Names include numeric digits, diacritics (letter with accent or marking), the "." period character (sometimes called full stop) and the "-" hyphen character. For further information see X3D Scene Authoring Hints: Naming Conventions<https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions>.

Updated X3D 4.0 XML Schema, DTD,  Tooltips, and XSLT conversion stylesheets. Performing further regression testing to check correctness, no problems expected.

Checked in and ready for retest.

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto: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

From: Holger Seelig <holger.seelig at yahoo.de<mailto:holger.seelig at yahoo.de>>
Sent: Monday, November 6, 2023 3:36 AM
To: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>
Cc: X3D <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Subject: Re: List of Differences between Spec and X3DUOM

Thank you Don for quick change, I run the script again and still found these:

Field 'size' in node ProximitySensor has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'size' in node TransformSensor has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'size' in node VisibilitySensor has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field SFBool 'solid' in node ArcClose2D has different value (Spec <=> X3DUOM): false !== true.
Field SFBool 'solid' in node Disk2D has different value (Spec <=> X3DUOM): false !== true.
Field SFBool 'solid' in node Rectangle2D has different value (Spec <=> X3DUOM): false !== true.
Field SFBool 'solid' in node TriangleSet2D has different value (Spec <=> X3DUOM): false !== true.
Field 'beginCap' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'endCap' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'ccw' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'convex' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'creaseAngle' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'creaseAngle' in node Extrusion has different type (Spec <=> X3DUOM): SFFloat !== SFBool.
Field 'crossSection' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'orientation' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'scale' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field 'spine' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOnly.
Field MFDouble 'height' in node GeoElevationGrid has different value (Spec <=> X3DUOM): 0, 0 !== 0 0.
Field 'size' in node GeoProximitySensor has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field MFVec3f 'jointBindingPositions' in node HAnimHumanoid has different value (Spec <=> X3DUOM):  !== 0 0 0.
Field MFRotation 'jointBindingRotations' in node HAnimHumanoid has different value (Spec <=> X3DUOM):  !== 0 0 1 0.
Field MFVec3f 'jointBindingScales' in node HAnimHumanoid has different value (Spec <=> X3DUOM):  !== 0 0 0.
Field SFBool 'enabled' in node HAnimMotion has different value (Spec <=> X3DUOM): true !== false.
Field 'joints' in node HAnimMotion has different type (Spec <=> X3DUOM): SFString !== MFString.
Field 'channels' in node HAnimMotion has different type (Spec <=> X3DUOM): SFString !== MFString.
Field 'name' in node FloatVertexAttribute has different type (Spec <=> X3DUOM): SFString !== xs:NMTOKEN.
Field 'name' in node Matrix3VertexAttribute has different type (Spec <=> X3DUOM): SFString !== xs:NMTOKEN.
Field 'name' in node Matrix4VertexAttribute has different type (Spec <=> X3DUOM): SFString !== xs:NMTOKEN.
Field SFBool 'solid' in node Text has different value (Spec <=> X3DUOM): false !== true.

--
Holger Seelig
Leipzig, Germany

holger.seelig at yahoo.de<mailto:holger.seelig at yahoo.de>
https://create3000.github.io/x_ite/


Am 06.11.2023 um 05:38 schrieb Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>:

Again wow!! and thank you Holger for tremendous work.  Super valuable.

I have tried to carefully handle each issue and think the results should be pretty clean now.  Results in version control and also online at


  *   X3D Specifications: Schema and DOCTYPE Validation
  *   https://www.web3d.org/specifications


Here are summaries of what I changed and tested.



a.   X3D Schema (which is used to autogenerate X3DUOM)



  *   X3D XML Schema update activity:
  *   https://www.web3d.org/specifications/x3d-schema-changelog.txt


5 NOV 2023, seelig, brutzman
- all solid fields have accessType initializeOnly
- (4.0) added ComposedCubeMapTexture textureProperties , must follow other textures
- several size fields have accessType initializeOnly (rather than inputOutput):
  X3DEnvironmentalSensorNode, Box, GeneratedCubeMapTexture, Rectangle2D
- ElevationGrid    default values xDimension 0, zDimension 0, height is empty array
- GeoElevationGrid default values xDimension 0, zDimension 0, height is [0 0]
  with difference noted as X3D 4.1 erratum in issue tracker under Mantis 1447.
- GeoElevationGrid set_height has type MFDouble
- Extrusion fields beginCap, ccw, convex, creaseAngle, crossSection, endCap,
  orientation, scale, solid, spine have accessType initializeOnly.
- note fieldOfView default values set to 0.7854 rather than spec value 0.785398
  in order to avoid false-positive validation errors, also avoid roundoff errors in tools
- HAnimDisplacer attribute coordIndex has accessType inputOutput
- added HAnimHumanoid MFBool [in out] motionsEnabled
- HAnimMotion added next, previous fields
- SplinePositionInterpolator, SplinePositionInterpolator2D, SplineScalarInterpolator
  closed field has accessType inputOutput
- SquadOrientationInterpolator has no closed field
- LayerSet order field has accessType inputOutput
- PointLight, SpotLight radius field has accessType inputOutput
- NurbsOrientationInterpolator, NurbsPositionInterpolator knot field
  has accessType inputOutput
- (4.0) OrthoViewpoint fieldOfView has type MFFloat even though SFVec3f is more
  correct to prevent modeling errors, deficiency recorded as Mantis 1398
- (4.0) ParticleSystem color field has type SFNode (synonym for prior colorRamp field)
- SurfaceEmitter has no coordIndex fields, removed
- CylinderSensor, PlaneSensor field axisRotation default value 0 0 1 0
- UniversalJoint field body2axis is type SFVec3f
- X3DVertexAttributeNode, FloatVertexAttribute, Matrix3VertexAttribute Matrix4VertexAttribute
  field name has accessType inputOutput
- (4.0) added Appearance backMaterial field
- (4.0) added TextureTransform, TextureTransform3D, TextureTransformMatrix3D mapping field



b.   X3D DOCTYPE 3.0..4.0



  *   X3D DTD update activity:
  *   https://www.web3d.org/specifications/x3d-dtd-changelog.txt


5 NOV 2023, seelig, brutzman
- (4.0) added ComposedCubeMapTexture textureProperties , must follow other textures
- ElevationGrid    default values xDimension 0, zDimension 0, height is empty array
- GeoElevationGrid default values xDimension 0, zDimension 0, height is [0 0]
  with difference noted as X3D 4.1 erratum in issue tracker under Mantis 1447.
- note fieldOfView default values set to 0.7854 rather than spec value 0.785398
  in order to avoid false-positive validation errors, also avoid roundoff errors in tools
- (4.0) OrthoViewpoint fieldOfView has type MFFloat even though SFVec3f is more
  correct to prevent modeling errors, deficiency recorded as Mantis 1398
- SurfaceEmitter has no coordIndex field, removed
- CylinderSensor, PlaneSensor field axisRotation default value 0 0 1 0
- (4.0) added TextureTransform3D, TextureTransformMatrix3D mapping field



c.    Lots of corresponding adjustments to X3D Tooltips, hopefully consistently.



  *   Extensible 3D (X3D) 4.0 Tooltips
  *   https://www.web3d.org/x3d/tooltips/X3dTooltips.html



d.   Things that I was unable to reconcile from your log:



  *   FontStyle, ScreenFontStyle already have style field OK
  *   TextureProjectorParallel does not have fields upVector,shadowColor,shadowBias,shadowMapSize


So, a major step forward.  Much appreciated.  Further double/triple-checking welcome, by anyone.  High-quality X3D validation and tools and libraries and documentation are important.

Looking ahead: I’ll need some time to further test autogenerated Java X3DJSAIL and Python X3DPSAIL x3d.py libraries.  Will announce when updated., likely another week or two  Am thinking of adding consistent convenience/utility methods (perhaps something like showXMLcontainerFields) to help people gain greater confidence (and better diagnostic possibilities) when serializing a model out to X3D XML form.

Have fun with high-quality X3D!  8)

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu<mailto: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

From: Holger Seelig <holger.seelig at yahoo.de<mailto:holger.seelig at yahoo.de>>
Sent: Wednesday, November 1, 2023 2:56 PM
To: X3D <x3d-public at web3d.org<mailto:x3d-public at web3d.org>>
Cc: Brutzman, Donald (Don) (CIV) <brutzman at nps.edu<mailto:brutzman at nps.edu>>
Subject: List of Differences between Spec and X3DUOM

I have compared the specification from proof with X3DUOM and found a lot of differences of field values, number of fields, and access type. I have double checked all issues from:

https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/Architecture.html
https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml

My guess is that a lot of issues are correct in X3DUOM, but as far as I can see, not all.

The list still misses Sound component.
Below is the list of differences:

Field 'solid' in node IndexedQuadSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node QuadSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
ComposedCubeMapTexture number of fields differ (Spec <=> X3DUOM): 9 <=> 8.
  Where [textureProperties] not in X3DUOM.
Field 'size' in node GeneratedCubeMapTexture has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node ArcClose2D has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Disk2D has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'size' in node Rectangle2D has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Rectangle2D has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node TriangleSet2D has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'size' in node Box has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Box has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Cone has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Cylinder has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field SFInt32 'xDimension' in node ElevationGrid has different value (Spec <=> X3DUOM): 0 !== 2.
Field SFInt32 'zDimension' in node ElevationGrid has different value (Spec <=> X3DUOM): 0 !== 2.
Field 'solid' in node ElevationGrid has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field MFFloat 'height' in node ElevationGrid has different value (Spec <=> X3DUOM):  !== 0 0 0 0.
Field 'solid' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'orientation' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'scale' in node Extrusion has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node IndexedFaceSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node Sphere has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'set_height' in node GeoElevationGrid has different type (Spec <=> X3DUOM): MFDouble !== MFFloat.
Field SFInt32 'xDimension' in node GeoElevationGrid has different value (Spec <=> X3DUOM): 0 !== 2.
Field SFInt32 'zDimension' in node GeoElevationGrid has different value (Spec <=> X3DUOM): 0 !== 2.
Field 'solid' in node GeoElevationGrid has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field MFDouble 'height' in node GeoElevationGrid has different value (Spec <=> X3DUOM): 0, 0 !== 0 0 0 0.
Field SFFloat 'fieldOfView' in node GeoViewpoint has different value (Spec <=> X3DUOM): 0.785398 !== 0.7854.
Field 'coordIndex' in node HAnimDisplacer has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
HAnimHumanoid number of fields differ (Spec <=> X3DUOM): 31 <=> 30.
  Where [motionsEnabled] not in X3DUOM.
HAnimMotion number of fields differ (Spec <=> X3DUOM): 20 <=> 18.
  Where [next,previous] not in X3DUOM.
Field 'closed' in node SplinePositionInterpolator has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'closed' in node SplinePositionInterpolator2D has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'closed' in node SplineScalarInterpolator has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Unknown field 'closed' of node SquadOrientationInterpolator in X3DUOM.
Field 'order' in node LayerSet has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
ScreenFontStyle number of fields differ (Spec <=> X3DUOM): 10 <=> 9.
  Where [style] not in X3DUOM.
Field 'radius' in node PointLight has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'radius' in node SpotLight has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'knot' in node NurbsOrientationInterpolator has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'solid' in node NurbsPatchSurface has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'knot' in node NurbsPositionInterpolator has different access type (Spec <=> X3DUOM): inputOutput !== initializeOnly.
Field 'solid' in node NurbsSweptSurface has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node NurbsSwungSurface has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node NurbsTrimmedSurface has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'fieldOfView' in node OrthoViewpoint has different type (Spec <=> X3DUOM): MFFloat !== SFVec4f.
Field SFFloat 'fieldOfView' in node Viewpoint has different value (Spec <=> X3DUOM): 0.785398 !== 0.7854.
Field SFFloat 'angle' in node ConeEmitter has different value (Spec <=> X3DUOM): 0.785398 !== 0.7854.
Field 'color' in node ParticleSystem has different type (Spec <=> X3DUOM): SFNode !== MFNode.
SurfaceEmitter number of fields differ (Spec <=> X3DUOM): 7 <=> 9.
  Where [coordIndex,set_coordIndex] not in Spec.
Field SFRotation 'axisRotation' in node PlaneSensor has different value (Spec <=> X3DUOM): 0 0 1 0 !== 0 1 0 0.
Field 'solid' in node IndexedTriangleFanSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node IndexedTriangleSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node IndexedTriangleStripSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node TriangleFanSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node TriangleSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'solid' in node TriangleStripSet has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'body2Axis' in node UniversalJoint has different type (Spec <=> X3DUOM): SFVec3f !== SFFloat.
Field 'name' in node FloatVertexAttribute has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'name' in node Matrix3VertexAttribute has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field 'name' in node Matrix4VertexAttribute has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Appearance number of fields differ (Spec <=> X3DUOM): 12 <=> 11.
  Where [backMaterial] not in X3DUOM.
FontStyle number of fields differ (Spec <=> X3DUOM): 10 <=> 9.
  Where [style] not in X3DUOM.
Field 'solid' in node Text has different access type (Spec <=> X3DUOM): initializeOnly !== inputOutput.
Field SFFloat 'fieldOfView' in node TextureProjector has different value (Spec <=> X3DUOM): 0.785398 !== 0.7854.
TextureProjectorParallel number of fields differ (Spec <=> X3DUOM): 20 <=> 16.
  Where [upVector,shadowColor,shadowBias,shadowMapSize] not in X3DUOM.
TextureTransform number of fields differ (Spec <=> X3DUOM): 6 <=> 5.
  Where [mapping] not in X3DUOM.
TextureTransform3D number of fields differ (Spec <=> X3DUOM): 6 <=> 5.
  Where [mapping] not in X3DUOM.
TextureTransformMatrix3D number of fields differ (Spec <=> X3DUOM): 3 <=> 2.
  Where [mapping] not in X3DUOM.
Test done.

--
Holger Seelig
Leipzig, Germany

holger.seelig at yahoo.de<mailto:holger.seelig at yahoo.de>
https://create3000.github.io/x_ite/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20231124/96464990/attachment-0001.html>


More information about the x3d-public mailing list