<div><div dir="auto">So I had a thought that my single skin animation didn’t work in Castle because I listed the point field in both Coordinate nodes, even though I listed the different point fields in my multi mesh example and it kind of works, probably because the shapes were outside the humanoid in humanoid USEd transforms.  WIP.</div><div dir="auto"><br></div><div dir="auto">I am reluctant to put all points in skinCoord and reference them from segment or site IndexedFaceSets.   I feel it’s more appropriate to use a single skin mesh in the skin field’s Coordinate,  but if it’s all one Coordinate, that should be ok.  What I would worry about is having Transforms in sites, segments and skin throwing off coordinate locations, and not being transparent.</div><div dir="auto"><br></div><div dir="auto">Also realize the sites can contain billboard, text and touchsensor nodes on import!</div><div dir="auto"><br></div><div dir="auto">What I’m hearing is coordIndex fields need to be changed (not the standard). to allow for more than one coordIndex field to reference a Coordinate point field.  Weird!  I’m guessing an offset into the Coordinate for each Coordinate USE could be used for simplicity.  Is there a such a beast?</div><div dir="auto"><br></div><div dir="auto">Hmm!</div><div dir="auto"><br></div><div dir="auto">John</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"></div></div></div><div><div dir="ltr" class="gmail_attr">On Tue, May 6, 2025 at 11:02 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">Thumbs up, Joe!</div><div><br><div class="gmail_quote"></div></div></blockquote></div><div><div dir="ltr" class="gmail_attr">On Tue, May 6, 2025  at 10:13 AM Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:<br></div></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)"></div></blockquote></div><div><p style="margin:0.1rem 0px;line-height:1" dir="auto">> <span style="font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline;color:rgb(0,0,0)">I meant to say children of Joint are Joints and Segments (normally just one Segment)</span> </p>
<p style="margin:0.1rem 0px;line-height:1" dir="auto"><br></p>
</div><div><p style="margin:0.1rem 0px;line-height:1" dir="auto">OK John, but a Joint can contain one of more Segment objects and the onlyle instance where a Joint does not include at least one Join tis when the  Segment terminates with an end-effector Site. Fingers and  Toes, for instance</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" dir="auto"><br></p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1"> </p>

