[x3d-public] Upgrade model? AllenDutton Legacy

John Carlson yottzumm at gmail.com
Sun Jul 13 20:24:16 PDT 2025


Note also that we need a way to disambiguate between the highlighted
HAnimHumanoid fields in XML (they have the same type of children nodes, so
setFieldOverride() is necessary (I need to double check the X3DJSAIL output
of X3dToJava.xslt programs).  If you want to make addJoints(),  addSite(),
addSkeleton() and addViewpoints() actually call setFieldOverride(), that
would be something.  You actually  have to look at the XML output from Java
to see the issue.  Apparently, you haven't validated the XML output from
Java?  Again, you can't see the problem by looking at the archive, the
problem is not in the archive.

I will continue investigating with a new X3DJSAIL, I recently did an svn
update.


https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid
26.3.2 HAnimHumanoid

HAnimHumanoid : X3DChildNode, X3DBoundedObject {
  SFVec3f    [in,out] center                0 0 0    (-∞,∞)
  SFString   [in,out] description           ""
  SFBool     [in,out] bboxDisplay           FALSE
  MFString   [in,out] info                  []
  MFVec3f    [in,out] jointBindingPositions []       (-∞,∞)
  MFRotation [in,out] jointBindingRotations []       [-1,1] or (-∞,∞)
  MFVec3f    [in,out] jointBindingScales    []       (0,∞)  MFNode
[in,out] joints                []       [HAnimJoint]
  SFInt32    [in,out] loa                   -1       [-1,4]
  SFNode     [in,out] metadata              NULL     [X3DMetadataObject]
  MFNode     [in,out] motions               []       [HAnimMotion]
  MFBool     [in,out] motionsEnabled        []
  SFString   [in,out] name                  ""
  SFRotation [in,out] rotation              0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] scale                 1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation      0 0 1 0  [-1,1] or (-∞,∞)
  MFNode     [in,out] segments              []       [HAnimSegment]
MFNode     [in,out] sites                 []       [HAnimSite]
  SFString   [in,out] skeletalConfiguration "BASIC"
  MFNode     [in,out] skeleton              []       [HAnimJoint, HAnimSite]
  MFNode     [in,out] skin                  []       [Group, LOD,
Shape, Switch, Transform, IndexedFaceSet, IndexedFanSet,
IndexedLineSet, IndexedQuadSet, IndexedTriangleSet,
IndexedTriangleStripSet]
  SFNode     [in,out] skinBindingCoords     NULL
[Coordinate|CoordinateDouble]
  SFNode     [in,out] skinBindingNormals    NULL     [X3DNormalNode]
  SFNode     [in,out] skinCoord             NULL
[Coordinate|CoordinateDouble]
  SFNode     [in,out] skinNormal            NULL     [X3DNormalNode]
  SFVec3f    [in,out] translation           0 0 0    (-∞,∞)
  SFString   [in,out] version               "2.0"    ["2.0"]  * MFNode
    [in,out] viewpoints            []       [HAnimSite]*
  SFBool     [in,out] visible               TRUE
  SFVec3f    []       bboxCenter            0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1
}


On Sun, Jul 13, 2025 at 10:14 PM John Carlson <yottzumm at gmail.com> wrote:

