<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
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;}
span.pl-k
        {mso-style-name:pl-k;}
span.pl-en
        {mso-style-name:pl-en;}
span.pl-smi
        {mso-style-name:pl-smi;}
span.pl-c1
        {mso-style-name:pl-c1;}
span.pl-s
        {mso-style-name:pl-s;}
span.pl-pds
        {mso-style-name:pl-pds;}
.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:1581673668;
        mso-list-template-ids:-1;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Interesting.  Do you need a JSON -> DOM library, or are you going with glTF or some other tool based JSON?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3DJSONLD may work for your JSON -> DOM purposes.  It is intended to be fairly JSON encoding agnostic, and I’d like to try it with one of your scenes.  Do you have a scene in JSON?  That is, I don’t have a DOM -> JSON yet, but that’s on my near todo list, and I have a pre-alpha prototype, if X3D/X3DOM Scripts and Routes are no longer a priority.  It sounds like DOM -> JSON is higher priority…</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If you do have JSON, and you are using <a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/X3DJSONLD.js">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/X3DJSONLD.js</a> ,  you will need to modify the below method to provide your own loadSchema for JSON validation, or just remove it an rely on the basic DOM validation in the browser.</p><p class=MsoNormal> </p><p class=MsoNormal>I do have a version which is more packaged, found in cobweb/X3DJSONLD, here:  <a href="https://github.com/coderextreme/cobweb/blob/master/cobweb.js/cobweb/Parser/JSONParser.js">https://github.com/coderextreme/cobweb/blob/master/cobweb.js/cobweb/Parser/JSONParser.js</a> in that case, you just call var dom = JSONParser.parseJavaScript(jsObj), but it creates and X3D DOM element, which may not be desired.  The code is cleaner, and you may provide an alternative to parseJavaScript…</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>There are also DOM -> XML serializers in X3DJSONLD (not the above JavaScript, but in src/main/node) to validate your JSON is producing the right DOM.  The serialization is fairly standard, but you may find that you need to do some substitutions, which I provide.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I will start work on DOM -> JSON again.  We do need a second implementation, and I need it for client side purposes.  Off to work!</p><p class=MsoNormal><o:p> </o:p></p><div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 style='background:white;border-collapse:collapse'><tr><td valign=top style='padding:0in 7.5pt 0in 7.5pt'><p class=MsoNormal style='line-height:15.0pt'><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>function</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>loadX3DJS</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>jsobj</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>path</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>xml</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>NS</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>loadSchema</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>doValidate</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>callback</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>) {<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L533></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC533><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>       </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>console</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>.</span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>error</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>"</span></span><span class=pl-s><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>Invoking client side loader</span></span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>"</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L534></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC534><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>       </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>loadSchema</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(jsobj, path, doValidate, </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>function</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>() {<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L535></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC535><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              x3djsonNS </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>=</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>NS</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>;<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L536></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC536><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>var</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> child </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>=</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>CreateElement</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span class=pl-s><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>X3D</span></span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, </span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>NS</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L537></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC537><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>ConvertToX3DOM</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(jsobj, </span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>""</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, child, path);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L538></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC538><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>if</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> (</span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>typeof</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> xml </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>!==</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span class=pl-s><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>undefined</span></span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>&&</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>typeof</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>xml</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>.</span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>push</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>===</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'> </span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span class=pl-s><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>function</span></span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>'</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>) {<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L539></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC539><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>                     </span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>xml</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>.</span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>push</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>serializeDOM</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(jsobj, child));<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L540></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC540><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              }<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L541></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC541><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>console</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>.</span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>error</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>"</span></span><span class=pl-s><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>Returning with</span></span><span class=pl-pds><span style='font-size:9.0pt;font-family:Consolas;color:#183691'>"</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>, child);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L542></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC542><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>callback</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(child);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L543></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC543><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>       }, </span><span class=pl-k><span style='font-size:9.0pt;font-family:Consolas;color:#A71D5D'>function</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-smi><span style='font-size:9.0pt;font-family:Consolas;color:#333333'>e</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>) {<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L544></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC544><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>console</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>.</span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>error</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(e);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L545></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC545><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>              </span><span class=pl-en><span style='font-size:9.0pt;font-family:Consolas;color:#795DA3'>callback</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>(</span><span class=pl-c1><span style='font-size:9.0pt;font-family:Consolas;color:#0086B3'>null</span></span><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>);<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L546></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC546><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>       });<o:p></o:p></span></p></td></tr><tr style='box-sizing: border-box'><td width=50 nowrap valign=top style='width:37.5pt;padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;min-width: 50px;color:rgba(27, 31, 35, 0.3);cursor:pointer;user-select: none' id=L547></td><td valign=top style='padding:0in 7.5pt 0in 7.5pt;box-sizing: border-box;word-wrap: normal;overflow:visible' id=LC547><p class=MsoNormal style='line-height:15.0pt'><span style='font-size:9.0pt;font-family:Consolas;color:#24292E'>}<o:p></o:p></span></p></td></tr></table></div><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">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">Leonard Daly</a><br><b>Sent: </b>Monday, May 29, 2017 7:11 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Public</a><br><b>Subject: </b>[x3d-public] Announcing XSeen</p></div><p class=MsoNormal><o:p> </o:p></p><p>As most of you know I have been advocating that X3D fully move into the HTML5 environment and support the display and interaction of flat-screen and VR declarative content in the browser. A-Frame offers many of those capabilities and was built for the browser environment. </p><p>In keeping with my advocacy of this evolution of X3D, I started development of a library that supports comparison and definition of the best features of A-Frame, X3D, and other capabilities. This is a very early pre-alpha development release to help generate interest in a discussion of the appropriate technologies to include in the 3D/VR HTML language. The initial release is announced at <a href="http://realism.com/blog/xseen-merging-x3d-and-frame">http://realism.com/blog/xseen-merging-x3d-and-frame</a></p><p>At this stage only a few static features are available including all 3D pre-defined solids from  both languages plus X3D's Appearance, Material, Shape, Transform, and Inline. It is possible to mix nodes from X3D and A-Frame. The initial version of the library is on GitHub at <a href="https://github.com/DrX3D/XSeen">https://github.com/DrX3D/XSeen</a>. It runs on top of THREE.js</p><p>My next step is to write the beginnings of the internals documentation describing how to add nodes and other features. At this time there are no capabilities for animation except for what is done directly through THREE.</p><p>The goal of this work is to develop a language that is</p><ol start=1 type=1><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Standardizable<o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Enterprise ready<o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Fully HTML5/DOM integrated<o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Runs in all browsers<o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Fully support VR, AR, xR, and flat-screen displays as determined by the content developer and user<o:p></o:p></li><li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level1 lfo1'>Leverages other standards and communities applications and libraries<o:p></o:p></li></ol><p><o:p> </o:p></p><p class=MsoNormal>-- <br><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 Chair<br>President, Daly Realism - <i>Creating the Future</i> </span><o:p></o:p></p><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div></body></html>