<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Now, how do I build an army of 500 soldiers at a parade?  Or a demonstration of 500 people?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Thursday, November 29, 2018 12:18 AM<br><b>To: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Cc: </b><a href="mailto:h-anim@web3d.org">Humanoid Animation (H-Anim) Working Group</a>; <a href="mailto:joedwil@earthlink.net">Joe D Williams</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] HAnim and glTF skins</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Perhaps now is the time for doing benchmarking among implementations? Looks good! Can someone point me out an exampl which could use an X3D JSON scripting environment. PROTOs?</p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><div><div><p class=MsoNormal>On Wed, Nov 28, 2018 at 2:51 PM Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>> wrote:</p></div></div></div></div><p class=MsoNormal style='margin-left:4.8pt'>A short update after Joe and me had a good discussion on the phone.<br><br>We could trace back the origins of the new JointBinding fields and<br>confirm that they are meant to align an initially incompatible<br>geometry with a given animation of a skeleton. I am more confident now<br>that these fields essentially correspond to the InverseBindMatrix of<br>glTF skins.<br><br>With regards to the relationship of the SkinBindingCoords field to the<br>SkinCoord field, we felt it is possible that only one or the other<br>should be used. This may still need some additional digging.<br><br>We also discussed how similar glTF skinning is to HAnim skinning. For<br>example, glTF skinning also requires a binding of one or multiple<br>weighted joint (trafos) for each single vertex in a skin. in glTF,<br>this binding occurs in the JOINT_0 vertex attribute of a mesh, whereas<br>in HAnim the binding occurs in the skinCoordIndex field of a joint.<br><br>x3dom now supports skinned animation in the dev build. Here are a few<br>examples: <a href="http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html" target="_blank">http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html</a><br>(BoxMan and Kicker are skinned).<br><br>Other links:<br><a href="http://www.web3d.org/documents/specifications/19774-1/V2.0/HAnim/ObjectInterfaces.html#Humanoid" target="_blank">http://www.web3d.org/documents/specifications/19774-1/V2.0/HAnim/ObjectInterfaces.html#Humanoid</a><br>(sequence<float[4]> skinBindingNormals should be float[3] )<br><br><a href="https://github.com/andreasplesch/x3dom/wiki/HAnim-and-glTF-skins" target="_blank">https://github.com/andreasplesch/x3dom/wiki/HAnim-and-glTF-skins</a><br><br>has now a complete, and working conversion of a simple glTF skinned<br>animation to HAnim. Since the conversion is using HAnim 1.0, instead<br>of the jointBinding fields, it is using an inner Joint to apply a<br>binding transform. I think it works well.<br><br>I may do another manual conversion of another simple glTF example.<br><br>The main issue with going further on x3dom is now that the skinned<br>deformation per vertex is currently done in js arrays on the CPU while<br>the glTF support is using directly the binary vertex data on the GPU.<br>So it may become necessary to move the skinning in x3dom also to the<br>GPU which requires uploading additional buffers and deeper<br>adjustments, and therefore investment. The alternative is to not use<br>BufferGeometry and translate to IndexedTriangleSet (et al.) which is<br>not very attractive.<br><br>-Andreas<br><br><br><br><br><br><br><br><br><br>On Tue, Nov 27, 2018 at 2:51 AM Joseph D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:<br>><br>> I think we should get together on the phone and discuss. Let’s try and use the web3d conf line sometime. Wed at 5 pacific or Mondays at 3 has worked.<br>><br>> Each vertex of a skin has to be bound to the appropriate skeleton parts.<br>><br>> Thanks and Best,<br>><br>> Joe<br>><br>><br>><br>><br>><br>> Sent from Mail for Windows 10<br>><br>><br>><br>> From: Andreas Plesch<br>> Sent: Monday, November 26, 2018 10:37 AM<br>> To: Michalis Kamburelis<br>> Cc: X3D Graphics public mailing list<br>> Subject: Re: [x3d-public] HAnim and glTF skins<br>><br>><br>><br>> I figured out by now that these fields were added for HAnim 2.0<br>><br>> whereas X3D V3.3 uses HAnim 1.0 .<br>><br>><br>><br>> I think the idea is that you have a skeleton of joints with animation<br>><br>> data designed for it but the actual initial geometry is designed for<br>><br>> another initial state (pose). Then you can either redo the skeleton<br>><br>> and animation, redo the geometry, or apply a first ('binding')<br>><br>> transform to get the geometry into the state expected by the animated<br>><br>> joint transforms. This first transform would be defined by the<br>><br>> jointBinding fields, or as an inner joint in the skeleton's joint<br>><br>> hierarchy.<br>><br>><br>><br>> I think these fields are similar to glTF's inverseBindingMatrix which<br>><br>> is also defined for each joint, and is applied to initial vertex<br>><br>> positions. So in order to play glTF skinned animations, it would make<br>><br>> more sense to implement these fields rather than finding a singular<br>><br>> solution.<br>><br>><br>><br>> It is unclear to me how skinCoord and skinBindingCoord interrelate,<br>><br>> and why non-humanoids are supposed to use those. Probably because it<br>><br>> is common to have this initial binding step rather than compatible<br>><br>> skeletons and geometry in the first place.<br>><br>><br>><br>> Hopefully somebody can correct all the mistakes and misunderstandings<br>><br>> just offered above :)<br>><br>><br>><br>> -Andreas<br>><br>><br>><br>> _______________________________________________<br>><br>> x3d-public mailing list<br>><br>> <a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>><br>> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>><br>><br><br><br><br>--<br>Andreas Plesch<br>Waltham, MA 02453<br><br>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>