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

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Sun Nov 5 20:38:30 PST 2023


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

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> 
Sent: Wednesday, November 1, 2023 2:56 PM
To: X3D <x3d-public at web3d.org>
Cc: Brutzman, Donald (Don) (CIV) <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/Pa
rt01/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/20231106/7434e8c2/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5464 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20231106/7434e8c2/attachment-0001.p7s>


More information about the x3d-public mailing list