<div dir="ltr"><div><div dir="auto">Apparently, this email was impossible to send on my iPhone. Use with care.</div><div dir="auto"><br></div><div dir="auto">Okay, I received enclosed spec. I propose we 1) see if this spec covers the binary .ply files we have (it looks like integers are missing).</div><div dir="auto"><br></div><div dir="auto">I think my base points were here:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://en.wikipedia.org/wiki/PLY_%28file_format%29" target="_blank">https://en.wikipedia.org/wiki/PLY_(file_format)</a></div><br></div><div dir="auto">And the ASCII examples here (possibly proprietary):</div><div dir="auto"><br></div><div dir="auto"><div dir="auto"><a href="https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/ply" target="_blank">https://github.com/coderextreme/X3DJSONLD/tree/master/src/main/ply</a></div><div dir="auto">(JinFACS.ply and mobius.ply are based on X3D examples).</div><div dir="auto"><br></div><div dir="auto">So we already have ASCII header parsers (except binary and endian-ness). We might have to add GS property names.</div><div dir="auto"><br></div><div dir="auto">Then we need parsers for “binary,” endian-ness and binary number loaders for each type of endian-ness.</div></div></div><div><div dir="auto"><div dir="auto"><br></div><div dir="auto">John </div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 28, 2025 at 2:47 PM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@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="ltr">Sorry John I was wrong -- I see there's a special variant of .ply for gaussian splatting, which is what Aaron was wanting .ply for.<div><a href="https://www.useblurry.com/blog/anatomy-of-a-ply-file" target="_blank">https://www.useblurry.com/blog/anatomy-of-a-ply-file</a> <br></div><div>Looks like there is a color per vertex or triangle, not an image file reference.</div><div>That should still fit in an IndexedTriangleSet:</div><div><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/rendering.html#IndexedTriangleSet" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/rendering.html#IndexedTriangleSet</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 28, 2025 at 11:59 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@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="ltr"><div>John,</div>Samples of gaussian splatting seem to be in binary or too big for Notepad to open.<div>Hypothesis: If ply can refer to image files, then a Proto parsing a .ply should have a Shape as first node, so Script node parser can set the Shape material as well as the IndexedTriangleSet geometry.<br><div>-Doug<br><div><a href="https://ifiweb.informatik.tu-freiberg.de/public/silversplat/index.html?load=.%2Fmodels%2Fwerner_amethyst.ply" target="_blank">https://ifiweb.informatik.tu-freiberg.de/public/silversplat/index.html?load=.%2Fmodels%2Fwerner_amethyst.ply</a> <br></div><div>- online tool showing a splat of a mineral gem</div><div><a href="https://ifiweb.informatik.tu-freiberg.de/public/silversplat/.%2Fmodels%2Fwerner_amethyst.ply" target="_blank">https://ifiweb.informatik.tu-freiberg.de/public/silversplat/.%2Fmodels%2Fwerner_amethyst.ply</a> <br></div><div>- download link to same .ply</div><div><a href="https://drive.google.com/file/d/1sh7yB-u1mfH2RgAN5bOpmFlM37baP7Dd/view" target="_blank">https://drive.google.com/file/d/1sh7yB-u1mfH2RgAN5bOpmFlM37baP7Dd/view</a> <br></div><div>- study / paper on splatting of minerals</div><div>Aaron supplied links to splats:</div><div>PLY Splats<br>● <a href="https://vr.csgrid.org/gsplats/soaring_eagle.ply" target="_blank">https://vr.csgrid.org/gsplats/soaring_eagle.ply</a><br>● <a href="https://vr.csgrid.org/gsplats/Merrifield_100.ply" target="_blank">https://vr.csgrid.org/gsplats/Merrifield_100.ply</a><br>● <a href="https://vr.csgrid.org/gsplats/Merrifield_fireplace.ply" target="_blank">https://vr.csgrid.org/gsplats/Merrifield_fireplace.ply</a><br>● <a href="https://vr.csgrid.org/gsplats/mug_space.ply" target="_blank">https://vr.csgrid.org/gsplats/mug_space.ply</a><br>SuperSplat HTML format for quick viewing:<br>● <a href="https://vr.csgrid.org/gsplats/soaring_eagle.html" target="_blank">https://vr.csgrid.org/gsplats/soaring_eagle.html</a><br>● <a href="https://vr.csgrid.org/gsplats/Merrifield_100.html" target="_blank">https://vr.csgrid.org/gsplats/Merrifield_100.html</a><br>● <a href="https://vr.csgrid.org/gsplats/Merrifield_fireplace.html" target="_blank">https://vr.csgrid.org/gsplats/Merrifield_fireplace.html</a><br>● <a href="https://vr.csgrid.org/gsplats/mug_space.html" target="_blank">https://vr.csgrid.org/gsplats/mug_space.html</a></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 27, 2025 at 6:22 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">Is there a need for “binary” or can we use ASCII .ply?</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, Nov 24, 2025 at 7:17 AM GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@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="ltr"><div>"binary"</div><div>John</div>When parsing MIDI packets in javascript I found DataView.<div>-Doug</div><div>UMP - universal MIDI packet from MIDI 2 standard, is 64 bit packet</div><div> function parseUmp(packet){ </div><div> var buf = new ArrayBuffer(8); </div><div> var view = new DataView(buf); </div><div> //using SFDouble as packet container </div><div> view.setFloat64(0,packet,true); </div><div> var bytes = new Uint8Array(buf); </div><div> var res = {}; </div><div> res.channel = (bytes[1] & 0xF) + 1; </div><div> res.command = bytes[1] - (res.channel-1); </div><div> res.note = bytes[2]; </div><div> res.velocity = view.getUint16(4,true);
return res; </div><div> } </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 22, 2025 at 4:59 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">Note: ASCII .ply only, I haven’t figured out binary .ply or how to handle binary in JavaScript yet.</div><div dir="auto"><br></div><div dir="auto">I’ve also written JSON to XML converter in C++ as a separate process as previously discussed. But I’ve not ever really considered reclaiming memory as the process is short-lived. YMMV</div><div dir="auto"><br></div><div dir="auto">My JavaScript or a derivative might serve as part of your SAI solution.</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 22, 2025 at 5:40 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">Creates JSON from .ply files. Uses IndexedLineSet and IndexedFaceSet.</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/convertPlyToJson.js" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/node/convertPlyToJson.js</a></div><br></div><div dir="auto"><br></div><div dir="auto">Partially working demo:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://coderextreme.net/X3DJSONLD/src/main/html/main_viewer.html" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/html/main_viewer.html</a></div><div dir="auto"><br></div><div dir="auto">Designed for phones:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://coderextreme.net/X3DJSONLD/src/main/html/responsive.html" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/html/responsive.html</a></div><br></div><div dir="auto">I spent quite a bit of effort getting .ply files into JSON, and have shown UV textures being translated to .ply.</div><div dir="auto"><br></div><div dir="auto">Also comes with client search and server code for delivering filenames to browser.</div><div dir="auto"><br></div><div dir="auto">I actually might have one customer?</div><div dir="auto"><br></div><div dir="auto">Text me 712-369-1032 or FaceTime or Zoom.</div><div dir="auto"><br></div><div dir="auto">Conversion from JSON to XML is also done!</div></div><div dir="auto"><div dir="auto"><br></div><div dir="auto">John</div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Nov 22, 2025 at 11:31 AM GPU Group via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@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)"><div dir="ltr">"Gaussian Splatting" <div>.ply files appear to deliver similar polygons as X3D IndexedTriangleSet</div><div><a href="https://en.wikipedia.org/wiki/PLY_(file_format)" target="_blank">https://en.wikipedia.org/wiki/PLY_(file_format)</a><br></div><div><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/index.html" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/index.html</a> <br></div><div>Methods to get .ply into x3d scene:</div><div>0. pre-process with non-browser tool to convert to x3d scene snippet for inlining</div><div>1. Special new IndexedTriangleSetPly node with a url field</div><div>2. Proto containing i) first node IndexedTriangleSet, ii) Script node to process ply into IndexedTriangleSet, and either:</div><div>a) SAI function for javascript to read an arbitrary file url into a blob for processing from ply to IndexedTriangleSet by javascript</div><div>b) a new node type that reads an arbitrary file into an SFImage as a blob, a route to move the SFImage to Script for processing from ply to IndexedTriangleSet</div><div>Q. or is there another method that's easier / already working?</div><div>-Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Nov 18, 2025 at 9:31 AM Bergstrom, Aaron via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@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)"><div>
<div lang="EN-US">
<div>
<p class="MsoNormal">X3D and AI Stakeholders,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Please join us for the X3D-AI Working Group meeting this <b>
Wed, Nov 19<sup>th</sup></b> at <b>2pm GMT</b> (<b><span style="color:rgb(191,144,0)">9am US Eastern</span></b><span style="color:rgb(191,144,0)">
</span>– <b><span style="color:rgb(84,130,53)">6am Pacific</span></b>)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The agenda for this week will include the following topics:<u></u><u></u></p>
<ul style="margin-top:0in" type="disc">
<li style="margin-left:0in">Metaverse Standards Forum - AI Working Group<u></u><u></u></li><li style="margin-left:0in">Gaussian Splatting – Proposed Node Text<u></u><u></u></li><li style="margin-left:0in">AI Assisted Content Creation<u></u><u></u></li><li style="margin-left:0in">Near-term Activities of the X3D-AI Working Group<u></u><u></u></li></ul>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The Zoom link for the meeting and a more detailed agenda can be found at the Calendar link below<u></u><u></u></p>
<p class="MsoNormal"><a href="https://www.web3d.org/calendar/2800/x3d-ai-working-group-meeting/2025-11-19t140000-2025-12-17t140000-2026-01-21t140000" target="_blank">https://www.web3d.org/calendar/2800/x3d-ai-working-group-meeting/2025-11-19t140000-2025-12-17t140000-2026-01-21t140000</a>
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hope to see everyone there,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Aaron Bergstrom<u></u><u></u></p>
<p class="MsoNormal">X3D-AI Working Group Chair<u></u><u></u></p>
<p class="MsoNormal"><a href="https://www.web3d.org/working-groups/ai-x3d" target="_blank">https://www.web3d.org/working-groups/ai-x3d</a><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</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>
</div></blockquote></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></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</div>
</div>