[x3d-public] Some archive HAnim .x3d models don’t validate with X3DJSAIL.
Joe D Williams
joedwil at earthlink.net
Mon Jul 21 13:45:36 PDT 2025
> For HAnimSite, viewpoints *is* valid.
Right, there can be viewpoints field in a Site child Humanoid
and in a Site child of Segment.
https://www.web3d.org/documents/specifications/19774/V2.0/index.html
6.2 Humanoid
... The viewpoints field has a different functionality and behaviour than the joints, segments and sites fields. The viewpoints field can contain zero or more Site object definitions....
"The [Site] children field is an generic container for any
appropriate object defined by the representation system."
So, Site node with viewpoints can be child of Segment .
The viewponts field in Humanoid is for viewpoints
in the Humanoid space, unaffected by skeleton movements.
The viewpoints of a child Site in Segment space are
directly controlled by the skeleton and animation in
Segment space.
6.5 Site
...
\Site objects that are used to define viewpoint locations
shall have a "_view" suffix appended. Site objects that
are not end effectors and not camera locations shall have
an "_pt" suffix.
The description of a Site node tells me I can put viewpoints
there as child of Segment and name them according to a
certain convention.
Maybe the descriptions of names for Site viewpoints in Humanoid
and in Site viewpoints in Segment should be more united.
Thanks,
Joe
-----Original Message-----
From: John Carlson <yottzumm at gmail.com></yottzumm at gmail.com>
Sent: Jul 21, 2025 8:46 AM
To: Don Brutzman <don.brutzman at gmail.com></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></npolys at vt.edu></joedwil at earthlink.net></x3d-public at web3d.org>
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 @@
, "segments" /HAnimHumanoid parent/
- , "sites" /HAnimHumanoid parent/, "skeleton" /HAnimHumanoid parent/
+ , "sites" /HAnimHumanoid parent/, "viewpoints" /HAnimHumanoid parent/, "skeleton" /HAnimHumanoid parent/
, "motions" /HAnimHumanoid parent/
======================================================================
On Tue, Jul 15, 2025 at 3:35 AM Don Brutzman <don.brutzman at gmail.com (mailto: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</don.brutzman at gmail.com>
* 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)
* 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. (http://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. (http://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. (http://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...
[/X3D/head/meta[6], diagnostic]
[/X3D/head/meta[14], diagnostic]
[/X3D/head/meta[15], diagnostic]
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]
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]
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]
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]
version='1.0' with X3D version='3.3' [/X3D/Scene/HAnimHumanoid, diagnostic]
==================================================================================================================== [/X3D/Scene/HAnimHumanoid, diagnostic]
node count(HAnimJoint) within skeleton hierarchy = 94[/X3D/Scene/HAnimHumanoid, diagnostic]
node count(HAnimSegment) within skeleton hierarchy = 94[/X3D/Scene/HAnimHumanoid, diagnostic]
node count(HAnimSite) within HAnimHumanoid = 95[/X3D/Scene/HAnimHumanoid, diagnostic]
node count(HAnimSite//Viewpoint) within skeleton hierarchy = 4[/X3D/Scene/HAnimHumanoid, diagnostic]
node count(HAnimDisplacer) within skeleton hierarchy = 0[/X3D/Scene/HAnimHumanoid, diagnostic]
node count() = 94[/X3D/Scene/HAnimHumanoid, diagnostic]
node count() = 94[/X3D/Scene/HAnimHumanoid, diagnostic]
node count() = 91[/X3D/Scene/HAnimHumanoid, diagnostic]
node count() = 14[/X3D/Scene/HAnimHumanoid, diagnostic]
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 (mailto: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 -validateHumanoidAnimation/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: So I have improved Python code generation. The old PythonSerializerX3DJSAIL is now: (https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/PythonSerializer.js (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.jsThis is tuned to run in X3DJSONLD/src/main/shell John</yottzumm at gmail.com>
On Sun, Jul 13, 2025 at 10:45 PM John Carlson <yottzumm at gmail.com (mailto: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 () 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 (http://www.web3d.org/x3d/content/examples/HumanoidAnimation (https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/))</yottzumm at gmail.com>
$ 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
More information about the x3d-public
mailing list