<div dir="auto">All seems reasonable.  I think X_ITE’s converter  uses joint centers, I’m not sure.  It might be worth testing in Castle.</div><div dir="auto"><br></div><div dir="auto">There’s nothing wrong with creating your own blender exporter, I’ve done it at least twice.  More should be coming from others.</div><div dir="auto"><br></div><div dir="auto">I don’t know if you’re mapping Transforms to HAnim or what.   Completing a joint hierarchy with LLM is entirely reasonable.  Note that you might need to rein in the size of the X3D file by specifying precision.</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sat, Jun 6, 2026 at 2:10 PM <<a href="mailto:cbullard@hiwaay.net">cbullard@hiwaay.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hey John,<br>
<br>
You may recall our conversations about the HAnim pipeline and the <br>
difficulty of getting production-quality avatars into X3D with working <br>
skeletal animation.<br>
<br>
We've had a genuine breakthrough this week worth reporting.<br>
<br>
The short version: We now have a fully automated Mixamo → X3D → HAnim<br>
pipeline running in the MCCF Character Creator, and it works <br>
beautifully.<br>
<br>
Here's what we're doing:<br>
<br>
Download a character and animations from Mixamo (free, high quality,<br>
production-grade skinned meshes with full skeletal rigs)<br>
Use BlenderMCP — a new MCP server that connects Claude directly to a<br>
live Blender session via prompts — to merge multiple animation clips <br>
onto<br>
the character via the NLA editor and export as GLTF<br>
Convert through X_ITE to X3D<br>
Run our ingest pipeline which:<br>
Detects the `mixamorig:*` bone naming convention<br>
Builds a full HAnim 2.0 joint map automatically<br>
Wires pose sliders (OrientationInterpolators) for every joint<br>
Moves all TimeSensors to Scene root so X_ITE's SAI can find them<br>
Sets correct loop/enabled attributes<br>
Injects standard camera viewpoints<br>
Removes the EXPORT nodes that were clobbering the moved timers<br>
<br>
The result: a fully textured, rigged character with 12 named animation <br>
clips (Capoeira, Fight, FistFight, MMAKick, Praying, RhumbaDance, Taunt, <br>
Walk, Run...) all selectable from a playback panel, with pose sliders <br>
working alongside the animations. The whole process from Mixamo download <br>
to working X3D avatar takes about 20 minutes with BlenderMCP doing the <br>
heavy Blender work.<br>
<br>
The character  rendered beautifully on the first full pipeline run. <br>
Textured skin, martial arts outfit, hair, the works. She even does <br>
Capoeira.<br>
<br>
A few X_ITE-specific things we learned that may be worth documenting for <br>
the community:<br>
`getNamedNode()` via SAI only searches the flat Scene namespace — DEFs <br>
inside<br>
nested Groups are invisible to it. Mixamo exports all TimeSensors inside<br>
`Group[Animations]>Group[mixamo-com]`. They must be moved to Scene root <br>
for<br>
SAI control to work.<br>
moved nodes — they need to be removed after the move.<br>
DEF names must be valid XML NCNames — Mixamo's `mixamorig:Hips` cannot <br>
be<br>
used as a DEF for new nodes (the colon is reserved). We sanitise to<br>
`mixamorig_Hips`.<br>
<br>
BlenderMCP is a game changer for this workflow. Claude can now operate <br>
Blender directly — inspecting armatures, merging NLA clips, fixing <br>
coordinate spaces —which removes the biggest manual bottleneck in the <br>
pipeline.<br>
<br>
We'll push the new code to the GitHub tomorrow.<br>
<br>
Cheers,<br>
len<br>
<br>
PS:  I'm hoping this email isn't too large with the attached screen <br>
shot.<br>
</blockquote></div></div>