<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;">Only the first Joint, root, has containerField 'skeleton' </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">All other child Joints are containerField 'children' </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">the keyword 'skeleton' is not a Node, it is a container, a type </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Classic</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> skeleton [<br> DEF Joe_HumanoidRoot ...Joint ...</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;">xml </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"><Joint DEF='Joe_HumanoidRoot' ... containerField='skeleton' </p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
</div>HAnimHumanoid is a node, not a type.
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<p style="margin: 0.1rem 0; line-height: 1.0;">Joe</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<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: X3D Ecosystem public discussion <x3d-ecosystem@web3d.org><br>Sent: Mar 5, 2025 10:06 AM<br>To: John Carlson <yottzumm@gmail.com><br>Cc: Bergstrom, Aaron <aaron.bergstrom@und.edu>, X3D Ecosystem public discussion <x3d-ecosystem@web3d.org><br>Subject: Re: [X3D-Ecosystem] RawKee Update - Implemented a companion export script for x3d.py</p>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>
<!-- [if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!-- [if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">I suppose I could do a quick check to see if the root node in the ‘skeleton’ field has DEF=’somestring’ defined. And if so, and only then perform the flip.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">That would make it more portable.</p>
<p class="MsoNormal"> </p>
<div style="border: none; border-top: solid #E1E1E1 1.0pt; padding: 3.0pt 0in 0in 0in;">
<p class="MsoNormal"><strong>From:</strong> John Carlson <yottzumm@gmail.com> <br><strong>Sent:</strong> Wednesday, March 5, 2025 11:50 AM<br><strong>To:</strong> Bergstrom, Aaron <aaron.bergstrom@und.edu><br><strong>Cc:</strong> X3D Ecosystem public discussion <x3d-ecosystem@web3d.org><br><strong>Subject:</strong> Re: [X3D-Ecosystem] RawKee Update - Implemented a companion export script for x3d.py</p>
</div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">Just to be aware, if skeleton comes before joints, then this code would flip them. You need to compare jIdx to sIdx before flipping them, AFAIK. I realize that you’ve ordered them properly elsewhere.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">On Wed, Mar 5, 2025 at 10:57 AM Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu">aaron.bergstrom@und.edu</a>> wrote:</p>
</div>
<blockquote style="border: none; border-left: solid #CCCCCC 1.0pt; padding: 0in 0in 0in 6.0pt; margin-left: 4.8pt; margin-right: 0in;">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"> </p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;">if nType == "HAnimHumanoid":</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; text-indent: .5in;">jIdx = -1</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; text-indent: .5in;">sIdx = -1</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; text-indent: .5in;">for idx in range(len(mNodeList)):</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: .5in; text-indent: .5in;">if mNodeList[idx] == "joints":</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: 1.0in; text-indent: .5in;">jIdx = idx</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: .5in; text-indent: .5in;">elif mNodeList[idx] == "skeleton":</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: 1.0in; text-indent: .5in;">sIdx = idx</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: .5in; text-indent: .5in;">if sIdx != -1 and jIdx != -1:</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: 1.0in; text-indent: .5in;">mNodeList[jIdx] = "skeleton"</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; margin-left: 1.0in; text-indent: .5in;">mNodeList[sIdx] = "joints"</p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"> </p>
<p class="MsoNormal" style="mso-margin-top-alt: auto; mso-margin-bottom-alt: auto;"> </p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
<p style="margin: 0.1rem 0; line-height: 1.0;"> </p>