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

Andreas Plesch andreasplesch at gmail.com
Thu Jul 27 16:48:11 PDT 2023


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> 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
> https://create3000.github.io/x_ite/
>
> Am 27.07.2023 um 11:40 schrieb Brutzman, Donald (Don) (CIV) <
> 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 (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
> https://create3000.github.io/x_ite/
>
>
> Am 24.07.2023 um 18:30 schrieb Andreas Plesch <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>
> To: Joseph D Williams <joedwil at earthlink.net>
> Cc: X3D <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>
> 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
> https://create3000.github.io/x_ite/
>
>
>
>
>
>
> Am 23.07.2023 um 22:23 schrieb Joseph D Williams <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
> <holger.seelig at yahoo.de>>
> Sent: Saturday, July 22, 2023 11:26 AM
> To: X3D <mailto:x3d-public at web3d.org <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
> <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>
> To: "Brutzman, Donald (Don) (CIV)" <brutzman at nps.edu>
> Cc: Michalis Kamburelis <michalis.kambi at gmail.com>, Joseph D Williams
>        <joedwil at earthlink.net>,  X3D Graphics public mailing list
>        <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
> >
> 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> 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...
>
> 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...
>
> XML DTD validation: pass
>
>
>
> Performing X3D schema validation...
>
> Checking file:/C:/x3d-code/
> 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
>
> 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> On Behalf Of Michalis
> Kamburelis
> Sent: Sunday, July 23, 2023 1:44 PM
> To: X3D Graphics public mailing list <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
>
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> _______________________________________________
> 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/20230724/df90f984/attachment.html
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> x3d-public mailing list
> 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
> 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/48120705/attachment-0001.html>


More information about the x3d-public mailing list