[x3d-public] Stuck with getting HAnimMotion animation to run; pause/resume fields

Joe D Williams joedwil at earthlink.net
Fri Jul 28 19:06:59 PDT 2023


Hi Andreas,
Another help will be decoding the systematic decoding of a given bvh skeleton so the the data is applied to the correct hanimjoint.
The names are usually by bones, which to me means I apply this data to the parent hanim joint. 
I hope I am right about bone orientation data is ok when applied as rotation of the bone's parent joint.
But most of all I have not seen consistent skeleton hierarchy, consistent naming of parts, consistent default pose before animation, and default joint rotations at default pose.

Thanks,
Joe

-----Original Message-----
From: Andreas Plesch <andreasplesch at gmail.com>
Sent: Jul 27, 2023 4:49 PM
To: X3D Graphics public mailing list <x3d-public at web3d.org>
Subject: Re: [x3d-public] Stuck with getting HAnimMotion animation to run; pause/resume fields

It would be also very helpful to explicitly state how the transforms in a channel are applied. Is the ordering significant? Probably. Is the order of application left to right, first to last in the list ? Probably. But another not unreasonable method would be to collect all rotations first and then all translations.  
One or two sentences should suffice to make this unambiguous. 



On Thu, Jul 27, 2023, 5:09 PM Holger Seelig <holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)> wrote:
I would like to add that startFrame and endFrame do not have the same functionality as startTime/stopTime. The two fields are more like a range within which the animation should run. Sending events to this fields will not start or stop the animation as far as I can read from spec. 
>The startFrame and endFrame fields indicate the index numbers for the initial and final frames that are animated by the Motion node. Note that startFrame can precede, equal or follow endFrame. The default endFrame value is reset to (frameCount - 1) whenever frameCount is changed. Similar to frameIndex, the values of startFrame and endFrame shall be greater than or equal to zero, and less than frameCount.
 
With the two new fields we now can pause/resume the animation, but still not properly start/stop.
 
Also note that HAnimMotion.enabled and HAnimHumanoid.motionsEnabled are kind of redundant, like a double switch, which is a little strange.

--
Holger Seelig
Leipzig, Germany
 
holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)
https://create3000.github.io/x_ite/








Am 27.07.2023 um 11:40 schrieb Brutzman, Donald (Don) (CIV) <brutzman at nps.edu (mailto:brutzman at nps.edu)>:

Thanks again for careful scrutiny and analysis.  
 
I think we did not implement X3DTimeDependentNode interface because startFrame/endFrame are used instead of startTime/endTime, so there is a different field signature.  Frames are certainly different than times.
 
However we might provide pause, resume inputOnly fields to HAnimMotion, as corresponding to pauseTime, resumeTime in X3DTimeSensor.  Suggested improvement:
 
  *  X3D 4.0 Architecture, 26 Humanoid Animation (HAnim) component, 26.3.4 HAnimMotion
  *  https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimMotion

 
HAnimMotion : X3DChildNode {
  SFBool   [in]     next
  SFBool   [in]     previous
   SFBool   [in]     pause  SFBool   [in]     resume 
  SFString [in,out] channels         ""
  MFBool   [in,out] channelsEnabled  []
  SFString [in,out] description      ""
  SFBool   [in,out] enabled          TRUE
  SFInt32  [in,out] endFrame         0      [0,∞)
  SFTime   [in,out] frameDuration    0.1    (0,∞)
  SFInt32  [in,out] frameIncrement   1      (-∞,∞)
  SFInt32  [in,out] frameIndex       0      [0,∞)
  SFString [in,out] joints           ""                  
  SFInt32  [in,out] loa              -1     [-1,4]
 SFBool   [in,out] loop             FALSE
  SFNode   [in,out] metadata         NULL   [X3DMetadataObject]
  SFString [in,out] name             ""
  SFInt32  [in,out] startFrame       0      [0,∞)
  MFFloat  [in,out] values           []     (-∞,∞)
  SFTime   [out]    cycleTime               [0,∞)
  SFTime   [out]    elapsedTime             (0,∞)
  SFInt32  [out]    frameCount              [0,∞)
}
 
