<div dir="auto">How did I discover this issue? I noticed a large number of differences in roundtripping of Coordinate.point in many facial animation examples I created. I was a like OMG, parts of the scenegraph are disappearing. But what was happening was the HAnimSegment field nodes were being reordered by x3d-tidy! So roundtripping doesn’t work unless you canonicalize and fix DEF/USE and canonicalize your originals and output from all your tools.</div><div dir="auto"><br></div><div dir="auto">Note, JinBlink.x3d should be validated by someone, and I’m expecting a report from Don.</div><div dir="auto"><br></div><div dir="auto">John <br><div class="gmail_quote gmail_quote_container" dir="auto"><div dir="ltr" class="gmail_attr">On Fri, Mar 27, 2026 at 10:19 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">To be clear:</div><div dir="auto"> </div><div dir="auto">.x3d->x3d-tidy->.x3dj->X3DJSONLD->DOM- >Serializer->Java, etc.->X3DJSAIL/stylesheets->XML, JSON, (more?) probably won’t work in many cases, due to DEF/USE reordering within SFNode field reordering. I am not saying the .x3dj files are bad files.</div><div dir="auto"><br></div><div><div style="font-size:inherit" dir="auto"><span style="color:rgb(0,0,0);font-family:-apple-system,sans-serif;font-size:inherit;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline!important">x3d->X3dToJson.xslt->.json->X3DJSONLD->DOM->Serializer->Java, etc.->X</span><span style="font-family:-apple-system,sans-serif;font-size:inherit">3DJSAIL/stylesheets->XML, JSON, (more?) probably will work.</span></div><div style="font-size:inherit" dir="auto"><span style="font-family:-apple-system,sans-serif;font-size:inherit"><br></span></div><div style="font-size:inherit" dir="auto">Using Canonical form might solve this issue. But what is canonical JSON?</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Specific ordering issues that that have come up include head statements, HAnimHumanoid and HAnimSegment nodes.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Please try to ensure that the authors ordering is preserved, or use canonical form.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Note that X3DJSONLD *should* act like a pass through. But further work to achieve canonical form may be desired.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">X3DJSAIL/stylesheets should stick with canonical form, if it uses it, but warn of potential DEF/USE reordering, if it can’t handle DEF/USE reordering under canonicalization.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">x3d-tidy should also stick with canonical form, or not modify canonical form or alternatively, author’s intent.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Does this seem reasonable?</div></div><div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto"><span style="font-size:inherit;font-family:-apple-system,sans-serif">John</span><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div>
</blockquote></div></div>