[x3d-public] List of Differences between Spec and X3DUOM
Brutzman, Donald (Don) (CIV)
brutzman at nps.edu
Tue Nov 21 09:06:56 PST 2023
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#Nami
ngConventions> .
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
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: Monday, November 6, 2023 3:36 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
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/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/
<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcreate300
0.github.io%2Fx_ite%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C968de1a6ac4d44b87
55408dbdebca3e4%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638348674058018
008%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1h
aWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=ugUZhYZrRbub2hjfmdP9JsPTzQ%2BAmQ6k6
IM4Fb3Md2M%3D&reserved=0>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20231121/3b149952/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/20231121/3b149952/attachment-0001.p7s>
More information about the x3d-public
mailing list