[x3d-public] HAnim Quality Assurance (QA) and regression testing

Don Brutzman brutzman at nps.edu
Sun May 10 23:34:31 PDT 2020


[corrected title, continued thread]

For those who don't get enough minimum daily debugging, of especial note in prior message is the following diagnostic.

> check schema validation of X3dTidy form
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "elapsedTime" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "frameCount" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: cvc-complex-type.3.2.2: Attribute 'elapsedTime' is not allowed to appear in element 'HAnimMotion'.
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: cvc-complex-type.3.2.2: Attribute 'frameCount' is not allowed to appear in element 'HAnimMotion'.
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:354:11: The content of element type "Scene" must match "(MetadataBoolean|MetadataDouble|MetadataFloat|MetadataInteger|MetadataSet|MetadataString|ProtoInstance|GeoPositionInterpolator|GeoTouchSensor|GeoProximitySensor|HAnimDisplacer|NurbsPositionInterpolator|NurbsOrientationInterpolator|NurbsSurfaceInterpolator|BooleanFilter|BooleanSequencer|BooleanToggle|BooleanTrigger|IntegerSequencer|IntegerTrigger|TimeTrigger|ColorInterpolator|CoordinateInterpolator|CoordinateInterpolator2D|CylinderSensor|KeySensor|LoadSensor|LocalFog|NormalInterpolator|OrientationInterpolator|PlaneSensor|PositionInterpolator|PositionInterpolator2D|ProximitySensor|ScalarInterpolator|Script|SphereSensor|StringSensor|TimeSensor|TouchSensor|VisibilitySensor|GeoViewpoint|Background|Fog|NavigationInfo|TextureBackground|Viewpoint|OrthoViewpoint|EspduTransform|SignalPdu|ReceiverPdu|TransmitterPdu|DISEntityManager|GeoLocation|GeoLOD|GeoTransform|HAnimJoint|HAnimSegment|HAnimSite|HAnimHumanoid|CADAssembly|CADLayer|CADPart|CollidableShape|CollisionSensor|RigidBodyCollection|Anchor|Billboard|Collision|Group|Inline|LOD|StaticGroup|Switch|Transform|DirectionalLight|SpotLight|PointLight|IsoSurfaceVolumeData|SegmentedVolumeData|VolumeData|Shape|Sound|GeoMetadata|WorldInfo|ColorChaser|ColorDamper|CoordinateChaser|CoordinateDamper|OrientationChaser|OrientationDamper|PositionChaser|PositionChaser2D|PositionDamper|PositionDamper2D|ScalarChaser|ScalarDamper|TexCoordChaser2D|TexCoordDamper2D|ClipPlane|TransformSensor|ViewpointGroup|LinePickSensor|PointPickSensor|PrimitivePickSensor|VolumePickSensor|PickableGroup|EaseInEaseOut|SplinePositionInterpolator|SplinePositionInterpolator2D|SplineScalarInterpolator|SquadOrientationInterpolator|ProtoDeclare|ExternProtoDeclare|ROUTE|EXPORT|IMPORT|ProtoInstance|LayerSet)*".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d  is not a valid XML document

Careful reading reveals that validation errors occur simultaneously for a pair of fields that simultaneously 'must be declared' and 'is not allowed to appear' - huh?

Contradictory to be sure!   :0

Close inspection of example X3D, schema and DTD together reveals that

a. elapsedTime has accessType inputOnly and so that attribute should not have been in the scene model.  Now removed, added diagnostic to X3D Schematron, considering whether (or how best) to add such a rule for all inputOnly and outputOnly fields, since existing diagnostics for this type of error can be so mysterious.

b. field frameCount had accessType inputOnly which is incorrect.  Now changed to inputOutput, deployed in X3D Schema, DTD, Tooltips and X3DUOM, further ripples to X3DJSAIL X3DPSAIL and X3D Ontology follow in due course.

https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimMotion (offers links to related documentation)
https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimMotion.elapsedTime
https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimMotion.frameCount

And so, fixed.  This underlines the points in the rest of this thread: step by step, one model at a time.

Onward we go.  Have fun with X3D HAnim!  8)


