<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:250436800;
        mso-list-type:hybrid;
        mso-list-template-ids:-572640778 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:16;
        mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1812362799;
        mso-list-type:hybrid;
        mso-list-template-ids:1927846462 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-start-at:16;
        mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">John, we do not have VRML or ClassicVRML parsers in X3DJSAIL Java or x3d.py Python.  They are hopefully mentioned in the TODO lists.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Contributions always welcome.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">All supported conversions for X3DJSAIL are found at</p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html#Conversions"><span style="color:windowtext;text-decoration:none">X3DJSAIL: X3D Java Scene Access
 Interface Library </span></a>– Conversions</li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html#Conversions">https://www.web3d.org/specifications/java//X3dJavaSceneAuthoringInterface.html#Conversions</a>
</li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If you look at Javadoc you will find that every node and statement supports toStringX3D().  The X3D concrete class supports a ton of other conversions to files in other encodings and programming languages.  Look at top of hierarchy in X3DConcreteElement
 to see methods supported by all nodes and statements.</p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2">X3D toStringX3D​ (indent)<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#toStringX3D(int)">https://www.web3d.org/specifications/java//javadoc/org/web3d/x3d/jsail/Core/X3D.html#toStringX3D(int)</a>
</li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DConcreteElement.html">https://www.web3d.org/specifications/java//javadoc/org/web3d/x3d/jsail/X3DConcreteElement.html</a>
</li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Looking at any of the examples gives plenty of sample code & output, as do the build tests and all of the converted X3D Example Archives.</p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html#Examples">https://www.web3d.org/specifications/java//X3dJavaSceneAuthoringInterface.html#Examples</a>
</li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/examples/HelloWorldProgram.java">https://www.web3d.org/specifications/java//examples/HelloWorldProgram.java</a>
</li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l1 level1 lfo2"><a href="https://www.web3d.org/specifications/java/examples/HelloWorldProgramOutputLog.txt">https://www.web3d.org/specifications/java//examples/HelloWorldProgramOutputLog.txt</a>
</li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">If there are any cases or samples you _<i>can’t</i>_ find in there, then let’s please add them.  These are unit tests performed in each build.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">All of our primary HAnim models, converted from .x3d in every direction, are found at</p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">HumanoidAnimation X3D Examples Archive</li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/</a>
</li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Have fun with VRML, X3D, HAnim, Java and Python!</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">all the best, Don<br>
<span style="font-family:"Courier New"">-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu<br>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>
X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman">
http://faculty.nps.edu/brutzman</a></span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br>
<b>Sent: </b>Thursday, August 12, 2021 2:59 AM<br>
<b>To: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a>; <a href="mailto:joedwil@earthlink.net">
Joseph D Williams</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br>
<b>Subject: </b>Joe, which model?</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">For clarification, should I download the LOA4 VRML example in HAnim pt1 Annex A?  I’m wondering how to read VRML into X3DJSAIL or x3d.py? I know I can convert to XML using Michalis’ tool.  Does X3DJSAIL support createX3DFromString?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It would be convenient to provide me with a link<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Note on the below…I scraped the DEFs from the model, I didn’t discover them.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">John<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Aug 10, 2021 at 5:22 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:4.8pt">
SAIScript.java is attached for your purvue (sp?). It's a real simple <br>
script that loads the .x3d file, then prints out all the DEFs it <br>
discovers in the scenegraph.  More development later as we narrow down <br>
what we want to do.<br>
<br>
<br>
Looks like there may be an issue with the containerField in the <br>
humanoid_root of the .x3d file mentioned in the Subject?<br>
<br>
<br>
Please advise.  I tried "children", but got a second set of errors <br>
below.  I tried "joints," similar issues.<br>
<br>
<br>
There are around 38 DEFs in the model, which seems a bit low.  I grabbed <br>
the model with HAnimMotion.<br>
<br>
<br>
$ javac -cp ~/pythonSAI/X3DJSAIL.4.0.full.jar SAIScript.java<br>
$ java -cp ~/pythonSAI/X3DJSAIL.4.0.full.jar:. SAIScript<br>
Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: <br>
Invalid setContainerFieldOverride() value='skeleton', legal values for <br>
HAnimJoint are containerField_ALTERNATE_VALUES='"children"'<br>
         at <br>
org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:401)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>
         at SAIScript.main(SAIScript.java:47)<br>
$ grep skeleton KoreanCharacterMotionAnnexD01Jin.x3d<br>
       <HAnimJoint DEF='hanim_humanoid_root' center='0 30.53 -0.7076' <br>
containerField='skeleton' name='humanoid_root'><br>
<br>
<br>
<br>
  $ java -cp ~/pythonSAI/X3DJSAIL.4.0.full.jar:. SAIScript<br>
*** [X3DLoaderDOM error] Parent-child node relationship not found! <br>
(parent HAnimHumanoid, child HAnimJoint, containerField='children') <br>
Please report this problem to <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
*** [X3DLoaderDOM error] Incorrectly handled X3DJSAIL object <br>
construction, current elementObject=HAnimHumanoid (HAnimHumanoid), <br>
child="HAnimJoint", containerField="children", <br>
java.lang.ClassCastException: class <br>
org.web3d.x3d.jsail.HAnim.HAnimHumanoid cannot be cast to class <br>
org.web3d.x3d.sai.Grouping.X3DGroupingNode <br>
(org.web3d.x3d.jsail.HAnim.HAnimHumanoid and <br>
org.web3d.x3d.sai.Grouping.X3DGroupingNode are in unnamed module of <br>
loader 'app')<br>
     This error can be caused by incorrect parent-child node <br>
relationships or incorrect containerField values.<br>
     X3D node typing is strict, check or validate your scene graph!<br>
     This error can also be caused by X3DLoaderDOM DOM omissions in <br>
X3DJSAIL. Please report mysterious problems, thank you.<br>
<br>
java.lang.ClassCastException: class <br>
org.web3d.x3d.jsail.HAnim.HAnimHumanoid cannot be cast to class <br>
org.web3d.x3d.sai.Grouping.X3DGroupingNode <br>
(org.web3d.x3d.jsail.HAnim.HAnimHumanoid and <br>
org.web3d.x3d.sai.Grouping.X3DGroupingNode are in unnamed module of <br>
loader 'app')<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:1352)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>
         at SAIScript.main(SAIScript.java:47)<br>
Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: <br>
Invalid setContainerFieldOverride() value='joints', legal values for <br>
HAnimJoint are containerField_ALTERNATE_VALUES='"children"'<br>
         at <br>
org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:401)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>
         at <br>
org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>
         at SAIScript.main(SAIScript.java:47)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>