<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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.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;}
/* List Definitions */
@list l0
        {mso-list-id:20206210;
        mso-list-type:hybrid;
        mso-list-template-ids:501797800 -1 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1019821239;
        mso-list-type:hybrid;
        mso-list-template-ids:-610110456 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:Calibri;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi John, </p><p class=MsoNormal>Skin is the same in V1 and V2.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html">http://andreasplesch.github.io/Library/Models/HAnim/x3d/InlineViewer.html</a></p><p class=MsoNormal> </p><p class=MsoNormal>The way I saw it, the show that Andreas linked to showed both boxman and kicker as ‘skin’ animations.</p><p class=MsoNormal>The Jin model uses segment geometry.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>A GPU is not required, All this stuff worked before high perf graphics cards.</p><p class=MsoNormal>Since acceleration, most tools will do some optimization aimed at the runtime platform. </p><p class=MsoNormal>The gltf “conversion” of the vertex-actuator-weight data structure just optimizes it for the GPU.</p><p class=MsoNormal>So, I don’t even understand what step 3 is except to get some stuff closer to the metal and it will be hard to understand until we understand the basic data structures for hanim. </p><p class=MsoNormal>And hey, don’t forget we are not doing anything really new here, just using established industry best practices for data types and relationships in a targeted named hierarchical structure. Wherever you look you will find the same stuff with probably a different name or maybe even hidden from the author.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Andreas:</p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l1 level1 lfo2'>Implementing HAnim vertex wise deformation ultimately needs to be in vertex shaders. This may actually mean using a glTF skin representation since it is perhaps more shader friendly.<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please don’t mess with the hanim user code syntax. Sure, the gltf skin representation may be best for a certain runtime but the hanim syntax is the best for authoring and documentation. It would be up to the runtime to take the x3d and reformat it for the target hw. Figuring out how to import the gltf is the important part, not changing x3d hanim syntax.</p><p class=MsoNormal>Thanks, </p><p class=MsoNormal>Joe</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 10:17 AM<br><b>To: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</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><p class=MsoNormal>Thanks Joseph, I missed the exact wording.  What I wanted to say was x3dom doesn’t support H-Anim 2 skinned deformation. I’m guessing however that one of BoxMan or Kicker is H-Anim 2.0.   Can you clarify? In any case conversion to GPU is still required (for performance) it seems for H-Anim 2.0?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>What tasks are left over?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Conversion tests for JSON.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Schema tests for X3D JSON<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Conversion to GPU (this is what I’m trying to get you guys to define more clearly).<o:p></o:p></li></ol><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Searching a bit more might reveal some source code we could use.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></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<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Sent: </b>Thursday, November 29, 2018 8:34 AM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] HAnim and glTF skins<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>My interest was in supporting animation in glTF inlines  in x3dom. With basic animation pretty much solved as TimeSensor/Interpolator/Route combos, the next step is skinned animation. Since HAnim is actually not strictly limited to humanoids (if the H is ignored), it appears more and more feasible to use it to represent glTF skins and skeletons in a fairly complete manner. At least this is what my first manual translations suggest. I am not familiar with other skinned animation systems but most can export glTF.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Another feature in glTF are morph targets which are independent of skins. They are similar to HAnim displacers but I have not looked very closely if it is possible to define a mapping between them.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>One difference is that morph targets can be used outside of a joint hierarchy (skeleton) in glTF whereas displacers are confined to joints and segments within a x3d skeleton. Until displacers are released into the wild, it would mean that glTF meshes with morph targets have to be wrapped in a humanoid node. This seems possible. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Implementing HAnim vertex wise deformation ultimately needs to be in vertex shaders. This may actually mean using a glTF skin representation since it is perhaps more shader friendly.<o:p></o:p></p></div><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>-Andreas<o:p></o:p></p></div><div><div><div><div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>---on the phone---<o:p></o:p></p></div></div></div></div></div></div></div></div><p class=MsoNormal style='margin-left:4.8pt'><br>Date: Wed, 28 Nov 2018 16:35:17 -0800<br>From: Leonard Daly <<a href="mailto:Leonard.Daly@realism.com" target="_blank">Leonard.Daly@realism.com</a>><br>To: <a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>Subject: Re: [x3d-public] HAnim and glTF skins<br>Message-ID: <<a href="mailto:20125083-023f-b96a-6586-ab8e6d3ea128@realism.com" target="_blank">20125083-023f-b96a-6586-ab8e6d3ea128@realism.com</a>><br>Content-Type: text/plain; charset="utf-8"; Format="flowed"<br><br>Andreas,<br><br>I have read all of the messages with this subject. I am responding to <br>the first one because I think that is best where my question arises.<br><br>Are you working on an understanding and implementation of H-Anim skinned <br>animation in X3D or the more general animation of skinned surfaces that <br>is done in Maya/Blender/+ in most every other application/use?<br><br>If you are doing the more general case would it make more sense to get a <br>good understanding of the process and work-flow that is used in those <br>applications and practices?<br><br>If the intent is to use H-Anim with X3D, you will need to resolve the <br>differences between X3D V3.3/H-Anim V1.0 and X3D V4 (not yet in <br>existence)/H-Anim V2.0 (perhaps); as you have noted in one of the other <br>messages in this chain.<br><br><br>Leonard Daly<br><br><br>> I am collecting information on these skinning systems here:<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>> [This is a editable wiki if anybody wants to add to it]<br>><br>> It looks like the less well known<br>><br>> jointBindingPositions/Rotations/Scales and skinBindingCoords/Normals<br>><br>> fields used for non-humanoid skeletons may be useful but I am not<br>> certain how to interprete those fields. Castle may not implement those<br>> as a search did not find a match ?<br>><br>> My understanding is that the transformation matrix defined by these<br>> fields needs to applied before joint trafos are applied. But to which<br>> vertices ? The ones listed in skinBindingCoords for sure (if they are<br>> indexed by skinIndex field in the joint) but how does<br>> skinBindingCoords and skinCoords field interact ? Does the<br>> skinBindingCoords field take precedence ? But why then have both<br>> fields in the first place ?<br>><br>> Could the jointBinding fields equivalently be replaced by a sub-Joint<br>> node under the joint the fields map to ?<br>><br>> Is there an example using these fields ?<br>><br>> Thanks,<br>><br>> -Andreas<br>><br>><br>><br>><br><br>-- <br>*Leonard Daly*<br>3D Systems & Cloud Consultant<br>LA ACM SIGGRAPH Past Chair<br>President, Daly Realism - /Creating the Future/<br>-------------- next part --------------<br>An HTML attachment was scrubbed...<br>URL: <<a href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20181128/f49fe788/attachment-0001.html" target="_blank">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20181128/f49fe788/attachment-0001.html</a>><br><br>------------------------------<br><br><br>From: Leonard Daly<br>Sent: Wednesday, November 28, 2018 4:35 PM<br>To: <a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>Subject: Re: [x3d-public] HAnim and glTF skins<br><br>Andreas,<br><br>I have read all of the messages with this subject. I am responding to the first one because I think that is best where my question arises.<br><br>Are you working on an understanding and implementation of H-Anim skinned animation in X3D or the more general animation of skinned surfaces that is done in Maya/Blender/+ in most every other application/use?<br><br>If you are doing the more general case would it make more sense to get a good understanding of the process and work-flow that is used in those applications and practices? <br><br>If the intent is to use H-Anim with X3D, you will need to resolve the differences between X3D V3.3/H-Anim V1.0 and X3D V4 (not yet in existence)/H-Anim V2.0 (perhaps); as you have noted in one of the other messages in this chain.<br><br><br>Leonard Daly<br><br>I am collecting information on these skinning systems here:<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>[This is a editable wiki if anybody wants to add to it]<br><br>It looks like the less well known<br><br>jointBindingPositions/Rotations/Scales and skinBindingCoords/Normals<br><br>fields used for non-humanoid skeletons may be useful but I am not<br>certain how to interprete those fields. Castle may not implement those<br>as a search did not find a match ?<br><br>My understanding is that the transformation matrix defined by these<br>fields needs to applied before joint trafos are applied. But to which<br>vertices ? The ones listed in skinBindingCoords for sure (if they are<br>indexed by skinIndex field in the joint) but how does<br>skinBindingCoords and skinCoords field interact ? Does the<br>skinBindingCoords field take precedence ? But why then have both<br>fields in the first place ?<br><br>Could the jointBinding fields equivalently be replaced by a sub-Joint<br>node under the joint the fields map to ?<br><br>Is there an example using these fields ?<br><br>Thanks,<br><br>-Andreas<br><br><br><br><br><br>-- <br>Leonard Daly<br>3D Systems & Cloud Consultant<br>LA ACM SIGGRAPH Past Chair<br>President, Daly Realism - Creating the Future <br><br>-------------- next part --------------<br>An HTML attachment was scrubbed...<br>URL: <<a href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20181128/d30e39f7/attachment.html" target="_blank">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20181128/d30e39f7/attachment.html</a>><br><br>------------------------------<br><br>Subject: Digest Footer<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><br><br><br>------------------------------<br><br>End of x3d-public Digest, Vol 116, Issue 52<br>*******************************************<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>