<div dir="auto">Feel free to forward this message.</div><div dir="auto"><br></div><div dir="auto">This python, from a simple example from Aaron, and dragged through an LLM to clean it up can be used. While not a skin, I propose that it might be a skin if the geometry is grouped under a CGE skin. My hope is we can take RawKee X3DPSAIL in place of X3DPSAIL to render CGE skin directly from Python:</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/x3danari/blob/main/eric5.py" style="font-size:inherit">https://github.com/coderextreme/x3danari/blob/main/eric5.py</a></div><br></div><div dir="auto"><br></div><div dir="auto">It uses X3DPSAIL to render to XML and VRML.</div><div dir="auto"><br></div><div dir="auto">X3D ANARI can be used to render the Python directly to the animated scene.</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/x3danari" style="font-size:inherit">https://github.com/coderextreme/x3danari</a></div><br></div><div dir="auto">If anyone wants to develop a way to render textures using a python API to ANARI, possibly using pynari, a good way to do ANARI for raytracing from python, using X3D technologies, that would be a great assistance to this project! 4 months ago, I couldn’t describe it well enough to LLMs.</div><div dir="auto"><br></div><div dir="auto">Here’s the current code to render eric5.py:</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit" dir="auto"><a href="https://github.com/coderextreme/x3danari/blob/main/skinned_x3d_renderer.py" style="font-size:inherit">https://github.com/coderextreme/x3danari/blob/main/skinned_x3d_renderer.py</a></div></div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/x3danari/blob/main/eric5.py"><font color="#000000"></font></a><div style="font-size:inherit"><a href="https://github.com/coderextreme/x3danari/blob/main/eric5.py" style="font-size:inherit"><span style="font-size:inherit;font-family:-apple-system,sans-serif"><font color="#000000">If that renderer doesn’t cut it, I have another for HAnim Part 1:</font></span><br></a></div></div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/x3danari/blob/main/interactive_x3d_renderer.py" style="font-size:inherit">https://github.com/coderextreme/x3danari/blob/main/interactive_x3d_renderer.py</a></div><br></div><div style="font-size:inherit" dir="auto">What you can do is either change the menu to put your X3DPSAIL Python scene there, or do an import at the bottom of the file in the latter renderer.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">The renderers were also generated with LLMs, with a small amount of editing on my part. The scenes were generated from my “DOM to Python” JavaScript code, but a stylesheet could be used as well.</div></div><div dir="auto"><br></div><div dir="auto">Maybe some adventurous spirit will take the ride?</div><div dir="auto"><br></div><div dir="auto">Of course, Aaron can take his original example, and do something similar.</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 Fri, Jan 23, 2026 at 3:35 PM Don Brutzman via X3D-Ecosystem <<a href="mailto:x3d-ecosystem@web3d.org">x3d-ecosystem@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I recommend getting a simple example first. I look forward to putting the .blend file and converted output into the HAnim X3D Examples Archive. Continuing testing, documentation and progress updates will likely benefit.</div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 23, 2026 at 1:26 PM Joe D Williams via X3D-Ecosystem <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@web3d.org</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:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">> GCE Skin node’s “shapes” field </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:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">should be GCESkin but </span><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">should not have 'skin' in the name. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">It is more than skin and less than skin at the same time</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">and it is not HAnim, it is HAnim Part 2 import stuff. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">Not much if anything to do with HAnim part 1. </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">Then you are overloading this node with other stuff, like lights? </span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">Really step back and think about how to do this without trying to load everything into this 'Node;</span></p>
<p style="margin:0.1rem 0px;line-height:1"><span style="color:rgb(0,0,0);font-family:Calibri,sans-serif;font-size:14.6667px;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:Calibri,sans-serif;font-size:14.6667px;white-space:normal;float:none;display:inline">Joe</span></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>
<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: Bergstrom, Aaron <<a href="mailto:aaron.bergstrom@und.edu" target="_blank">aaron.bergstrom@und.edu</a>><br>Sent: Jan 22, 2026 7:22 AM<br>To: X3D Ecosystem public discussion <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@web3d.org</a>>, Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>, Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" target="_blank">katy@ksappareldesign.com</a>>, GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>>, Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>><br>Cc: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Subject: RE: [X3D-Ecosystem] Blender export: Bone+Transform = Joint</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div>
<p class="MsoNormal">All,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Initially, the GCE Skin node’s “shapes” field was not going to allow any node types other than “Shapes”, but recently Michalis has changed his mind on this. It may be a bit before it is implemented, but “shapes” will also allow “Group” nodes and many other node types.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Hoewver, “Transform” nodes under a CGE Skin node’s “shapes” field will still NOT be allowed.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Unfortunately, I cannot provided any feedback on Blender Armature nodes as I have not read up on how they work.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I had planned to read up on the topic. I received the book “Beginner’s Guide to Creating Characters in Blender” for Christmas, which I figured would have some discussion of Blender character rigging…</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">But alas, unfortunately there is absolutely no discussion about Armature or character rigging in that book. I guess I should have looked at the book’s Table of Contents before asking for it.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Oh well, it’s always hard to buy xmas gifts for dad.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Disappointing, nonetheless.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Aaron</p>
<p class="MsoNormal"> </p>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><strong>From:</strong> X3D-Ecosystem <<a href="mailto:x3d-ecosystem-bounces@web3d.org" target="_blank">x3d-ecosystem-bounces@web3d.org</a>> <strong>On Behalf Of </strong>John Carlson via X3D-Ecosystem<br><strong>Sent:</strong> Wednesday, January 21, 2026 11:56 PM<br><strong>To:</strong> Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>; Katy Schildmeyer KS APPAREL DESIGN <<a href="mailto:katy@ksappareldesign.com" target="_blank">katy@ksappareldesign.com</a>>; GPU Group <<a href="mailto:gpugroup@gmail.com" target="_blank">gpugroup@gmail.com</a>>; X3D Ecosystem public discussion <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@web3d.org</a>>; Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com" target="_blank">michalis.kambi@gmail.com</a>><br><strong>Cc:</strong> John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br><strong>Subject:</strong> [X3D-Ecosystem] Blender export: Bone+Transform = Joint</p>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I am starting to realize that for Blender HAnim export, at least for sandrunner, that Bone parent + Transform child (Empty object) = HAnimJoint (combined). So you must go down the non-bone hierarchy under Armature to collect the Transform (translation, rotation, scale), go to the parent bone of the non-bone to get the head (center), and create an HAnimJoint from those values. Then, you must (somehow) attach the mesh (skin) to the HAnimJoint through vertex groups (skinCoordWeight and skinCoordIndex). And collect all coordinates from the meshes into the skinCoord containerField in a Coordinate.point field. All the meshes will be Shape (mesh) nodes in the skin containerField field.</p>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">This is for the XML encoding. I am not currently including other encodings.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">The HAnimJoints should not have *any* children except other HAnimJoints and HAnimDisplacers. There’s no HAnimSegments or HAnimSites. There will be HAnimDisplacers, but I don’t know how to export those yet, help is desired. I suggest we get browsers ready for this.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">The only Transforms that will be exported will be outside the Humanoid or in skin, but the latter is unlikely, since HAnimJoints can’t contain Transforms.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">If there’s no bone parent for a Blender object inside the armature, an HAnimJoint will be created with its closest ancestor’s bone head (center).</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">That’s as far as I got. Please review.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">Please discuss how Groups work under Shapes in this case. Also the CGE Skin node should be discussed.</p>
</div>
<div>
<p class="MsoNormal"> </p>
</div>
<div>
<p class="MsoNormal">John</p>
</div>
</div>
</div>
<p style="margin:0.1rem 0px;line-height:1"> </p>-- <br>
X3D-Ecosystem mailing list<br>
<a href="mailto:X3D-Ecosystem@web3d.org" target="_blank">X3D-Ecosystem@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org</a><br>
</blockquote></div>
-- <br>
X3D-Ecosystem mailing list<br>
<a href="mailto:X3D-Ecosystem@web3d.org" target="_blank">X3D-Ecosystem@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-ecosystem_web3d.org</a><br>
</blockquote></div></div>