<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: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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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;}
h3
        {mso-style-priority:9;
        mso-style-link:"Heading 3 Char";
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:13.5pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.Heading3Char
        {mso-style-name:"Heading 3 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 3";
        font-family:"Calibri Light",sans-serif;
        color:#1F3763;}
span.EmailStyle22
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@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:222061288;
        mso-list-template-ids:1447445514;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:239486405;
        mso-list-template-ids:-1546596506;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:796072436;
        mso-list-template-ids:-793894514;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:1112742613;
        mso-list-template-ids:626668734;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4
        {mso-list-id:1161627786;
        mso-list-template-ids:2049495408;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5
        {mso-list-id:1950701954;
        mso-list-template-ids:562072640;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">All,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I keep a python dictionary that I pass a node type to in the form of a string, and it returns an x3d.py node object.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I keep a custom version of x3d.py to which I’ve added CGE, X_ITE, and X3DOM (sort of) node classes, so I can also export experimental nodes such as a CGE Skin, X_ITE material extensions, or X3DOM CommonSurfaceShader.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The dictionary includes all of the X3D 4.0 node types, as well as a variety of pending 4.1 nodes and browser specific nodes as described above.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It basically looks like this:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#569CD6">def</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">
</span><span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">instantiateNodeFromString</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">(</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">x3dType</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">):<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">   
</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">x3dNodeMapping</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">
</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">=</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"> {<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">####################################### A</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'AcousticProperties'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">AcousticProperties</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'Analyser'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">Analyser</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'Anchor'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">Anchor</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'AnisotropyMaterialExtension'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">AnisotropyMaterialExtension</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,
</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955"># X_ITE - glTF extension</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p></o:p></span></p>
<p class="MsoNormal">***snip***<o:p></o:p></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'VolumeData'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">VolumeData</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'VolumeEmitter'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">VolumeEmitter</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'VolumePickSensor'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">VolumePickSensor</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#6A9955">####################################### W</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'WaveShaper'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">WaveShaper</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'WindPhysicsModel'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">WindPhysicsModel</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">,<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">       
</span><span style="font-size:10.5pt;font-family:Consolas;color:#CE9178">'WorldInfo'</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">:</span><span style="font-size:10.5pt;font-family:Consolas;color:#4EC9B0">WorldInfo</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">    }<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">   
</span><span style="font-size:10.5pt;font-family:Consolas;color:#C586C0">return</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">
</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">x3dNodeMapping</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">[</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">x3dType</span><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC">]()<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:14.25pt;background:#1F1F1F"><span style="font-size:10.5pt;font-family:Consolas;color:#CCCCCC"><o:p> </o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Aaron<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<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, January 27, 2026 1:30 AM<br>
<b>To:</b> Don Brutzman <don.brutzman@gmail.com><br>
<b>Cc:</b> Bergstrom, Aaron <aaron.bergstrom@und.edu>; X3D Ecosystem public discussion <x3d-ecosystem@web3d.org><br>
<b>Subject:</b> Re: Loading into X3DPSAIL (for Maya and Blender)<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">I think that Aaron was writing something that converted class names into X3D Python classes (and to scene graph objects?), but I haven’t heard much about it or if he imports X3D directly into Maya or some X3DPSAIL derivative (and then to
 Maya).  I am will to work on something that generates a XML Python loader (from X3DUOM), just realize I haven’t decided on a single loader class or multiple loader classes.  Opinions? At least I can take a first crack at it.   I probably won’t use AI at all. 
 I’ll study the structure of the Java version, but I do prefer ElementTree over DOM for this use case.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Likely, it will be an adjunct to X3DPSAIL.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I think the best test for reliability is to do roundtrip testing on the archive, which will also test XML output.<o:p></o:p></p>
</div>
<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">On Mon, Jan 26, 2026 at 6:01 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank">don.brutzman@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">Yes "X3DLoaderDOM.java (load DOM into scenegraph)" was difficult to write, requires manual coding and time-consuming to debug.  It works and the generator for it is checked into open source as a key part of X3DJSAIL.<o:p></o:p></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DLoaderDOM.html" target="_blank">https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DLoaderDOM.html</a><o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
(on <a href="http://web3d.org" target="_blank">web3d.org</a> but direct access is blocked, library not is version control since it is large and changeable; copy attached)<o:p></o:p></li></ul>
<div>
<p class="MsoNormal">The PythonX3dSmokeTests.py program builds a lot of snippets of python scene graph.  The same approach might be used to walk any X3D tree and construct a python scene graph.  If such code works, and is reliable, we can promote that code
 and integrate it as part of the x3d.py distribution.<o:p></o:p></p>
</div>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2">
<a href="https://www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py" target="_blank">https://www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py</a><o:p></o:p></li></ul>
</div>
</div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222">all the best, Don</span><span style="color:#222222"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222">-- </span><span style="color:#222222"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222">X3D Graphics, Maritime Robotics, Distributed Simulation</span><span style="color:#222222"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222">Relative Motion Consulting 
<a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></span><span style="color:#222222"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Mon, Jan 26, 2026 at 2:54 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">Thanks for fixing the TODO to add XML!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I have tried to add Python code which loads JSON into an X3DPSAIL scene graph and failed.  I have zero confidence in my ability to load stuff into in memory scene graphs, preferring to load things into DOM first.  This applies to much of
 my work, including JSON validation with X3D XML schema.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I am attempting to load JSON into a CGE scene graph, but there’s no real evidence that it works yet.  I have a mostly working DOM solution.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I realize X3DLoaderDOM.java (load DOM into scenegraph) is a lot of work, and if this was mostly <span style="font-family:"Arial",sans-serif">automated, please tell us how if it’s not a national secret.  If we have that, then Python might
 be a lot easier!</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">My overall plan is to push JSON things into DOM for loading, but Aaron might have a good solution for all encodings!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I am reminded how Xj3D translated XML into a VRML scene graph.  Not ideal, but.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">My priorities are first CGE, then Blender import.  I realize my priorities change a lot.   If we had a way to export into Blender from X3DPSAIL, this would make working on X3DPSAIL import much more attractive.  Easier said than done.<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, Jan 26, 2026 at 3:51 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" target="_blank">don.brutzman@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">Regarding C/C++/C# open source, no such library has yet been shared.  As with our autogenerated Java and Python libraries, these are strong candidates for autogeneration once proper design patterns are written.  Once written, library testing
 using the X3D Example Archives would be essential for success and straightforward to perform.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Regarding X3D loaders in Python for X3DPSAIL, none has been written yet.  Please be aware that .x3d files are written in valid XML.  Refreshed TODO list:<o:p></o:p></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo3">
Python X3D Package x3d.py, X3D Python Scene Access Interface Library (X3DPSAIL)<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo3">
The x3d.py Python X3D Package supports programmers with Python interfaces and objects for standards-based X3D programming, all as open source.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo3">
<a href="https://www.web3d.org/x3d/stylesheets/python/python.html#TODO" target="_blank">https://www.web3d.org/x3d/stylesheets/python/python.html#TODO</a><o:p></o:p></li></ul>
</div>
<blockquote style="margin-left:30.0pt;margin-right:0in">
<div>
<h3><span style="font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html#TODO" target="_blank"><span style="font-family:"Segoe UI Emoji",sans-serif">🔖</span></a> TODO<o:p></o:p></span></h3>
</div>
<div>
<h3><span style="font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none"><o:p></o:p></span></a></span></h3>
</div>
<div>
<p><span style="font-size:13.5pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">Lots! Much progress continues. For a release-summary
 log, please see <u><span style="color:blue">history log for this page</span></u>.<o:p></o:p></span></a></span></p>
</div>
</blockquote>
<div>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4">
<i><span style="font-size:13.5pt;font-family:"Times New Roman",serif"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">TODO:</span><span style="color:black;font-style:normal;text-decoration:none"> clean
 up <u><span style="color:blue">x3d.html</span></u> documentation autogenerated by <u><span style="color:blue">pydoc</span></u>.<o:p></o:p></span></a></span></i></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4">
<i><span style="font-size:13.5pt;font-family:"Times New Roman",serif"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">TODO:</span><span style="color:black;font-style:normal;text-decoration:none"> We
 need a "Getting Started" tutorial on this page. This is a good opportunity... who wants to help?!<o:p></o:p></span></a></span></i></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4">
<i><span style="font-size:13.5pt;font-family:"Times New Roman",serif"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">TODO:</span><span style="color:black;font-style:normal;text-decoration:none"> <span style="background:#FFF2CC">utility
 support for loaders from XML (.x3d or .xml), ClassicVRML (.x3dv), VRML97 (.wrl), and JSON (.json or .x3dj) files.</span><o:p></o:p></span></a></span></i></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level2 lfo4">
<i><span style="font-size:13.5pt;font-family:"Times New Roman",serif"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">TODO:</span><span style="color:black;font-style:normal;text-decoration:none"> distribution
 support for <u><span style="color:blue">Jupyter Notebook</span></u> (initial example works), <u><span style="color:blue">Apache Zeppelin</span></u> notebook, <u><span style="color:blue">Anaconda</span></u> distribution of Python, and other data-science platforms.<o:p></o:p></span></a></span></i></li></ul>
</ul>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">To facilitate library review,
 I was recently able to autogenerate Python documentation for x3d.py using the pydoc tool.</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo5">
<span style="font-size:12.0pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none"><u><span style="color:blue">https://www.web3d.org/x3d/stylesheets/python/x3d.html</span></u></span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none"><o:p></o:p></span></a></span></li></ul>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Please note that each X3D node has the following methods listed.<o:p></o:p></span></a></p>
</div>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></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">
<p class="MsoNormal"><span style="font-size:13.5pt;font-family:"Times New Roman",serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">Methods defined here:<br>
</span><strong><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none">HTML5</span></strong><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none">(self, indentLevel=0)<br>
Provide HTML5 output serialization using modified XML encoding with no singleton self-closing elements.<br>
<strong><span style="font-family:"Calibri",sans-serif">JSON</span></strong>(self, indentLevel=0, syntax='JSON')<br>
Provide <u><span style="color:blue">X3D</span></u> output serialization using JSON encoding (usable for .json file suffix).<br>
<strong><span style="font-family:"Calibri",sans-serif">VRML</span></strong>(self, indentLevel=0, VRML97=False)<br>
Provide <u><span style="color:blue">X3D</span></u> output serialization using VRML encoding (usable for .x3dv or .wrl file suffix).<br>
<span style="mso-bookmark:m_7678997691515119019_m_-108059092678371"><strong><span style="font-family:"Calibri",sans-serif">XML</span></strong></span>(self, indentLevel=0, syntax='XML')<br>
Provide Canonical <u><span style="color:blue">X3D</span></u> output serialization using XML encoding (usable for .x3d file suffix).<o:p></o:p></span></a><a name="m_7678997691515119019_m_-108059092678371"></a></span></p>
</blockquote>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Am thinking the HTML5 method is no longer needed, this was written when X3DOM had trouble with self-closing
 elements.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Thanks for all efforts that might improve x3d.py.<o:p></o:p></span></a></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">all the best, Don</span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">-- </span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">X3D Graphics, Maritime Robotics, Distributed Simulation</span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">Relative Motion Consulting 
<u><span style="color:blue">https://RelativeMotion.info</span></u></span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">On Sun, Jan 25, 2026 at 4:18 AM John Carlson <<u><span style="color:blue">yottzumm@gmail.com</span></u>>
 wrote:<o:p></o:p></span></a></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>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">I guess I didn't send this earlier.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">I did see the standards progress page.  For C/C++/C#, are any libraries open source?  I’m thinking COIN
 3D, OpenInventor,  H3D.   Maybe others.  I see there’s an ISO documentation for each language, but apparently the standard isn’t open source????  I’m looking for opportunities for X3DJSONLD serialization. OpenInventor (COIN 3D) looks super complex.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">For X3DPSAIL, can you point me at an example of loading XML or DOM into a scenegraph? Maybe I missed
 something????  I’m looking for something like CreateX3DFromString()???   I realized I can create Python from XML, just like my tools can go from JSON to DOM to Python; but my toolchain isn’t Python.   Running stylesheets in Python would be a great example.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Looking here:<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://www.web3d.org/x3d/stylesheets/python/examples/PythonX3dSmokeTests.py</span></u><o:p></o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">On Sun, Jan 25, 2026 at 12:19 AM Don Brutzman <<u><span style="color:blue">don.brutzman@gmail.com</span></u>>
 wrote:<o:p></o:p></span></a></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"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Standards planning status appears on the following page.<o:p></o:p></span></a></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo6">
<a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">X3D Standards Progress | Web3D Consortium</span></u><o:p></o:p></span></a></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo6">
<a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://www.web3d.org/x3d/progress</span></u><o:p></o:p></span></a></li></ul>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Scroll past overview prose to find links to each version completed, in progress and planned.<o:p></o:p></span></a></p>
</div>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none"><o:p> </o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">all the best, Don</span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">-- </span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">X3D Graphics, Maritime Robotics, Distributed Simulation</span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New";color:#222222"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:#222222;text-decoration:none">Relative Motion Consulting 
<u><span style="color:blue">https://RelativeMotion.info</span></u></span><span style="font-family:"Calibri",sans-serif;color:#222222;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">On Fri, Jan 23, 2026 at 7:44 PM John Carlson via X3D-Ecosystem <<u><span style="color:blue">x3d-ecosystem@web3d.org</span></u>>
 wrote:<o:p></o:p></span></a></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"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">A quick search reveals this page:<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://wiki.web3d.org/wiki/index.php/X3D_Python_Language_Binding</span></u><o:p></o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">This link on the page is dead?<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC%2019777</span></u><o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><br>
</span><span style="font-family:"Arial",sans-serif;color:black;text-decoration:none">Btw: both 19776-4 and 19776-5 are titled JSON encoding?????</span><span style="color:windowtext;text-decoration:none"><o:p></o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">==================================<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">I could start writing a Python binding standard?  Except we have three versions, one based on GraalPy/X3DJSAIL
 and one based on “normal” python-X3DPSAIL, and if course H3D, which AFAIK, has C++ underneath?  I believe CGE may also have plans for Python.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">GraalPy examples are here:<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/graalpy/net/coderextreme</span></u><o:p></o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Python examples are on the X3D archives, some duplicated here:<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><u><span style="color:blue">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/python/net/x3djsonld/data</span></u><o:p></o:p></span></a></p>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">It seems like the pure python implementation (pythonic) has more sway and implementations, so I am willing
 to capitulate, even though, in my experience, X3DJSAIL generates better JSON!  It was never really my idea to go with a pure python version though, but I don’t know how to install GraalPy in Blender!  I will pay anyone $100 if they can make blender run GraalPy for
 import/export addons on Windows!  I’m guessing X3DPSAIL can run stylesheets as well?  Perhaps it’s time to convert stylesheets to pure Java, with a stylesheet of course!<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">As far as support, GraalPy is supported by Oracle,
 and Python is supported by Microsoft (Does Guido still work there?).</span><span style="font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">It would be very nice to have a renderer for X3DJSAIL
 and X3DPSAIL (see previous post)!<o:p></o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none"><o:p> </o:p></span></a></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;color:black"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:black;text-decoration:none">Has anyone used Xj3D from GraalPy?<o:p></o:p></span></a></span></p>
</div>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">==================================<o:p></o:p></span></a></p>
</div>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">On Fri, Jan 23, 2026 at 8:52 PM John Carlson <<u><span style="color:blue">yottzumm@gmail.com</span></u>>
 wrote:<o:p></o:p></span></a></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"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Apologies, I just noticed I meant X3D python binding.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
<div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">On Fri, Jan 23, 2026 at 8:50 PM John Carlson <<u><span style="color:blue">yottzumm@gmail.com</span></u>>
 wrote:<o:p></o:p></span></a></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"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">What’s the status of the Python encoding standard?   Would my participation help?<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">Instead of spending time on Blender currently, my thought is to go back to developing an “X3D” JSON to
 CGE scenegraph converter, as that can be developed beyond DOM loading.   Does anyone know a good Pascal LLM?   I do find begin/end rather tedious.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">If there’s a lot of demand for a Blender HAnim export currently, I will reconsider.   Or X3D to glTF
 conversion.<o:p></o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none"><o:p> </o:p></span></a></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">John </span><span style="font-family:"Calibri",sans-serif;color:windowtext;text-decoration:none"><o:p></o:p></span></a></span></p>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
<p class="MsoNormal"><a href="https://www.web3d.org/x3d/stylesheets/python/python.html" target="_blank"><span style="color:windowtext;text-decoration:none">--
<br>
X3D-Ecosystem mailing list<br>
<u><span style="color:blue">X3D-Ecosystem@web3d.org</span></u><br>
<u><span style="color:blue">http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org</span></u><o:p></o:p></span></a></p>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>