<div><div dir="auto">I believe that there’s a similar issue with joints? I’m on my back so it’s it hard to check.</div><div dir="auto"><br></div><div dir="auto">We’ve been through this before. </div><div dir="auto"><br></div><div dir="auto">joints should be sequence<string> or just string?</div><div dir="auto"><br></div><div dir="auto">John</div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jun 20, 2020 at 3:29 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr">Don, also change examples in HAnim 2 standard, if there are any.<div><br></div><div>Thanks,</div><div><br></div><div>John</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jun 20, 2020 at 12:47 PM Don Brutzman <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">[added: HAnim working group]<br>
<br>
Hmmm, I think the comparison reveals a potential flaw in the specifications.<br>
<br>
On 6/18/2020 11:19 PM, J. Scheurich wrote:> HAnimMotion : X3DChildNode<br>
  Â  Â SFString [in,out] channels  Â  Â  Â  Â []<br>
> <br>
> Shouldnt it be<br>
> HAnimMotion : X3DChildNode<br>
>  Â  Â SFString [in,out] channels  Â  Â  Â  Â ""<br>
<br>
Default value [] corresponds to MFString, default value "" corresponds to SFString.  You've found a mismatch.<br>
<br>
Investigating further:<br>
===================================================================<br>
<br>
[1] HAnim Part 2:  Humanoid animation (HAnim) motion data animation<br>
  Â  Â 6 HAnim motion data animation using Motion objects<br>
  Â  Â 6.3 Data structure of Motion object<br>
  Â  Â <a href="https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionNodes.html#MotionObject" rel="noreferrer" target="_blank">https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/MotionNodes.html#MotionObject</a><br>
<br>
  Â  Â interface Motion {<br>
  Â  Â  Â  Â string  Â  Â  Â  Â  Â  Â description  Â  Â  ""<br>
  Â  Â  Â  Â string  Â  Â  Â  Â  Â  Â channels  Â  Â  Â  Â ""<br>
  Â  Â  Â  Â sequence<Boolean>  channelsEnabled  []<br>
  Â  Â  Â  Â double  Â  Â  Â  Â  Â  Â cycleTime<br>
  Â  Â  Â  Â double  Â  Â  Â  Â  Â  Â elapsedTime<br>
  Â  Â  Â  Â Boolean  Â  Â  Â  Â  Â  enabled  Â  Â  Â  Â  false<br>
  Â  Â  Â  Â int  Â  Â  Â  Â  Â  Â  Â  frameCount  Â  Â  Â 0  Â  Â [0, âˆž)<br>
  Â  Â  Â  Â float  Â  Â  Â  Â  Â  Â  frameDuration  Â  0.1  Â (0, âˆž)<br>
  Â  Â  Â  Â int  Â  Â  Â  Â  Â  Â  Â  frameIncrement  Â 1  Â  Â (-∞, âˆž)<br>
  Â  Â  Â  Â int  Â  Â  Â  Â  Â  Â  Â  frameIndex  Â  Â  Â 0  Â  Â [0, âˆž)<br>
  Â  Â  Â  Â string  Â  Â  Â  Â  Â  Â joints  Â  Â  Â  Â  Â ""<br>
  Â  Â  Â  Â integer  Â  Â  Â  Â  Â  loa  Â  Â  Â  Â  Â  Â  -1  Â  [-1,4]<br>
  Â  Â  Â  Â Boolean  Â  Â  Â  Â  Â  loop  Â  Â  Â  Â  Â  Â false<br>
  Â  Â  Â  Â Boolean  Â  Â  Â  Â  Â  next<br>
  Â  Â  Â  Â Boolean  Â  Â  Â  Â  Â  previous<br>
  Â  Â  Â  Â sequence<float>  Â  values  Â  Â  Â  Â  Â []  Â (-∞,∞)<br>
  Â  Â }<br>
<br>
"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."<br>
===================================================================<br>
<br>
[2] X3D4 Part 1: Architecture and base components<br>
  Â  Â 26 Humanoid Animation (HAnimH-Anim) component<br>
  Â  Â 26.3.4 HAnimMotion<br>