·        X3D 4.0 Architecture, 8 Time component, 8.3.1 X3DTimeDependentNode
·        https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/time.html#X3DTimeDependentNode
 
X3DTimeDependentNode : X3DChildNode {  SFString [in,out] description  ""  SFBool   [in,out] enabled      FALSE  SFBool   [in,out] loop         FALSE  SFNode   [in,out] metadata     NULL  [X3DMetadataObject]  SFTime   [in,out] pauseTime    0     (-∞,∞)  SFTime   [in,out] resumeTime   0     (-∞,∞)  SFTime   [in,out] startTime    0     (-∞,∞)  SFTime   [in,out] stopTime     0     (-∞,∞)  SFTime   [out]    elapsedTime  SFBool   [out]    isActive  SFBool   [out]    isPaused} Have updated HAnim2.1 issue Mantis 1415 accordingly to keep track with this discussion.
 
  *  Mantis 1415: 26.3.4 HAnimMotion field issues: name, skeletalConfiguration, totalNumberFrames, pause/resume
  *  https://www.web3d.org/member-only/mantis/view.php?id=1415

Also likely need pause and resume fields (corresponding to X3DTimeDependentNode pauseTime/resumeTime) with further descriptive prose as well. https://web3d.org/pipermail/x3d-public_web3d.org/2023-July/019177.html (https://web3d.org/pipermail/x3d-public_web3d.org/2023-July/019177.html) (i.e. this thread)We will need to perform a careful scrub comparing X3D4 best practices for HAnimMotion when updating future HAnim2.1 specification fields and descriptions.https://www.web3d.org/x3d/content/X3dTooltips.html#HAnimMotion
 
Comments welcome.  If agreeable, such an improvement (adding HAnimMotion pause/resume fields) seems like a worthy best-practice addition for X3D4.
 
Also please confirm, do you think that there are any “showstopper” errors for interfaces in current X3D final IS.proof version?  Seems workable to me…
 
all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman at nps.edu (mailto:brutzman at nps.edu)
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149
X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman

 
From: x3d-public <x3d-public-bounces at web3d.org (mailto:x3d-public-bounces at web3d.org)> On Behalf Of Holger Seelig
Sent: Thursday, July 27, 2023 12:06 AM
To: Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)>
Cc: X3D <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Subject: Re: [x3d-public] Stuck with getting HAnimMotion animation to run.


 
Thanks Andreas, that's how I did it now.
 

Holger

 

--

Holger Seelig

Leipzig, Germany

 

holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)

https://create3000.github.io/x_ite/











Am 24.07.2023 um 18:30 schrieb Andreas Plesch <andreasplesch at gmail.com (mailto:andreasplesch at gmail.com)>:

 
I took the opportunity to look at HAnimMotion in

https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-IS.proof/Part01/components/hanim.html#HAnimMotion

and

https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionNodes.html

The question was how to actually play an animation described in an HAnimMotion.
HAnimMotion is described as an alternative parallel to HAnim motion
data animation using interpolators which suggests driving it through a
TimeSensor.
However, fields such as frameDuration, cycleTime or timeElapsed imply
that the object is responsible for both playing the animation and
storage of animation data. But playing the animation is not explicitly
explained.

Here is my interpretation of the silence of the spec. on actually
playing an animation:

When does an HAnimMotion start to play ?
Presumably, the conditions are:
enabled and HAnimHumanoid.motionsEnabled are true
at least one channel is enabled
frameIncrement > 0
startFrame < endFrame if loop = false, or loop = true

When does it pause ?
frameIncrement = 0
perhaps other conditions

When does it stop ?
enabled or HAnimHumanoid.motionsEnabled are false
all channels are disabled (perhaps rather a pause?)
frameIncrement < 0, forbidden but needs to be handled
startFrame > endFrame and loop = false

Is there a concept of an HAnimMotion being activated versus enabled ?
The case of all channels being disabled could be interpreted as a
playing, but static animation showing untransformed joints. This would
remove channel state as a condition above.

Presumably, an implementation could construct internal Interpolators,
TimeSensors and Routes for fairly complete coverage.
Something like:
Timesensor: duration = frameDuration * frameCount, loop = loop,
shorten to represent endFrame
Each Channel is an Interpolator: ARotation = OrientationInterpolator,
APosition = PositionInterpolator (combine sequential rotations or
positions into single Interpolator keyValues). keys are 0,
frameIncrement, 2*FrameIncrement .. frameCount or so.
Routes: from Timesensor to CombinedInterpolator to joint

