[x3d-public] [x3d] TextureTransform* node inheritance problems in X3DUOM need correction to X3DSingleTextureTransformNode
John Carlson
yottzumm at gmail.com
Wed Oct 8 02:22:56 PDT 2025
Okay. Gmail lost all my work.
Summary:
1. When converting from .x3dv to .x3d, Holger's x3d-tidy puts:
xsi:noNamespaceSchemaLocation="
https://www.web3d.org/specifications/x3d-4.0.xsd"
Then, X3dToJson.xlst picks that up and produces:
"@xsi:noNamespaceSchemaLocation":"
https://www.web3d.org/specifications/x3d-4.0.xsd",
"@xsd:noNamespaceSchemaLocation":"
https://www.web3d.org/specifications/x3d-4.0.xsd",
Which x3dvalidate then complains about:
File: examples/conan_23_Aug2025_Final.json
Error invalid file examples/conan_23_Aug2025_Final.json
keyword: additionalProperties
location in document: /X3D
message: must NOT have additional properties
params: {"additionalProperty":"@xsi:noNamespaceSchemaLocation"}
file: examples/conan_23_Aug2025_Final.json
version: 4.0
Can we agree that xsd is the correct prefix (namespace?) to use for
noNamespaceSchemaLocation? Otherwise, I might not be able to validate JSON
files--But I haven't tried yet! Regexp to the rescue?
Of note, when x3d-tidy converts to JSON, the following is produced:
"@xsd:noNamespaceSchemaLocation": "
https://www.web3d.org/specifications/x3d-4.0.xsd",
Having 2 properties in JSON and alternate attributes for XML seems
excessive?
Best path forward?
Thanks!
John
On Wed, Oct 8, 2025 at 3:07 AM John Carlson <yottzumm at gmail.com> wrote:
> Okay, awake, and motivation is kicking in.
>
> Tasks:
>
> 1. Download latest X3DUOM, overwrite my changes.
>
> 2. Double check that needed changes are present in X3DUOM
>
> 3. Copy X3DUOM to working folder
>
> 4. Merge X3DUOM with X_ITE UOM
>
> 5. Create JSON schemas, fieldTypes.js and mapToMethod.js.
>
> 6. Create any needed JSON files to test MultiTextureTransform.
>
> 7. Copy schemas and test files to x3dvalidate repository.
>
> 8. Test.
>
> 9. Report Success/Failure.
>
> 10. Validate the entire archive.
>
> 11. Make a decision whether to report more potential issues or not.
> Ignore flagged files.
>
> 12. Check-in and publish.
>
> If anyone is interested in my UOM merger, let me know. It’s written in
> Python.
>
> On Tue, Oct 7, 2025 at 3:11 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> Okay. I will see how the change affects JSON schema. I will be
>> validating Aaron’s models as well. Should be fun!
>>
>> But first I get some sleep!
>>
>> Thanks a bunch!
>>
>> John
>> On Tue, Oct 7, 2025 at 3:02 PM Don Brutzman <don.brutzman at gmail.com>
>> wrote:
>>
>>> Shifting this conversation to x3d-public from x3d (member-only) mailing
>>> list. Original thread:
>>>
>>> - [x3d] Zoom meeting to discuss inheritance in TextureTransforms
>>> -
>>> https://www.web3d.org/mailman/private/x3d_web3d.org/2025-October/008869.html
>>>
>>> Problem summary: X3D 4.0 introduced X3DSingleTextureTransformNode as an
>>> intermediate interface for three nodes. This was not reflected in X3D XML
>>> Schema appinfo and X3DUOM.
>>>
>>> The thread below indicates problems with interface mismatch for three
>>> nodes:
>>> | -+- TextureTransform
>>> | +- TextureTransformMatrix3D
>>> | +- TextureTransform3D
>>>
>>> Background details: X3D version 4.0 introduced a new intermediate
>>> interface X3DSingleTextureTransformNode between these nodes and the
>>> parent interface X3DTextureTransformNode.
>>>
>>> This change was not reflected in X3D XML Schema inheritance appinfo,
>>> which left X3D Unified Object Model (X3DUOM) out of date for version 4.0.
>>> Now corrected.
>>>
>>> - X3D XML Schema update activity:
>>> - https://www.web3d.org/specifications/x3d-schema-changelog.txt
>>> - 7 OCT 2025, carlson, brutzman
>>>
>>> - (v4.0) X3D version 4.0 introduced a new intermediate interface
>>> X3DSingleTextureTransformNode.
>>> Correct annotations for TextureTransform, TextureTransformMatrix3D,
>>> TextureTransform3D
>>> to inherit X3DSingleTextureTransformNode vice X3DTextureTransformNode.
>>> Similarly remove 'mapping' field from these three nodes, since that
>>> field
>>> is defined as part of X3DSingleTextureTransformNode.
>>> TODO: update X3D XML Schema documentation using Altova XMLSpy.
>>>
>>>
>>> X3D XML Schema changes and X3DUOM changes visible at
>>>
>>> - SourceForge x3d revision,
>>> - https://sourceforge.net/p/x3d/code/37586/
>>>
>>> Applied and tested changes by rebuilding and releasing X3DJSAIL.
>>>
>>> - X3D Java Scene Access Interface Library (X3DJSAIL)
>>> - X3D Java Scene Access Interface Library (X3DJSAIL) supports
>>> programmers with standards-based X3D Java interfaces and objects, all as
>>> open source.
>>> - https://www.web3d.org/specifications/java/X3DJSAIL.html
>>>
>>> Incidentally, while troubleshooting, I found a previously overlooked bug
>>> in X3DJSAIL deployment. Updated Javadoc was not getting uploaded to the
>>> correct directory. Now fixed.
>>>
>>> Confirmation of changed interfaces for these three nodes can be found at
>>>
>>> - X3DJSAIL Javadoc, Interface X3DSingleTextureTransformNode
>>> -
>>> https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/sai/Texturing/X3DSingleTextureNode.html
>>>
>>> John, rather than creating a new ticket on sourceforge, I clarified and
>>> updated your other ticket.
>>>
>>> - ticket #72, X3DUOM inheritance for three texture-transform nodes
>>> needs to be X3DSingleTextureTransformNode
>>> - (renamed from X3DUOM please take action!
>>> <https://sourceforge.net/p/x3d/tickets/72/>)
>>> - https://sourceforge.net/p/x3d/tickets/72/
>>>
>>> Again thanks for detecting and reporting this complex issue, glad we
>>> have it fixed.
>>>
>>> Have fun with X3D! 😀
>>>
>>> all the best, Don
>>> --
>>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>> Relative Motion Consulting https://RelativeMotion.info
>>>
>>>
>>> On Tue, Oct 7, 2025 at 11:37 AM Don Brutzman <don.brutzman at gmail.com>
>>> wrote:
>>>
>>>> I am shifting this conversation to x3d-public mailing list since
>>>> potential impact is broad.
>>>>
>>>> Summary: X3D 4.0 introduced X3DSingleTextureTransformNode as an
>>>> intermediate interface for three nodes. This was not reflected in X3D XML
>>>> Schema appinfo and X3DUOM. Corrections are needed.
>>>>
>>>> all the best, Don
>>>> --
>>>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>>> Relative Motion Consulting https://RelativeMotion.info
>>>>
>>>>
>>>> On Tue, Oct 7, 2025 at 9:50 AM John Carlson <yottzumm at gmail.com> wrote:
>>>>
>>>>> Please do create a ticket. Thanks!
>>>>>
>>>>> Feel free to copy and paste my text into the ticket.
>>>>>
>>>>> I have not looked at XML schema in-depth. Probably there’s some issue
>>>>> with how X3DUOM is created, if the XML schema follows the specification.
>>>>>
>>>>> Perhaps the question becomes, should a MultiTextureTransform be able
>>>>> to contain another MultiTextureTransform in the textureTransform field?
>>>>>
>>>>> John
>>>>>
>>>>> On Tue, Oct 7, 2025 at 11:38 AM Don Brutzman <don.brutzman at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Thanks for the well-defined, in-depth trouble report. I look forward
>>>>>> to following your points in detail by checking X3DUOM, and then the
>>>>>> originating X3D XML Schema, where information about inheritance
>>>>>> relationships is captured. The X3D Architecture specification of course
>>>>>> remains authoritative, and X3DUOM is a reflection of those relationships.
>>>>>>
>>>>>> - X3D Architecture, draft v4.1, clause 18 Texturing component,
>>>>>> 18.3 Abstract types
>>>>>> -
>>>>>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/texturing.html#AbstractTypes
>>>>>>
>>>>>> The following specification diagram is also helpful, reference and
>>>>>> excerpt here:
>>>>>>
>>>>>> - X3D Architecture, draft v4.1, clause 4 Concepts, 4.4.2.3
>>>>>> Interface hierarchy
>>>>>> -
>>>>>> https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/concepts.html#InterfaceHierarchy
>>>>>>
>>>>>> +- X3DAppearanceChildNode -+- AcousticProperties
>>>>>> | +- FillProperties
>>>>>> | [...]
>>>>>> | |
>>>>>> | +- X3DTextureNode -+- MultiTexture
>>>>>> | | |
>>>>>> | | + X3DSingleTextureNode -+- X3DEnvironmentTextureNode -+- ComposedCubeMapTexture
>>>>>> | | | +- GeneratedCubeMapTexture
>>>>>> | | | +- ImageCubeMapTexture (X3DUrlObject)*
>>>>>> | | |
>>>>>> | | +- X3DTexture2DNode -+- ImageTexture (X3DUrlObject)*
>>>>>> | | | +- MovieTexture (X3DSoundSourceNode, X3DUrlObject)*
>>>>>> | | | +- PixelTexture
>>>>>> | | |
>>>>>> | | +- X3DTexture3DNode -+- ComposedTexture3D
>>>>>> | | +- ImageTexture3D (X3DUrlObject)*
>>>>>> | | +- PixelTexture3D
>>>>>> | |
>>>>>> | |
>>>>>> | +- X3DTextureTransformNode +- MultiTextureTransform
>>>>>> | +- X3DSingleTextureTransformNode -+- TextureTransform
>>>>>> | +- TextureTransformMatrix3D
>>>>>> | +- TextureTransform3D
>>>>>>
>>>>>>
>>>>>> For now this issue is best handled as a trouble ticket - you are
>>>>>> welcome to create it, or I can. Again thanks.
>>>>>>
>>>>>> - SourceForge: X3D Trouble Tickets
>>>>>> - https://sourceforge.net/p/x3d/tickets/
>>>>>>
>>>>>> all the best, Don
>>>>>> --
>>>>>> X3D Graphics, Maritime Robotics, Distributed Simulation
>>>>>> Relative Motion Consulting https://RelativeMotion.info
>>>>>>
>>>>>>
>>>>>> On Tue, Oct 7, 2025 at 2:38 AM John Carlson <yottzumm at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> First off, I don't see a problem with the specification!
>>>>>>>
>>>>>>> The inheritance in X3DUOM for these 3 nodes needs to be investigated.
>>>>>>>
>>>>>>> TextureTransform
>>>>>>> TextureTransform3D
>>>>>>> TextureTransformMatrix3D
>>>>>>>
>>>>>>> Specifically I would like to additionally inherit from
>>>>>>>
>>>>>>> X3DSingleTextureTransformNode
>>>>>>>
>>>>>>> See details below:
>>>>>>>
>>>>>>> TextureTransform : X3DSingleTextureTransformNode {
>>>>>>> SFVec2f [in,out] center 0 0 (-∞,∞)
>>>>>>> SFString [in,out] mapping ""
>>>>>>> SFNode [in,out] metadata NULL [X3DMetadataObject]
>>>>>>> SFFloat [in,out] rotation 0 (-∞,∞)
>>>>>>> SFVec2f [in,out] scale 1 1 (-∞,∞)
>>>>>>> SFVec2f [in,out] translation 0 0 (-∞,∞)
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> TextureTransform3D : X3DSingleTextureTransformNode {
>>>>>>> SFVec3f [in,out] center 0 0 0 (-∞,∞)
>>>>>>> SFString [in,out] mapping ""
>>>>>>> SFNode [in,out] metadata NULL [X3DMetadataObject]
>>>>>>> SFRotation [in,out] rotation 0 0 1 0 (-∞,∞)
>>>>>>> SFVec3f [in,out] scale 1 1 1 (-∞,∞)
>>>>>>> SFVec3f [in,out] translation 0 0 0 (-∞,∞)
>>>>>>> }
>>>>>>>
>>>>>>> TextureTransformMatrix3D : X3DSingleTextureTransformNode {
>>>>>>> SFString [in,out] mapping ""
>>>>>>> SFMatrix4f [in,out] matrix 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 (-∞,∞)
>>>>>>> SFNode [in,out] metadata NULL [X3DMetadataObject]
>>>>>>> }
>>>>>>>
>>>>>>> X3DSingleTextureTransformNode : X3DTextureTransformNode {
>>>>>>> SFString [in,out] mapping ""
>>>>>>> SFNode [in,out] metadata NULL [X3DMetadataObject]
>>>>>>> }
>>>>>>>
>>>>>>> Apparently, the TextureTransform nodes DO
>>>>>>>
>>>>>>> inherit from X3DTextureTransformNode in X3DUOM, but currently,
>>>>>>>
>>>>>>> MultiTextureTransform has a field, textureTransform, which requires an
>>>>>>>
>>>>>>> X3DSingleTextureTransformNode
>>>>>>>
>>>>>>>
>>>>>>> So in X3DUOM, either additional inheritance needs to be added,
>>>>>>>
>>>>>>> or the acceptableNodeTypes needs to include the super type,
>>>>>>>
>>>>>>> X3DSingleTextureTransformNode.
>>>>>>>
>>>>>>>
>>>>>>> John
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> x3d mailing list
>>>>>>> x3d at web3d.org
>>>>>>> http://web3d.org/mailman/listinfo/x3d_web3d.org
>>>>>>>
>>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20251008/0e40c337/attachment-0001.html>
More information about the x3d-public
mailing list