<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)">
<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;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* 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.EmailStyle20
        {mso-style-type:personal-compose;
        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:1468938380;
        mso-list-type:hybrid;
        mso-list-template-ids:2068764026 -609962398 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:4;
        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 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:;
        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:;
        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:;
        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:;
        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:;
        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">Keyword arguments are part of the Python language.  Also a lot of engineering has gone into their working properly during x3d.py autogeneration.<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:l0 level1 lfo1">https://docs.python.org/3/glossary.html#term-argument<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Other than ensuring you are using latest Python, you might write to the folks building the other library.  Good luck out there!<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> Tuesday, June 20, 2023 12:14 AM<br>
<b>To:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>; Vincent Marchetti <vmarchetti@kshell.com>; X3D Graphics public mailing list <x3d-public@web3d.org>; Peitso, Loren (CIV) <lepeitso@nps.edu><br>
<b>Subject:</b> Re: Mojo Playground available through a JupyterHub<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:solid #004679 1.0pt;padding:2.0pt 2.0pt 2.0pt 2.0pt">
<p class="MsoNormal" style="line-height:12.0pt;background:#004679"><span style="font-size:10.0pt;color:yellow">NPS WARNING: *external sender* verify before acting.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">I ran into a show stopper with Mojo.  I was progressing using a special form of import, found here:
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://docs.modular.com/mojo/programming-manual.html#python-integration">Modular Docs - Mojo<span style="font-family:"Segoe UI Emoji",sans-serif">🔥</span> programming manual</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But ran into:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">error: Expression [10]:8:34: keyword arguments are not supported yet<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    let newModel=x3d.X3D(profile='Immersive',version='3.3',<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                 ^<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If anyone is interested, I can provide a notebook to work from.  I might revamp PythonSerializers to do something else with keyword arguments, since there seems to be a showstopper?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Error below:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">error: Expression [10]:8:34: keyword arguments are not supported yet<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    let newModel=x3d.X3D(profile='Immersive',version='3.3',<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                                 ^<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jun 20, 2023 at 1:16 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">I added a couple of more let's for variables at function scope.<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jun 20, 2023 at 12:13 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">I was able to avoid syntax errors (no global variables in Mojo).  Here's my current code (note that this won't run in python due to "let"
<o:p></o:p></p>
<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>
<div>
<p class="MsoNormal">####################################################################################################<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># Now available: developmental python x3d.py package on PyPi for import.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#   This approach simplifies Python X3D deployment and use.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#   <a href="https://pypi.org/project/x3d" target="_blank">https://pypi.org/project/x3d</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># Installation:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#       pip install x3d<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># or<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#       python -m pip install x3d<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># Developer options for loading x3d package:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#    from x3d import *  # preferred approach, terser source that avoids x3d.* class prefixes<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"># or<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#    import x3d         # traditional way to subclass x3d package, all classes require x3d.* prefix,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#                       # but python source is very verbose, for example x3d.Material x3d.Shape etc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#                       # X3dToPython.xslt stylesheet insertPackagePrefix=true supports this option.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">####################################################################################################<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#print("'''")   # comment out output created by importing x3d (see below)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">from x3d import *<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">from x3d import X3D<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">from IPython import HTML<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">#print("'''")   # comment out output created by importing x3d (see below)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">#  comment preceding root node<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">def createScene():<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    let newModel=X3D(profile='Immersive',version='3.3',<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">      head=head(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        children=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.x3d',name='title'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='Simple X3D scene example: Hello World!',name='description'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='30 October 2000',name='created'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='31 October 2019',name='modified'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='Don Brutzman',name='creator'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.tall.png',name='Image'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://en.wikipedia.org/wiki/Hello_world" target="_blank">http://en.wikipedia.org/wiki/Hello_world</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="https://en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program" target="_blank">https://en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="https://en.wikipedia.org/wiki/" target="_blank">https://en.wikipedia.org/wiki/</a>"Hello,_World!"_program',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world" target="_blank">http://en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://www.helloworldexample.net/" target="_blank">http://www.HelloWorldExample.net</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://www.web3d.org/" target="_blank">http://www.web3D.org</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://www.web3d.org/realtime-3d/news/internationalization-x3d" target="_blank">http://www.web3d.org/realtime-3d/news/internationalization-x3d</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://www.web3d.org/x3d/content/examples/HelloWorld.x3d" target="_blank">http://www.web3d.org/x3d/content/examples/HelloWorld.x3d</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://x3dgraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes" target="_blank">http://X3dGraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes</a>',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.x3d" target="_blank">http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.x3d</a>',name='identifier'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='<a href="http://www.web3d.org/x3d/content/examples/license.html" target="_blank">http://www.web3d.org/x3d/content/examples/license.html</a>',name='license'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='X3D-Edit 3.3, <a href="https://savage.nps.edu/X3D-Edit" target="_blank">
https://savage.nps.edu/X3D-Edit</a>',name='generator'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        #  Alternate encodings: VRML97, X3D ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.wrl',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.x3dv',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.x3db',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.xhtml',name='reference'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        meta(content='HelloWorld.json',name='reference')]),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">      Scene=Scene(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        #  Example scene to illustrate X3D nodes and fields (XML elements and attributes) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        children=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        WorldInfo(title='Hello World!'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        WorldInfo(title="Hello ' apostrophe 1"),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        WorldInfo(title="Hello ' apostrophe 2"),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        WorldInfo(title='Hello " quotation mark 3'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        WorldInfo(title='Hello " quotation mark 4'),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        MetadataSet(name="items'",<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          value=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          MetadataInteger(name='one',value=[1]),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          MetadataInteger(name='two',value=[2])]),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">        Group(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          children=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          Viewpoint(DEF='ViewUpClose',centerOfRotation=(0,-1,0),description='Hello world!',position=(0,-1,7)),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          #  insert commas to test removal when converted to ttl <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          Transform(DEF='TestWhitespaceCommas',rotation=(0,1,0,3),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">            children=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">            Shape(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">              geometry=Sphere(),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">              appearance=Appearance(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                material=Material(DEF='MaterialLightBlue',diffuseColor=(0.1,0.5,1)),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                texture=ImageTexture(DEF='ImageCloudlessEarth',url=["earth-topo.png", "earth-topo.jpg", "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png</a>","<a href="http://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg" target="_blank">http://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg</a>","<a href="http://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif" target="_blank">http://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif</a>"])))]),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">          Transform(translation=(0,-2,0),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">            children=[<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">            Shape(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">              geometry=Text(DEF='TextMessage',string=["Hello","world!"],<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                fontStyle=FontStyle(justify=["MIDDLE","MIDDLE"])),<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">              appearance=Appearance(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">                material=Material(USE='MaterialLightBlue')))])])])<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    ) # X3D model complete<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    ####################################################################################################<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    # Self-test diagnostics<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    ####################################################################################################<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    let htmlcode = """<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <script type='text/javascript' charset="UTF-8" src='<a href="https://x3dom.org/release/x3dom-full.debug.js" target="_blank">https://x3dom.org/release/x3dom-full.debug.js</a>'> </script> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <link rel='stylesheet' type='text/css' href='<a href="https://x3dom.org/release/x3dom.css" target="_blank">https://x3dom.org/release/x3dom.css</a>'></link> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <style><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">     x3d {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">         width:720px;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">         height:720px;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">         border:2px solid black;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    </style><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    """<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    let x3dnode = htmlcode+"""<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <x3d>%s</x3d><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    <script><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    window.x3dom.reload()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    </script><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">    """ % newModel.Scene.HTML5()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">    HTML(x3dnode)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">createScene()<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Mon, Jun 19, 2023 at 10:45 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Yes, I tried using Vince’s technique (nearly, couldn’t find %%html) with (Mojo) Jupyter and X3DOM.  I was hoping that Vince could show that his technique still works in Jupyter and (my?)binder.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I’m not seeing anyway to render with Jupyter or Mojo Playground.  Brython may still work.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I will try again tonight.<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 Mon, Jun 19, 2023 at 11:34 AM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I recommend you use the methods to export/launch to X3DOM.  If you have a CORS server running locally, you can export/launch to X_ITE as well.<o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;font-family:"Courier New""> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;font-family:"Courier New"">all the best, Don</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;font-family:"Courier New"">--
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br       
<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a></span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:9.0pt;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></span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div style="border:none;border-top:solid windowtext 1.0pt;padding:3.0pt 0in 0in 0in;border-color:currentcolor currentcolor">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>From:</b> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>
<br>
<b>Sent:</b> Monday, June 19, 2023 6:10 AM<br>
<b>To:</b> Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>>; Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>>; Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>;
 Peitso, Loren (CIV) <<a href="mailto:lepeitso@nps.edu" target="_blank">lepeitso@nps.edu</a>>; Vincent Marchetti <<a href="mailto:vmarchetti@kshell.com" target="_blank">vmarchetti@kshell.com</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>
<b>Subject:</b> Re: Mojo Playground available through a JupyterHub<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:solid #004679 1.0pt;padding:2.0pt 2.0pt 2.0pt 2.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:12.0pt;background:#004679;background-position-x:0%;background-position-y:50%">
<span style="font-size:10.0pt;color:yellow">NPS WARNING: *external sender* verify before acting.</span><o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Well, this appears harder than I thought.<o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I haven’t gotten x3d python rendering working anywhere recently!  Python_OCC?  H3Dviewer?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Is there another x3d rendering library (actually a python game engine recommendation would probably be ok) for python (not JavaScript based)??<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Mon, Jun 19, 2023 at 5:55 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">This looks like a promising python library built on top of a native rust GPU driver:  <a href="https://github.com/pygfx/wgpu-py/blob/main/LICENSE" target="_blank">https://github.com/pygfx/wgpu-py/blob/main/LICENSE</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">First hit in bing when you search for python webgpu!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">We're going to start converting JSON to wgpu-py!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Have fun!<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">John<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Sun, Jun 18, 2023 at 11:14 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid windowtext 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a href="https://www.modular.com/mojo" target="_blank">https://www.modular.com/mojo</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Maybe we can get some people building native X3D graphics in Mojo?  By same guys as LLVM.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I’d love to disrupt the C/C++ community with a Python superset that targets CPUs, GPUs, TPUs, etc. at native speeds.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I know one person who does 3D python!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">This is not your mama’s C# or Java.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">John<o:p></o:p></p>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>