<div dir="ltr">Here are my X3D example files (found in <a href="https://github.com/coderextreme/X3DJSONLD">https://github.com/coderextreme/X3DJSONLD</a> src/main/data that do not compile:<div><br></div><div>Christoph:</div><div>../data/bumpyfreewrljsonverse.x3d<br>../data/bumpyfreewrlsliders.x3d<br>../data/bumpyx_itesliders.x3d</div><div><br></div><div>Looking at Don's X3dToJava.xslt output to see if he fixed the issue:</div><div><br>../data/Gramps8Final.x3d<br>../data/JinConcat11c.x3d<br>../data/JinLOA4.x3d<br>../data/JinLOA4scaled1joe06c.x3d<br>../data/JinScaledV2L1LOA4OnlyMarkers11g.x3d<br>../data/JinScaledV2L1LOA4Sites07f.x3d<br>../data/JinScaledV2L1LOA4Sites08e.x3d<br>../data/JinScaledV2L1LOA4Sites10h.x3d</div><div><br></div><div>Me:<br>../data/variationalflowers2.x3d</div><div><br></div><div>The issues stem from 1) setNetworkMode and readInterval on the (wrong? DIS nodes.  I ask Christoph Valentin to try to validate his tprev.??? example so these can be updated.   2)  "error: code too large".  I'm going to see if Don's X3dToJava.xslt does better.  3) use of non-implemented nodes.  My bad.</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Jul 16, 2025 at 1:02 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">Note that my first attempt at removing setContainerFieldOverride() from my code revealed JDK bugs.  I'm not saying it can't be done, I just need more time to go back to a "pre-override" days, perhaps.<div><br></div><div>I really don't want my programs to not compile.</div><div><br></div><div>I tried JDK 17, JDK 23 and JDK 24, and a version of GraalVM.  None worked!</div><div><br></div><div>Backing out changes to JavaSerialer.js worked.  Here's the changes from the failing version.:</div><div><br></div><div>$ git diff -c JavaSerializer.js<br>warning: in the working copy of 'src/main/node/JavaSerializer.js', LF will be replaced by CRLF the next time Git touches it<br>diff --git a/src/main/node/JavaSerializer.js b/src/main/node/JavaSerializer.js<br>index 0e457190d..bcc6e24aa 100644<br>--- a/src/main/node/JavaSerializer.js<br>+++ b/src/main/node/JavaSerializer.js<br>@@ -390,7 +390,6 @@ JavaSerializer.prototype = {<br>                                parseInt(a);<br>                                if (attrs.hasOwnProperty(a) && attrs[a].nodeType === 2) {<br>                                        var attr = attrs[a].nodeName;<br>-                                       /*<br>                                        if (attr === 'containerField' && (<br>                                                attrs[a].nodeValue === "joints" ||<br>                                                attrs[a].nodeValue === "skeleton" ||<br>@@ -402,9 +401,7 @@ JavaSerializer.prototype = {<br>                                                // console.error("################## FOUND", attr, attrs[a].nodeValue);<br>                                                attr = "containerFieldOverride";<br><br>-                                       } else<br>-                                               */<br>-                                       if (attr === "xmlns:xsd" || attr === "xsd:noNamespaceSchemaLocation" || attr === 'containerField' || attr === 'type') {<br>+                                       } else if (attr === "xmlns:xsd" || attr === "xsd:noNamespaceSchemaLocation" || attr === 'containerField' || attr === 'type') {<br>                                                continue;<br>                                        }<br>                                        if (attr === "DEF") {<br>@@ -549,7 +546,7 @@ JavaSerializer.prototype = {<br>                                        }<br><br>                                        str += '.'+method+"("+strval+")";<br>-                                       if (/*attr === 'containerFieldOverride' && */(attrs[a].nodeValue === "joints" || attrs[a].nodeValue === "skeleton" || attrs[a].nodeValue === "segments" || attrs[a].nodeValue === "viewpoints" || attrs[a].nodeValue === "skinCoord" || attrs[a].nodeValue === "skin" || attrs[a].nodeValue === "sites")) {<br>+                                       if (attr === 'containerFieldOverride' && (attrs[a].nodeValue === "joints" || attrs[a].nodeValue === "skeleton" || attrs[a].nodeValue === "segments" || attrs[a].nodeValue === "viewpoints" || attrs[a].nodeValue === "skinCoord" || attrs[a].nodeValue === "skin" || attrs[a].nodeValue === "sites")) {<br>                                        // console.error("################## FOUND", method, attrs[a].nodeValue);<br>                                                str += ')'; // for cast<br>                                        }</div><div><br></div><div><br></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_1100269167154205936m_7513154787093726848gmail-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_1100269167154205936m_7513154787093726848gmail-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>