[x3d-public] Formal apology and a way forward

John Carlson yottzumm at gmail.com
Sat Mar 28 19:24:13 PDT 2026


I think Don wants me to post a retraction,  I’ll do this.

1.  I’ve only identified DEF/USE field reordering issues in HAnimHumanoid
and HAnimSegment.   I haven’t tested the rest of X3D.   That’s Don’s job.
He does it well.

a. I have identified HAnimSegment problems with models from my repository,
only recently converted to JSON and run through my test harness.  There
were differences when I generated x3d-tidy vs X3dToJson.xslt, but only
X3dJson.xslt worked with the rest of my harness.  The JSON was correct in
both cases.


https://github.com/coderextreme/ci2had/tree/main/resources

The files are originally sourced from FacialAnimation archives, modified by
hand written python.  My license is Apache for python, but you can apply
the Web3D Consortium license to the models or the Python source code.

The main issue was the sorting of HAnimSegment.coord and
HAnimSegment.children.

b.  The HAnimHumanoid DEF/USE reordering issues were due to X3DPSAIL
generation from a Blender exporter, but I also experienced problems in the
archive as well (well, not in the Python, but .x3d encoded files generated
from the Python), which I assume are now fixed.  I haven’t tested them
recently.

2.  I have made a partial effort to create stylesheet fixes and Python
fixes with AI that apply to all .x3d files generated from X3DJSAIL and
X3DPSAIL, but I’ve been busy today.  The code is in the hands of people to
do the right thing.

Again, apologies to post to the main list, and especially to Don!

John



On Fri, Mar 27, 2026 at 10:19 AM John Carlson <yottzumm at gmail.com> wrote:

> To be clear:
>
> .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.
>
> x3d->X3dToJson.xslt->.json->X3DJSONLD->DOM->Serializer->Java, etc.->X3DJSAIL/stylesheets->XML,
> JSON, (more?) probably will work.
>
> Using Canonical form might solve this issue.  But what is canonical JSON?
>
> Specific ordering issues that that have come up include head statements,
> HAnimHumanoid and HAnimSegment nodes.
>
> Please try to ensure that the authors ordering is preserved, or use
> canonical form.
>
> Note that X3DJSONLD *should* act like a pass through.  But further work to
> achieve canonical form may be desired.
>
> 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.
>
> x3d-tidy should also stick with canonical form, or not modify canonical
> form or alternatively, author’s intent.
>
> Does this seem reasonable?
>
> John
>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20260328/797ea2e9/attachment.html>


More information about the x3d-public mailing list