[x3d-public] Wrong type for default HAnimMotion.channels

John Carlson yottzumm at gmail.com
Sat Jun 20 13:29:07 PDT 2020


Don, also change examples in HAnim 2 standard, if there are any.

Thanks,

John

On Sat, Jun 20, 2020 at 12:47 PM Don Brutzman <brutzman at nps.edu> wrote:

> [added: HAnim working group]
>
> Hmmm, I think the comparison reveals a potential flaw in the
> specifications.
>
> On 6/18/2020 11:19 PM, J. Scheurich wrote:> HAnimMotion : X3DChildNode
>      SFString [in,out] channels         []
> >
> > Shouldnt it be
> > HAnimMotion : X3DChildNode
> >     SFString [in,out] channels         ""
>
> Default value [] corresponds to MFString, default value "" corresponds to
> SFString.  You've found a mismatch.
>
> Investigating further:
> ===================================================================
>
> [1] HAnim Part 2:  Humanoid animation (HAnim) motion data animation
>      6 HAnim motion data animation using Motion objects
>      6.3 Data structure of Motion object
>
> https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionNodes.html#MotionObject
>
>      interface Motion {
>          string             description      ""
>          string             channels         ""
>          sequence<Boolean>  channelsEnabled  []
>          double             cycleTime
>          double             elapsedTime
>          Boolean            enabled          false
>          int                frameCount       0     [0, ∞)
>          float              frameDuration    0.1   (0, ∞)
>          int                frameIncrement   1     (-∞, ∞)
>          int                frameIndex       0     [0, ∞)
>          string             joints           ""
>          integer            loa              -1    [-1,4]
>          Boolean            loop             false
>          Boolean            next
>          Boolean            previous
>          sequence<float>    values           []   (-∞,∞)
>      }
>
> "The channels field consists of a list, for each joint, of the number of
> channels for transformation, followed by the transformation type of each
> channel of data for that joint. Each value shall be separated by a comma
> and/or one or more spaces. Channels within a given Motion object are
> enabled by default, unless otherwise indicated by the corresponding Boolean
> entry in the channelsEnabled field."
> ===================================================================
>
> [2] X3D4 Part 1: Architecture and base components
>      26 Humanoid Animation (HAnimH-Anim) component
>      26.3.4 HAnimMotion
>
> HAnimMotion : X3DChildNode {
>    SFString [in,out] channels         []
>    MFBool   [in,out] channelsEnabled  []
>    SFTime   [out]    cycleTime
>    SFString [in,out] description      ""
>    SFTime   [out]    elapsedTime      (0,∞)
>    SFBool   [in,out] enabled          TRUE
>    SFInt32  [out]    frameCount                           [0,∞)
>    SFTime   [in,out] frameDuration    0.1                 (0,∞)
>    SFInt32  [in,out] frameIncrement   1                   (-∞,∞)
>    SFInt32  [in,out] frameIndex       0                   (0,∞)
>    MFString [in,out] joints           []
>    SFInt32  [in,out] loa              -1                  [-1,4]
>    SFBool   [in,out] loop             false
>    SFNode   [in,out] metadata         NULL
> [X3DMetadataObject]
>    SFBool   [in]     next
>    SFBool   [in]     previous
>    MFFloat  [in,out] values           []                  (-∞,∞)
> }
> ===================================================================
>
> The HAnim2 specification is the governing reference.
>
> It appears crystal clear that the channels field is a list.
>
> Therefore you have found an important error - great work!  As remedy, we
> should have the following interface definitions:
>
> HAnim2 change:
>
>          string             channels         ""
> to
>          sequence<string>   channels         ""
>
> and corresponding X3D4 change:
>
>          SFString [in,out]  channels         []
> to
>          MFString [in,out]  channels         []
>
> Meanwhile it looks like the corresponding channelsEnabled field is
> properly defined, and having both fields (channels and channelsEnabled) as
> matching list/MF array types simplifies implementation considerably.
>
> Looking forward to review and confirmation, improvement and resolution.
> Have entered a pair of Mantis issues needed to correct each specification:
>
> [3] Mantis 1311: Incorrect type defined for HAnimMotion channels field in
> HAnim2
>      https://www.web3d.org/member-only/mantis/view.php?id=1311
>
> [4] Mantis 1312: Mismatched type defined for HAnimMotion channels field in
> X3D4
>      https://www.web3d.org/member-only/mantis/view.php?id=1312
>
> As ever, we continue review discussion of issues on mailing lists, and the
> specification editors use Mantis issue to track consensus and resolution of
> changes.
>
> Thanks for reporting this problem.  Good luck with further
> implementation/evaluation efforts (of cool content!) to confirm/improve the
> HAnim2 and X3D4 specifications.
>
> 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
> http://faculty.nps.edu/brutzman
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200620/7f507d50/attachment-0001.html>


More information about the x3d-public mailing list