<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin: 0.1rem 0; line-height: 1.0;">Humanoid, Joint, Segment, Site are all basic Transform nodes with some special fields added, but none of which are used in the Jin example.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">So, simple Joint nodes operate just like an ordinary Transform.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">In general, there are no dimensions in Segment, but Joint holds a center value and  Site holds a translation value, all given as an 'offset' from 0 0 0. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Notice that for Joint nodes, the default translation value of 0 0 0 is used everywhere and the center value gives the center of rotation for the Joint. The Site translation value positions the Site content as a child of its Joint and Segment so it moves properly relative to its parent.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Thanks for the study, </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
</div>
<div class="elnk-inline-message-container" style="border-left: 1px solid #aaa; box-sizing: border-box; padding: 10px 0 10px 15px; margin: 0;">
<p>-----Original Message-----<br>From: John Carlson <yottzumm@gmail.com><br>Sent: Jun 6, 2024 7:26 AM<br>To: Joe D Williams <joedwil@earthlink.net><br>Cc: Katy Schildmeyer KS APPAREL DESIGN <katy@ksappareldesign.com>, X3D Graphics public mailing list <x3d-public@web3d.org><br>Subject: Re: Can you get this X3D animation imported into Blender?</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<div dir="auto">It looks like the matrix multiplication in the Blender addon is correct per the standard for Transforms, looking up if HAnimJoints, etc. behave differently in the standard.</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Thu, Jun 6, 2024 at 7:03 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">
<div dir="auto">Okay, Joe.  Now to get this working in Blender, since you’ve confirmed the behavior.  Thanks!</div>
<div dir="auto"> </div>
<div dir="auto">Can we use the same transform code in Blender for both Transform and HAnim?</div>
<div dir="auto"> </div>
<div dir="auto">John</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Thu, Jun 6, 2024 at 5:35 AM Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank" rel="noopener">joedwil@earthlink.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;">
<div style="color: #000000; font-family: arial,sans-serif; font-size: 12pt;">
<p style="margin: 0.1rem 0; line-height: 1.0;">Hi John, </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">You sent this: </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  <Transform DEF="TransformRoot1" center="0 0 0"><br>    <Shape><br>      <Box size='0.5 0.5 0.5'/><br>    </Shape><br>    <Transform DEF="TransformTargetParent1" center="4 0 0"><br>      <Shape><br>        <Box size='0.5 0.5 0.5'/><br>      </Shape><br>      <Transform DEF="TransformTargetChild1" center="8 0 0"><br>        <Shape><br>          <Box size='0.5 0.5 0.5'/><br>        </Shape><br>      </Transform><br>    </Transform><br>  </Transform></p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Not shown here is the interpolator that sends rotations to both Parent and Child Transforms</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">For this animation code you sent this did exactly what it should have done.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">The boxes start at 0 0 0 then are swept along the axis according to the Parent and Child Transform nodes animation input.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Note that the initial position of all three boxes is 0 0 0, then they move along the radius from where you set the parent centers.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Please have a look at this: </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">First, slight change from what you sent. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Again, a important understanding is that "center" value of the Transform represents the center of rotation of that Transform, and may have nothing much to do with the value for translation, which is 0 0 0 for the parent Transform for each Shape. </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  <Transform DEF="CenterRoot1" center="0 0 0"><br>    <Shape><br>      <Box size='0.5 0.5 0.5'/><br>    </Shape><br>    <Transform DEF="CenterParent1" center="4 0 0"><br>      <Shape><br>        <Box size='0.5 0.5 0.5'/><br>      </Shape><br>      <Transform DEF="CenterChild1" center="8 0 0"><br>        <Shape><br>          <Box size='0.5 0.5 0.5'/><br>        </Shape><br>      </Transform><br>    </Transform><br>  </Transform></p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">So again, all Shapes start at 0 0 0 then are swept through the arc defined by each parent Transform center.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">This version operates like the hanim model.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">The parent Transform is a "Joint" with center defined, then the Shape has its own Transform to place it at the parent center value.</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">(The first center="0 2 0" translation='0 2 0' just moves the is example up above the first example.) </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  </p>
<p style="margin: 0.1rem 0px; line-height: 1;">  <Transform DEF="TransformRoot2" center="0 2 0" translation='0 2 0'><br>    <Transform DEF="MoveToCenterRoot" translation="0 2 0"><br>      <Shape><br>        <Box size='0.5 0.5 0.5'/><br>      </Shape><br>    </Transform><br>    <Transform DEF="CenterTargetParent2" center="4 0 0"><br>      <Transform DEF="TranslateTargetParent2" translation="4 0 0"><br>        <Shape><br>          <Box size='0.5 0.5 0.5'/><br>        </Shape><br>      </Transform><br>      <Transform DEF="CenterTargetChild2" center="8 0 0"><br>        <Transform DEF="TranslateTargetChild2" translation="8 0 0"><br>          <Shape><br>            <Box size='0.5 0.5 0.5'/><br>          </Shape><br>        </Transform><br>      </Transform><br>    </Transform><br>  </Transform></p>
<p style="margin: 0.1rem 0px; line-height: 1;">  </p>
<p style="margin: 0.1rem 0px; line-height: 1;">In Humanoid space, once the connection between using center to set the Joint center of rotation and then a child Transform to position any associated stuff in Humanoid space just makes it work wonderful for what we need in hanim.</p>
<p style="margin: 0.1rem 0px; line-height: 1;"> </p>
<p style="margin: 0.1rem 0px; line-height: 1;">I can recall a day when there were sincere discussions over whether to include the 'center' field in Transform.  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">  </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Thanks,</p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>

<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>