<div dir="ltr"><div>Note also that we need a way to disambiguate between the highlighted HAnimHumanoid fields in XML (they have the same type of children nodes, so setFieldOverride() is necessary (I need to double check the X3DJSAIL output of X3dToJava.xslt programs).  If you want to make addJoints(),  addSite(), addSkeleton() and addViewpoints() actually call setFieldOverride(), that would be something.  You actually  have to look at the XML output from Java to see the issue.  Apparently, you haven't validated the XML output from Java?  Again, you can't see the problem by looking at the archive, the problem is not in the archive.</div><div><br></div><div>I will continue investigating with a new X3DJSAIL, I recently did an svn update.</div><div><br></div><div><br></div><div><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid</a></div><div><h3 style="font-size:19.2px;margin-top:14px;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">26.3.2 HAnimHumanoid</h3><pre style="font-size:11.05px;margin-left:25px"><span style="color:rgb(0,0,0)">HAnimHumanoid : X3DChildNode, X3DBoundedObject {
  SFVec3f    [in,out] center                0 0 0    (-∞,∞)
  SFString   [in,out] description           ""
  SFBool     [in,out] bboxDisplay           FALSE
  MFString   [in,out] info                  []
  MFVec3f    [in,out] jointBindingPositions []       (-∞,∞)
  MFRotation [in,out] jointBindingRotations []       [-1,1] or (-∞,∞)
  MFVec3f    [in,out] jointBindingScales    []       (0,∞)
</span><font color="#ff00ff">  MFNode     [in,out] joints                []       [HAnimJoint]</font><span style="color:rgb(0,0,0)">
  SFInt32    [in,out] loa                   -1       [-1,4]
  SFNode     [in,out] metadata              NULL     [X3DMetadataObject]
  MFNode     [in,out] motions               []       [HAnimMotion]
  MFBool     [in,out] motionsEnabled        []
  SFString   [in,out] name                  ""
  SFRotation [in,out] rotation              0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] scale                 1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation      0 0 1 0  [-1,1] or (-∞,∞)
  MFNode     [in,out] segments              []       [HAnimSegment]
</span><font color="#ff00ff">  MFNode     [in,out] sites                 []       [HAnimSite]</font><span style="color:rgb(0,0,0)">
  SFString   [in,out] skeletalConfiguration "BASIC"
  </span><font color="#ff00ff">MFNode     [in,out] skeleton              []       [HAnimJoint, HAnimSite]</font><span style="color:rgb(0,0,0)">
  MFNode     [in,out] skin                  []       [Group, LOD, Shape, Switch, Transform, IndexedFaceSet, IndexedFanSet, IndexedLineSet, IndexedQuadSet, IndexedTriangleSet, IndexedTriangleStripSet]
  SFNode     [in,out] skinBindingCoords     NULL     [Coordinate|CoordinateDouble]
  SFNode     [in,out] skinBindingNormals    NULL     [X3DNormalNode]
  SFNode     [in,out] skinCoord             NULL     [Coordinate|CoordinateDouble]
  SFNode     [in,out] skinNormal            NULL     [X3DNormalNode]
  SFVec3f    [in,out] translation           0 0 0    (-∞,∞)
  SFString   [in,out] version               "2.0"    ["2.0"] 
</span><font color="#ff00ff"> <b> MFNode     [in,out] viewpoints            []       [HAnimSite]</b></font><font color="#000000">
  SFBool     [in,out] visible               TRUE
  SFVec3f    []       bboxCenter            0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1
}</font></pre></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Jul 13, 2025 at 10:14 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Don,<div><br></div><div>Note that viewpoints is a perfectly valid containerField for HAnimSite, at least according to X3DOM.</div><div><br></div><div><br></div><div><ConcreteNode name="HAnimHumanoid"><br><br><div>[snip]</div><div><br></div><div><field name="viewpoints"<br>                   type="MFNode"<br>                   accessType="inputOutput"<br>                   acceptableNodeTypes="HAnimSite"<br>                   description="List of HAnimSite nodes containing Viewpoint nodes that appear in the skeleton model, usually as USE node references."/></div></div><div><br></div><div><br></div><div><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid</a></div><div><h3 style="font-size:19.2px;margin-top:14px;color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif">26.3.2 HAnimHumanoid</h3><pre style="font-size:11.05px;margin-left:25px"><span style="color:rgb(0,0,0)">HAnimHumanoid : X3DChildNode, X3DBoundedObject {
  SFVec3f    [in,out] center                0 0 0    (-∞,∞)
  SFString   [in,out] description           ""
  SFBool     [in,out] bboxDisplay           FALSE
  MFString   [in,out] info                  []
  MFVec3f    [in,out] jointBindingPositions []       (-∞,∞)
  MFRotation [in,out] jointBindingRotations []       [-1,1] or (-∞,∞)
  MFVec3f    [in,out] jointBindingScales    []       (0,∞)
  MFNode     [in,out] joints                []       [HAnimJoint]
  SFInt32    [in,out] loa                   -1       [-1,4]
  SFNode     [in,out] metadata              NULL     [X3DMetadataObject]
  MFNode     [in,out] motions               []       [HAnimMotion]
  MFBool     [in,out] motionsEnabled        []
  SFString   [in,out] name                  ""
  SFRotation [in,out] rotation              0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] scale                 1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation      0 0 1 0  [-1,1] or (-∞,∞)
  MFNode     [in,out] segments              []       [HAnimSegment]
  MFNode     [in,out] sites                 []       [HAnimSite]
  SFString   [in,out] skeletalConfiguration "BASIC"
  MFNode     [in,out] skeleton              []       [HAnimJoint, HAnimSite]
  MFNode     [in,out] skin                  []       [Group, LOD, Shape, Switch, Transform, IndexedFaceSet, IndexedFanSet, IndexedLineSet, IndexedQuadSet, IndexedTriangleSet, IndexedTriangleStripSet]
  SFNode     [in,out] skinBindingCoords     NULL     [Coordinate|CoordinateDouble]
  SFNode     [in,out] skinBindingNormals    NULL     [X3DNormalNode]
  SFNode     [in,out] skinCoord             NULL     [Coordinate|CoordinateDouble]
  SFNode     [in,out] skinNormal            NULL     [X3DNormalNode]
  SFVec3f    [in,out] translation           0 0 0    (-∞,∞)
  SFString   [in,out] version               "2.0"    ["2.0"] 