On 5/10/2020 10:00 PM, Brutzman, Donald (Don) (CIV) wrote:
> [was: Don, following patch should be applied to X3D4 schema]
> [added HAnim]
> 
> See attached prior message below for status report.
> 
> Here are two examples showing progress. These are only intended to show the level of detail going on as part of Quality Assurance (QA) efforts, many tools are being tested at once.  Mutual reinforcement and cross-checking is very helpful.
> 
> Getting good examples avoids Garbage In Garbage Out (GIGO) risks for implementers.
> 
> Expecting to have more progress and another great regular meeting with Joe later in the week.  Onward we go.
> 
> https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/  
> 
> ===================================================================
> test.oneScene.saxon:
> C:\x3d-code\www.web3d.org\x3d\content\examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexC01Jin.x3d  conversion, new style:
> Saxon-HE 9.7.0.20J from Saxonica
> Java version 14
> Stylesheet compilation time: 6.913318s (6913.3187ms)
> Processingfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexC01Jin.x3d
> Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
> Building tree forfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexC01Jin.x3d  using class net.sf.saxon.tree.tiny.TinyBuilder
> Tree built in 774.014ms
> Tree size: 270 nodes, 0 characters, 1468 attributes
> Execution time: 1.154904s (1154.9045ms)
> Memory used: 331913568
> Saxon-HE 9.7.0.20J from Saxonica
> Java version 14
> Stylesheet compilation time: 346.615ms
> Processingfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/_schematron/KoreanCharacterMotionAnnexC01Jin.svrl
> Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
> Building tree forfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/_schematron/KoreanCharacterMotionAnnexC01Jin.svrl  using class net.sf.saxon.tree.tiny.TinyBuilder
> Tree built in 17.9932ms
> Tree size: 685 nodes, 2690 characters, 319 attributes
> Execution time: 67.7157ms
> Memory used: 10340768
> KoreanCharacterMotionAnnexC01Jin.svrl.txt result:
> X3D version 4.0 is experimental and under development, focused on HTML5/DOM interoperabiliity. [/X3D, diagnostic]
> ==================================================================================================================================[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimJoint)           within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimJoint)           within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimSegment)         within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimSite)            within HAnimHumanoid             = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimSite/Viewpoint)  within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(HAnimDisplacer)       within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(<HAnimJoint   USE='*' containerField = 'joints'/>      = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(<HAnimSegment USE='*' containerField = 'segments'/>    = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(<HAnimSite    USE='*' containerField = 'sites'/>       = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> node count(<HAnimSite    DEF='*' containerField = 'viewpoints'/>  = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> has mismatched HAnimJoint    node counts, 18 within skeleton hierarchy and 0 USE nodes in joints field [/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexC01Jin' name='AnnexC01Jin'/> has mismatched HAnimSegment  node counts, 18 within skeleton hierarchy and 0 USE nodes in segments field [/X3D/Scene/HAnimHumanoid, diagnostic]
> ==================================================================================================================================[/X3D/Scene/HAnimHumanoid, diagnostic]
> <OrientationInterpolator DEF='Keyframe_l_metatarsophalangeal'/> is missing ROUTE to send output events, for example <ROUTE fromNode='Keyframe_l_metatarsophalangeal' fromField='value_changed' toNode='SomeTargetDEFname' toField='set_something'/> [/X3D/Scene/Group/OrientationInterpolator[14], warning]
> <OrientationInterpolator DEF='Keyframe_r_talocrural'/> is missing ROUTE to send output events, for example <ROUTE fromNode='Keyframe_r_talocrural' fromField='value_changed' toNode='SomeTargetDEFname' toField='set_something'/> [/X3D/Scene/Group/OrientationInterpolator[17], warning]
> <OrientationInterpolator DEF='Keyframe_r_metatarsophalangeal'/> is missing ROUTE to send output events, for example <ROUTE fromNode='Keyframe_r_metatarsophalangeal' fromField='value_changed' toNode='SomeTargetDEFname' toField='set_something'/> [/X3D/Scene/Group/OrientationInterpolator[18], warning]
> Processing C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexC01Jin.x3d  to C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexC01Jin.Tidy.x3d
> Loading stylesheet C:\x3d-code\www.web3d.org\x3d\stylesheets\X3dTidy.xslt
> *** revision: <meta name='modified' content='10 May 2020'/>
> *** prepend <WorldInfo title='KoreanCharacterMotionAnnexC01Jin.x3d'/>
> *** error: no top-level <HAnimJoint USE='hanim_HumanoidRoot' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_sacroiliac' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_hip' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_knee' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_talocrural' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_metatarsophalangeal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_hip' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_knee' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_talocrural' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_metatarsophalangeal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_vl5' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_skullbase' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_shoulder' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_elbow' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_radiocarpal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_shoulder' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_elbow' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_radiocarpal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_sacrum' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_pelvis' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_thigh' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_calf' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_hindfoot' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_middistal' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_thigh' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_calf' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_hindfoot' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_middistal' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l5' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_skull' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_upperarm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_forearm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_hand' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_upperarm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_forearm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_hand' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexC01Jin'/>
> expected output: C:\x3d-code\www.web3d.org\x3d\content\examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexC01Jin.Tidy.x3d
> check well-formedness of X3dTidy form
> 1 file(s) have been successfully validated.
> check DTD validation  of X3dTidy form
> 1 file(s) have been successfully validated.
> check schema validation of X3dTidy form
> BUILD SUCCESSFUL (total time: 21 seconds)
> 
> 
> ===================================================================
> test.oneScene.saxon:
> C:\x3d-code\www.web3d.org\x3d\content\examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d  conversion, new style:
> Saxon-HE 9.7.0.20J from Saxonica
> Java version 14
> Stylesheet compilation time: 10.167586s (10167.5864ms)
> Processingfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d
> Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
> Building tree forfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.x3d  using class net.sf.saxon.tree.tiny.TinyBuilder
> Tree built in 1.530369s (1530.3699ms)
> Tree size: 207 nodes, 0 characters, 1239 attributes
> Execution time: 1.860191s (1860.1917ms)
> Memory used: 354190160
> Saxon-HE 9.7.0.20J from Saxonica
> Java version 14
> Stylesheet compilation time: 425.5882ms
> Processingfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/_schematron/KoreanCharacterMotionAnnexD01Jin.svrl
> Using parser com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
> Building tree forfile:/C:/x3d-code/www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/_schematron/KoreanCharacterMotionAnnexD01Jin.svrl  using class net.sf.saxon.tree.tiny.TinyBuilder
> Tree built in 16.3066ms
> Tree size: 547 nodes, 2021 characters, 255 attributes
> Execution time: 82.568ms
> Memory used: 9992184
> KoreanCharacterMotionAnnexD01Jin.svrl.txt result:
> X3D version 4.0 is experimental and under development, focused on HTML5/DOM interoperabiliity. [/X3D, diagnostic]
> ==================================================================================================================================[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimJoint)           within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimJoint)           within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimSegment)         within skeleton hierarchy        = 18[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimSite)            within HAnimHumanoid             = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimSite/Viewpoint)  within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(HAnimDisplacer)       within skeleton hierarchy        = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(<HAnimJoint   USE='*' containerField = 'joints'/>      = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(<HAnimSegment USE='*' containerField = 'segments'/>    = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(<HAnimSite    USE='*' containerField = 'sites'/>       = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> node count(<HAnimSite    DEF='*' containerField = 'viewpoints'/>  = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> has mismatched HAnimJoint    node counts, 18 within skeleton hierarchy and 0 USE nodes in joints field [/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimHumanoid DEF='hanim_AnnexD01Jin' name='AnnexD01Jin'/> has mismatched HAnimSegment  node counts, 18 within skeleton hierarchy and 0 USE nodes in segments field [/X3D/Scene/HAnimHumanoid, diagnostic]
> ==================================================================================================================================[/X3D/Scene/HAnimHumanoid, diagnostic]
> <HAnimMotion DEF=''/> name field is required [/X3D/Scene/HAnimMotion, error]
> Processing C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.x3d  to C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d
> Loading stylesheet C:\x3d-code\www.web3d.org\x3d\stylesheets\X3dTidy.xslt
> *** revision: <meta name='modified' content='10 May 2020'/>
> *** prepend <WorldInfo title='KoreanCharacterMotionAnnexD01Jin.x3d'/>
> *** error: no top-level <HAnimJoint USE='hanim_HumanoidRoot' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_sacroiliac' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_hip' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_knee' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_talocrural' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_metatarsophalangeal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_hip' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_knee' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_talocrural' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_metatarsophalangeal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_vl5' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_skullbase' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_shoulder' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_elbow' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_l_radiocarpal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_shoulder' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_elbow' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimJoint USE='hanim_r_radiocarpal' containerField='joints'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_sacrum' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_pelvis' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_thigh' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_calf' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_hindfoot' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_middistal' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_thigh' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_calf' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_hindfoot' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_middistal' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l5' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_skull' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_upperarm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_forearm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_l_hand' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_upperarm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_forearm' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> *** error: no top-level <HAnimSegment USE='hanim_r_hand' containerField='segments'/> was found, need to add it to ancestor <HAnimHumanoid name='AnnexD01Jin'/>
> expected output: C:\x3d-code\www.web3d.org\x3d\content\examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.Tidy.x3d
> check well-formedness of X3dTidy form
> 1 file(s) have been successfully validated.
> check DTD validation  of X3dTidy form
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "elapsedTime" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "frameCount" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:354:11: The content of element type "Scene" must match "(MetadataBoolean|MetadataDouble|MetadataFloat|MetadataInteger|MetadataSet|MetadataString|ProtoInstance|GeoPositionInterpolator|GeoTouchSensor|GeoProximitySensor|HAnimDisplacer|NurbsPositionInterpolator|NurbsOrientationInterpolator|NurbsSurfaceInterpolator|BooleanFilter|BooleanSequencer|BooleanToggle|BooleanTrigger|IntegerSequencer|IntegerTrigger|TimeTrigger|ColorInterpolator|CoordinateInterpolator|CoordinateInterpolator2D|CylinderSensor|KeySensor|LoadSensor|LocalFog|NormalInterpolator|OrientationInterpolator|PlaneSensor|PositionInterpolator|PositionInterpolator2D|ProximitySensor|ScalarInterpolator|Script|SphereSensor|StringSensor|TimeSensor|TouchSensor|VisibilitySensor|GeoViewpoint|Background|Fog|NavigationInfo|TextureBackground|Viewpoint|OrthoViewpoint|EspduTransform|SignalPdu|ReceiverPdu|TransmitterPdu|DISEntityManager|GeoLocation|GeoLOD|GeoTransform|HAnimJoint|HAnimSegment|HAnimSite|HAnimHumanoid|CADAssembly|CADLayer|CADPart|CollidableShape|CollisionSensor|RigidBodyCollection|Anchor|Billboard|Collision|Group|Inline|LOD|StaticGroup|Switch|Transform|DirectionalLight|SpotLight|PointLight|IsoSurfaceVolumeData|SegmentedVolumeData|VolumeData|Shape|Sound|GeoMetadata|WorldInfo|ColorChaser|ColorDamper|CoordinateChaser|CoordinateDamper|OrientationChaser|OrientationDamper|PositionChaser|PositionChaser2D|PositionDamper|PositionDamper2D|ScalarChaser|ScalarDamper|TexCoordChaser2D|TexCoordDamper2D|ClipPlane|TransformSensor|ViewpointGroup|LinePickSensor|PointPickSensor|PrimitivePickSensor|VolumePickSensor|PickableGroup|EaseInEaseOut|SplinePositionInterpolator|SplinePositionInterpolator2D|SplineScalarInterpolator|SquadOrientationInterpolator|ProtoDeclare|ExternProtoDeclare|ROUTE|EXPORT|IMPORT|ProtoInstance|LayerSet)*".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d  is not a valid XML document
> 1 file(s) have been successfully validated.
> check schema validation of X3dTidy form
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "elapsedTime" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: Attribute "frameCount" must be declared for element type "HAnimMotion".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: cvc-complex-type.3.2.2: Attribute 'elapsedTime' is not allowed to appear in element 'HAnimMotion'.
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:353:138049: cvc-complex-type.3.2.2: Attribute 'frameCount' is not allowed to appear in element 'HAnimMotion'.
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d:354:11: The content of element type "Scene" must match "(MetadataBoolean|MetadataDouble|MetadataFloat|MetadataInteger|MetadataSet|MetadataString|ProtoInstance|GeoPositionInterpolator|GeoTouchSensor|GeoProximitySensor|HAnimDisplacer|NurbsPositionInterpolator|NurbsOrientationInterpolator|NurbsSurfaceInterpolator|BooleanFilter|BooleanSequencer|BooleanToggle|BooleanTrigger|IntegerSequencer|IntegerTrigger|TimeTrigger|ColorInterpolator|CoordinateInterpolator|CoordinateInterpolator2D|CylinderSensor|KeySensor|LoadSensor|LocalFog|NormalInterpolator|OrientationInterpolator|PlaneSensor|PositionInterpolator|PositionInterpolator2D|ProximitySensor|ScalarInterpolator|Script|SphereSensor|StringSensor|TimeSensor|TouchSensor|VisibilitySensor|GeoViewpoint|Background|Fog|NavigationInfo|TextureBackground|Viewpoint|OrthoViewpoint|EspduTransform|SignalPdu|ReceiverPdu|TransmitterPdu|DISEntityManager|GeoLocation|GeoLOD|GeoTransform|HAnimJoint|HAnimSegment|HAnimSite|HAnimHumanoid|CADAssembly|CADLayer|CADPart|CollidableShape|CollisionSensor|RigidBodyCollection|Anchor|Billboard|Collision|Group|Inline|LOD|StaticGroup|Switch|Transform|DirectionalLight|SpotLight|PointLight|IsoSurfaceVolumeData|SegmentedVolumeData|VolumeData|Shape|Sound|GeoMetadata|WorldInfo|ColorChaser|ColorDamper|CoordinateChaser|CoordinateDamper|OrientationChaser|OrientationDamper|PositionChaser|PositionChaser2D|PositionDamper|PositionDamper2D|ScalarChaser|ScalarDamper|TexCoordChaser2D|TexCoordDamper2D|ClipPlane|TransformSensor|ViewpointGroup|LinePickSensor|PointPickSensor|PrimitivePickSensor|VolumePickSensor|PickableGroup|EaseInEaseOut|SplinePositionInterpolator|SplinePositionInterpolator2D|SplineScalarInterpolator|SquadOrientationInterpolator|ProtoDeclare|ExternProtoDeclare|ROUTE|EXPORT|IMPORT|ProtoInstance|LayerSet)*".
> C:\x3d-code\www.web3d.org\x3d\content\examples\HumanoidAnimation\Specifications\KoreanCharacterMotionAnnexD01Jin.Tidy.x3d  is not a valid XML document
> ===================================================================

On 5/10/2020 9:09 PM, Don Brutzman wrote:
> John, would be happy to consider integrating this schema modification but can't clearly tell what problem you are fixing.
> 
> Meanwhile am happy to report contemporary progress:
> 
> - Joe and I had an excellent session last Thursday working on HumanoidAnimation Examples Archive.
> - Details reported separately.
> - Of note is that all prior examples are flawed since the HAnim version numbers changed (1.0 and 2.0 only, no 1.1).
> - I have checked in further scene refinements this weekend.
> - I have the catalog building properly now, but have not deployed it.
> - I have improved quality assurance (QA) testing of XML Schema, XML DTD, X3D Schematron and X3D-Tidy.
> - Regression testing, debugging and improvements continue.
> 
> I am only making changes to the QA tools when they are justified by actual examples in our archives.
> 
> So we are on the brink of a new plateau for testing and improvement, hopefully following this week's session.  Results will include a build.all.log.txt file capturing console output showing what works and what doesn't.
> 
> I'd be happy to offer you a job or two out of this set of tasks, but they are all intertwined using the current tools.
> 
> There are ~99 models in there.  We will incrementally fix them, one by one, and offer valid examples to implementers.
> 
> This is our familiar step-by-step methodology.  One model and one set of fixes at a time.
> 
> Work-in-progress examples to follow.
> 
> 
> On 5/10/2020 7:47 AM, John Carlson wrote:
>> To make it agree with the standard Motion interface.
>>
>> Thanks,
>>
>> John
>>
>> Index: x3d-4.0.xsd
>> ===================================================================
>> --- x3d-4.0.xsd (revision 30305)
>> +++ x3d-4.0.xsd (working copy)
>> @@ -17061,7 +17061,7 @@
>>                  <xs:complexType>
>>                          <xs:complexContent>
>>                                  <xs:extension base="X3DChildNode">
>> -                                       <xs:attribute name="channels" type="MFString"/>
>> +                                       <xs:attribute name="channels" type="SFString"/>
>>                                          <xs:attribute name="channelsEnabled" type="MFBool"/>
>>                                          <xs:attribute name="description" type="SFString"/>
>>                                          <xs:attribute name="enabled" type="SFBool" default="false"/>
>> @@ -17094,7 +17094,7 @@
>>                                                          </xs:restriction>
>>                                                  </xs:simpleType>
>>                                          </xs:attribute>
>> -                                       <xs:attribute name="joints" type="MFString"/>
>> +                                       <xs:attribute name="joints" type="SFString"/>
>>                                          <xs:attribute name="loa" type="loaType" default="-1"/>
>>                                          <xs:attribute name="loop" type="SFBool" default="false"/>
>>                                          <xs:attribute name="values" type="MFFloat"/>
> 
> 
> all the best, Don

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 http://faculty.nps.edu/brutzman


More information about the x3d-public mailing list