[x3d-public] Wrong type for default HAnimMotion.channels
Don Brutzman
brutzman at nps.edu
Sat Jun 20 10:47:12 PDT 2020
[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
More information about the x3d-public
mailing list