</span><font color="#ff00ff"> <b> MFNode     [in,out] viewpoints            []       [HAnimSite]</b></font><font color="#000000">
  SFBool     [in,out] visible               TRUE
  SFVec3f    []       bboxCenter            0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1
}</font></pre><pre style="font-size:11.05px;margin-left:25px"><font color="#000000"><br></font></pre><pre style="font-size:11.05px;margin-left:25px"><font color="#000000">This suggests that there's an issue with my version of X3DJSAIL, I will try recompiling!</font></pre><pre style="font-size:11.05px;margin-left:25px"><font color="#000000"><br></font></pre><pre style="font-size:11.05px;margin-left:25px"><font color="#000000">John</font></pre></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jul 13, 2025 at 9:40 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank">don.brutzman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">HAnimSite does not have a viewpoints field, but it does have a <i>children</i> field which can work for that purpose.  Note <i>children </i>is the default <i>containerField </i>value for the XML encoding of Viewpoint.<div><ul><li>X3D 4.0 Architecture, clause 26 Humanoid Animation (HAnim) component, 26.3.6 HAnimSite</li><li><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSite" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSite</a></li></ul><div>Also please avoid use of <i>setContainerFieldOverride()</i> method.  It is only there to support experimental efforts and perhaps should be private (disallowing programmer usage).  I just did a search of over 4000 autogenerated Java source files in the X3D Examples Archive and did not find a single instance.  If you ever need to use it, there is an error somewhere.  Please consult the Javadoc to search for setContainerFieldOverride you find the following explanation.</div></div><div><ul><li>X3DJSAIL, X3D Java Scene Access Interface Library, Javadoc, search <i>setContainerFieldOverride()</i></li><li><i>org.web3d.x3d.jsail > X3DConcreteNode</i>

<i> > </i>

<i>setContainerFieldOverride</i></li><li><i><span style="color:rgb(71,71,71);font-family:"DejaVu Serif",Georgia,"Times New Roman",Times,serif;font-size:14px;font-style:normal">Warning: containerFieldOverride describes a non-default (and quite possibly incorrect) field relationship of a node to its parent, overriding the default or alternate containerField value. Programmer usage is not ordinarily needed when using this API (in rare cases it may be needed for ProtoInstance nodes). Instead of using containerFieldOverride workaround methods, focus on defining correct parent-child node relationships instead.</span></i></li><li><a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DConcreteNode.html#setContainerFieldOverride(java.lang.String)" target="_blank">https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DConcreteNode.html#setContainerFieldOverride(java.lang.String)</a></li></ul></div><div>If you want to upgrade that model, be my guest.  Be aware that conversion may be a nontrivial task, from scene metadata:</div><table id="m_4876995903624978286m_-9065157264501766666gmail-LineNumberTable.top" style="border:0px;border-spacing:0px;padding:0px;width:1496.14px;color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><tbody><tr style="vertical-align:middle;border:0px;padding:0px"><td style="font-family:monospace">    <a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDutton.html#13" target="_blank">13</a> </td><td><a id="m_4876995903624978286m_-9065157264501766666gmail-13"></a>    <span title="meta 'error' defines information about an error or known problem that can prevent proper operation"><<span style="color:navy">meta</span> <span style="color:green">name</span>='<b style="color:rgb(204,0,0)"> error </b>' <span style="color:green">content</span>='<b style="color:rgb(204,0,0)"> Legacy model, not valid as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant differences and is no longer directly supported </b>'/></span></td></tr></tbody></table></div><div><br></div><div>all the best, Don</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jul 13, 2025 at 2:14 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Is there a chance we can upgrade this model to V4.0, HAnim2?<div><br></div><div><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDuttonIndex.html" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDuttonIndex.html</a></div><div><br></div><div>I can do the work, I hope that my contribution will be added to the archive (in another folder).</div><div><br></div><div>Let me know!</div><div><br></div><div>Note that X3DJSAIL complains about a potentially valid cotainerField="viewpoints".  Castle Model Converter reports it's valid</div><div><br></div><div>$ java -cp ~/Downloads/X3DJSAIL.4.0.full.jar org.web3d.x3d.jsail.CommandLine -validate AllenDutton.x3d</div><div>[snip]</div><div>Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: *** Invalid setContainerFieldOverride() value='viewpoints', legal values for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites" "skeleton"'<br>        at org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:422)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>        at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>        at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:922)<br>        at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:242)</div></div>
</blockquote></div>
</div>
</blockquote></div>
</blockquote></div>