<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:"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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>I condensed the import statements into one by returning to the X3Dautoclass.py design.  Now renamed to x3dpsail.py.  We can discuss the name of the package, but would like to confirm with Loren how to use variables from x3dpsail.py, either with a prepended package name, or raw. Confirming with Loren would be an important step forward.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The examples I generate might be considered exemplars, but people are free to choose what they want to do, including:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>from x3dpsail import *</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>with no change to the x3dpsail.py file.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am desperately trying to follow the design as laid out by Loren. I’m not disagreeing with you at all.  At this point, we should be talking to Loren.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think fully conforming to interfaces of the standard in the concrete classes would go a long way to fixing our problems.   But I have no proof.  I’ve left that to you as the X3DJSAIL author. I’ve said it differently, and even aggressively, and I apologize for that.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</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:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Sent: </b>Wednesday, June 12, 2019 7:22 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: updates to X3DJSAIL, plus python and java versions of X3DExamples, X3DPSAIL</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi John.  Yesterday I belatedly noticed that, following last week's build, you recently changed the syntax of X3D .py in the default conversion output.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>4. Syntax evolution.  Excerpt from our exemplar scene:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.py</p><p class=MsoNormal>=======================</p><p class=MsoNormal>import x3dpsail</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))</p><p class=MsoNormal>       .setHead(x3dpsail.head()</p><p class=MsoNormal>         .addMeta(x3dpsail.meta().setContent(x3dpsail.SFString("HelloWorld.x3d")).setName(x3dpsail.SFString("title")))</p><p class=MsoNormal>// etc.</p><p class=MsoNormal>=======================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>a. Like how you were able to condense all the import statements into one, that is an important step forward.  Please explain how you did that.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>b. Don't like the change in the base syntax, we must remain terse/portable/pythonic.  Certainly OK for developmental testing but not our final target.  As listed in paragraph 3 of prior message below, our Python syntax goal remains using native types in the prior style:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>    X3D0 = X3D().setProfile("Immersive").setVersion(3.3)</p><p class=MsoNormal>       .setHead(head()</p><p class=MsoNormal>         .addMeta(meta().setContent("HelloWorld.x3d").setName("title")) // etc.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>c. Towards that end, I have been studying Pyjnius and I think I know how we can get rid of those SFString/x3dpsail.SFString type wrappers so that Pyjnius employs the correct return type.  Basically instead of trying to fix Pyjnius internals at this point, we might instead explicitly define interfaces for each of the set methods throughout X3D and coerce correct behavior, so that Pyjnius doesn't mistakenly return abstract node types.  More work needed.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>d. Am finally back from extended travels and can re-engage at a higher rate. Hoping we can pick a time later this week to discuss so that our continued co-development can proceed without collision, let's coordinate offline to find a good time.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks for your continuing efforts, looks like we are getting closer.  Sure would be great if we can land on a fully working X3DPSAIL implementation prior to Web3D 2019 conference next month!</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>v/r Don</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 5/27/2019 5:42 PM, Brutzman, Donald (Don) (CIV) wrote:</p><p class=MsoNormal>> X3D Java Scene Access Interface Library (X3DJSAIL) supports programmers with standards-based X3D Java interfaces and objects, all as open source.</p><p class=MsoNormal>> </p><p class=MsoNormal>>             http://www.web3d.org/specifications/java/X3DJSAIL.html</p><p class=MsoNormal>> </p><p class=MsoNormal>> 1. Two useful improvements in X3DJSAIL have been applied, checked into version control and published.</p><p class=MsoNormal>> </p><p class=MsoNormal>> a. Have fixed long-running overzealous regular expression (regex) warnings that were getting triggered when validating large X3D models.  Since regex patterns are applied against strings, pattern matching is not needed after numbers have been parsed and read into memory.  Eliminating those extra warnings greatly reduced the extra messages.</p><p class=MsoNormal>> </p><p class=MsoNormal>>             http://www.web3d.org/specifications/java/X3DJSAIL.html#EXI</p><p class=MsoNormal>> </p><p class=MsoNormal>> b. Exificient has been available for some time as an implementation of Efficient XML Interchange (EXI) compression standard by World World Web Consortium (W3C).  Thanks t oefforts by Terry Norbraten NPS, OpenEXI is now integrated as a second implementation for EXI compression.  Further work will continue on exposing options and testing across-tool compatibility as part of regular unit tests.</p><p class=MsoNormal>> </p><p class=MsoNormal>> c. As ever, example program HelloWorldProgram.java tests numerous features and a log of outputs is provided.</p><p class=MsoNormal>> </p><p class=MsoNormal>>             http://www.web3d.org/specifications/java/X3DJSAIL.html#Examples</p><p class=MsoNormal>>             http://www.web3d.org/specifications/java/examples/HelloWorldProgram.java</p><p class=MsoNormal>>             http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutputLog.txt</p><p class=MsoNormal>> </p><p class=MsoNormal>> -----</p><p class=MsoNormal>> </p><p class=MsoNormal>> 2. Updates have been applied and tested on X3D Examples Archives using these many scenes as a gigantic unit-testing suite.</p><p class=MsoNormal>> </p><p class=MsoNormal>>             X3D Examples Archives</p><p class=MsoNormal>>             http://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</p><p class=MsoNormal>> </p><p class=MsoNormal>> Build logs:</p><p class=MsoNormal>> </p><p class=MsoNormal>>             https://www.web3d.org/x3d/content/examples/build.java.all.log.txt</p><p class=MsoNormal>>             https://www.web3d.org/x3d/content/examples/build.python.all.log.txt</p><p class=MsoNormal>> </p><p class=MsoNormal>> Primary example scene with multiple conversions including Java and Python source:</p><p class=MsoNormal>> </p><p class=MsoNormal>>             http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorldIndex.html</p><p class=MsoNormal>>             http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.java</p><p class=MsoNormal>>             http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.py</p><p class=MsoNormal>> </p><p class=MsoNormal>> -----</p><p class=MsoNormal>> </p><p class=MsoNormal>> 3. Development efforts continue on the X3D Python encoding using X3DJSAIL as an implementation engine.  Primary tasks:</p><p class=MsoNormal>> </p><p class=MsoNormal>> a. Document current X3D Python implementation using Pyjnius and X3DJSAIL as X3DPSAIL, X3D Python Scene Access Interface Library (X3DPSAIL).</p><p class=MsoNormal>> </p><p class=MsoNormal>> b. Fix Pyjnius error which returns abstract interfaces or superclasses instead of original concrete classes.  This is basis of most existing errors in the Python example builds.</p><p class=MsoNormal>> </p><p class=MsoNormal>> c. Move set of "import" statements from .py source to Pyjnius configuration of X3DJSAIL.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Development efforts continue to be reflected on x3d-public mailing list.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Having fun with X3D Java and Python!  8)</p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>