<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">John,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">I was wondering how you converted X3D
      to DOM (X3D can be expressed in JSON as you and Don have been
      working on for a few years). <br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">There are two issues. I can't follow
      your discussion below so this may be answered (in a manner that I
      do not understand). Can you provide simple answers for each of
      these points?</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">
      <ol>
        <li>DOM is not a file format, but an API. X3D (in JSON or XML)
          is a file format. How do you handle conversion of a file
          format to an API? Is the result something that populates the
          DOM tree? Is it something else? Note that XML -> DOM is a
          well-defined conversion (and built-in to web browsers) that
          populates the DOM tree with the data from the XML document.
          DOM contains data, structure, and methods that are not present
          in the XML document; but are part of the standard DOM and
          DOM-tree definition.<br>
          <br>
        </li>
        <li>DOM very explicitly does not allow multi-parents. I think I
          understand your statements that when converting from a
          multi-parent structure to one that only allows single parent,
          you create a copy of the original. This resolves the
          multi-parent issue into one that may break run-time. As I
          understand your description: if A & B are parents of
          node-subtrees and X is DEFed in the A tree and USEd in the B
          tree; then the A and B trees have distinct copies of X (called
          X and X'). Do you add mechanisms so that runtime changes to X
          also change X'?</li>
      </ol>
      <p><br>
      </p>
      <p>Unreal (and perhaps Unity) get around this issue (node reuse in
        a single-parent environment) by making X a class and having each
        USE of X to be a new instance of that class. Changes to the X
        class are propagated to all instances. Each instance may define
        instance-specific methods/data that override those from the
        inherited class. It is also possible to sub-class X' and add in
        instance-specific methods/data.</p>
      <p><br>
      </p>
      <p>Leonard Daly</p>
      <p><br>
      </p>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <blockquote type="cite"
      cite="mid:5ccb044a.1c69fb81.46592.bc74@mx.google.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:632636882;
        mso-list-template-ids:-1;}
