<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.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:958991186;
        mso-list-type:hybrid;
        mso-list-template-ids:54531572 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Maybe we should figure out how to do JavaScript declaratively?</li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="https://www.web3d.org/documents/specifications/19775-2/V3.3/index.html">ISO/IEC 19775-2 Index page (web3d.org)</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This is how it is done declaratively. There is a dedicated set of these defined for ECMAScript. I think I understand the idea of declaring something and the concept of somehow doing it programmatically instead of using a text file that is so simplethat all you have to do is put the nodes and statements in a reasonable human-readable order, so these are those interfaces, accessible using ECMAScript or java, or whatever. All you gotta do is implement the SAI that runs in some tool that can do what needs to be done when you ask it to create the browser, send and receive data to create and sustain the scene interactions with internal and external host or partner and other things maybe connected to the browser host, and finally, kill or replace the scene when appropriate. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>A big idea is that there should be enough in the SAI to build both a highly efficient x3d authortime and runtime. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></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:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Friday, February 4, 2022 3:03 PM<br><b>To: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Cc: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] glTF files end in .gltf and .glb (binary)</p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Joe, what I do in X3D JSON validation is give the user a chance to cancel the load operation if the JSON file doesn’t validate.   No, I don’t validate #sourceCode yet.  Script.js expects the JavaScript in a particular way, not any JavaScript.   And yes, I have not yet figured out a way not to do evals.   I’m fairly sure X_ITE still does evals too.  X3DOM wins here.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Maybe we should figure out how to do JavaScript declaratively?</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Hmm</p></div><div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Fri, Feb 4, 2022 at 4:19 PM Joseph D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>If encoding an entire scenegraph in .json, then it should have a suffix like .x3dj for an x3d file encoded in Json. A precise schema should not be a problem just that the x3d json  appears to read more like vrml classic in structure the last I saw (container field name precedes the node name)?</p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Anyway, then a gltf file intended to be used directly as a node or field in a node of the scene should be named as an ordinary gltf file. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Again, I don’t see the need a json language binding, like xml or classic since I really don’t like the typical formatting for json and a complicated scene would look like lots of whitespace. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Sure ,if you know that form it is not that much harder to edit the text, just that since we can show that x3d can be encoded in json, just a proof that x3d is mostly fine, and that json is mostly very able to encode all or parts of x3d nodes and structures, No big deal or great reason to need a standard canonical form for encoding x3d in json except to find potential problems in  transcoding, which might give a clue if something deep wrong in x3d encoding. </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Thanks, </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Joe</p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b>From: </b><a href="mailto:yottzumm@gmail.com" target="_blank">John Carlson</a><br><b>Sent: </b>Friday, February 4, 2022 12:29 PM<br><b>To: </b><a href="mailto:michalis.kambi@gmail.com" target="_blank">Michalis Kamburelis</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] glTF files end in .gltf and .glb (binary)</p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>One thing I tried to adopt when developing X3DJSONLD was a “standards neutral” approach.   That means it would be applicable for X3D, XSeen, glTF, SVG, HTML, etc.  in the spirit of D3.js.   So it isn’t an SAI interface.  Someone else should work on that who already has a scenegraph built.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>X3D JSON schema is a patch in X3DJSONLD at this point, if the XML/DOM output isn’t validated.   I have not heard of XML validation in X3DOM or X_ITE.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I would welcome SVG JSON and HTML JSON standardization at this point.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>John</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Fri, Feb 4, 2022 at 2:09 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>We use .json because we started that way, not for any reasonable reason.   I agree we should put in effort to change, I think some things like this may currently be hard-coded into X3DOM at this point.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>We don’t have any X3D JSON standard at this point, so often we make decisions that may require a lot of rework, such as changing property names for cross language compatibility, or simple decisions, like changing default field values.   Ultimately we’ll settle on a standard, but everything is pretty much up in the air, probably because we’re waiting for a JSON Schema standard.   Tools are starting to fail behind the drafts of the JSON schema standards, for example, there is no Java implementation of the 2020-12 draft that I know of.   We thought we had a good Java tool, but in hindsight, we probably jumped the gun.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>So the JSON standards world is pretty much a mess.   Good python tools that worked extremely quickly were displaced by extremely slow alternatives.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>In hindsight, I wish we were still at draft07.   Lots of good tool support in many languages.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>There’s one good thing that I treasure in all of this, and that’s the Ajv package.   Please fund if you can!</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I do not know if glTF ASCII is going through the same schema pains we are.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Also Andreas did some good work in the JSON loading in SAI for X3DOM.  I suggest adopting it for the JavaScript and perhaps other language bindings.</p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>John </p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> </p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Fri, Feb 4, 2022 at 12:36 PM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>> wrote:</p></div></div></div></blockquote></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'>Indeed, glTF files should have .gltf or .glb extensions. (See<br><a href="https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#file-extensions-and-media-types" target="_blank">https://www.khronos.org/registry/glTF/specs/2.0/glTF-2.0.html#file-extensions-and-media-types</a><br>, """JSON glTF files SHOULD use .gltf extension and model/gltf+json<br>Media Type."""")<br><br>While .gltf is also valid JSON, using a generic .json extension for<br>them feels "unnecessarily generic". It would be like using .xml<br>instead of .x3d for models in X3D XML encoding.<br><br>That being said, why do you validate with X3D JSON schema all *.json?<br>Shouldn't X3D JSON also have a specific extension, not use generic<br>.json?<br><br>Regards,<br>Michalis<br><br>pt., 4 lut 2022 o 18:21 John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> napisał(a):<br>><br>> I believe glTF files end in .gltf and .glb (binary), not .json.   Please confirm and update glTF .json files found in archives.  See files below in X3dForAdvanceModeling.   They do no pass X3D JSON schema.<br>><br>> Thanks, John<br>><br>> $ grep file: results.txt |grep -i /gltf|sort -u<br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendModeTest.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendModeTest.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AntiqueCamera.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AntiqueCamera.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AttenuationTest.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AttenuationTest.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/DamagedHelmet.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/DamagedHelmet.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/DragonAttenuation.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/DragonAttenuation.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/GlamVelvetSofa.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/GlamVelvetSofa.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/Lantern.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/Lantern.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/Suzanne.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/Suzanne.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/ToyCar.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/ToyCar.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/TransmissionTest.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/TransmissionTest.json</a><br>>  file: C:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/WaterBottle.json" target="_blank">www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/WaterBottle.json</a><br>> _______________________________________________<br>> x3d-public mailing list<br>> <a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p></div></div></blockquote></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt'> </p><p class=MsoNormal><o:p> </o:p></p></div></body></html>