[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