<div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)">
<p>-----Original Message-----</p></div></div><div><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)"><p><br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Sent: May 5, 2025 6:39 PM<br>To: Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>><br>Cc: Bergstrom Aaron <<a href="mailto:aaron.bergstrom@und.edu" target="_blank">aaron.bergstrom@und.edu</a>>, Carol McDonald <<a href="mailto:cemd2@comcast.net" target="_blank">cemd2@comcast.net</a>><br>Subject: Re: X3D/HAnim from Maya using RawKee X3D Exporter</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div> </div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Mon, May 5, 2025 at 5:57 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<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)">Note while HAnim says sequence of object for joint children</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 a hierarchy where the Joint can contain one of more Segment objects</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">which can contain shapes and one or more Site objects which can</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">contain anything x3d including viewpoints and sensors. </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 don't set anything directly to the Joint except Segment </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">and another Joint. Displacer for Shape on that Segment.  </p>
</div>
</blockquote>
<div dir="auto"> </div>
<div dir="auto"> </div>
<div dir="auto">I agree.</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<p dir="auto" 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">> <span style="font-size:12pt;font-family:arial,sans-serif">, limiting joint children to joints and segments </span></p>
</div>
</blockquote>
<div dir="auto"> </div>
<div dir="auto">I meant to say children of Joint are Joints and Segments (normally just one Segment).  Joints are not children of Segments.</div>
<div dir="auto"> </div>
<div dir="auto"> </div>
<div dir="auto">Joints also have Displacers et al, but no geometry nodes or X3DGroups.   Those go in Segments, Sites, or the Humanoid.</div>
<div dir="auto"> </div>
<div dir="auto">>Please No, a Joint can only be a child of a Parent Joint,except Root which is contains skeletoncontained by Humanoid.  So, "Standard" Segment objects cannot contain"Standard" Joint nodes.   Of course the skeleton Joint-driven animations might be a design feature of an accessory child of aSegment or Site, it will not be legal to insert aJoint that is a child of a Segment or Siteinto the "standard" skeleton.Thanks,JoeSite, =style   </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<p style="margin:0.1rem 0px;line-height:1"> </p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>><br>Sent: May 5, 2025 12:17 PM<br>To: Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>><br>Cc: Carol McDonald <<a href="mailto:cemd2@comcast.net" rel="noopener" target="_blank">cemd2@comcast.net</a>>, <a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a> <<a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>><br>Subject: Re: X3D/HAnim from Maya using RawKee X3D Exporter</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div dir="auto">Note while HAnim says sequence of object for joint children, X3D4 is much more restrictive:  
<div><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimJoint" rel="noopener" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimJoint</a></div>
<div dir="auto"> </div>
<div dir="auto">, limiting joint children to joints and segments.  It’s probably safest to go with the more restrictive standard.</div>
<div dir="auto"> </div>
<div dir="auto">FYI,</div>
<div dir="auto"> </div>
<div dir="auto">John</div>
</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Mon, May 5, 2025 at 1:59 PM John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div dir="auto">Okay, it looks like you are doing multimesh skins, perhaps with segment/site geometry, maybe for initial skeleton visualization geometry for animation debugging the output.  As I think I said, segment/site geometry can be used in addition to “single skin” geometry, if Maya supports segment/sites.  If not, you have to come up with your own skeleton visualization, and remember that joints don’t support geometry or groups as children, last I checked.  Some browsers will let you get away with this.  I have had issues displaying the leaf joints of the skeleton, because there’s no child joint, but there’s probably a segment and site.</div>
<div dir="auto"> </div>
<div dir="auto">Visualizing skeleton is key to getting skin animations right, IMO.   Best to have it as an export option, if possible.</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Mon, May 5, 2025 at 8:59 AM Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div lang="EN-US">
<div>
<p class="MsoNormal">John, Carol, and Joe,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">So the Tuesday afternoon meeting agenda can change somewhat.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">After reading through some of John’s advice, and then reviewing my old code from the old C++ version of RawKee, I was able to largely figure out what I was doing wrong.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">As such, I now have HAnim export working with Skinning for multiple meshes per character rig.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">To be honest, since our flurry of email last week, I still fumbled around for 3 days trying to figure it out, and it was driving me CRAZY, but I probably wouldn’t have been able to figure it out without John’s feedback.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">That said, it now works with Maya skinned characters that have simple to moderately complex Maya Dependency Graphs.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Much of the problem I had before stemmed from the fact that I had both Maya and HAnim misconceptions, which were really confounding what the actual problem was for me.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Now that I have these misconceptions resolved, I just have the Maya complex Dependency Graph issues to take care of. Where this comes into play is support for other character animation add-ons for Maya like Advanced Skeleton.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">But that’s purely a Maya issue on which I will have to consult a Maya API expert. I sort of have access to one through Patreon, so I will reach out to him after I write up the question to him in a way he can provide feedback.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I’m very close to having RawKee X3D export working for Advanced Skeleton characters. I expect to have it working once I have the dependency graph issues resolved.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Anyway, I can show HAnim export in action on Tuesday, and we can also discuss what I’m planning next for RawKee/HAnim, in time for Siggraph 2025 and Web3D 2025, such as:</p>
<ul style="margin-top:0in" type="disc">
<li style="margin-left:0in">HAnim GUI for Export Set Up</li>
<li style="margin-left:0in">Maya AnimClip export for transform and HAnim animations through both HAnimMotion and various X3D Interpolator use cases.</li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">See you all on Tuesday.</p>
</div>
</div>
<div lang="EN-US">
<div>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Aaron</p>
<p class="MsoNormal"> </p>
<div style="border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-color:rgb(225,225,225) currentcolor currentcolor">
<p class="MsoNormal"><strong>From:</strong> John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>> <br><strong>Sent:</strong> Friday, May 2, 2025 4:32 AM<br><strong>To:</strong> Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>><br><strong>Cc:</strong> Carol McDonald <<a href="mailto:cemd2@comcast.net" rel="noopener" target="_blank">cemd2@comcast.net</a>>; <a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a><br><strong>Subject:</strong> Re: X3D/HAnim from Maya using RawKee X3D Exporter</p>
</div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal">Ok.  I think setting skinNormal in HAnimHumanoid and normal in the IFS should be ok, if you have a need for it, perhaps for clothing textures.  Just be aware that the X3D browsers can generate defaults for normals.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Normally HAnim DEFs have prefix+”_”+name, but there are many cases where this varies widely, and I don’t think we have a perfect example which contains everything.  Please check the HAnim specification, or make use of X3DJSAIL or X3D-Edit QA checkbox icon.  Prefix is chosen on an avatar basis so avatars can have unique DEFs within a scene (or within a namespace).  Names are not unique, except for Protos as well.  I’m pretty Protos are registered in some X3D browsers, but I don’t know current specs.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">John</p>
</div>
<div>
<p class="MsoNormal"> </p>
<div>
<div>
<p class="MsoNormal">On Thu, May 1, 2025 at 5:59 PM Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>> wrote:</p>
</div>
<blockquote style="border-width:medium medium medium 1pt;border-style:none none none solid;padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in;border-color:currentcolor currentcolor currentcolor rgb(204,204,204)">
<div>
<div>
<p class="MsoNormal">Carol,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>Native Dancer Questions</strong></p>
<p class="MsoNormal">In regard to these questions, which I’m guessing are more related to the Native Dancer project:</p>
<ul type="disc">
<li class="MsoNormal"><em>How are you attaching the garments to the skeleton?  </em></li>
<li class="MsoNormal"><em>How are you working out the collisions or are you doing that in Maya first?  </em></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I probably gave the wrong impression that I am attempting to export Native Dancer content, which is not the case. I was just pointing to our Native Dancer project as some of the other related work we are doing with Unreal. Though I would hope in the future we could export it to X3D at some point. Be here is our process for the Dancer characters.</p>
<ul type="disc">
<li class="MsoNormal">We generate the person either in Reallusion Character Creator or Metahuman.</li>
<li class="MsoNormal">Dancer Powwow Regalia (clothing) is designed in Marvelous Designer around those characters, some cloth physics data is applied here.</li>
<li class="MsoNormal">Once the clothing has been designed, our artist adds further jewelry, headwear, and hair grooms in Maya</li>
<li class="MsoNormal">This is then exported to a format that is then imported into Unreal – I think FBX, but it might be Alembic.</li>
<li class="MsoNormal">Once in Unreal, we apply BVH mocap data to the dancer avatar</li>
<li class="MsoNormal">Once the mocap data has been applied, we use an AI-based Unreal plugin called uDraper to optimize the cloth physics.</li>
<li class="MsoNormal">If we try to run the dancer animation in real-time using the real-time uDraper cloth solver, we get about 4 frames per second with a high-end graphics card (Nvidia A6000).</li>
<li class="MsoNormal">However, if we use uDraper to cache the cloth physics, then we get 30fps playback using a Meta Quest 3 driven by a similar graphics card.</li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">All of that said, I just purchased Numerion Software’s Carbon soft-body physics solver for Maya. My hope is that we will be able to use Carbon to cache Regalia cloth physics in Maya, and then use RawKee to export everything out to X3D - using CoordinateInterpolator nodes as the means for exporting the cached cloth data.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>Skin Export Questions</strong></p>
<p class="MsoNormal">But that’s getting ahead of myself. To answer your other questions:</p>
<ul type="disc">
<li class="MsoNormal"><em>What are the joints? LOA 1 or the defaults from Maya?  </em></li>
<li class="MsoNormal"><em>One skin or body segments?  </em></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">If I export body segment HAnim content, this works no problem. This is essentially Maya mesh nodes that have Maya joint nodes as parents.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Keep in mind, I haven’t implemented HAnimMotion nodes yet, nor have I implemented interpolator node animation export. I’ve determined that this works by loading the exported X3D file into Sunrize, and the change the ‘rotation’ values.</p>
<ul type="disc">
<li class="MsoNormal">My recreated Maya segment version of JinLOA1 (loa still set to ‘-1’ ) – <a href="https://drive.google.com/drive/folders/1ut7fDyPe2bYNZnqtWF2s3aQFxwWZFIq7" rel="noopener" target="_blank"> https://drive.google.com/drive/folders/1ut7fDyPe2bYNZnqtWF2s3aQFxwWZFIq7</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal">The problem comes in when I’m attempting to export Skinned data.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Essentially, I setup my Maya joints so that the ‘translation’ values are the only values that are not zero. They are essentially nested joints with relative ‘translate’ values. All other joint values (rotation, joint orientation, scale), they are all set to zero.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">When loaded into the X3D Sunrize Editor, all the point data in the skin is stretched bizarrely. However, if I manually change all the HAnimJoint ‘translation’ values to ‘0 0 0’, the stretching goes away, and the skin looks as intended.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Which suggests to me that maybe Sunrize doesn’t like the structure of my HAnimHumanoid… ether because I’m just not doing it right, or because Sunrize has an HAnim Bug? IDK.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">At the risk of providing too much info… here’s the explanation of how my HAnimHumanoid nodes are contructed.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>AdvancedSkelton</strong></p>
<p class="MsoNormal">My test models have been AdvancedSkelton example files found at – ( <a href="https://animationstudios.com.au/rigs/" rel="noopener" target="_blank">https://animationstudios.com.au/rigs/</a> ). Some screenshots of text exports can be found here:</p>
<ul type="disc">
<li class="MsoNormal">Conan – Maya / X3D Comparison – Mesh Export Only – <a href="https://drive.google.com/file/d/1Qsw4asHx3teolnol_GPeZeLgdb1hkMa7/view?usp=sharing" rel="noopener" target="_blank"> https://drive.google.com/file/d/1Qsw4asHx3teolnol_GPeZeLgdb1hkMa7/view?usp=sharing</a></li>
<li class="MsoNormal">Conan – X3D Export with most things, but without ‘skinWeightCoord’ – <a href="https://drive.google.com/drive/folders/1ut7fDyPe2bYNZnqtWF2s3aQFxwWZFIq7" rel="noopener" target="_blank"> https://drive.google.com/drive/folders/1ut7fDyPe2bYNZnqtWF2s3aQFxwWZFIq7</a></li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>Export Details</strong></p>
<ul type="disc">
<li class="MsoNormal">The HAnimHumanoid LOA field is set to -1 by default because I haven’t implemented a mechanism/GUI to set the LOA value or joint ‘name’ fields.</li>
</ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal">Because of this, the HAnimJoint nodes have DEF’s, but their ‘name’ fields are empty</li>
<li class="MsoNormal">HAnimHumanoid’s ‘skeletalConfiguration’ field is set to “CUSTOM”.</li>
</ul>
</ul>
<ul type="disc">
<li class="MsoNormal">The ‘skeleton’ field is populated by a “tree” of DEF’d HAnimJoint nodes.</li>
<li class="MsoNormal">The ‘joints’ field is populated by a “list” of USE’d HAnimJoint nodes that have all been previously DEF’d in the ‘skeleton’ field.</li>
<li class="MsoNormal">The ‘skeleton’ field is written to the X3D file before the ‘joints’ field so that the nodes appear in proper DEF/USE order within the X3D file’s Scenegraph.</li>
<li class="MsoNormal">For every Maya “joint” node in the Maya skeleton Hierarchy there is a corresponding HAnimJoint node found in the Hierarchy of the HAnimHumanoid ‘skeleton’ field.</li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>Joint Bindings</strong></p>
<ul type="disc">
<li class="MsoNormal">For every HAnimJoint listed in the ‘joints’ field, there is a corresponding SFVec3f value listed in the MFVec3f ‘jointBindingPositions’ field in the same order that they appear in the ‘joints’ field.</li>
<li class="MsoNormal">The “jointBindingRotations” and “jointBindingScales” fields are left empty.</li>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>BaseCoord Node</strong></p>
<ul type="disc">
<li class="MsoNormal">A ‘Coordinate’ node is DEF’d in the HAnimHumanoid’s “skinBindCoords” field (let’s say that this Coordinate node is DEF’d as ‘BaseCoord’)</li>
</ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal">This is later USE’d in that node’s “skinCoord” field</li>
<li class="MsoNormal">And this is later USE’d in the ‘coord’ field of all Shape>IndexedFaceSet nodes found as children in the “skin” field</li>
</ul>
</ul>
<ul type="disc">
<li class="MsoNormal">If appropriate (based on export settings) a ‘Normal’ node (possibly per vertex or per face) is DEF’d in the HAnimHumanoid’s “skinBindNormals” field</li>
</ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal">This is later USE’d (as appropriate) in that node’s “skinNormal” field</li>
<li class="MsoNormal">And this is later USE’d in the ‘normal’ field of all Shape>IndexedFaceSet nodes found as children in the “skin” field.</li>
</ul>
</ul>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><strong>Packing The BaseCoord Node</strong></p>
<p class="MsoNormal">The ‘BaseCoord’ node is packed with the vertices of all the Maya Mesh nodes that are used in the skin. So if three Maya Mesh nodes are used in the Maya skin, then three corresponding “Shape>IndexedFaceSet” nodes will be listed in the “skin” field of the HAnimHumanoid node.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">As such, if the Maya Mesh nodes have the following vertex values:</p>
<ol start="1" type="1">
<li class="MsoNormal">Node 1:</li>
</ol>
<ol start="1" type="1">
<ol start="1" type="a">
<li class="MsoNormal" style="color:red">(0.1 0.2 0.0),</li>
<li class="MsoNormal" style="color:red">(3.0 0.2 0.0),</li>
<li class="MsoNormal" style="color:red">(0.1 4.2 5.0)</li>
</ol>
</ol>
<ol start="2" type="1">
<li class="MsoNormal">Node 2:</li>
</ol>
<ol start="2" type="1">
<ol start="1" type="a">
<li class="MsoNormal" style="color:rgb(112,173,71)"><span style="color:windowtext">(3.0 2.0 0.0), </span></li>
<li class="MsoNormal" style="color:rgb(112,173,71)"><span style="color:windowtext">(3.0 0.5 7.0),</span></li>
<li class="MsoNormal" style="color:rgb(112,173,71)"><span style="color:windowtext">(1.1 1.2 1.0)</span></li>
</ol>
</ol>
<ol start="3" type="1">
<li class="MsoNormal">Node 3:</li>
</ol>
<ol start="3" type="1">
<ol start="1" type="a">
<li class="MsoNormal" style="color:rgb(0,112,192)">(10.1 0.2 0.0),</li>
<li class="MsoNormal" style="color:rgb(0,112,192)">(9.0 0.2 0.0),</li>
<li class="MsoNormal" style="color:rgb(0,112,192)">(8.1 8.2 8.0)</li>
</ol>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Then the “point” field of the ‘BaseCoord’ node will have the following values:</p>
<p class="MsoNormal">   <strong>point=’ <span style="color:red">0.1 0.2 0.0,  3.0 0.2 0.0,  0.1 4.2 5.0, </span> <span style="color:rgb(84,130,53)">3.0 2.0 0.0, 3.0 0.5 7.0, 1.1 1.2 1.0, </span><span style="color:rgb(0,112,192)">10.1 0.2 0.0, 9.0 0.2 0.0, 8.1 8.2 8.0</span>’</strong></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Then the “coordIndex” field of all the Shape>IndexFaceSet nodes will have values similar to the following:</p>
<ol start="1" type="1">
<li class="MsoNormal">Node 1</li>
</ol>
<ol start="1" type="1">
<ol start="1" type="a">
<li class="MsoNormal">coordIndex=’0 1 2 -1’</li>
</ol>
</ol>
<ol start="2" type="1">
<li class="MsoNormal">Node 2</li>
</ol>
<ol start="2" type="1">
<ol start="1" type="a">
<li class="MsoNormal">coordIndex=’3 4 5 -1’</li>
</ol>
</ol>
<ol start="3" type="1">
<li class="MsoNormal">Node 3</li>
</ol>
<ol start="3" type="1">
<ol start="1" type="a">
<li class="MsoNormal">coordIndex=’6 7 8 -1’</li>
</ol>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal">For this example, each HAnimJoint could have up to 9 skinWeights, such as:</p>
<ol start="1" type="1">
<li class="MsoNormal">skinCoordWeight=’0.4  0.0  0.15  1.0  0.2  0.29  0.0  0.0  0.7’</li>
<li class="MsoNormal">skinCoordIndex=’0  1  2  3  4  5  6  7  8’    <--- corresponds to the index of the points in the “point” field of the BaseCoord node.</li>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Or it could have fewer than 9, with something like the following:</p>
<ol start="1" type="1">
<li class="MsoNormal">skinCoordWeight=’0.4  0.15  1.0  0.2  0.29  0.7’</li>
<li class="MsoNormal">skinCoordIndex=’0  2  3  4  5   8’    <--- corresponds to the index of the points in the “point” field of the BaseCoord node.</li>
</ol>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I realize that this is an extremely long email… so kudos if you made it to the end.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Aaron</p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"> </p>
<div>
<div style="border-width:1pt medium medium;border-style:solid none none;padding:3pt 0in 0in;border-color:rgb(225,225,225) currentcolor currentcolor">
<p class="MsoNormal"><strong>From:</strong> Carol McDonald <<a href="mailto:cemd2@comcast.net" rel="noopener" target="_blank">cemd2@comcast.net</a>> <br><strong>Sent:</strong> Thursday, May 1, 2025 2:11 PM<br><strong>To:</strong> Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>>; <a href="mailto:joedwil@earthlink.net" rel="noopener" target="_blank">joedwil@earthlink.net</a>; John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noopener" target="_blank">yottzumm@gmail.com</a>><br><strong>Subject:</strong> Re: X3D/HAnim from Maya using RawKee X3D Exporter</p>
</div>
</div>
<p class="MsoNormal"> </p>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">Aaron,  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">The answer is yes and no, am I the correct person?  I am very interested in the details coming out of Maya  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">What are the joints? LOA 1 or the defaults from Maya?  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">One skin or body segments?  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">How are you attaching the garments to the skeleton?  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">How are you working out the collisions or are you doing that in Maya first?  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">Joe or John work on the exporters so they might understand the details of what is going wrong.  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">Perhaps we can set up a time to talk.  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">  </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12pt;font-family:Helvetica,sans-serif;color:rgb(51,51,51)">Carol  </span></p>
</div>
<blockquote style="margin-top:5pt;margin-bottom:5pt">
<div>
<p class="MsoNormal">On 05/01/2025 10:15 AM PDT Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" rel="noopener" target="_blank">aaron.bergstrom@und.edu</a>> wrote:</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Carol,</span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">I apologize if I have the wrong person, but I believe you joined the last Web3D Consortium HAnim Working Group call.</span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">While I don’t believe we’ve ever had an opportunity to meet each other, I was wondering if you might be available to discuss the X3D/HAnim spec?</span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Just a bit of background, I am a member of the Web3D Consortium, and on the board. I run the Univ. of North Dakota (UND) – Computational Research Center, which houses UND’s High Performance Computing systems and the UND DREAM Lab (a VR lab).</span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">I have a two projects which I lead – the Native Dancer Metaverse Project (powwow video game project), and the RawKee X3D Exporter for Maya.</span></p>
<ul type="disc">
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Native Dancer</span></li>
</ul>
<ul type="disc">
<ul type="circle">
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Website: <a style="font-family:"Segoe UI",sans-serif" href="https://NativeDancer.und.edu/" rel="noopener" target="_blank"> https://NativeDancer.und.edu/</a></span></li>
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Demo Video (Unreal) - <a style="font-family:"Segoe UI",sans-serif" href="https://www.youtube.com/watch?v=CTvHCDfbdsM" rel="noopener" target="_blank">https://www.youtube.com/watch?v=CTvHCDfbdsM</a> </span></li>
</ul>
</ul>
<ul type="disc">
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">RawKee X3D Exporter for Maya – <a style="font-family:"Segoe UI",sans-serif" href="https://github.com/und-dream-lab/rawkee/" rel="noopener" target="_blank">https://github.com/und-dream-lab/rawkee/</a> </span></li>
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Computational Research Center – <a style="font-family:"Segoe UI",sans-serif" href="https://crc.und.edu/" rel="noopener" target="_blank">https://crc.und.edu/</a></span></li>
<li class="MsoNormal" style="vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">DREAM Lab – <a style="font-family:"Segoe UI",sans-serif" href="https://dream.crc.und.edu/" rel="noopener" target="_blank"> https://dream.crc.und.edu/</a> </span></li>
</ul>
<p style="margin:0in;vertical-align:baseline"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">The reason I am reaching out is that I'm having a problem properly structuring the HAnim X3D export out of Maya, and I was hoping to chat with a person with HAnim expertise who could give me some guidance as to what I am doing wrong.</span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">If you are open to having a conversation on this topic, I very much would appreciate any time you might make available to set up a conference call to discuss.</span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Thank you,</span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif"> </span></p>
<p style="margin:0in;vertical-align:baseline;box-sizing:inherit;background:repeat rgb(244,242,238);font-variant-ligatures:normal;font-variant-caps:normal;text-align:start;text-decoration-style:initial;text-decoration-color:initial;word-spacing:0px;border-color:rgba(0,0,0,0.9);color:rgba(0,0,0,0.9)"><span style="font-size:10.5pt;font-family:"Segoe UI",sans-serif">Aaron</span></p>
<p class="MsoNormal"> </p>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</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>
</blockquote></div></div>
</div>