<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">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 gmail_quote_container"><div dir="ltr" class="gmail_attr">On Mon, Feb 16, 2026 at 8:21 PM 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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><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-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)" 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>