[x3d-public] Some archive HAnim .x3d models don’t validate with X3DJSAIL.

John Carlson yottzumm at gmail.com
Mon Jul 21 08:39:22 PDT 2025


Don,  there’s already a patch for the viewpoints field on SourceForge, many
months ago I think.  Apparently, it has not been applied.

For HAnimSite, viewpoints *is* valid.  Somehow, I managed to wipe out my
changes to the stylesheet:


$ svn diff CreateX3dSceneAccessInterfaceJava.xslt
Index: CreateX3dSceneAccessInterfaceJava.xslt
===================================================================
--- CreateX3dSceneAccessInterfaceJava.xslt (revision 36289)
+++ CreateX3dSceneAccessInterfaceJava.xslt (working copy)
@@ -3853,7 +3853,7 @@
<xsl:text>, "segments" /*HAnimHumanoid parent*/</xsl:text>

<xsl:when test="starts-with($name,'HAnimSite')">
- <xsl:text>, "sites" /*HAnimHumanoid parent*/, "skeleton" /*HAnimHumanoid
parent*/</xsl:text>
+ <xsl:text>, "sites" /*HAnimHumanoid parent*/, *"viewpoints"
/HAnimHumanoid parent/, *"skeleton" /*HAnimHumanoid parent*/</xsl:text>
</xsl:when>
<xsl:when test="starts-with($name,'HAnimMotion')">
<xsl:text>, "motions" /*HAnimHumanoid parent*/</xsl:text></xsl:when>

======================================================================

On Tue, Jul 15, 2025 at 3:35 AM Don Brutzman <don.brutzman at gmail.com> wrote:

