<div dir="ltr">Don is quite good! He fixed a bug before I could stumble around writing a ticket for it!<div>We have different Java coding styles. Diversity of test cases is good, which is one reason why I maintain X3DJSONLD. I'd still like to have a discussion of how to break up huge HAnim Java programs and Pascal programs into smaller pieces (yes, I know with VRML and X3D). My mind is percolating.</div><div><br></div><div>Now if I could only convince Michalis it's a good idea to add a fluent interface to Castle in good order. This bodes well for SAI in general, and I've also suggested a fluent interface to the C++ SAI to Myeong, too (but it's not so critical there, as I'm not creating any running programs, just using C++ as a network protocol/DOM-like thing. No, I'm not sending binaries over the network).</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jun 22, 2024 at 3:29 AM Brutzman, Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</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 class="msg6147149268999221008"><div lang="EN-US" style="overflow-wrap: break-word;"><div class="m_6147149268999221008WordSection1"><p class="MsoNormal">Am happy to report an X3DJSAIL update: improved output when exporting ClassicVRML/VRML97 models.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">X3D Java Scene Access Interface Library (X3DJSAIL)<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">X3D Java Scene Access Interface Library (X3DJSAIL) supports programmers with standards-based X3D Java interfaces and objects, all as open source.<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">https://www.web3d.org/specifications/java/X3DJSAIL.html</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Motivating problem: excellent sleuthing and a well-stated issue report by John Carlson revealed a significant issue with the ClassicVRML export.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">X3DJSAIL: VRML head and Scene out of order<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/tickets/27" target="_blank">https://sourceforge.net/p/x3d/tickets/27</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">To improve quality assurance (QA) of ClassicVRML and VRML97 output by X3DJSAIL. I applied command-line validation of the ClassicVRML .x3dv output using the <i>castle-model-converter</i> application by Michalis Kamburelis, all to good effect. Troubleshooting led to fixes of the original reported problem and perhaps a dozen other errors also. This validation is now part of the build scripts so that further regression testing is always produced as part of X3DJSAIL library development.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">Castle Model Converter (formerly tovrmlx3d)<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://castle-engine.io/castle-model-converter" target="_blank">https://castle-engine.io/castle-model-converter</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Test program and output:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">HelloWorldProgram.java<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">Description: Example "smoke test" program to create a highly detailed X3D model using the X3D Java Scene Access Interface Library (X3DJSAIL).<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgram.java" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgram.java</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">HelloWorldProgram output, ClassicVRML and VRML97<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.x3dv" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.x3dv</a><u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.wrl" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.wrl</a><u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">note that other outputs are also provided: XML .x3d, pretty-print .html, Java, Python.py, compressed .exi, X_ITE and X3DOM html, etc.<u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">Build test log is in version control to track improvements and avoid backsliding:<u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/build.test.X3DJSAIL.txt" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/build.test.X3DJSAIL.txt</a><u></u><u></u></li><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in">Excerpt showing castle-model-converter validation:<u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">ClassicVRML validation: castle-model-converter.exe C:\x3d-code\<a href="http://www.web3d.org" target="_blank">www.web3d.org</a>\x3d\stylesheets\java\examples/HelloWorldProgramOutput.x3dv --validate --enable-downloads<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: X3D: Invalid X3D file: Invalid sequence in a string: "\n". Backslash must be followed by another backslash or double quote, for SFString and MFString (in X3D classic (VRML) encoding) and for MFString (in X3D XML encoding).<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: VRML/X3D: Prototype "ArtDeco02" referenced by external prototype "ArtDeco02" doesn't have field "description"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: VRML/X3D: Inline node name "inlineScene" not found (or nothing was EXPORTed from it), cannot IMPORT<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: X3D: Invalid X3D file: Invalid sequence in a string: "\n". Backslash must be followed by another backslash or double quote, for SFString and MFString (in X3D classic (VRML) encoding) and for MFString (in X3D XML encoding).<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: X3D: Node "Anchor" is not allowed in the field "watchList" of the node "LoadSensor"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">castle-model-converter: Warning: X3D: Node "GeoMetadata" is not allowed in the field "watchList" of the node "LoadSensor"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">Exception "Exception":<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:8pt;font-family:"Courier New"">Validation failed (consult the warnings above), exiting with non-zero status<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Michalis was informed of the last two watchlist errors and reportedly has already fixed them. Many of the other warnings are also fixable if the test program is improved to use actual file addresses instead of pseudo-urls. Progress steadily continues… the only “really bad errors” are the ones you don’t know about!<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Javadoc documentation for X3DJSAIL programmers:<u></u><u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/java/javadoc" target="_blank">https://www.web3d.org/specifications/java/javadoc</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Over 4000 examples using X3DJSAIL, converted automatically from .x3d to .java in the X3D Example Models Archives:<u></u><u></u></p><ul style="margin-top:0in" type="disc"><li class="m_6147149268999221008MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/java/X3DJSAIL.html#Examples" target="_blank">https://www.web3d.org/specifications/java/X3DJSAIL.html#Examples</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">So X3DJSAIL is excellent for plain-old Java handling of X3D, and keeps getting better. Again thanks to John and Michalis for their contributions to identify problems that are now fixed.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Have fun with X3D Java! <span style="font-family:"Segoe UI Emoji",sans-serif">😊</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">all the best, Don<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">-- <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">Don Brutzman Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a><u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p></div></div>_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</div></blockquote></div>