[x3d-public] HAnimJoint children of HAnimPose in JSON

John Carlson yottzumm at gmail.com
Wed Jan 14 10:55:21 PST 2026


Thanks, Don.  Things are working much better now and I don’t have to jump
through any hoops to get a working schema.  Wonderful.

I have been working on upgrading my apps including X3DJSONLD (swiss army
knife), x3dvalidate (JSON validator) and x3dschema (Java converter from
JSON to DOM with XML schema validation).

I’m pretty sure most of this is checked in, but I recall an issue with
x3dvalidate such that it was expecting an object in
PhysicalMaterial.baseTexture and either create3000/x3d-tidy or
X3dToJson.xslt was producing an array.  Whatever changes you made to X3DUOM
worked well!  I will test again before making an informal release.  Many of
the 4.1 examples contain baseTexture, so this is critical.

One hack I did was convert setPoses to addChild, works well so far.  I
touched similar places in my serializers.

One thing is bugging me is arc2.json converted from arc.x3d validates on
the command line, but apparently something about the conversion happens,
and the file doesn’t convert in the browser and AJV throws an error.  Here
are the problematic files.

https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/arc2.x3d

https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/arc2.json

I realize you can validate these files OK.  The problem comes when
converting a PositionInterpolator.keyValue needs to be converted from a
string to numbers.


John

On Wed, Jan 14, 2026 at 12:02 AM Don Brutzman <don.brutzman at gmail.com>
wrote:

> John, thanks for flagging this difficulty.  It turns out there was an
> omission in the schema, which led to omissions in X3DUOM and corresponding
> APIs.  Now fixed.
>
>    - *X3D version 4.1 XML Schema Documentation*
>    -
>    https://www.web3d.org/specifications/X3dSchemaDocumentation4.1/x3d-4.1.html
>    - then *HAnimPose*
>    -
>    https://www.web3d.org/specifications/X3dSchemaDocumentation4.1/x3d-4.1_HAnimPose.html
>
> Also missing was documentation for HAnimPose children field in X3D
> Tooltips, emphasizing that only HAnimJoint nodes go in this field.
>
>    - *X3D Tooltips, HAnimPose node, children field*
>    -
>    https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimPose.children
>    - *[children accessType inputOutput
>    <https://www.web3d.org/x3d/tooltips/X3dTooltips.html#accessType>, type
>    MFNode <https://www.web3d.org/x3d/tooltips/X3dTooltips.html#MFNode> array,
>    empty list] [HAnimJoint
>    <https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimJoint>]*
>    The children field lists all HAnimJoint nodes making up this pose.
>    Contained HAnimJoint nodes provide center, rotation, and scale values which
>    are applied to corresponding HAnimJoint nodes with the same name in the
>    parent HAnimHumanoid skeleton.
>    *Warning:* these nodes must be independent of HAnimHumanoid skeleton
>    joints, do not re-USE any skeleton HAnimJoint nodes.
>    *Warning:* no other node types are allowed in the HAnimPose children
>    field.
>
> The X3DUOM page has a lot of detailed information.  I also took this
> opportunity to generate new X3DUOM documentation, using the XML Schema
> which keeps it in order.
>
>    - *X3D Unified Object Model (X3DUOM)*
>    - The X3D Unified Object Model (X3DUOM) is a full set of
>    object-oriented interfaces for all nodes, fields and statements in the X3D
>    Architecture Specification. This XML file is both human-readable and
>    machine-readable, serving as the basis for multiple autogenerated tools and
>    diagnostics.
>    - https://www.web3d.org/specifications/X3DUOM.html then select
>    - Documentation with diagrams illustrating purpose and structures
>    -
>    https://www.web3d.org/specifications/X3DUOM/documentation/X3dUnifiedObjectModel.html
>
> A good way to check that everything propagated satisfactorily through this
> production chain is to check the autogenerated X3DJSAIL Javadoc.
>
>    - *X3DJSAIL Javadoc, X3D Java Scene Access Interface Library*
>    - https://www.web3d.org/specifications/java/javadoc/index.html
>    - for example HAnimPose
>    -
>    https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/HAnim/HAnimPose.html
>
> Again thanks for reporting this difficulty, everything just got a little
> better.
>
> Have fun with X3DUOM!  😬
>
> all the best, Don
> --
> X3D Graphics, Maritime Robotics, Distributed Simulation
> Relative Motion Consulting  https://RelativeMotion.info
>
>
> On Tue, Jan 13, 2026 at 4:18 PM John Carlson via x3d-public <
> x3d-public at web3d.org> wrote:
>
>> I'm trying to validate HAnimJoint children of HAnimPose in JSON.
>>
>> I have not validated any .x3d files yet.
>>
>> I am looking at X3DUOM, under HAnimPose, I see:
>>
>> <NodeContentModel name="HAnimJoint"/>
>>
>> Under <ContentModel>.
>>
>> I have not previously handled ContentModel, except for
>> StatementContentModel.
>>
>> I'm guessing the name= in a NodeContentModel refers to the node type
>> (HAnimJoint in this case) allowed under the parent node (HAnimPose in this
>> case).
>>
>> Thanks for any assistance in reading X3DUOM.
>>
>> I will proceed with handling NodeContentModel in JSON schema, perhaps
>> GroupContentModel can be discussed later.
>>
>> John
>>
>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20260114/54b89421/attachment.html>


More information about the x3d-public mailing list