[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