<div dir="ltr"><div dir="ltr"><div dir="ltr">Joe, I can't debug with this.  Look at the hierarchy.  It's great as far as I can tell.  I can send you a blender file, if you like, but I don't even know if you have Blender.  The latest news is that translations work, but centers of rotation do not in Blender.  Everything rotates around the origin, not the centers, and it's been like that for months. The latest tech is to use matrix_local and only one level of transform/HAnim up in the transform stack.  Using matrix_world with the whole matrix stack produces similar results.</div><div dir="ltr"><br></div><div dir="ltr">The import of Jin 20 works fantastic, but if we want Blender bones, more work is required.  Most of that work has been completed, but I need to attach mesh to empty; and empty to Blender bone (joint) and armature. I'm guessing that these "empties" will be segments which attach to joints.  Then I will attach sites and their geometry to the segment empties.  <a href="https://blender.stackexchange.com/questions/308924/attach-axe-to-bone-in-blender-python-api">https://blender.stackexchange.com/questions/308924/attach-axe-to-bone-in-blender-python-api</a><br><div><br></div><div>I'm hoping that blender bone (joint) centers will work better than empties for doing rotations around centers.  I have seen evidence of the Blender bone (joint) centers rotating correctly with JoeSkin*Kick and Gramps and even Jin.  Not perfect yet. Jin is a mess, probably because there's no bones attached to something attached to mesh.  Since EMPTY centers of rotation don't seem to work,  I'm ready to try empties with Blender bones (joints) if nothing else comes to mind.  We can continue to work with Transform centers but I think this will require some pair programming.  There are no issues with X3D Viewers that I am aware of.</div><div><img src="cid:ii_lx5gfqod0" alt="image.png" width="472" height="266"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 7, 2024 at 8:27 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt"><p style="margin:0.1rem 0px;line-height:1">> <span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">One thing that might work is attaching MESH objects to EMPTY objects to Blender bones. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Right, in the hierarchy of' transform objects you are creating for the skeleton, follow the hanim spec and attach mesh geometry to the node representing the correct Segment. This would be exported as a Shape in its correct location in the skeleton hierarchy.</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline"> If there are Site nodes, then also place then in the correct node representing the Segment.</span></p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">JointA</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">..Segment</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">....Shape Level1 segment geometry </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">..../Shape</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">....Site ...accessories/sensors</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">..../Site</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">../Segment </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">..JointB</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">    ....</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">../JointB</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">/JointA</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Same a</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">s loa4 skeleton, Jin. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Just name the 'transforms what they represent. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Does blender use the concept of center for a 'transform' rotation? </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Good names in the hierarchy mean we are able to assign animation values to nodes. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Only the Joint nodes will receive translation/rotation events. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">First, make sure the starting global coordinate system is like x3d </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-family:"Times New Roman";font-size:medium">so basic skeleton is drawn as expected. </span></p>
<p style="margin:0.1rem 0px;line-height:1">   </p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Just in case, I attached the very basic loa4 skeleton text that we want to see as importable to blender, eventually provided as a gui selection to start the the user's avatar and virtual twin simulation experience.  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">After All, if you are going to produce a humanoid that can interact anywhere anywhen immersed in our www virtuality, like for the rest of </span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">x3d, you might as well start with the World Standard Humanoid, designed to be transportable and use transportable animations, and go from there. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Even if some AI does all this for us some day, we still want to tell the thing where to start: Official HAnim Standard and x3d HAnim. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">     </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Thanks,</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">Joe</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline">  </span></p>
</div>
<div style="border-left:1px solid rgb(170,170,170);box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Sent: Jun 7, 2024 5:12 PM<br>To: Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>><br>Cc: GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>>, Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" target="_blank">katy@ksappareldesign.com</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Subject: Re: Can you get this X3D animation imported into Blender?</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div>
<div dir="auto">As I thought I said, the HAnim examples without animation is pretty useless to me right now.  Small examples with animation are helpful.  If someone has a magical type that does HAnim without Blender bone types and/or Objects in Blender, fess up.</div>
<div dir="auto"> </div>
<div dir="auto">There’s no issue that i know of loading HAnim into a matrix+transform+object hierarchy statically. The issue right now is getting animations right.  We have a hierarchy, now let’s get the numbers right.</div>
<div dir="auto"> </div>
<div dir="auto">One thing that might work is attaching MESH objects to EMPTY objects to Blender bones.  But we’re currently focusing on MESH and EMPTY objects.  Blender bones will be optional in my plan.</div>
</div>
<div>
<div dir="auto"> </div>
<div dir="auto">John <br>
<div class="gmail_quote" dir="auto">
<div class="gmail_attr" dir="ltr">On Fri, Jun 7, 2024 at 4:55 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:12pt">
<p style="margin:0.1rem 0px;line-height:1">> <span style="font-size:12pt">Major point:  both Blender bones and Skeleton as Transforms should be supported for maximum flexibility.  What are your thoughts?</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">Treat that model as it should have been treated years ago and abandon it. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">That is just a simplified convention they adopted in days of yore duplicating mechanical armature and making stop motion videos with no or minimum computer thus should be updated to use terminology and hierarchy of x3d hanim.  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">Number 1 is creating fullhanim  skeleton by using the blender gui or by importing the minimum skeleton I last sent into blender then adjusting that data to be able to export to x3d. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">Then a user can use the example hanim to start with. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">The way we expose the hanim skeleton hierarchy of Joint, Segment, Site is simply to create the hierarchy with names that can be recognized and organize a system of data for export to x3d. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">  </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">So, recall that if they talk bone orientation, it is the same as joint rotation and vertex weights by bone is same as weights by Joint, when rigged correctly. Same for all, even Unity, because it is a just better way to deal with details. Under the covers the data is the same</span></p>
<p style="margin:0.1rem 0px;line-height:1">  </p>
<p style="margin:0.1rem 0px;line-height:1">The mission is to update blender to hamin from their archaic current abstractions to terms and structures of x3d hanim, or, alternately, get tools like castle, x3dom, xcite, freewrl and others to become more than just a player and add some even simple ways to create and edit the skeleton and geometry and animations and work more directly with authors to create a complete x3d scene. A great example of the old days was viz3d and flux and BS Content studio. The x3d sai is capable of producing a native x3d authoring tool. </p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1">Thanks,</p>
<p style="margin:0.1rem 0px;line-height:1">Joe</p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">  </span></p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt">.</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="font-size:12pt"> </span></p>
</div>
<div style="border-left:1px solid rgb(170,170,170);box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>><br>Sent: Jun 6, 2024 1:59 PM<br>To: GPU Group <<a href="mailto:gpugroup@gmail.com" rel="noopener" target="_blank">gpugroup@gmail.com</a>>, Joe D Williams <<a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>><br>Cc: Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" rel="noopener" target="_blank">katy@ksappareldesign.com</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" rel="noopener" target="_blank">x3d-public@web3d.org</a>><br>Subject: Re: Can you get this X3D animation imported into Blender?</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div dir="auto">Sorry TL;DR.  Major point:  both Blender bones and Skeleton as Transforms should be supported for maximum flexibility.  What are your thoughts?</div>
</div>
<div style="border-left:1px solid rgb(170,170,170);box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px">
<div dir="auto"> </div>
<div dir="auto">Replying to Joe:</div>
<div dir="auto"> </div>
<div dir="auto">Understood.  AFAIK, I still need blender bones to export weights right now, but Blender bones only provide for Joints, not segments or sites (can I attach EMPTYs to Blender bones in a particular  mode?).  I will experiment with attaching weights to EMPTYs (joints),  then on export, I will move weight detection from Blender bones to EMPTYs,  we can do limited mapping on export, but asking someone to map an entire LOA4 skeleton is unrealistic. I don’t even like LOA1-LOA2 in VRM and BVH. Such user-specified mapping should be saved for reuse.  I can already do MoMask BVH joint mapping on export (but not “End Site” yet).  We probably won’t be able to save HAnim  to VRM skeletons, and I think that USDSkel may do armature/bones as well, so I’m not seeing X3D to USD Skel particularly working.  <strong>I think Doug suggested a separate skeleton mapping app</strong>, perhaps this feasible.  It’s just not realistic with glTF files exported to 8GB-14GB X3D files 200 times the size of a Blender file.</div>
<div dir="auto"> </div>
<div dir="auto">The good news is, I got small Transform hierarchies import mostly working in Blender with matrix_local and translation. Now to follow through with centers and HAnim.  Moving like molasses, but with simple examples, things are easier and moving faster without waiting years for import and tons of logging.</div>
<div dir="auto"> </div>
<div dir="auto"><strong>Katy can comment on rigging and armature in Blender, </strong>as what might be missing if we don’t import Blender bones,  this may severely impact the apparel workflow in Blender.</div>
<div dir="auto"> </div>
<div dir="auto"><strong>Most likely, both paths should be supported.</strong>  I hope you are in agreement.  Perhaps separating out the import/export into separate addons would make decisions easier.</div>
<div dir="auto"> </div>
<div dir="auto">Your additional thoughts are welcome.</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Thu, Jun 6, 2024 at 2:48 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">> <span style="font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline;color:rgb(0,0,0)">Can we use the same transform code in Blender for both Transform and HAnim?</span> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Yes, if blender transform operation can use 'center', which Joint needs. Just name the objects so the Humanoid, Joint, Segment, Site transforms can be transcoded at export into into HAnim hierarchy. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Joe</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
</div>
<div style="border-left:1px solid rgb(170,170,170);box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>><br>Sent: Jun 6, 2024 5:03 AM<br>To: Joe D Williams <<a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>><br>Cc: Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" rel="noopener" target="_blank">katy@ksappareldesign.com</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" rel="noopener" target="_blank">x3d-public@web3d.org</a>><br>Subject: Re: Can you get this X3D animation imported into Blender?</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div dir="auto">Okay, Joe.  Now to get this working in Blender, since you’ve confirmed the behavior.  Thanks!</div>
</div>
<div style="border-left:1px solid rgb(170,170,170);box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px">
<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" rel="noopener" target="_blank">joedwil@earthlink.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Hi John, </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">You sent this: </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">  <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 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Not shown here is the interpolator that sends rotations to both Parent and Child Transforms</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">For this animation code you sent this did exactly what it should have done.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Please have a look at this: </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">First, slight change from what you sent. </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">  <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 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">This version operates like the hanim model.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif">(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 0px;line-height:1;font-family:arial,sans-serif">  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">  <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;font-family:arial,sans-serif">  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">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 0px;line-height:1;font-family:arial,sans-serif">  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Thanks,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Joe</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
</div>
</blockquote>
</div>
</div>
</div>
<p style="margin:0.1rem 0px;line-height:1"> </p>
</blockquote>
</div>
</div>
</div>
<p style="margin:0.1rem 0px;line-height:1"> </p>
</blockquote>
</div>
</div>
</div>
</div>

<p style="margin:0.1rem 0px;line-height:1"> </p></blockquote></div></div></div>