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

John Carlson yottzumm at gmail.com
Wed Mar 5 22:09:56 PST 2025


Castle not quite ignores the missing joints.

  [image: image.png]

On Wed, Mar 5, 2025 at 11:54 PM Joe D Williams <joedwil at earthlink.net>
wrote:

> 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>
> 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>
>> Sent: Mar 5, 2025 10:53 AM
>> To: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org>
>> Cc: John Carlson <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>
>> 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>
>>
>>
>> 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>
>> 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>
>>> Sent: Mar 5, 2025 10:06 AM
>>> To: John Carlson <yottzumm at gmail.com>
>>> Cc: Bergstrom, Aaron <aaron.bergstrom at und.edu>, X3D Ecosystem public
>>> discussion <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>
>>> *Sent:* Wednesday, March 5, 2025 11:50 AM
>>> *To:* Bergstrom, Aaron <aaron.bergstrom at und.edu>
>>> *Cc:* X3D Ecosystem public discussion <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> 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/981c345a/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 90598 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-ecosystem_web3d.org/attachments/20250306/981c345a/attachment-0001.png>


More information about the X3D-Ecosystem mailing list