<div><div dir="auto">Looks good.</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 Sun, Jun 21, 2020 at 10:04 AM Don Brutzman <<a href="mailto:brutzman@nps.edu">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)">I have cleaned up the new Mantis issues as follows.<br>
<br>
====================================================================================<br>
* Mantis 1311: Check type definitions for HAnimMotion channels field and joints field in<br>
<br>
HAnimMotion channels field and joints field are defined as type string, as best match for somewhat-complex data structures.<br>
<br>
It will be helpful to confirm these data types as part of defining the mapping to X3D data types.  HAnim2 specification prose and examples provide the authoritative explanation.<br>
<br>
     interface Motion {<br>
         string description ""<br>
         string channels ""<br>
         sequence<Boolean> channelsEnabled []<br>
<br>
         string joints ""<br>
<br>
No inconsistencies identified for HAnim2.<br>
<br>
====================================================================================<br>
<br>
* Mantis 1312: Mismatched type defaults defined for HAnimMotion channels field in X3D4<br>
<br>
HAnimMotion channels field and joints field are defined as type SFString but have MFString default values [] instead. Need to make these consistent.<br>
<br>
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>
<br>
   MFString [in,out] joints []<br>
<br>
etc.<br>
----------------------<br>
<br>
1. Default value change needed:<br>
<br>
   SFString [in,out] channels []<br>
<br>
to<br>
<br>
   SFString [in,out] channels ""<br>
<br>
----------------------<br>
<br>
2. X3D4 design decision needed:<br>
<br>
Utilize list data structure, permitting validation of joint names:<br>
<br>
   MFString [in,out] joints []<br>
<br>
or else map identically to plain-string HAnim2 specification:<br>
<br>
   SFString [in,out] joints ""<br>
<br>
====================================================================================<br>
<br>
Hopefully we are zeroed in on the appropriate remedies now.<br>
<br>
<br>
On 6/20/2020 2:51 PM, Don Brutzman wrote:<br>
> Good catch John, I was all confused in the last post.  Sorry about that!<br>
> <br>
> Let's look at an excerpt from the spec example.<br>
> <br>
> * HAnim2 Part 2:  Humanoid animation (HAnim) motion data animation<br>
>    Annex D, Examples of HAnim motion data animation using a Motion object<br>
>    D.2 Example with equal joint numbers<br>
>    <a href="https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/ExampleMocapAnimationMotionObject.html" rel="noreferrer" target="_blank">https://www.web3d.org/documents/specifications/19774/V2.0/MotionDataAnimation/ExampleMocapAnimationMotionObject.html</a><br>
> <br>
>    <HAnimMotion frameCount="392" frameTime = "0.033333"<br>
> <br>
>               joints="HumanoidRoot, l_hip, l_knee, l_talocrural, r_hip,<br>
>                     r_knee, r_talocrural, vl5, IGNORED, l_shoulder,<br>
>                     l_elbow, l_radiocarpal, IGNORED, r_shoulder, r_elbow,<br>
>                     r_radiocarpal, IGNORED, skullbase"<br>
> <br>
>               channels="6 Xposition Yposition Zposition Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation<br>
>                       3 Zrotation Xrotation Yrotation"<br>
> <br>
> etc.<br>
> <br>
> As this shows, the joints field is a list of name values, and the channels field is a complex description that comes from the original BVH definitions.<br>
> <br>
> We could have made the joints field an MFString, but didn't.<br>
> <br>
> We could have made the channels field an MFString, but didn't - too complex, not regular, mix of strings and integers.<br>
> <br>
> Clearly tool support will be needed to parse and produce these properly.<br>
> <br>
> We can probably add some utility methods to our APIs such as addChannel(), validate() etc.<br>
> <br>
> So perhaps the only error is simply what MUFTI pointed out in the first place, the default for empty SFString should be "" rather than empty [] array.  Apologies for swerving in the wrong direction.<br>
> <br>
> Taking a break now.  Happy Father's Day!<br>
> <br>
> <br>
> <br>
> On 6/20/2020 2:19 PM, John Carlson wrote:<br>
>> Again, I don’t have an issue with the HAnim standard as it stands.   I have a problem with syncing up the standard with the schema.<br>
>><br>
>> On Sat, Jun 20, 2020 at 4:10 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a> <mailto:<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>> wrote:<br>
>><br>
>>     I believe that there’s a similar issue with joints? I’m on my back so it’s it hard to check.<br>
>><br>
>>     We’ve been through this before.<br>
>><br>
>>     joints should be sequence<string> or just string?<br>
>><br>
>>     John<br>
>><br>
>>     On Sat, Jun 20, 2020 at 3:29 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a> <mailto:<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>>> wrote:<br>
>><br>
>>         Don, also change examples in HAnim 2 standard, if there are any.<br>
>><br>
>>         Thanks,<br>
>><br>
>>         John<br>
>><br>
>>         On Sat, Jun 20, 2020 at 12:47 PM Don Brutzman <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a> <mailto:<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>>> wrote:<br>
>><br>
>>             [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>
>>             --             Don Brutzman  Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a> <mailto:<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>
>><br>
> <br>
> all the best, Don<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></div>