The signature in
https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionNodes.html#MotionObject
is missing startFrame and endFrame although the description then
includes these fields. The tooltips noticed this.

What is the order of application of transformations described in
channels: presumably, left to right ? Rotations are sometimes applied
right to left.
There is no scale channel ?

Some thoughts,

Andreas



Date: Mon, 24 Jul 2023 12:03:24 +0200
From: Holger Seelig <holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)>
To: Joseph D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)>
Cc: X3D <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Subject: Re: [x3d-public] Stuck with getting HAnimMotion animation to
       run.
Message-ID: <780A4F0A-BB92-40BD-BFBB-9C7FAC78D326 at yahoo.de (mailto:780A4F0A-BB92-40BD-BFBB-9C7FAC78D326 at yahoo.de)>
Content-Type: text/plain; charset="utf-8"

I have taken https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html as working model to implement HAnimMotion. I have successfully created all interpolators, and if I simulate a run of these interpolators they play a nice animation.

What I do miss in HAnimMotion are startTime, stopTime, maybe pauseTime, resumeTime, isActive, isPaused fields from TimeSensor to start an animation.

Although HAnimMotion has next and previous input fields, but as far as I could read from the specification, these fields are only for stepping through the animation frame by frame.

There is another field frameIndex, when receiving an event, the interpolators should jump to this frame.

But with these existing fields no nice transitions from one frame to another can be made.

On the other hand it exists a elapsedTime field, but when nothing can be started this field would not output anything.

With the still missing TimeSensor fields, this would be possible. Going now a step further HAnimMotion can be derived from X3DTimeDependentNode, which will now make much sense.

Holger

--
Holger Seelig
Leipzig, Germany

holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)
https://create3000.github.io/x_ite/







Am 23.07.2023 um 22:23 schrieb Joseph D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)>:


Hi Holger,
I was able to run the bvh example when converted to x3d back when a long time ago. In Part 2 of
>From what I remember on this is that the source bvh animation only specifies a frame rate, or number of seconds between samples. So the x3d import must create a set of keys and organize the keyvalues. Since the keys are at the video frame rate, the key field gets very tedious. Also, the number of  keyvalues goes up fast with skeleton parts, since there tend to be most likely too many keyframes (in angles). Finally, this massive list of keys gets duplicated for every interpolator.
With this, how much greater could we possibly honor developers of interpolators and implementers of vrml and x3d interpolators than to somehow allow a way to ?DEF? a key field and reuse it in another interpolator. This would at least consolidate the code so could stand a chance to work on it.
Of course great number of key steps is not a issue for tools that just make video because they only make fixed steps to render the specific key and don?t interpolate.

Good Luck, Don has worked on this a lot including import of bvh skeleton and animation directly to HAnim. Most of the bvh speaks bones while x3d speaks joints. Remember, data for bone goes to parent joint.
Thanks,
Joe

From: Holger Seelig <mailto:holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)>
Sent: Saturday, July 22, 2023 11:26 AM
To: X3D <mailto:x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Subject: [x3d-public] Stuck with getting HAnimMotion animation to run.

I am not really clear how to start the animation of a HAnimMotion.  I am very hung up on how a TimeSensor works.

My understanding so far is that the animation is started when the HAnimMotion receives an enabled=true event and then runs to the end or starts over when loop=true.

I also guess that the next and previous events only have an effect if enabled=false, otherwise it wouldn't make sense with the previous assumptions.

I would be very happy if there was clarification on this.

Holger Seelig
Leipzig, Germany

holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de) <mailto:holger.seelig at yahoo.de (mailto:holger.seelig at yahoo.de)>
https://create3000.github.io/x_ite/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230724/2500d41f/attachment-0001.html>

------------------------------

