<div dir="auto">I’ve relied on X3DJSAIL for a long time now, looking forward to limiting resolution features!</div><div dir="auto"><br></div><div dir="auto">Great work!   Now if I can only figure out how to concatenate OrientationInterpolators for a HAnimJoint, given a TimeSensor order.  One nice thing to have would be to be able to easily remove sone ROUTEs, TimeSensors and OrientationInterpolators, in preparation for replacements.</div><div dir="auto"><br></div><div dir="auto">I’ve got concatenating OrientationInterpolators mostly done (he says), but I need to rescale back the keys to [0,1] (should be easy), combine TimeSensors, etc.</div><div dir="auto"><br></div><div dir="auto">Cleaning up old stuff is a mystery to me.  I’d like something that takes a list of ROUTEs (statements) or a list of nodes, to remove old cruft.</div><div dir="auto"><br></div><div dir="auto">Or pass an X3D class method a function or class that is used in a visitor pattern.   There’s probably some options here.</div><div dir="auto"><br></div><div dir="auto">I have many uses for visitor/listener patterns, if they are available or could be added at some point.  XML and VRML generation are just two applications.</div><div dir="auto"><br></div><div dir="auto">I realize this could be done with SAX, etc., but where’s the fun in that?</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 6, 2024 at 10:19 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div lang="EN-US" link="#467886" vlink="#96607D" style="overflow-wrap: break-word;"><div class="m_-2299388382431667909WordSection1"><p class="MsoNormal">Happy to report a successful codebase update:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3D Java Scene Access Interface Library (X3DJSAIL)<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3DJSAIL supports programmers with standards-based X3D Java interfaces and objects, all as open source.<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" 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">This build release successfully tests the latest Java OpenJDK 22.0.1 programming language.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">X3D scene conversion and file serialization using the X3D Examples Archives has produced over four thousand diverse models for unit testing.  Unit testing has resulted in successful production of complete Javadoc for these Java translations.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3D Resources, Examples: Scene Archives for X3D<u></u><u></u></li><ul style="margin-top:0in" type="circle"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</a><u></u><u></u></li></ul><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3DJSAIL Examples, Javadoc<u></u><u></u></li><ul style="margin-top:0in" type="circle"><li class="m_-2299388382431667909MsoListParagraph" 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><li class="m_-2299388382431667909MsoListParagraph" 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><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">Javadoc for each model archive<u></u><u></u></li><ul style="margin-top:0in" type="circle"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/javadoc" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/javadoc</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/javadoc" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/javadoc</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/Basic/javadoc" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/javadoc</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/ConformanceNist/javadoc" target="_blank">https://www.web3d.org/x3d/content/examples/ConformanceNist/javadoc</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation" target="_blank">https://www.web3d.org/x3d/content/examples/HumanoidAnimation</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/javadoc" target="_blank">https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/javadoc</a><u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://savage.nps.edu/Savage" target="_blank">https://savage.nps.edu/Savage</a><u></u><u></u></li></ul><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">Comprehensive conversion, compilation and execution results<u></u><u></u></li><ul style="margin-top:0in" type="circle"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">Can search for  “<span style="font-size:10pt;font-family:"Courier New"">*** Error</span>” and  “<span style="font-size:10pt;font-family:"Courier New"">*** Warning</span>”  line prefixes to find current model issues<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/build.java.all.log.txt" target="_blank">https://www.web3d.org/x3d/content/examples/build.java.all.log.txt</a><u></u><u></u></li></ul></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Conversion of an .x3d model into X3DJSAIL .java program is a feature provided by X3D-Edit.  Have <span style="font-size:10pt;font-family:"Courier New"">X3DJSAIL.4.0.full.jar</span> in your CLASSPATH in order to compile and run the result.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3D-Edit 4.0 Authoring Tool for Extensible 3D (X3D) Graphics<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3D-Edit is a free, open-source Extensible 3D (X3D) Graphics authoring tool for simple high-quality authoring, editing, import/export, validation and viewing of X3D scenes.<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://savage.nps.edu/x3d-edit" target="_blank">https://savage.nps.edu/x3d-edit</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_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3DJSAIL Downloads<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/java/X3DJSAIL.html#Downloads" target="_blank">https://www.web3d.org/specifications/java/X3DJSAIL.html#Downloads</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Looking ahead, two capabilities are identified as priorities for future X3DJSAIL releases.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in">X3DJSAIL TODO Planned and Completed Work<u></u><u></u></li><li class="m_-2299388382431667909MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/specifications/java/X3DJSAIL.html#TODO" target="_blank">https://www.web3d.org/specifications/java/X3DJSAIL.html#TODO</a><u></u><u></u></li><li class="MsoNormal" style="color:black">In order to help reduce model bloat for CAD and related exports, provide ability to limit resolution (significant digits) of floating-point outputs in order to reduce output file size. Provide separate optional settings for lengths, rotations, and texture coordinates, both on a scene and per-node basis. Note precision values as contained metadata.<u></u><u></u></li><li class="MsoNormal" style="color:black">When updating specifications for X3D 4.0, use <a href="https://docs.oracle.com/javase/tutorial/java/annotations/index.html" target="_blank">Java Annotations</a> to confirm support for abstract <a href="https://web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-2v4.0-WD1/Part02/X3D_SAI.html" target="_blank">19775-2 X3D Scene Access Interface (SAI)</a> requirements, once eventually applying updates to <a href="https://www.web3d.org/documents/specifications/19777-2/V3.3" target="_blank">19777-2 Java Scene Access Interface (SAI)</a>.<u></u><u></u></li></ul><div style="border-width:medium medium 1.5pt;border-style:none none solid;padding:0in 0in 1pt;border-color:currentcolor currentcolor windowtext"><p class="MsoNormal" style="border:medium;padding:0in"><span style="color:black"><u></u> <u></u></span></p></div><p class="MsoNormal" style="margin-left:0.5in"><b><span style="font-size:10pt;color:black">Abstract<u></u><u></u></span></b></p><p class="MsoNormal" style="margin-left:0.5in"><span style="font-size:10pt;color:black">X3DJSAIL, the X3D Java Scene Access Interface Library is a set of strongly typed Java application programming interfaces (APIs) providing programmer access to an X3D scene graph. Two integrated Java packages are included that contain X3D SAI interfaces and support the <a href="https://www.web3d.org/standards" target="_blank"><span style="color:blue">X3D Graphics Standards</span></a> for Java programmers.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">org.web3d.x3d.jsail</span><span style="font-size:10pt;color:black"> provides concrete implementation-oriented classes for building X3D scenes using standalone Java objects.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">org.web3d.x3d.sai</span><span style="font-size:10pt;color:black">     contains standard X3D SAI interfaces to independently compile Script-node source for use in X3D players.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:0.5in"><i><span style="font-size:10pt;color:black">Goal outcomes:</span></i><span style="font-size:10pt;color:black"> make it easy to create a fully valid X3D scene graph using Java, while also making it hard to create an incorrect or invalid X3D model. X3DJSAIL has succeeded in accomplishing these goals.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">Software design patterns are autogenerated from rigorous definitions of all X3D node and field relationships using the <a href="https://www.web3d.org/specifications/X3DUOM.html" title="X3D Unified Object Model (X3DUOM)" target="_blank"><span style="color:blue">X3D Unified Object Model (X3DUOM)</span></a>.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">Validation of individual fields includes application of <a href="https://www.web3d.org/specifications/X3dRegularExpressions.html" title="X3D Regular Expressions (regexes)" target="_blank"><span style="color:blue">X3D Regular Expressions (regexes)</span></a>.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">X3DJSAIL <a href="https://www.web3d.org/specifications/java/javadoc/index.html" title="Java Documentation" target="_blank"><span style="color:blue">Javadoc</span></a> includes all descriptions, links, hints, and warnings from the <a href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html" target="_blank"><span style="color:blue">X3D Tooltips</span></a>.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:0.5in"><span style="font-size:10pt;color:black">Available products include <a href="https://www.web3d.org/specifications/java/javadoc/index.html" target="_blank"><span style="color:blue">Javadoc</span></a> documentation, several thousand self-validating <a href="https://www.web3d.org/specifications/java/X3DJSAIL.html#Examples" target="_blank"><span style="color:blue">examples</span></a>, <a href="https://www.web3d.org/specifications/java/src/" target="_blank"><span style="color:blue">source code</span></a>, <a href="https://www.web3d.org/specifications/java/build.xml" target="_blank"><span style="color:blue">build support</span></a> for <a href="https://www.web3d.org/specifications/java/classes/" target="_blank"><span style="color:blue">compiled classes</span></a>, <a href="https://www.web3d.org/specifications/java/X3DJSAIL.html#Downloads" target="_blank"><span style="color:blue">run-time jar archives</span></a>, and draft specification annexes for <a href="https://www.web3d.org/specifications/java/draftJavaLanguageBindingAnnexes/Part2/nodeInterfaces.html" target="_blank"><span style="color:blue">node interfaces</span></a> and <a href="https://www.web3d.org/specifications/java/draftJavaLanguageBindingAnnexes/Part2/nodeTypeInterfaces.html" target="_blank"><span style="color:blue">abstract-node type interfaces</span></a>.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:0.5in"><span style="font-size:10pt;color:black">This library successfully supports multiple purposes:<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">Create high-performance standalone Java applications using a <a href="https://en.wikipedia.org/wiki/Plain_Old_Java_Object" target="_blank"><span style="color:blue">Plain Old Java Object (POJO)</span></a> implementation for X3D.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">Such X3D-capable Java applications can be <i>client-based</i>, <i>server-based</i>, or driven via <a href="https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html" target="_blank"><span style="color:blue">command-line invocation (CLI)</span></a> such as <a href="https://www.java.com/en/download/help/javaconsole.html" target="_blank"><span style="color:blue">Java Console (jconsole)</span></a>.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">No additional Java packages are necessary, with all included code offered under a royalty-free <a href="https://www.web3d.org/specifications/java/license.html" target="_blank"><span style="color:blue">license</span></a> suitable for any legitimate purpose.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:1in"><u></u><span style="font-size:10pt;font-family:Symbol;color:black"><span style="font-family:Symbol">·<span style="font-style:normal;font-variant-caps:normal;font-weight:normal;font-stretch:normal;font-size:7pt;line-height:normal;font-family:"Times New Roman";font-size-adjust:none;font-kerning:auto;font-variant-alternates:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-feature-settings:normal">        </span></span></span><u></u><span style="font-size:10pt;color:black">Confirms correct implementation of ISO standard <a href="https://www.web3d.org/x3d4" target="_blank"><span style="color:blue">X3D version 4.0</span></a> while maintaining full support for prior X3D versions 3.0 through 3.3.<u></u><u></u></span></p><p class="MsoNormal" style="margin-left:0.5in"><span style="font-size:10pt;color:black">X3DJSAIL also serves as a design template to autogenerate similar codebases for <a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:blue">Python</span></a> and <a href="https://www.web3d.org/x3d/content/semantics/semantics.html" target="_blank"><span style="color:blue">X3D Ontology</span></a> using Turtle. Similar future possibilities include ECMAScript and JSON Schema, C#/C++/C, and potentially programming languages.<u></u><u></u></span></p><div style="border-width:medium medium 1.5pt;border-style:none none solid;padding:0in 0in 1pt;border-color:currentcolor currentcolor windowtext"><p class="MsoNormal" style="border:medium;padding:0in"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Feedback welcome.  Have fun with X3D using Java!   <span style="font-family:"Segoe UI Emoji",sans-serif">😊</span><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u style="font-family:"Courier New""></u> <u style="font-family:"Courier New""></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">all the best, Don<u style="font-family:"Courier New""></u><u style="font-family:"Courier New""></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">-- <u style="font-family:"Courier New""></u><u style="font-family:"Courier New""></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" style="font-family:"Courier New"">brutzman@nps.edu</a><u style="font-family:"Courier New""></u><u style="font-family:"Courier New""></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 style="font-family:"Courier New""></u><u style="font-family:"Courier New""></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" style="font-family:"Courier New"">https://faculty.nps.edu/brutzman</a><u style="font-family:"Courier New""></u><u style="font-family:"Courier New""></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>
</blockquote></div></div>