@list l0:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
      <div class="WordSection1">
        <p class="MsoNormal">Jeff, stop work, I think the X3D Program
          -> DOM problem is solved with Jupyter notebook. We just
          need to write or find a kernel for Jupyter notebook. Kernels
          are found here: <a
            href="https://github.com/jupyter/jupyter/wiki/Jupyter-kernels"
            moz-do-not-send="true">https://github.com/jupyter/jupyter/wiki/Jupyter-kernels</a>
          Jupyter is very cool.  Alexander, can you install a JavaScript
          and Java kernels in our Jupyter, along with the Python? 
          Sheesh, I am behind the times.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Leonard if that doesn’t satisfy you, I
          think you were focused on following:</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">To handle multi-parenting in languages that
          don’t support multi-parenting, I will use DEF/USE as an
          attribute/property/field/slot, or duplicate that portion of
          the tree.  I believe I am conforming to how X3D XML is
          handled. For languages that have multi-parents, I should be
          handling that, and generating multi-parents and multiple
          variables (sigh).</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">For example, in  JSON -> STL, that would
          be an issue.</p>
        <p class="MsoNormal"><br>
          I believe for JSON -> STL,  I search backwards through
          previously processed nodes, looking for DEFs, and keep a
          transform stack, so I generate unique data for each DEF/USE in
          a different transform.  I forget the details.  You’re welcome
          to look at the code:</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><a class="moz-txt-link-freetext" href="https://github.com/coderextreme/">https://github.com/coderextreme/</a><span
            style="color:black">X3DJSONLD/src/main/node/convertJsonToStl.js<o:p></o:p></span></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">It would likely be possible to do
          multi-parenting based on using something like what JSON ->
          STL does, looking up DEFs.  That would mess up my and Don’s
          pretty indented trees though!  I have solved a similar before
          by separating out ProtoInstance(just one tag) into separate
          variables (in my Java serializer, I think).</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">If you have some suggestions for changing
          my serializers to use more than one variable (some already do
          use more than one variable, and they can be changed, I would
          welcome that.  That is, I would do, .addChild(variable)
          instead of .addChild(constructor().setUSE(…), In many cases,
          it would just be  matter of finding or keeping track of the
          DEFs, then inserting the variable associate with that DEF into
          the children list. TODO.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Thanks for the attention. I have not been
          trying to solve the scenegraph issue in DOM. It’s very
          possible to solve it with JavaScript, Java and Python (not
          DOM, XML, EXI, PLY, STL or JSON) by using a DEF value to
          variable map.  Did I answer your question?  I think your
          question had more to do with translating to DOM. I believe I
          would have variable names or DEFs from the source syntax to
          use for DEFs.  Note that I don’t translate from JavaScript,
          Java or Python yet to DOM (and probably won’t), I use the
          X3DJSAIL API for those languages, which translates to XML
          first.  </p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><b>Don, might the same issue Leonard brings
            up be in the stylesheet conversion to Java?  Do you solve it
            there?<o:p></o:p></b></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Leonard, I believe you were addressing
          this:</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">“I believe I will start work (we probably
          already have) on Java->DOM, Python->DOM,
          C/C#/C++->DOM and JavaScript->DOM transpilers. For
          people who don’t want a full weight of X3DJSAIL or X3DPSAIL. 
          This will be a valuable addition to X3DJSAIL, should it choose
          to accept it.  I will call it “PRESAIL”  for now.”</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">This work has been cancelled (above), in
          favor of Jupyter notebook.  Is there a remaining action when a
          Program (not data) is the target of a serializer or
          stylesheet?  Should I (and maybe Don) follow through on the
          above multiparenting with our serializers to Java, JavaScript
          and Python (and probably later in C/C#/C++)?</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Don, can you run X3DJSAIL inside Jupyter? 
          Jupyter is inside Anaconda, and I think you can install
          kernels with pip.</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Thanks,</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">John</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Sent from <a
            href="https://go.microsoft.com/fwlink/?LinkId=550986"
            moz-do-not-send="true">Mail</a> for Windows 10</p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div
          style="mso-element:para-border-div;border:none;border-top:solid
          #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
          <p class="MsoNormal" style="border:none;padding:0in"><b>From:
            </b><a href="mailto:Leonard.Daly@realism.com"
              moz-do-not-send="true">Leonard Daly</a><br>
            <b>Sent: </b>Wednesday, May 1, 2019 8:24 PM<br>
            <b>To: </b><a href="mailto:x3d-public@web3d.org"
              moz-do-not-send="true">x3d-public@web3d.org</a><br>
            <b>Subject: </b>Re: [x3d-public] Report on X3DJSONLD,
            X3DJSAIL conversion work. PLYSTL <-> JSON conversions.
            Future plans. Program -> DOM</p>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><span style="color:black">John,<o:p></o:p></span></p>
        <div>
          <p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="color:black">I presume that
              this is a conversion of X3D content between these various
              formats. In which case, how can anything convert to DOM
              because<o:p></o:p></span></p>
        </div>
        <div>
          <p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
        </div>
        <div>
          <ol start="1" type="1">
            <li class="MsoNormal"
style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0
              level1 lfo1">DOM is a language-neutral interface (see <a
                href="https://www.w3.org/DOM/#what"
                moz-do-not-send="true"><span style="color:#0563C1">https://www.w3.org/DOM/#what</span></a>)<o:p></o:p></li>
            <li class="MsoNormal"
style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0
              level1 lfo1">DOM does not support elements with multiple
              parents. Each element can have at most one parent (see
              second paragraph at <a
                href="https://dom.spec.whatwg.org/#trees"
                moz-do-not-send="true"><span style="color:#0563C1">https://dom.spec.whatwg.org/#trees</span></a>
              or if you don't want the living spec then use <a
                href="https://www.w3.org/TR/dom/#trees"
                moz-do-not-send="true"><span style="color:#0563C1">https://www.w3.org/TR/dom/#trees</span></a>).<o:p></o:p></li>
          </ol>
          <p>X3D explicitly allows multi-parenting (through the use of
            DEF/USE). How does this application resolve the conflict?</p>
          <p><o:p> </o:p></p>
          <p>Leonard Daly</p>
        </div>
        <div>
          <p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span style="color:black">X3DJSONLD does
              the following conversions:<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              JSON->DOM<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->XML (borrowed)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              XML->DOM (borrowed)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->Java<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->Python<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->JavaScript<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              PLY->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              STL->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              JSON->STL (not done, not always triangles, needs
              someone who wants to do tessellation, or can provide a
              JavaScript library)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              JSON->EXI<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              EXI->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">XD3JSAIL/SourceForge
              X3D does the following conversions that were added by me<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              JSON->DOM (Java version of X3DJSONLD)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->JavaScript <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->Python (X3DPSAIL)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              DOM->Python (Pure Python—doesn’t do anything)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">X3DJSAIL does:<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->XML<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->X3D<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->ClassicVRML<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->VRML97<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->HTML<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->Java<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->ModelMetaMarkdown<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->X3dTidy<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->X3DOM<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->X_ITE<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->Cobweb<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->EXI<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->GZIP<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              X3DJSAIL->ZIP<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Don will likely
              add toFileJavaScript (replacing my work—I think there may
              already be a start on a stylesheet) and toFilePython
              stylesheet conversions to X3DJSAIL.  Is that OK, Don?<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Probably I will
              retain maintenance of all JSON->DOM conversions
              (JavaScript, Java, C++, X3DJSAIL, X3DOM, X_ITE). (Don uses
              a stylesheet or strings to generate XML).  I am open to
              developing JSON->DOM for other languages and improving
              the C++ version if people are interested.  You should be
              willing to provide example JSON files (possibly converted
              with X3D-Edit).   Recommend you use Everit or Ajv for JSON
              Schema validation, if not X3DJSONLD’s validator (based on
              Ajv).<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Ideally I
              think, Don will take over all serializers, except my
              DOM->JSON serializer.  I also use a javascript
              serializer on my web page.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">================================================================================================================<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">What X3DJSONLD
              could provide for X3DJSAIL and X3DPSAIL (JavaScript)<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              PLY->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              STL->JSON<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              JSON->STL<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">These
              conversions are stored under ~/X3DJSONLD/src/main/node:<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">convertJsonToStl.js<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">convertPlyToJson.js<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">convertStlToJson.js<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">The JSON to STL
              conversion looks at the following X3D JSON indexes<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">              
              IndexedFaceSet : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Group : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Shape : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Box : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              IndexedTriangleSet : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              IndexedTriangleStripSet : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              IndexedTriangleFanSet : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> 
                            IndexedLineSet : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Normal : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Coordinate : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              Transform : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@scale" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@rotation" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@translation" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@normalPerVertex" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@size" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">       
                      "@vector" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@point" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@normalIndex" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@coordIndex" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">               
              "@index" : function(obj, LDNode) {<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Note:  There
              are no colors or textures.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Note: 
              Sometimes I create more complex polygons than triangles. 
              This is not in the STL “specification”<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Suggestions for
              additional shapes to translate are welcome:<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Arc2D
              ArcClose2D Circle2D Disk2D Polyline2D Polypoint2D
              Rectangle2D TriangleSet2D<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Cone, Cylinder,
              ElevationGrid,Extrusion,Sphere,Text,GeoElevationGrid
              (why?),QuadSet,IndexedQuadSet<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">LineSet
              PointSet TriangleFanSet TriangleSet TriangleStripSet HAnim<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">I won’t
              translate the 2D geometry, I think.  I will not translate
              Points or Lines<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">I don’t yet
              know how to translate Cone,
              Cylinder,*ElevationGrid,Extrusion,Sphere,Text,HAnim (will
              the standard help?) Help! I can probably handle the other
              ones. Volunteers are welcome!  Pull requests are welcome! 
              Suggestions for JavaScript libraries accepted.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:#548235">The ones I
              can handle, I think are QuadSet, IndexedQuadSet,
              TriangleFanSet, TriangleSet and TriangleStripSet.</span><span
              style="color:black"><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Would it be
              better to take a scenegraph from X3DOM or X_ITE?   Is
              there documentation for the scenegraphs?<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">The STL to JSON
              creates a single IndexedFaceSet for all polygons found in
              the STL file.  No color is handled from the STL file<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">The PLY to JSON
              file creates IndexedFaceSets and IndexedLineSets.  Any
              more suggestions or PLY files you want translated?<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Is there any
              requirement for JSON -> PLY?<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Note: I just
              discovered <a href="https://cadexchanger.com/x3d"
                moz-do-not-send="true"><span style="color:#0563C1">https://cadexchanger.com/x3d</span></a> 
              for X3D to STL conversions.   Add to X3D resources?   I
              haven’t tried it yet. CADExchanger already mentioned here:
              <a
href="http://www.web3d.org/wiki/index.php/STEP_X3D_Translation#Open_Cascade_and_PythonOCC"
                moz-do-not-send="true"><span style="color:#0563C1">http://www.web3d.org/wiki/index.php/STEP_X3D_Translation#Open_Cascade_and_PythonOCC</span></a><o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">Is there any
              need for STL conversion beyond CADExchanger (And others)? 
              I will delete my STL conversions.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">For my
              JSON->DOM converter, should I create a python version.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black">I believe I
              will start work (we probably already have) on
              Java->DOM, Python->DOM, C/C#/C++->DOM and
              JavaScript->DOM transpilers. For people who don’t want
              a full weight of X3DJSAIL or X3DPSAIL.  This will be a
              valuable addition to X3DJSAIL, should it choose to accept
              it.  I will call it “PRESAIL”  for now.<o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"> <o:p></o:p></span></p>
          <p class="MsoNormal"><span style="color:black"><br>
              <br>
              <o:p></o:p></span></p>
          <pre>_______________________________________________</pre>
          <pre>x3d-public mailing list</pre>
          <pre><a href="mailto:x3d-public@web3d.org" moz-do-not-send="true">x3d-public@web3d.org</a></pre>
          <pre><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></pre>
        </blockquote>
        <p><o:p> </o:p></p>
        <p class="MsoNormal"><span style="color:black">-- <br>
          </span><b><span style="font-size:13.5pt;color:#333366">Leonard
              Daly</span></b><span style="color:#333366"><br>
            3D Systems & Cloud Consultant<br>
            LA ACM SIGGRAPH Past Chair<br>
            President, Daly Realism - <i>Creating the Future</i> </span><span
            style="color:black"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
      </div>
    </blockquote>
    <p><br>
    </p>
    <div class="moz-signature">-- <br>
      <font class="tahoma,arial,helvetica san serif" color="#333366">
        <font size="+1"><b>Leonard Daly</b></font><br>
        3D Systems & Cloud Consultant<br>
        LA ACM SIGGRAPH Past Chair<br>
        President, Daly Realism - <i>Creating the Future</i>
      </font></div>
  </body>
</html>