<html xmlns:v="urn:schemas-microsoft-com:vml" 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)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><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;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}
@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:644506942;
mso-list-type:hybrid;
mso-list-template-ids:1925762600 67698713 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:1.25in;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.75in;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.25in;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:2.75in;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.25in;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.75in;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
margin-left:4.25in;
text-indent:-9.0pt;}
@list l1
{mso-list-id:697120635;
mso-list-type:hybrid;
mso-list-template-ids:-1274085714 -932181392 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Calibri;
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:;
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:;
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:;
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:;
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:;
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><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>John, thanks for your testing. Feedback:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=a><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>Use of DIS networking is highly specialized. Don’t use those nodes - except maybe in a special exploratory test cases, currently only Xj3D supports them. X3D-Edit panels for sending/receiving DIS can help in any troubleshooting there.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>Whenever you get a “cannot be cast to class” error, that is typically reporting that you are trying to create an invalid scene graph. Not sure about your case, HAnimJoint and LoadSensor are somewhat special cases (since HAnimJoint can only contain HAnimJoint,HAnimSegment; and LoadSensor can only contain X3DUrlObject nodes).<o:p></o:p></li><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>Comparing a validated .x3d model to the .java source that is trying to construct a similar model can reveal whether you are proceeding well. Each of the 4000 models X3D Example Archives provide both, so there are no shortage of examples.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>Pay a lot more attention to your model’s Java source code that X3DJSAIL, usually, and work that to isolate errors.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l0 level1 lfo1'>If the problem is truly in X3DJSAIL then I will debug that code. For your helpful excerpt here, it appears that the X3DJSAIL message might be too obsequious. It should possibly report something like “you are trying to create an invalid scene graph, those node types don’t go together in the way that you are trying” (or somesuch).<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Rephrase for your particulars: neither HAnimJoint nor LoadSensor are grouping nodes. As an authoring assistant, please be aware that X3D Tooltips give helpful links to X3D Architecture specification, X3DJSAIL Javadoc, and other helpful validation links for each node.<o:p></o:p></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:l1 level1 lfo2'>X3D Tooltips: HAnimJoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimJoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/nodeIndex.html#HAnimJoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/HAnim/HAnimJoint.html<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>X3D Tooltips: LoadSensor<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/x3d/content/X3dTooltips.html#LoadSensor<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/nodeIndex.html#LoadSensor<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Networking/LoadSensor.html<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>And so… not seeing your source model.java. Please share when ready so that I can carefully debug/check X3DJSAIL and we can try further. Again thanks.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><img width=461 height=143 style='width:4.8in;height:1.4875in' id="Picture_x0020_1" src="cid:image001.png@01D9AB26.554432A0"><o:p></o:p></p><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br brutzman@nps.edu<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> John Carlson <yottzumm@gmail.com> <br><b>Sent:</b> Thursday, June 29, 2023 5:53 PM<br><b>To:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>; X3D Graphics public mailing list <x3d-public@web3d.org><br><b>Subject:</b> Please fix these issues with X3DJSAIL, etc. if possible<o:p></o:p></p></div></div><div><div><div><div><div><div><p class=MsoNormal>Don, please fix these issues with X3DJSAIL. I think they are in X3DLoaderDOM.java, I haven't explored X3DUOM or schema yet.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>org.web3d.x3d.jsail.DIS.DISEntityManager cannot be cast to class org.web3d.x3d.sai.Grouping.X3DGroupingNode<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>org.web3d.x3d.jsail.HAnim.HAnimJoint cannot be cast to class org.web3d.x3d.sai.Grouping.X3DGroupingNode<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>org.web3d.x3d.jsail.Networking.LoadSensor cannot be cast to class org.web3d.x3d.sai.Grouping.X3DGroupingNode<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Hot spots seem to be:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal> <span style='color:black;background:white'> </span><span style='color:blue;background:white'> [java] at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:1352)</span><o:p></o:p></p></div><div><p class=MsoNormal> [java] at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<o:p></o:p></p></div><div><p class=MsoNormal> [java] at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<o:p></o:p></p></div><div><p class=MsoNormal> [java] at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The first blue one, line 1352, appears to be the main problem:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal> // Note that Scene statement was already handled earlier<o:p></o:p></p></div><div><p class=MsoNormal> if (!(elementObject instanceof X3DGroupingNode))<o:p></o:p></p></div><div><p class=MsoNormal> {<o:p></o:p></p></div><div><p class=MsoNormal> errorNotice = "*** [X3DLoaderDOM error] Parent-child node relationship not found! (parent " + nodeName + ", child " + childElementName +<o:p></o:p></p></div><div><p class=MsoNormal> ", containerField='" + containerField + "') Please report this problem to <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>";<o:p></o:p></p></div><div><p class=MsoNormal> validationResult.append(errorNotice);<o:p></o:p></p></div><div><p class=MsoNormal> System.out.println(errorNotice); // avoiding System.err due to redirection difficulties<o:p></o:p></p></div><div><p class=MsoNormal> }<span style='color:blue'> // WHERE'S THE ELSE?</span><o:p></o:p></p></div><div><p class=MsoNormal> ((X3DGroupingNode)elementObject).addChildren(new org.web3d.x3d.sai.Core.X3DNode[] { (X3DNode) childX3dElement } ); // default fallback can throw exception<span style='color:blue'> // 1352</span><o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Hope this helps! I think fixing the egregious class cast exception at line 1352 would be the most help!<o:p></o:p></p></div></div></div></div></div></div></div></body></html>