<br>
HAnimMotion : X3DChildNode {<br>
  Â SFString [in,out] channels  Â  Â  Â  Â []<br>
  Â MFBool  Â [in,out] channelsEnabled  []<br>
  Â SFTime  Â [out]  Â  cycleTime<br>
  Â SFString [in,out] description  Â  Â  ""<br>
  Â SFTime  Â [out]  Â  elapsedTime  Â  Â  (0,∞)<br>
  Â SFBool  Â [in,out] enabled  Â  Â  Â  Â  TRUE<br>
  Â SFInt32  [out]  Â  frameCount  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â [0,∞)<br>
  Â SFTime  Â [in,out] frameDuration  Â  0.1  Â  Â  Â  Â  Â  Â  Â  Â (0,∞)<br>
  Â SFInt32  [in,out] frameIncrement  Â 1  Â  Â  Â  Â  Â  Â  Â  Â  Â (-∞,∞)<br>
  Â SFInt32  [in,out] frameIndex  Â  Â  Â 0  Â  Â  Â  Â  Â  Â  Â  Â  Â (0,∞)<br>
  Â MFString [in,out] joints  Â  Â  Â  Â  Â []<br>
  Â SFInt32  [in,out] loa  Â  Â  Â  Â  Â  Â  -1  Â  Â  Â  Â  Â  Â  Â  Â  [-1,4]<br>
  Â SFBool  Â [in,out] loop  Â  Â  Â  Â  Â  Â false<br>
  Â SFNode  Â [in,out] metadata  Â  Â  Â  Â NULL  Â  Â  Â  Â  Â  Â  Â  [X3DMetadataObject]<br>
  Â SFBool  Â [in]  Â  Â next<br>
  Â SFBool  Â [in]  Â  Â previous<br>
  Â MFFloat  [in,out] values  Â  Â  Â  Â  Â []  Â  Â  Â  Â  Â  Â  Â  Â  (-∞,∞)<br>
}<br>
===================================================================<br>
<br>
The HAnim2 specification is the governing reference.<br>
<br>
It appears crystal clear that the channels field is a list.<br>
<br>
Therefore you have found an important error - great work!  As remedy, we should have the following interface definitions:<br>
<br>
HAnim2 change:<br>
<br>
  Â  Â  Â  Â string  Â  Â  Â  Â  Â  Â channels  Â  Â  Â  Â ""<br>
to<br>
  Â  Â  Â  Â sequence<string>  Â channels  Â  Â  Â  Â ""<br>
<br>
and corresponding X3D4 change:<br>
<br>
  Â  Â  Â  Â SFString [in,out]  channels  Â  Â  Â  Â []<br>
to<br>
  Â  Â  Â  Â MFString [in,out]  channels  Â  Â  Â  Â []<br>
<br>
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.<br>
<br>
Looking forward to review and confirmation, improvement and resolution.  Have entered a pair of Mantis issues needed to correct each specification:<br>
<br>
[3] Mantis 1311: Incorrect type defined for HAnimMotion channels field in HAnim2<br>
  Â  Â <a href="https://www.web3d.org/member-only/mantis/view.php?id=1311" rel="noreferrer" target="_blank">https://www.web3d.org/member-only/mantis/view.php?id=1311</a><br>
<br>
[4] Mantis 1312: Mismatched type defined for HAnimMotion channels field in X3D4<br>
  Â  Â <a href="https://www.web3d.org/member-only/mantis/view.php?id=1312" rel="noreferrer" target="_blank">https://www.web3d.org/member-only/mantis/view.php?id=1312</a><br>
<br>
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.<br>
<br>
Thanks for reporting this problem.  Good luck with further implementation/evaluation efforts (of cool content!) to confirm/improve the HAnim2 and X3D4 specifications.<br>
<br>
all the best, Don<br>
-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br  Â  Â  Â <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA  Â +1.831.656.2149<br>
X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman" rel="noreferrer" target="_blank">http://faculty.nps.edu/brutzman</a><br>
</blockquote></div>
</blockquote></div></div>