Message: 2
Date: Mon, 24 Jul 2023 05:33:36 -0500
From: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>
To: "Brutzman, Donald (Don) (CIV)" <brutzman at nps.edu (mailto:brutzman at nps.edu)>
Cc: Michalis Kamburelis <michalis.kambi at gmail.com (mailto:michalis.kambi at gmail.com)>, Joseph D Williams
       <joedwil at earthlink.net (mailto:joedwil at earthlink.net)>,  X3D Graphics public mailing list
       <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Subject: Re: [x3d-public] JoeKick H-Anim example - error in X3D
       classic encoding
Message-ID:
       <CAGC3UEmcCN16x-ps+SJ_AiOeMuwGWdMr0WrFQ29qnk4JpmOKSw at mail.gmail.com (mailto:CAGC3UEmcCN16x-ps+SJ_AiOeMuwGWdMr0WrFQ29qnk4JpmOKSw at mail.gmail.com)>
Content-Type: text/plain; charset="utf-8"

You can get the same report from tovrmlx3d.exe, I think Don, see:

tovrmlx3d.exe next to the view3dscene.exe

Here is a small taste of what happens on a recent X3DV file:

$ ‾/Downloads/view3dscene-4.3.0-win64-x86_64/view3dscene/tovrmlx3d.exe
OutputDir/LeifRevised.x3dv 2>&1 |head
tovrmlx3d: Warning: HAnimHumanoid.joints list was empty, fixed to list all
54 joints
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 9 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 10 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 11 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 12 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 13 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 14 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 15 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 16 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)
tovrmlx3d: Warning: X3D: HAnimJoint.skinCoord references not existing
coordinate index 17 (while we have only 0 skin coordinates in
HAnimHumanoid.skin)

Fills the bill.

John

On Mon, Jul 24, 2023 at 3:19?AM Brutzman, Donald (Don) (CIV) <
brutzman at nps.edu (mailto:brutzman at nps.edu)> wrote:



1. Michalis, thanks for a great trouble report.



I believe the conversion errors are now fixed in X3dToVrml.xslt
stylesheet, updated model at



  -
  https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3dv



Unfortunately I discovered that a lot of type checking within that
stylesheet isn?t really effective due to a puzzling logic error, so there
may well be other errors like this.  More work will likely be needed.



Wondering if you have a command-line mode for validating VRML/ClassicVRML
models with view3dscene?  Perhaps I might be able to add that to our
regression testing build scripts.



2. Joe, it's your model, so please send any texture coordinate changes you
may have and I will update the .x3d model in the archives.



  -
  https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html
  -
  https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d



Meanwhile there are plenty of warnings from Schematron.  They seem
accurate.  The flagged parent-child relationships are either a problem in
the model, or else (less likely) a problem in the diagnostics (which are
autogenerated from X3DUOM).



I thought that possibly they are related to your use of loa=?3?
complexity, but diagnostics looked the same for loa=?4?.





--------- X3D Validator checks commenced for JoeKick.x3d ---------



Performing well-formed XML check...

Checking file:/C:/x3d-code/
www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d (http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d)...

Well-formed XML check: pass



Performing DOCTYPE check...

[X3dDoctypeChecker] success: valid XML declaration
found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.



Performing DTD validation...

Checking file:/C:/x3d-code/
www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d (http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d)...

XML DTD validation: pass



Performing X3D schema validation...

Checking file:/C:/x3d-code/
www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d (http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3d)...

Referenced entity at
http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd
.

Referenced entity at http://www.w3.org/2001/XMLSchema.dtd.

Referenced entity at http://www.w3.org/2001/datatypes.dtd.

XML schema validation: pass



Performing X3D regular expression (regex) values check...

X3D regex check: complete



Performing X3dToX3dvClassicVrmlEncoding.xslt conversion check...



Performing X3D Schematron check...

X3D version 4.0 is approved by Web3D Consortium and focused on
interoperability with HTML5, glTF2.0 Physically Based Rendering (PBR) and
Web Audio API, undergoing final administrative review by ISO in 2023.
[/X3D, diagnostic]