> John, when I run the X3D Validator from within X3D-Edit on this model, it
> reports the following diagnostics in the log appearing below.  This is
> relatively short, as these things go, which is good.  Running the model
> shows that it is pretty functional too.
>
>    - X3D Example Archives: Humanoid Animation, Specifications, HAnim 1
>    Specification LOA 3 Animation
>    -
>    https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3AnimationIndex.html
>
> Note the presence of the first meta error element in the schematron log,
> highlighted by me, which states that this model includes errors under our
> HAnim 2.0 tools (since it has been adapted from HAnim 1.0).
>
> That same error notification is also evident from simply inspecting the
> model documentation,
>
>    -
>    11
>    <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Animation.html#11>
>                <meta name='* error *' content='* Legacy model, not valid
>    as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant
>    differences and is no longer directly supported *'/>
>    -
>    https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Animation.html#11
>
> Perhaps fixable in small steps, but please don't be surprised if you
> encounter errors as advertised.  I do try to be generous in noting errors
> and warnings in meta tags for each model, when they occur, to encourage
> precise continued troubleshooting.
>
> Your log looks like the same X3DJSAIL internal error repeated many times.
> The key to an issue report is conciseness, clarity and repeatability.
>
> Well-defined issues (called "tickets" by SourceForge) are addressed when
> possible (concise, clear, repeatable) and maintained online at
>
>    - https://sourceforge.net/p/x3d/tickets/
>
>
> --------- X3D Validator checks commenced for
>> HAnim1SpecificationLOA3Invisible.x3d ---------
>> Performing well-formed XML check...
>> Checking file:/C:/x3d-code/
>> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Invisible.x3d.
>> ..
>> Well-formed XML check: pass
>
>
>> Performing DOCTYPE check...
>> [X3dDoctypeChecker] success: valid XML declaration
>> found.[X3dDoctypeChecker] success: final X3D 3.3 DOCTYPE found.
>
>
>> Performing DTD validation...
>> Checking file:/C:/x3d-code/
>> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Invisible.x3d.
>> ..
>> Referenced entity at "
>> http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
>> ".
>> Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
>> Referenced entity at
>> "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
>> XML DTD validation: pass
>
>
>> Performing X3D schema validation...
>> Checking file:/C:/x3d-code/
>> www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Invisible.x3d.
>> ..
>> Referenced entity at "
>> http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
>> ".
>> Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
>> Referenced entity at
>> "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
>> XML schema validation: pass
>
>
>> Performing X3D regular expression (regex) values check...
>> X3D regex check: complete
>
>
>> Performing X3D Schematron check...
>> <meta name='error' content='Legacy model, not valid as X3D4 HAnim version
>> 2.0 since HAnim version 1.0 has significant differences and is no longer
>> directly supported'/> [/X3D/head/meta[6], diagnostic]
>> <meta name='TODO' content='move relevant HAnimSite/Viewpoint pairs into
>> skeleton at appropriate locations'/> [/X3D/head/meta[14], diagnostic]
>> <meta name='TODO' content='insert MetadataInteger nodes indicating LOA
>> for each Joint and Segment'/> [/X3D/head/meta[15], diagnostic]
>> <Viewpoint DEF=''/> centerOfRotation='0 0.9149 0.0016' has mismatched
>> Y-value height of 0.9149 compared to position='2.6 0.8 0' which has Y-value
>> height of 0.8[/X3D/Scene/Viewpoint[5], warning]
>> <Viewpoint DEF=''/> centerOfRotation='0 0.9149 0.0016' has mismatched
>> Y-value height of 0.9149 compared to position='1 0.8 0.5' which has Y-value
>> height of 0.8[/X3D/Scene/Viewpoint[6], warning]
>> <Viewpoint DEF=''/> centerOfRotation='0 0.9149 0.0016' has mismatched
>> Y-value height of 0.9149 compared to position='-1 0.8 0.5' which has
>> Y-value height of 0.8[/X3D/Scene/Viewpoint[7], warning]
>> <Viewpoint DEF=''/> centerOfRotation='0 0.9149 0.0016' has mismatched
>> Y-value height of 0.9149 compared to position='-2.6 0.8 0' which has
>> Y-value height of 0.8[/X3D/Scene/Viewpoint[8], warning]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> version='1.0' with
>> X3D version='3.3' [/X3D/Scene/HAnimHumanoid, diagnostic]
>>
>> ====================================================================================================================
>> [/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(HAnimJoint)           within skeleton hierarchy        =
>> 94[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(HAnimSegment)         within skeleton hierarchy        =
>> 94[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(HAnimSite)            within HAnimHumanoid             =
>> 95[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(HAnimSite//Viewpoint) within skeleton hierarchy        =
>> 4[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(HAnimDisplacer)       within skeleton hierarchy        =
>> 0[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(<HAnimJoint   USE='*' containerField = 'joints'/>)     =
>> 94[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(<HAnimSegment USE='*' containerField = 'segments'/>)   =
>> 94[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(<HAnimSite    USE='*' containerField = 'sites'/>)      =
>> 91[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> node
>> count(<HAnimSite    DEF='*' name ends with '_view'/>)        =
>> 14[/X3D/Scene/HAnimHumanoid, diagnostic]
>> <HAnimHumanoid DEF='hanim_humanoid' name='humanoid'/> has mismatched
>> HAnimSite     node counts, 95 within skeleton hierarchy and 91 USE nodes in
>> sites field [/X3D/Scene/HAnimHumanoid, diagnostic]
>> ====================================================================================================================
>> [/X3D/Scene/HAnimHumanoid, diagnostic]
>
>
> --------- X3D Validator checks complete for
> HAnim1SpecificationLOA3Invisible.x3d ---------
>
> v/r Don
>
> On Mon, Jul 14, 2025 at 9:16 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Recommendation is to check archive HAnimV2 specification .x3d models by
>> validating them with X3DJSAIL.  There’s no need to run foreign code, just
>> CommandLine.java -validate.  See below for one to choose.  You should be
>> able to search for “Specification” in the email.
>>
>> I do realize running validation on the whole archive takes a lot of time,
>> my archive too, when I’m generating code.  I recommend focusing on a single
>> model.
>>
>> For example:
>>
>> java -cp ~/X3DJSONLD/X3DJSAIL.4.0.full.jar org.web3d.x3d.jsail.CommandLine
>> -validate
>> HumanoidAnimation/Specifications/HAnim1SpecificationLOA3Invisible.x3d
>>
>> It would be good to get another set of eyes on this, even if an error
>> isn’t reported.
>>
>> I am adapting my code not to call setContainerFieldOverride().
>>
>> I do have some good news, I am re-adopting the x3d.py module for testing
>> in addition to JRuby and GraalPy for X3DJSAIL.  There are a few tweaks I
>> had to make, but these were made to:
>>
>>
>> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/PythonSerializer.js
>>
>> So I have improved Python code generation.  The old
>> PythonSerializerX3DJSAIL is now:
>>
>>
>> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/GraalPySerializer.js
>>
>> I had to take a break and get some sleep.
>>
>> Maybe eventually I’ll get to languages like Kotlin and Scala.   I’ve only
>> played with Kotlin on the command line.
>>
>> Typically one would use json2all.js:
>>
>>
>> https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/json2all.js
>>
>> This is tuned to run in X3DJSONLD/src/main/shell
>>
>>
>> John
>>
>> On Sun, Jul 13, 2025 at 10:45 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> Interestingly enough, I did some X3DJSAIL (recently compiled) against a
>>> recent checkout of the HumanoidAnimation archive on sourceforge:
>>>
>>> x3d / Code / [r37163]
>>> /www.web3d.org/x3d/content/examples/HumanoidAnimation
>>> <https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/>
>>>
>>> I fully realize that I haven't checked the archives elsewhere (which
>>> might not be checked in).
>>>
>>> Looking for something checked in.  I'll try X3DJSAIL from the
>>> distribution website next.
>>>
>>> John
>>>
>>> ~/www.web3d.org/x3d/content/examples/HumanoidAnimation
>>> $ for i in */*x3d; do java -cp ~/X3DJSONLD/X3DJSAIL.4.0.full.jar
>>> org.web3d.x3d.jsail.CommandLine -validate $i 2>&1|grep "Invalid
>>> setContainerFieldOverride" && echo $i; done
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/AllenDutton.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/BoxMan3.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/BoxMan3AnimationPanel.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/DiamondManLOA_0.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/DiamondManLOA_1.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/DiamondManLOA_2.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/HAnim1SpecificationLOA3Animation.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/HAnim1SpecificationLOA3Illustrated.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/HAnim1SpecificationLOA3Invisible.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Legacy/NancyNativeTags.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> MotionAnimation/BvhConversion1.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> MotionAnimation/BvhConversion1Illustrated.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> MotionAnimation/BvhConversion1Invisible.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> MotionAnimation/Pirouette.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> MotionAnimation/UniversityWisconsionExample1.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Skin/BoxMan4.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Skin/BoxMan4AnimationPanel.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Specifications/HAnim1SpecificationLOA3Animation.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Specifications/HAnim1SpecificationLOA3Illustrated.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Specifications/HAnim1SpecificationLOA3Invisible.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Specifications/HAnim2SpecificationLOA3Illustrated.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Specifications/HAnim2SpecificationLOA3Invisible.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Templates/DiamondManLOA0.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Templates/DiamondManLOA1.x3d
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>> Templates/DiamondManLOA2.x3d
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250721/ce9a9bb7/attachment-0001.html>


More information about the x3d-public mailing list