<div dir="ltr"><div>The basic story hasn't changed... now added on our page. </div><div><ul><li><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html"><b>X3D to JSON Stylesheet Converter</b></a></li><li>The X3D to JSON stylesheet converts .x3d XML to .json, supporting the forthcoming JSON Encoding for X3D Graphics.</li><li>This page fully describes current X3D JSON design patterns and syntax, providing examples and references.</li><li><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html">https://www.web3d.org/x3d/stylesheets/X3dToJson.html</a></li><li><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><font size="2"><b>Planned Progress</b><br></font>Current status: X3D JSON developmental work is mature and provides full coverage of X3D model capabilities in JSON, as demonstrated by <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank" style="">thousands of example models</a>. Design patterns have been available and assessed by X3D community for several years. One possible addition to be considered will be use of an <code style="">.x3dj</code> file extension as an alternative to the classic <code style="">.json</code> file extension.<br>The only significant gap in current assets is availability of a JSON Schema for X3D, autogenerated from the <a href="https://www.web3d.org/specifications/X3DUOM.html" target="_blank" style="">X3D Unified Object Model (X3DUOM)</a>. Web3D Consortium standardization efforts have been quite careful about taking this step. Although <a href="https://json-schema.org" target="_blank" style="">JSON Schema design</a> has not been formally ratified or standardized, it appears to be sufficiently well defined and implemented to justify creating an X3D JSON Schema as an informative annex in the upcoming draft specification for the X3D JSON Encoding. We expect such work to occur in Spring 2026.</blockquote></li></ul></div><div><br></div><div>Regarding any juggling of<font face="monospace"> @ - #</font> prefixes, I suggest</div><div><ul><li>Anything different than current design requires some evidence of improvement, not preferences.</li><li>We still have to confirm and demonstrate that generation of a JSON Schema can be fully compatible with these prefix characters. Further best practices for JSON and JSON Schema may also have emerged.</li><li>X3D JSON Specification products must meet design requirements and follow implementation, evaluation, and consensus.</li></ul></div><div>p.s. Thanks for your long patience on this topic John, we are finally catching up.</div><div><br></div><div>Wondering, have you asked the JSON Schema community why the internet drafts for JSON Schema are not yet standardized? Is there a hidden flaw preventing finalization, or competing incompatible approaches??? That mysterious problem puts a lot of work (all across the Web) at possible risk in the future. If there is an unstated disqualifying problem for JSON Schema out there, it would be good for our community (and not doubt others) to finally know about it.</div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 7:14 PM John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</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="auto">Here’s the background material in “A JSON encoding for X3D”:</div><div dir="auto"><br></div><div dir="auto">==========</div><div dir="auto"><div style="font-size:inherit">
<div style="font-size:inherit">
<p dir="auto">During development it became clear that it was necessary <span style="font-size:inherit">to make it easy to distinguish the names of fields from the </span><span style="font-size:inherit">names of nodes, since both appear as JSON strings. It was </span><span style="font-size:inherit">decided to prepend a non-alphabetic character to field </span><span style="font-size:inherit">names, using different characters for the two field </span><span style="font-size:inherit">categories. This makes it easy for parsers, loaders and </span><span style="font-size:inherit">validators to recognize the string as a field name, and </span><span style="font-size:inherit">identify any errors in usage.</span></p>
</div>
</div>============</div><div dir="auto"><br></div><div dir="auto">I’m guessing this is development of Coin3D? With my serializers, it was easy enough to use fieldTypes.js, after the prefixes were removed by X3DJSONLD and converted to DOM. A more direct conversion to DOM would be appreciated!</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/fieldTypes.js" style="font-size:inherit" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/fieldTypes.js</a></div><br></div><div dir="auto"><br></div><div dir="auto">It might be helpful to distinguish nodes from statements as well?</div><div dir="auto"><br></div><div dir="auto">Of course, if one is reading directly into scenegraph, without my handy type lookup table, I can understand why one might want a field discriminator.</div><div dir="auto"><br></div><div dir="auto">So now I ask, do we really need something to distinguish types of properties in JavaScript? Are there workarounds for other languages like fieldTypes.js that can help? Surely, we can use X3DUOM to generate such artifacts?</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 8:21 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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="auto">For those who aren’t familiar, I will try to outline the requirement for @, - and # property prefixes in X3D JSON.</div><div dir="auto"><br></div><div dir="auto">@ is for non-MFNode, non-SFNode fields.</div><div dir="auto">- is for MFNode and SFNode fields.</div><div dir="auto"># is for comments and source code—shaders and scripts.</div><div dir="auto"><br></div><div dir="auto">The problem is that when you want to access, say geometry or appearance, you have to do:</div><div dir="auto"><br></div><div dir="auto">shape[‘-appearance’] instead of shape.appearance.</div><div dir="auto"><br></div><div dir="auto">AFAIK, shape.-appearance just doesn’t work.</div><div dir="auto"><br></div><div dir="auto">Similarly,</div><div dir="auto"><br></div><div dir="auto">transform[‘@translation’]</div><div dir="auto"><br></div><div dir="auto">vs</div><div dir="auto"><br></div><div dir="auto">transform.translation</div><div dir="auto"><br></div><div dir="auto">And again, transform.@translation doesn’t work.</div><div dir="auto"><br></div><div dir="auto">I understand there might be problems with this “new” approach. Let’s try to lay out pros vs cons.</div><div dir="auto"><br></div><div dir="auto">I think my current goal is to make parsing and generation of JSON easy. My thought is to take out the @ and leave - and #. We already have examples of that in the X3D node.</div><div dir="auto"><br></div><div dir="auto">What do you think?</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 7:55 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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="auto">As one can see from this example code, the property prefixes @, # and - aren’t necessary in X3D JSON: <div style="font-size:inherit"><a href="https://github.com/coderextreme/my-second-react-three-app/blob/main/src/App.jsx" style="font-size:inherit" target="_blank">https://github.com/coderextreme/my-second-react-three-app/blob/main/src/App.jsx</a></div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Let’s think about removing these from X3D JSON. We need to consider performance and ease of use and development. If there’s no need, why did we invent the prefixes, to make JavaScript and TypeScript developers tear their hair out?</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Thanks!</div></div><div dir="auto"><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">John </div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 6:47 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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="auto">If there’s time on the agenda, I’d like to present a beginnings of an “X3D JSON” viewer/editor developed with AI using React and THREE.js with WebGPU renderer. This is quite different than the three-x3d-loader previously presented, and is along the lines of AFrame but not even Interchange profile.</div><div dir="auto"><br></div><div dir="auto">There’s obviously a lot more work to do.</div><div dir="auto"><br></div><div dir="auto">Thanks!</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 4:47 PM Anita Havele via AI <<a href="mailto:ai@web3d.org" target="_blank">ai@web3d.org</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" dir="auto">Anita Havele <<a href="mailto:anita.havele@web3d.org" target="_blank">anita.havele@web3d.org</a>> has invited you to Agenda — AI-X3D SIG Meeting on Feb 17, 2026 AT 8:00 AM PST (GMT-8)<br>
<br>
-- <br>
AI mailing list<br>
<a href="mailto:AI@web3d.org" target="_blank">AI@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/ai_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/ai_web3d.org</a><br>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>
_______________________________________________<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" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>