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

Brutzman, Donald (Don) (CIV) brutzman at nps.edu
Thu Jul 27 02:40:28 PDT 2023


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/Pa
rt01/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

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> On Behalf Of Holger Seelig
Sent: Thursday, July 27, 2023 12:06 AM
To: Andreas Plesch <andreasplesch at gmail.com>
Cc: X3D <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/Pa
rt01/components/hanim.html#HAnimMotion

and

https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimatio
n/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/MotionDataAnimatio
n/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>
Sent: Saturday, July 22, 2023 11:26 AM
To: X3D <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>
https://create3000.github.io/x_ite/


-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230724/2500d4
1f/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/JoeKickInd
ex.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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[2]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/HA
nimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/H
AnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/
HAnimJoint/HAnimJoint[3]/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJoint/HAnimJo
int[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/JoeKickInd
ex.html

, 2 errors:



1. The "ClassicVRML" encoding version (


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

) 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/df90f9
84/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/20230727/4754adea/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5464 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20230727/4754adea/attachment-0001.p7s>


More information about the x3d-public mailing list