<meta name='TODO' content='Record information about skin coordinates
(found in comment at end of scene) as a structured MetadataSet containing
MetadataString nodes'/> [/X3D/head/meta[7], diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> version='2.0' with X3D
version='4.0' [/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

====================================================================================================================
[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node
count(HAnimJoint)           within skeleton hierarchy        =
94[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node
count(HAnimSegment)         within skeleton hierarchy        =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node
count(HAnimSite)            within HAnimHumanoid             =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node
count(HAnimSite//Viewpoint) within skeleton hierarchy        =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node
count(HAnimDisplacer)       within skeleton hierarchy        =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimJoint
USE='*' containerField = 'joints'/>)     =
94[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSegment
USE='*' containerField = 'segments'/>)   =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSite
USE='*' containerField = 'sites'/>)      =
1[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimHumanoid DEF='Joe_Kick' name='Kick'/> node count(<HAnimSite
DEF='*' name ends with '_view'/>)        =
0[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

====================================================================================================================
[/X3D/Scene/Group[1]/HAnimHumanoid, diagnostic]

<HAnimSite DEF='Joe_RootFront_view' name='RootFront_view'/> is not a
recognized name for HAnim2 HAnimSite
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimSegment/HAnimSite,
info]

<HAnimJoint DEF='Joe_l_tarsometatarsal_2' name='l_tarsometatarsal_2'/> has
parent HAnimJoint name='l_talocrural' rather than expected parent
name='l_cuneonavicular_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint,
warning]

<HAnimJoint DEF='Joe_l_tarsal_distal_interphalangeal_2'
name='l_tarsal_distal_interphalangeal_2'/> has parent HAnimJoint
name='l_metatarsophalangeal_2' rather than expected parent
name='l_tarsal_proximal_interphalangeal_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint,
warning]

<HAnimJoint DEF='Joe_r_tarsometatarsal_2' name='r_tarsometatarsal_2'/> has
parent HAnimJoint name='r_talocrural' rather than expected parent
name='r_cuneonavicular_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint,
warning]

<HAnimJoint DEF='Joe_r_tarsal_distal_interphalangeal_2'
name='r_tarsal_distal_interphalangeal_2'/> has parent HAnimJoint
name='r_metatarsophalangeal_2' rather than expected parent
name='r_tarsal_proximal_interphalangeal_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint,
warning]

<HAnimJoint DEF='Joe_l_acromioclavicular'/> name field is required
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2],
error]

<HAnimJoint DEF='Joe_l_acromioclavicular' name=''/> is not a recognized
name for HAnim2 HAnimJoint
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2],
warning]

<HAnimJoint DEF='Joe_l_sternoclavicular' name='l_acromioclavicular'/> DEF
value does not contain correctly modified version of name value (for
example, DEF='myPrefix_nameValue' e.g. DEF='myPrefix_l_acromioclavicular')
- see HAnim section C.2 Humanoid, VRML Binding
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint,
error]

<HAnimJoint DEF='Joe_l_sternoclavicular' name='l_acromioclavicular'/> has
parent HAnimJoint name='' rather than expected parent
name='l_sternoclavicular', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint,
warning]

<HAnimJoint DEF='Joe_l_carpometacarpal_1' name='l_carpometacarpal_1'/> has
parent HAnimJoint name='l_radiocarpal' rather than expected parent
name='l_midcarpal_1', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[1],
warning]

<HAnimJoint DEF='Joe_l_carpometacarpal_2' name='l_carpometacarpal_2'/> has
parent HAnimJoint name='l_radiocarpal' rather than expected parent
name='l_midcarpal_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2],
warning]

<HAnimJoint DEF='Joe_l_carpometacarpal_3' name='l_carpometacarpal_3'/> has
parent HAnimJoint name='l_radiocarpal' rather than expected parent
name='l_midcarpal_3', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3],
warning]

<HAnimJoint DEF='Joe_l_carpometacarpal_4' name='l_carpometacarpal_4'/> has
parent HAnimJoint name='l_radiocarpal' rather than expected parent
name='l_midcarpal_4_5', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[4],
warning]

<HAnimJoint DEF='Joe_l_carpometacarpal_5' name='l_carpometacarpal_5'/> has
parent HAnimJoint name='l_radiocarpal' rather than expected parent
name='l_midcarpal_4_5', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5],
warning]

<HAnimJoint DEF='Joe_r_carpometacarpal_1' name='r_carpometacarpal_1'/> has
parent HAnimJoint name='r_radiocarpal' rather than expected parent
name='r_midcarpal_1', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[1],
warning]

