[X3D-Ecosystem] Fwd: RawKee Update - Implemented a companion export script for x3d.py

Joe D Williams joedwil at earthlink.net
Wed Mar 5 21:53:31 PST 2025


castle ignores if missing, but adds joints field for export
-----Original Message-----
From: John Carlson <yottzumm at gmail.com>
Sent: Mar 5, 2025 5:54 PM
To: Joe D Williams <joedwil at earthlink.net>, X3D Ecosystem public discussion <x3d-ecosystem at web3d.org>
Subject: Re: [X3D-Ecosystem] Fwd: RawKee Update - Implemented a companion export script for x3d.py

I will try to check the latest castle-model-viewer and castle-model-converter.  If they ignores the missing joints field, we’re good.
 
Also, I will look at joints in X3DUOM to see if the joints field is required.
 
John

On Wed, Mar 5, 2025 at 1:41 PM Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)> wrote:
Hi John,

‘joints’ is that silly field child of Humanoid that lists the Joint nodes with a list collection of USE notations. 

‘joints’ is not a field of skeleton. It is a field of Humanoid. 

So, Humanoid and Joint are nodes while skeleton is a node type
(otherwise called a 'container') 
Same as the keyword 'geometry' is a node type and IndexedFaceSet is a node name.

skin is also a container, could be called a node type. 

The node type says what node names can appear in the container.
The node name says what data is in the node. 

So: 
There are two container fields for HAnimJoint, ‘skeleton’ (for the first one, the root),
and ‘children’ (default for the rest of the Joint hierarchy).
  
See, when you look at the Classic, the name of the 'nodetype' (containerfield) is the first text and then in the xml it gets to be containerfield='nodetype'

Done that way to eliminate the need for wrapper tags (maybe called container tags) in the xml, if I recall. 
In xml, we get an attr rather than a tag; thank goodness for all good favors.

All Fine,
Joe

-----Original Message-----
From: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>
Sent: Mar 5, 2025 10:53 AM
To: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>
Cc: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>
Subject: [X3D-Ecosystem] Fwd: RawKee Update - Implemented a companion export script for x3d.py

Correction.

---------- Forwarded message ---------
From: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>
Date: Wed, Mar 5, 2025 at 12:44 PM
Subject: Fwd: [X3D-Ecosystem] RawKee Update - Implemented a companion export script for x3d.py
To: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>


There are three container fields for HAnimJoint, ‘skeleton’, ‘children’ (default) and ‘joints’.  I don’t disagree with Joe.
 
Until tools ignore the missing joints field, it’s still with us.


 
John
On Wed, Mar 5, 2025 at 12:22 PM Joe D Williams <joedwil at earthlink.net (mailto:joedwil at earthlink.net)> wrote:
Only the first Joint, root, has containerField 'skeleton'  
All other child Joints are containerField 'children' 

the keyword 'skeleton' is not a Node, it is a container, a type 

Classic

 skeleton [
    DEF Joe_HumanoidRoot ...Joint ...
 ]

xml
<Joint  DEF='Joe_HumanoidRoot' ...  containerField='skeleton'  


HAnimHumanoid is a node, not a type. 
Joe

-----Original Message-----
From: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>
Sent: Mar 5, 2025 10:06 AM
To: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)>
Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu (mailto:aaron.bergstrom at und.edu)>, X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>
Subject: Re: [X3D-Ecosystem] RawKee Update - Implemented a companion export script for x3d.py

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.

That would make it more portable.

From: John Carlson <yottzumm at gmail.com (mailto:yottzumm at gmail.com)> 
Sent: Wednesday, March 5, 2025 11:50 AM
To: Bergstrom, Aaron <aaron.bergstrom at und.edu (mailto:aaron.bergstrom at und.edu)>
Cc: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org (mailto:x3d-ecosystem at web3d.org)>
Subject: Re: [X3D-Ecosystem] RawKee Update - Implemented a companion export script for x3d.py


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.














On Wed, Mar 5, 2025 at 10:57 AM Bergstrom, Aaron <aaron.bergstrom at und.edu (mailto:aaron.bergstrom at und.edu)> wrote:


if nType == "HAnimHumanoid":
jIdx = -1
sIdx = -1
for idx in range(len(mNodeList)):
if mNodeList[idx] == "joints":
jIdx = idx
elif mNodeList[idx] == "skeleton":
sIdx = idx
if sIdx != -1 and jIdx != -1:
mNodeList[jIdx] = "skeleton"
mNodeList[sIdx] = "joints"





















-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20250306/ed2c6529/attachment.html>


More information about the X3D-Ecosystem mailing list