<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Note that I have a patch for X3DUOM for this issue, but I haven't gotten to X3D XML schema yet.</div><div><br></div><div>I'm having difficulty finding references to <b>X3DSingleTextureTransformNode </b>inside the inheritance hierarchy in X3DUOM, X3DJSAIL and x3.dpy (there is a standalone interface).  This absence in X3DUOM is affecting X3D JSON schema. Here are 3 node types in the standard where the inheritance is present, but I don't see it in X3DUOM.</div><div><br></div><div><font color="#1155cc"><u><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureTransform">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureTransform</a></u></font><br></div><div><font color="#1155cc"><u><br></u></font></div><div><font color="#1155cc"><u><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransform3D">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransform3D</a><br></u></font></div><div><font color="#1155cc"><u><br></u></font></div><div><font color="#1155cc"><u><a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransformMatrix3D">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransformMatrix3D</a></u></font></div><div><br></div><div>=============================================================</div><div><div>X3DUOM:</div><div><br></div><div>      <ConcreteNode name="TextureTransform"></div><div>         <InterfaceDefinition specificationUrl="<a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureTransform">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureTransform</a>"</div><div>                              appinfo="TextureTransform shifts 2D texture coordinates for positioning, orienting and scaling image textures on geometry."></div><div>            <componentInfo name="Texturing" level="1"/></div><div>            <Inheritance baseType="<b>X3DTextureTransformNode</b>"/></div></div><div>[ snip ]</div><div><div>      <ConcreteNode name="TextureTransform3D"></div><div>         <InterfaceDefinition specificationUrl="<a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransform3D">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransform3D</a>"</div><div>                              appinfo="TextureTransform3D applies a 3D transformation to texture coordinates."></div><div>            <componentInfo name="Texturing3D" level="1"/></div><div>            <Inheritance baseType="<b>X3DTextureTransformNode</b>"/></div></div><div>[ snip ]</div><div>      <ConcreteNode name="TextureTransformMatrix3D">                                                           <InterfaceDefinition specificationUrl="<a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransformMatrix3D">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransformMatrix3D</a>"                                                                 appinfo="TextureTransformMatrix3D applies a 3D transformation to texture coordinates.">                                                                                                   <componentInfo name="Texturing3D" level="1"/>                                                         <Inheritance baseType="<b>X3DTextureTransformNode</b>"/> <br></div><div>==================================================================</div><div>Here are some of the issues generated from x3dvalidate, when dealing with conversions of glTF files using Holger's x3d-tidy.</div><div><br></div><div> location in document: /X3D/Scene/-children/1/Shape/-appearance/Appearance/-textureTransform/MultiTextureTransform/-textureTransform/0</div><div> params: {"additionalProperty":"TextureTransform"}</div><div> file: ./ChairDamaskPurplegold/glTF/ChairDamaskPurplegold.x3dj</div><div><br></div><div> location in document: /X3D/Scene/-children/2/Group/-children/1/Switch/-children/0/Shape/-appearance/Appearance/-textureTransform/MultiTextureTransform/-textureTransform/0</div><div> params: {"additionalProperty":"TextureTransform"}</div><div> file: ./GlamVelvetSofa/glTF/GlamVelvetSofa.x3dj</div><div><br></div><div> location in document: /X3D/Scene/-children/1/Group/-children/0/Switch/-children/0/Shape/-appearance/Appearance/-textureTransform/MultiTextureTransform/-textureTransform/0</div><div> params: {"additionalProperty":"TextureTransformMatrix3D"}</div><div> file: ./SheenChair/glTF/SheenChair.x3dj</div><div><br></div><div> location in document: /X3D/Scene/-children/1/Shape/-appearance/Appearance/-textureTransform/MultiTextureTransform/-textureTransform/0</div><div> params: {"additionalProperty":"TextureTransformMatrix3D"}</div><div> file: ./SheenCloth/glTF/SheenCloth.x3dj</div><div><br></div><div> location in document: /X3D/Scene/-children/1/Group/-children/1/Transform/-children/0/Shape/-appearance/Appearance/-textureTransform/MultiTextureTransform/-textureTransform/0</div><div> params: {"additionalProperty":"TextureTransformMatrix3D"}</div><div> file: ./ToyCar/glTF/ToyCar.x3dj</div><div>==================================================================</div><div>Here's some sample JSON:</div><div><br></div><div><div>                            "-textureTransform": { "MultiTextureTransform":</div><div>                              {</div><div>                                "-textureTransform": [</div><div>                                  { "TextureTransformMatrix3D":</div><div>                                    {</div><div>                                      "@mapping": "TEXCOORD_0",</div><div>                                      "@matrix": [ 3, 0, 0, 0, 0, -3, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 ]</div><div>                                    }</div><div>                                  },</div><div>                                  { "TextureTransformMatrix3D":</div><div>                                    {</div><div>                                      "@mapping": "TEXCOORD_1",</div><div>                                      "@matrix": [ 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 ]                                      }</div><div>                                  }</div><div>                                ]</div><div>                              }</div><div>                            }</div><div>                          }</div></div><div>[ snip ]</div><div><br></div><div><div>                            "-textureTransform": { "MultiTextureTransform":</div><div>                              {</div><div>                                "-textureTransform": [</div><div>                                  { "TextureTransform":</div><div>                                    {</div><div>                                      "@mapping": "TEXCOORD_0",</div><div>                                      "@translation": [ 0, -1 ],</div><div>                                      "@scale": [ 1, -1 ]</div><div>                                    }</div><div>                                  },</div><div>                                  { "TextureTransformMatrix3D":</div><div>                                    {</div><div>                                      "@mapping": "TEXCOORD_1",</div><div>                                      "@matrix": [ -2.080734, 4.546487, 0, 0, 4.546487, 2.080734, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1 ]</div><div>                                    }</div><div>                                  }</div><div>                                ]</div><div>                              }</div><div>                            }</div></div><div><br></div><div>I don't currently have any XML, but it should be easy to generate.</div><div><br></div><div>I don't see any specific "glTFisms" in these examples, but there might be some??</div><div><br></div><div>Note: when I repaired the inheritance hierarchy in X3DUOM, the validator got past the problem.</div><div><br></div><div>Thanks,</div><div><br></div><div>John</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 27, 2024 at 9:49 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Okay, I ran x3d-tidy on <a href="https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models" target="_blank">glTF-Sample-Assets/Models at main · KhronosGroup/glTF-Sample-Assets (github.com)</a>  to produce .x3dj files (JSON)</div><div dir="ltr"><br></div><div>This was a first step.  Then I installed the JSON schema I developed for X_ITE in x3dvalidate.</div><div><br></div><div>Then I ran:</div><div><br></div><div>$ find . -name '*.x3dj' | xargs node.exe ~/x3dvalidate/index.js|grep -E '^ location|^ params'|sort -u<br></div><div><br></div><div>Most of the reported issues involved</div><div><br></div><div>@colorSpaceConversion<br></div><div><br></div><div>inside</div><div><br></div><div>ImageTexture</div><div><br></div><div>and -extensions</div><div><br></div><div>inside</div><div><br></div><div>PhysicalMaterial</div><div><br></div><div>Other issues involved:</div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/Transform/-children/0/Shape/-geometry/IndexedTriangleSet</div><div> params: {"additionalProperty":"-tangent"}</div></div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/HAnimHumanoid/-skeleton/0</div><div> params: {"additionalProperty":"Transform"}</div></div><div>[ not per spec, no Transform inside HAnimHumanoid.-skeleton ]</div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/Group/-children/0</div><div> params: {"additionalProperty":"EnvironmentLight"}</div></div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/Group/-children/0/HAnimHumanoid/-skeleton/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0/HAnimJoint/-children/0</div><div> params: {"additionalProperty":"HAnimHumanoid"}</div></div><div>[ not per spec, no humanoid inside joint ]</div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/InstancedShape</div><div> params: {"additionalProperty":"-appearance"}</div></div><div><br></div><div><div> location in document: /X3D/Scene/-children/1/Group/-children/0/Transform/-children/0/Shape/-appearance/Appearance/-material/SpecularGlossinessMaterial</div><div> params: {"additionalProperty":"-diffuseTexture"}</div></div><div><br></div><div>(I'll be looking at your X3DUOM in more detail).</div><div><br></div><div>If you would like more detail, I can provide it, particularly, you might be interested in specific filenames.</div></div></div></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 27, 2024 at 1:04 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Here's a X3D JSON schema with extensions for X_ITE material extension nodes (including an X3DMaterialExtensionNode abstract node type).<div><br></div><div>Please review.</div><div><br></div><div><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/schema/x3d-4.0-debug.json" target="_blank">X3DJSONLD/src/main/schema/x3d-4.0-debug.json at master · coderextreme/X3DJSONLD (github.com)</a><br></div><div><br></div><div>I will eventually get this into x3dschema, x3dvalidate, etc. This depends on demand, I guess.</div><div><br></div><div>I'm going to let Holger publish any X3DUOM extensions for X_ITE for now, since Holger is more aware of what values are actually good ones for these nodes.</div><div><br></div><div>My current plan is to convert over to using x3d-tidy instead of X3dToJson.xslt.  I realize this will probably mean reordering component, meta and unit statements, but I'm crossing my fingers.</div><div><br></div><div>John</div></div></div>
</blockquote></div>
</blockquote></div>