> Don,
>
> Note that viewpoints is a perfectly valid containerField for HAnimSite, at
> least according to X3DOM.
>
>
> <ConcreteNode name="HAnimHumanoid">
>
> [snip]
>
> <field name="viewpoints"
>                    type="MFNode"
>                    accessType="inputOutput"
>                    acceptableNodeTypes="HAnimSite"
>                    description="List of HAnimSite nodes containing
> Viewpoint nodes that appear in the skeleton model, usually as USE node
> references."/>
>
>
>
> https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid
> 26.3.2 HAnimHumanoid
>
> HAnimHumanoid : X3DChildNode, X3DBoundedObject {
>   SFVec3f    [in,out] center                0 0 0    (-∞,∞)
>   SFString   [in,out] description           ""
>   SFBool     [in,out] bboxDisplay           FALSE
>   MFString   [in,out] info                  []
>   MFVec3f    [in,out] jointBindingPositions []       (-∞,∞)
>   MFRotation [in,out] jointBindingRotations []       [-1,1] or (-∞,∞)
>   MFVec3f    [in,out] jointBindingScales    []       (0,∞)
>   MFNode     [in,out] joints                []       [HAnimJoint]
>   SFInt32    [in,out] loa                   -1       [-1,4]
>   SFNode     [in,out] metadata              NULL     [X3DMetadataObject]
>   MFNode     [in,out] motions               []       [HAnimMotion]
>   MFBool     [in,out] motionsEnabled        []
>   SFString   [in,out] name                  ""
>   SFRotation [in,out] rotation              0 0 1 0  [-1,1] or (-∞,∞)
>   SFVec3f    [in,out] scale                 1 1 1    (0,∞)
>   SFRotation [in,out] scaleOrientation      0 0 1 0  [-1,1] or (-∞,∞)
>   MFNode     [in,out] segments              []       [HAnimSegment]
>   MFNode     [in,out] sites                 []       [HAnimSite]
>   SFString   [in,out] skeletalConfiguration "BASIC"
>   MFNode     [in,out] skeleton              []       [HAnimJoint, HAnimSite]
>   MFNode     [in,out] skin                  []       [Group, LOD, Shape, Switch, Transform, IndexedFaceSet, IndexedFanSet, IndexedLineSet, IndexedQuadSet, IndexedTriangleSet, IndexedTriangleStripSet]
>   SFNode     [in,out] skinBindingCoords     NULL     [Coordinate|CoordinateDouble]
>   SFNode     [in,out] skinBindingNormals    NULL     [X3DNormalNode]
>   SFNode     [in,out] skinCoord             NULL     [Coordinate|CoordinateDouble]
>   SFNode     [in,out] skinNormal            NULL     [X3DNormalNode]
>   SFVec3f    [in,out] translation           0 0 0    (-∞,∞)
>   SFString   [in,out] version               "2.0"    ["2.0"]  * MFNode     [in,out] viewpoints            []       [HAnimSite]*
>   SFBool     [in,out] visible               TRUE
>   SFVec3f    []       bboxCenter            0 0 0    (-∞,∞)
>   SFVec3f    []       bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1
> }
>
>
> This suggests that there's an issue with my version of X3DJSAIL, I will try recompiling!
>
>
> John
>
>
> On Sun, Jul 13, 2025 at 9:40 PM Don Brutzman <don.brutzman at gmail.com>
> wrote:
>
>> HAnimSite does not have a viewpoints field, but it does have a *children*
>> field which can work for that purpose.  Note *children *is the default *containerField
>> *value for the XML encoding of Viewpoint.
>>
>>    - X3D 4.0 Architecture, clause 26 Humanoid Animation (HAnim)
>>    component, 26.3.6 HAnimSite
>>    -
>>    https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSite
>>
>> Also please avoid use of *setContainerFieldOverride()* method.  It is
>> only there to support experimental efforts and perhaps should be private
>> (disallowing programmer usage).  I just did a search of over 4000
>> autogenerated Java source files in the X3D Examples Archive and did not
>> find a single instance.  If you ever need to use it, there is an error
>> somewhere.  Please consult the Javadoc to search for
>> setContainerFieldOverride you find the following explanation.
>>
>>    - X3DJSAIL, X3D Java Scene Access Interface Library, Javadoc, search
>>    *setContainerFieldOverride()*
>>    - *org.web3d.x3d.jsail > X3DConcreteNode* * > *
>>    *setContainerFieldOverride*
>>    - *Warning: containerFieldOverride describes a non-default (and quite
>>    possibly incorrect) field relationship of a node to its parent, overriding
>>    the default or alternate containerField value. Programmer usage is not
>>    ordinarily needed when using this API (in rare cases it may be needed for
>>    ProtoInstance nodes). Instead of using containerFieldOverride workaround
>>    methods, focus on defining correct parent-child node relationships instead.*
>>    -
>>    https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/X3DConcreteNode.html#setContainerFieldOverride(java.lang.String)
>>
>> If you want to upgrade that model, be my guest.  Be aware that conversion
>> may be a nontrivial task, from scene metadata:
>>     13
>> <https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDutton.html#13>
>>       <meta name='* error *' content='* Legacy model, not valid as X3D4
>> HAnim version 2.0 since HAnim version 1.0 has significant differences and
>> is no longer directly supported *'/>
>>
>> all the best, Don
>>
>> On Sun, Jul 13, 2025 at 2:14 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> Is there a chance we can upgrade this model to V4.0, HAnim2?
>>>
>>>
>>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/AllenDuttonIndex.html
>>>
>>> I can do the work, I hope that my contribution will be added to the
>>> archive (in another folder).
>>>
>>> Let me know!
>>>
>>> Note that X3DJSAIL complains about a potentially valid
>>> cotainerField="viewpoints".  Castle Model Converter reports it's valid
>>>
>>> $ java -cp ~/Downloads/X3DJSAIL.4.0.full.jar
>>> org.web3d.x3d.jsail.CommandLine -validate AllenDutton.x3d
>>> [snip]
>>> Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException:
>>> *** Invalid setContainerFieldOverride() value='viewpoints', legal values
>>> for HAnimSite are containerField_ALLOWED_VALUES='"children" "sites"
>>> "skeleton"'
>>>         at
>>> org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:422)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)
>>>         at
>>> org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)
>>>         at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:922)
>>>         at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:242)
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250713/4b3a4dc9/attachment-0001.html>


More information about the x3d-public mailing list