<div dir="ltr">I apologize for having a pet-like relationship with the JSON proto expander. :) I'm thinking what you're saying is the XML proto expander will take a namespace, similar to Inline loadX3D?  So in the result code, loadX3D will create the namespaces at the same time it's expanding the Proto?   ???  I've got to wrap my brain around that a bit.  I guess the JSON version kinda does that.<div><br>The big win if I'm thinking right is the same code in loadX3D can expand all of glTF, JSON and XML!</div><div><br></div><div>Woohoo!<div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, May 27, 2020 at 9:50 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I see one issue with approach, but it is a good first step:<div><br></div><div>In current ProtoExpander, name values, DEF/USE values are rewritten.  So Scripts attributes, ROUTE attributes, etc. need to be rewritten as well.  That's only the second step.  So really, the whole scene needs be examined.  It will become difficult, I think, to extract the non-Inlined, non-ExternProtoDeclare items from the existing DOM.  So we are limited to Inlines, or how X_ITE does it with the URL in X3DCanvas tag. JSON is limited to Inlines, so limiting to Inlines is probably OK.  But we'll need to ask Don about his examples and converters.  Note that X3DJSONLD is not limited to Inlines though, but it loads JSON from files, which is equivalent.</div><div><br></div><div>Suggestions?  It's good to think simple cases, but we need a holistic approach to design if we're going to solve this.</div><div><br></div><div>So we have</div><div><br></div><div>1.  Use Inlines</div><div>2.  Rewrite DEF/USE/name.</div><div><br></div><div>John</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 26, 2020 at 10:00 PM Don Brutzman <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">As discussed Monday: Prototype Expander may have general value, but primary need is adding Prototype support to X3DOM.<br>
<br>
Recommend scrapping all options as distracting alternative future work.<br>
<br>
Simply focus on the X3DOM prize in JavaScript.  Path to get there is a straight line:<br>
<br>
1. Concept: ProtoDeclare is a template definition, ProtoInstance creates a scene subgraph.<br>
<br>
2. Thus the only resulting code of interest looks like X3DOM scene subgraph.<br>
<br>
3. Collect and create corresponding pairs of (a) inputs (ProtoDeclare/ProtoInstance) and (b) outputs (X3DOM scene subgraph).<br>
<br>
4. The ProtoExpander is native X3DOM javascript code reads 3(a) and creates 3(b).<br>
<br>
====================<br>
<br>
That's it.  No really.<br>
<br>
Recommended first model for input/output inventory: ArtDeco00, which is a simple Material node.<br>
<br>
* <a href="https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoPrototypesIndex.html" rel="noreferrer" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoPrototypesIndex.html</a><br>
* <a href="https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoPrototypes.json" rel="noreferrer" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoPrototypes.json</a><br>
* <a href="https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoExamplesIndex.html" rel="noreferrer" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoExamplesIndex.html</a><br>
* <a href="https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoExamples.json" rel="noreferrer" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/ArtDecoExamples.json</a><br>
<br>
JSON input<br>
<br>
{ "ProtoDeclare":<br>
   {<br>
     "@name":"ArtDeco00",<br>
     "@appinfo":"UniversalMediaMaterials prototype",<br>
     "@documentation":"<a href="https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials" rel="noreferrer" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials</a>",<br>
     "ProtoBody": {<br>
         "-children":[<br>
           { "Material":<br>
             {<br>
               "@ambientIntensity":0.25,<br>
               "@diffuseColor":[0.282435,0.085159,0.134462],<br>
               "@shininess":0.127273,<br>
               "@specularColor":[0.276305,0.11431,0.139857]<br>
             }<br>
           }<br>
         ]<br>
     }<br>
   }<br>
},<br>
<br>
JSON result of interest:<br>
<br>
           { "Material":<br>
             {<br>
               "@ambientIntensity":0.25,<br>
               "@diffuseColor":[0.282435,0.085159,0.134462],<br>
               "@shininess":0.127273,<br>
               "@specularColor":[0.276305,0.11431,0.139857]<br>
             }<br>
<br>
First draft of converter: extract everything inside ProtoBody, ignore the rest.<br>
<br>
So you are now halfway to first example.  If that is how JSON says it in JavaScript, how does X3DOM say it in JavaScript?<br>
<br>
If still puzzled, here is a second-opinion point of comparison: how does X_ITE say it?<br>
<br>
Have fun with X3D JavaScript, I hope...<br>
<br>
On 5/26/2020 9:29 AM, John Carlson wrote:<br>
> There's also choice of data structure<br>
> <br>
> 1.  Mostly DOM/JDON, relying on functions<br>
> 2.  Full X3DJSAIL-like data structure<br>
> 3.  Just the Proto classes.<br>
> <br>
> On Tue, May 26, 2020 at 2:59 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a> <mailto:<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>> wrote:<br>
> <br>
>     1.  Keep current implementation, debug it<br>
>     2.  Add XML -> JSON -> XML to current implementation.  Code is written, but not tested extensively<br>
>     3.  Write a new version in XML<br>
>     4.  Copy and port X_ITE's Proto code.<br>
>     5.  Write a new XML based proto expander.<br>
> <br>
>     We *do* want at least an XML proto expander.<br>
> <br>
>     Anyone want to help with any of these?  There are a lot of options.<br>
> <br>
> <br>
> <br>
> _______________________________________________<br>
> X3dom-users mailing list<br>
> <a href="mailto:X3dom-users@lists.sourceforge.net" target="_blank">X3dom-users@lists.sourceforge.net</a><br>
> <a href="https://lists.sourceforge.net/lists/listinfo/x3dom-users" rel="noreferrer" target="_blank">https://lists.sourceforge.net/lists/listinfo/x3dom-users</a><br>
> <br>
<br>
all the best, Don<br>
-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>
X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman" rel="noreferrer" target="_blank">http://faculty.nps.edu/brutzman</a><br>
</blockquote></div>
</blockquote></div>