[x3d-public] Some archive HAnim .x3d models don’t validate with X3DJSAIL.
John Carlson
yottzumm at gmail.com
Mon Jul 21 21:06:34 PDT 2025
If tasked, I can attempt an HAnim v1 to v2 conversion of the archive.
For example, a sed program like this can be created for each humanoid,
https://github.com/coderextreme/V1toV2/blob/main/hanim_v1_to_v2_commands.sed
Which is generated by:
https://github.com/coderextreme/V1toV2/blob/main/map.py
It needs to be customized on a per humanoid basis currently, but using
parameterization, a more generic routine might be created.
I’m not saying it can be fully automated, as I have not yet conquered
changing HAnim version and other fields.
Obviously, post conversion testing should be done.
Hmm,
John
On Mon, Jul 21, 2025 at 3:58 PM Joe D Williams <joedwil at earthlink.net>
wrote:
> <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 *'/>
>
>
>
>
>
> The only difference between loa3 v1 and v2 is the skeleton Joint, Segment,
> Site names.
>
> In fact, John may have a version of this or close with V2 names, same
> skeleton as joeKick.
>
> So true it is a legacy model but correct current LOA3 if names are updated.
>
>
>
> Thanks,
>
> Joe.
>
>
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: Jul 21, 2025 8:46 AM
> To: Don Brutzman <don.brutzman at gmail.com>
> Cc: X3D Graphics public mailing list <x3d-public at web3d.org>, Joe D
> Williams <joedwil at earthlink.net>, Nicholas Polys <npolys at vt.edu>
> Subject: Re: Some archive HAnim .x3d models don’t validate with X3DJSAIL.
>
>
> 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/a383913e/attachment-0001.html>
More information about the x3d-public
mailing list