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

John Carlson yottzumm at gmail.com
Thu Mar 6 10:20:49 PST 2025


AFAIK, joints field, sites field, and segments field are of type MFNode,
not MFString.

If we just include name field in the SFNodes, great.  That’s not what
X3dToPython.xslt and/or x3d.py do.

John

On Thu, Mar 6, 2025 at 6:35 AM Joe D Williams <joedwil at earthlink.net> wrote:

> Right castle throws a non-fatal error and adds the 'joints' list.
>
> All of joints field and segments field and sites field should all be
> treated same.
>
> Simple to just include 'name' field instead of the USE syntax.
>
> Joe
>
>
>
>
>
> ;
>
> -----Original Message-----
> From: John Carlson <yottzumm at gmail.com>
> Sent: Mar 5, 2025 10:18 PM
> To: Joe D Williams <joedwil at earthlink.net>
> Cc: X3D Ecosystem public discussion <x3d-ecosystem at web3d.org>
> Subject: Re: [X3D-Ecosystem] Fwd: RawKee Update - Implemented a companion
> export script for x3d.py
>
>
> 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/5b84cabc/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/5b84cabc/attachment-0001.png>


More information about the X3D-Ecosystem mailing list