[x3d-public] HAnim examples

vmarchetti at kshell.com vmarchetti at kshell.com
Fri Jan 19 05:11:22 PST 2024


The rule "First Joint (root) is skeleton, all Joint childs are children." is at most a rule-of-thumb for developers of x3d applications that really want to be
tolerant in accepting invalid XML encoding of HAnim models.

As is discussed in the forum discussion https://github.com/castle-engine/view3dscene/issues/69 ; and using the X3DV4 spec documents:

The HAnimHumanoid node https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimHumanoid has two fields, both MFNode, that can have contain HAnimJoint nodes. The X3D fields are skeleton and joints. The HAnimHumanoid node does not have a X3D field named children.

The default value of the XML attribute containerField for the XML element HAnimJoint is "children".  as specified in: 
DTD : https://www.web3d.org/specifications/x3d-4.0.dtd 
XMLSchema: https://www.web3d.org/specifications/x3d-4.0.xsd

AS I read it, this means that all occurrennce of the HAnimJoint element that are XML children of an HAnimHumanoid element need to have containerField explicitly supplied for disambiguation.

As Michalis has mentioned, it's going to be very challenging for X3D developers to implement additional rules for disambiguating MFNode values in the XML encoding of X3D, particularly rules relying on the ordering and ancestry of XML elements that are XML siblings. And it's going to be very difficult to rigourously specify such rules.

I think the X3D Working Group should maintain that the solution to this is that XML encoding authoring tools need to explicitly define the containerField attribute of each HAnimJoint element that is an (XML) child of an HAnimHumanoid element.

Vince Marchetti





> On Jan 18, 2024, at 11:13 PM, Joe D Williams via x3d-public <x3d-public at web3d.org> wrote:
> 
>> ForHAnimJoint or HAnimSite,there are no rules to "guess" containerField from what I know.
> 
> 
> Hi Michalis, the rule for Joint container field is: First Joint (root) is skeleton, all Joint childs are children. 
> 
> Thanks,
> Joe
> 
> 
> 
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org




More information about the x3d-public mailing list