<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;}
/* List Definitions */
@list l0
{mso-list-id:568540431;
mso-list-template-ids:-1;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>The point is not scripting, most of hanim can work with a simple hierarchy and rotation interpolators. In simple hanim, the geometry is child of a segment which is a child of a joint. The parent joint is rotated then the child joint, segment, any geometry, and site hierarchy moves as expected. That is why the basic hanim can be easily created from x3d prototypes with no need for scripting. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Seems like the tough part is making the seamless continuous-mesh skin work. This is done by binding each skin vertex to one or more joints, then moving individual skin vertices a weighted function according to rotation of the controlling joint(s). There is not really any similar feature in basic x3d so much scripting is needed even to create a prototype (see Boxman). Obviously this works much nicer if the script is great fast code deep in the browser. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The capability for this in a modern authoring system is fundamental and included in the basics of animation. For starters, you either morph shapes or, really the most fun, is to create an armature (skeleton) and use some algorithm to move a geometry according to movements of the armature. Then add some morph stuff for fine detail. Most times the most carefully guarded secrets of the animator is creating the skeleton-skin and morph bindings. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>HAnim covers both these styles of animation. It is this data that allows animations to be exported from authoring systems, reused and shared. At the time, I guess it was decided to implement this form of animation under Humanoid rather than individual objects in basic x3d. That is also the reason why the deformable skin part of hanim is not prototyped from standard x3d features and needs quite fast and intelligent scripting to get it working in realtime. For any reasonable use, all the computation must be built into the most basic structures of the browser. I don’t know, it might be tough because in the x3d hierarchy there is nothing basic about moving one or more things (vertices) according to the movement of one or more things (joints) plus keeping careful track of those things frame-to-frame. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So you can see that hanim is built upon basics of x3d and that the hanim skeleton-driven deformable skin functionality, and the spacetime-driven morph technique shown in the hanim Displacer node, should perhaps be available in fairly basic x3d. HAnim sort of hijacked the basic functionality of making a snake-like thing or any other skeleton type with a continuous mesh surface. It is preferable to animate features of a geometry in a scene using the combination of a set of ‘joints’ that controls a continuous-mesh geometry ‘skin’ (Seamless) instead of the sometimes clumsy method of using a set of separate geometries (often having seams at intersections) for the animated shape . </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think it has been suggested that the hanim features should be available in x3d in a less structured way to allow an author to create the animated object out in the scene rather than only from inside the Humanoid container required by x3d hanim, and it should be. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I would wish for this to happen and will discuss with anyone the current hanim interfaces. Hey, BSContact, Instant, and Flux did it. I’ve been hoping for Octaga to add this because the rest of their browser is fine. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="http://lo-th.github.io/Avatar.lab/">http://lo-th.github.io/Avatar.lab/</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Lots of work but yeah, x3d hanim does all that. Looks like their rest pose, before animation, follows the x3d hanim standard. A BVH input is offered, but we would hope they could export something more usable. Couldn’t see the list of bones used, or how to edit or create animations. Under the hood the avatar and its animation uses the same data as hanim. I mean when you figure out that bone orientations are the same as joint rotations - and lots of other amazing stuff then you just gotta have the x3d hanim capabilities. Much more fun to animate detailed movements using the (hidden in this avatar) joints rather than dragging bones around. If you start in max or any doing skeleton-based animation, there will be a special choice that gives you a ‘standard’ biped that except for a couple of minor joints is an hanim loa2. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please see some x3d hanim examples and videos. HAnim does all that (a Bone for them is a Segment for x3d). Like many authoring systems, the joints are not shown or even mentioned. We do all that with human-readable code and documentation you can walk away with – animations and all. I mean, really, if your browser can’t do this stuff then … </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But the real purpose of x3d in this is to document and show implementations of industry best practices. I think we can show that x3d hanim does that. The only divergence I can find is that x3d uses axis-angle instead of unit quat in our data storage. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks and Best, </p><p class=MsoNormal>Joe</p><p class=MsoNormal>. </p><p class=MsoNormal><o:p> </o:p></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>Monday, May 28, 2018 8:35 AM<br><b>To: </b><a href="mailto:joedwil@earthlink.net">Joe D Williams</a><br><b>Cc: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a>; <a href="mailto:x3dom-users@lists.sourceforge.net">x3dom mlist</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>RE: both X3DOM and X_ITE.</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I found this:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="http://lo-th.github.io/Avatar.lab/">http://lo-th.github.io/Avatar.lab/</a><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>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:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Monday, May 28, 2018 11:23 AM<br><b>To: </b><a href="mailto:joedwil@earthlink.net">Joe D Williams</a><br><b>Cc: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a>; <a href="mailto:x3dom-users@lists.sourceforge.net">x3dom mlist</a>; <a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: both X3DOM and X_ITE.<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>I'd also be afraid that JavaScript isn't up to the HAnim animation task. Got any examples of JavaScript HAnim?<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Mon, May 28, 2018, 10:42 AM Joseph D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:45.6pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'> </span></span></span><![endif]>> both X3DOM and X_ITE … <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'>The discussions about both X3DOM and X_ITE are, to me, missing a very important feature. Neither of these tools can do HAnim skeleton controlled deformable skin. This is a very important feature, lending itself to many important applications in addition to HAnim. There have been several discussions about the hanim joint(s) to deformable skin bindings and as far as I have seen, there is no doubt that the way x3d specifies the basic, most simple, and most transportable technique to achieve the result. So, as the HAnim standard takes the next step, why not move a bit toward implementing this important capability in your browsers. BSContact does it, I think Instant does it mostly but x3dom and x_ite don’t. <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'>Thanks and Best, <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'>Joe<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:9.6pt'> <o:p></o:p></p></div></div></blockquote></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:4.8pt'> <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>