<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">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 class="gmail-node" 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 style=""> 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 class="gmail-node" style="font-size:11.05px;margin-left:25px"><font color="#000000"><br></font></pre><pre class="gmail-node" 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 class="gmail-node" style="font-size:11.05px;margin-left:25px"><font color="#000000"><br></font></pre><pre class="gmail-node" style="font-size:11.05px;margin-left:25px"><font color="#000000">John</font></pre></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Jul 13, 2025 at 9:40 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com">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_-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_-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>