<HAnimJoint DEF='Joe_r_carpometacarpal_2' name='r_carpometacarpal_2'/> has
parent HAnimJoint name='r_radiocarpal' rather than expected parent
name='r_midcarpal_2', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[2],
warning]

<HAnimJoint DEF='Joe_r_carpometacarpal_3' name='r_carpometacarpal_3'/> has
parent HAnimJoint name='r_radiocarpal' rather than expected parent
name='r_midcarpal_3', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3],
warning]

<HAnimJoint DEF='Joe_r_carpometacarpal_4' name='r_carpometacarpal_4'/> has
parent HAnimJoint name='r_radiocarpal' rather than expected parent
name='r_midcarpal_4_5', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[4],
warning]

<HAnimJoint DEF='Joe_r_carpometacarpal_5' name='r_carpometacarpal_5'/> has
parent HAnimJoint name='r_radiocarpal' rather than expected parent
name='r_midcarpal_4_5', recommend checking model
[/X3D/Scene/Group[1]/HAnimHumanoid/HAnimJoint[1]/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint[5],
warning]



--------- X3D Validator checks complete for JoeKick.x3d ---------





all the best, Don

--

Don Brutzman  Naval Postgraduate School, Code USW/Br
brutzman at nps.edu (mailto:brutzman at nps.edu)

Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA
+1.831.656.2149

X3D graphics, virtual worlds, navy robotics
https://faculty.nps.edu/brutzman



-----Original Message-----
From: x3d-public <x3d-public-bounces at web3d.org (mailto:x3d-public-bounces at web3d.org)> On Behalf Of Michalis
Kamburelis
Sent: Sunday, July 23, 2023 1:44 PM
To: X3D Graphics public mailing list <x3d-public at web3d.org (mailto:x3d-public at web3d.org)>
Subject: [x3d-public] JoeKick H-Anim example - error in X3D classic
encoding



"Joe Kick" example linked from

https://www.web3d.org/x3d/content/examples/HumanoidAnimation/ ,
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKickIndex.html

, 2 errors:



1. The "ClassicVRML" encoding version (


https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/JoeKick.x3dv

) seems to be incorrectly converted from XML to classic encoding. It
contains



"""

DEF Joe_skull_tip_raiser_action HAnimDisplacer { coordIndex 0 1 2 3 4 5 6
7 8 9 displacements 0 0.15 0 0 ...

name "skull_tip_raiser_action"

}

"""



so the coordIndex and displacements fields miss [ ] around their values.



"coordIndex" is MFInt32, "displacements" is MFVec3f, they both require [ ]
in classic encoding if you want to have a list of arbitrary number of
elements. If no [ ] are used, the classic encoding parsers have to assume
they contain 1 item (1 integer on "coordIndex", 1 vector == 3 floats on
"displacements"). Currently parsing this fails, as parser sees unexpected
numbers in the middle of HAnimDisplacer.



This problem is not present in XML encoding, where no [ ] are used, the
lists are in separate XML attributes.



2. The XML encoding version contains invalid number of texture
coordinates, we have discussed in previously on this list:



X3D: Invalid number of items in an attribute array for shape

"Joe_Humanoid/Joe_Kick/Joe_Shape/IndexedFaceSet(Joe_skin_IndexedFaceSet)":

Invalid index: 9, but we have 4 items in 2D texture coordinates



Regards,

Michalis



_______________________________________________

x3d-public mailing list

x3d-public at web3d.org (mailto:x3d-public at web3d.org)

http://web3d.org/mailman/listinfo/x3d-public_web3d.org
_______________________________________________
x3d-public mailing list
x3d-public at web3d.org (mailto: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/20230724/df90f984/attachment.html>

------------------------------

Subject: Digest Footer

_______________________________________________
x3d-public mailing list
x3d-public at web3d.org (mailto:x3d-public at web3d.org)
http://web3d.org/mailman/listinfo/x3d-public_web3d.org


------------------------------

End of x3d-public Digest, Vol 172, Issue 93
*******************************************



-- 
Andreas Plesch
Waltham, MA 02453

_______________________________________________
x3d-public mailing list
x3d-public at web3d.org (mailto: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/20230729/112b8fc0/attachment-0001.html>


More information about the x3d-public mailing list