<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>So let's look at some of the products of X3DJSAIL and X3DJSONLD
      (either through Java or Node.js).  I backed out my change in the
      XML back to 3.3 <br>
    </p>
    <p><br>
    </p>
    <p>~/X3DJSONLD/src/main/data$ egrep ImageTexture ball.x3d
      ball.x3d.new ball.newPrettyPrint.intermediate.x3d ball.new.x3d <br>
    </p>
    <p>[ this is the original XML file.   See the 6 different
      containerFields ]<br>
    </p>
    <p>ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'
      containerField="backTexture"/><br>
      ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'
      containerField="bottomTexture"/><br>
      ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'
      containerField="frontTexture"/><br>
      ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'
      containerField="leftTexture"/><br>
      ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'
      containerField="rightTexture"/><br>
      ball.x3d:                       <ImageTexture
      url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'
      containerField="topTexture"/></p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p>[ this is the XML after the JSON goes through X3DJSONLD.js. 
      Notice that containerField names are preserved. ]<br>
    </p>
    <p><br>
    </p>
    <p>ball.x3d.new:<ComposedCubeMapTexture containerField="texture"
      DEF="texture"><ImageTexture containerField="backTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_back.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png&quot</a>;"></ImageTexture><br>
      ball.x3d.new:<ImageTexture containerField="bottomTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_bottom.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png&quot</a>;"></ImageTexture><br>
      ball.x3d.new:<ImageTexture containerField="frontTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_front.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png&quot</a>;"></ImageTexture><br>
      ball.x3d.new:<ImageTexture containerField="leftTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_left.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png&quot</a>;"></ImageTexture><br>
      ball.x3d.new:<ImageTexture containerField="rightTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_right.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png&quot</a>;"></ImageTexture><br>
      ball.x3d.new:<ImageTexture containerField="topTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_top.png&quot;
&quot;<a class="moz-txt-link-freetext" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png&quot">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png&quot</a>;"></ImageTexture></p>
    <p><br>
    </p>
    <p>[ this is the intermediate output from X3DJSAIL Note a single
      containerField.  ]<br>
    </p>
    <p>ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'/><br>
      ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'/><br>
      ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'/><br>
      ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'/><br>
      ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'/><br>
      ball.newPrettyPrint.intermediate.x3d:            <ImageTexture
      containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'/></p>
    <p><br>
    </p>
    <p>[ This is the output from Node.js/X3DJSAIL, I believe.  Note that
      the containerField's echo the above intermediate form. ]<br>
    </p>
    <p>ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'/><br>
      ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'/><br>
      ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'/><br>
      ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'/><br>
      ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'/><br>
      ball.new.x3d:            <ImageTexture containerField='back'
      url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'/></p>
    <p><br>
    </p>
    <p>Note that if I call "setFront()" or "setFrontTexture()" I expect
      the containerField to be set.   So I wrote Java like this:</p>
    <p><br>
    </p>
    <p>.addChild(new Transform()<br>
                .addChild(new Shape()<br>
                  .setGeometry(new Sphere())<br>
                  .setAppearance(new Appearance()<br>
                    .setMaterial(new Material().setDiffuseColor(new
      float[] {0.7f,0.7f,0.7f}).setSpecularColor(new float[]
      {0.5f,0.5f,0.5f}))<br>
                    .setTexture(new
      ComposedCubeMapTexture().setDEF("texture")<br>
                      .setBackTexture(new ImageTexture().setUrl(new
      MFString6().getArray()))<br>
                      .setBottomTexture(new ImageTexture().setUrl(new
      MFString7().getArray()))<br>
                      .setFrontTexture(new ImageTexture().setUrl(new
      MFString8().getArray()))<br>
                      .setLeftTexture(new ImageTexture().setUrl(new
      MFString9().getArray()))<br>
                      .setRightTexture(new ImageTexture().setUrl(new
      MFString10().getArray()))<br>
                      .setTopTexture(new ImageTexture().setUrl(new
      MFString11().getArray())))</p>
    <p><br>
    </p>
    <p>And Node.js like this:</p>
    <p><br>
    </p>
    <p>          .addChild((new autoclass.Shape())<br>
                  .setGeometry((new autoclass.Sphere()))<br>
                  .setAppearance((new autoclass.Appearance())<br>
                    .setMaterial((new
      autoclass.Material()).setDiffuseColor(java.newArray("float",
      [java.newFloat(0.7), java.newFloat(0.7),
      java.newFloat(0.7)])).setSpecularColor(java.newArray("float",
      [java.newFloat(0.5), java.newFloat(0.5), java.newFloat(0.5)])))<br>
                    .setTexture((new
      autoclass.ComposedCubeMapTexture()).setDEF("texture")<br>
                      .setBackTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_back.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>])))<br>
                      .setBottomTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>])))<br>
                      .setFrontTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_front.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>])))<br>
                      .setLeftTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_left.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>])))<br>
                      .setRightTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_right.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>])))<br>
                      .setTopTexture((new
      autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_top.png",<a class="moz-txt-link-rfc2396E" href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>]))))</p>
    <p><br>
    </p>
    <p>Here's what's normally done to get a backTexture.  These look
      fairly good, I haven't found a bug in these methods for the
      containerFields.<br>
    </p>
    <p>        public ComposedCubeMapTexture setBackTexture(
      org.web3d.x3d.sai.Texturing.X3DTexture2DNode newValue)<br>
              {<br>
                      // set-newValue-validity-checks #0<br>
                      backTexture = newValue;<br>
                      if (newValue != null)<br>
                      {<br>
                              ((X3DConcreteElement)
      backTexture).setParent(this); // parentTest15<br>
                             
      ((X3DConcreteNode)backTexture).setContainerFieldOverride("backTexture");<br>
                      }<br>
                      if (backTextureProtoInstance != null)<br>
                      {<br>
                              backTextureProtoInstance.setParent(null);
      // housekeeping, clear prior object<br>
                              backTextureProtoInstance = null;<br>
                      }<br>
                      return this;<br>
              }</p>
    <p><br>
    </p>
    <p>But I just found this.  Looks not very good at all, and
      potentially why we get 6 back containerFields or 6 backTexture
      containerFields:</p>
    <p>ComposedCubeMapTexture.java (from X3DJSAIL source, please code
      review this, thanks):<br>
    </p>
    <p>private void handleFieldSynonyms()<br>
          {<br>
              String correctedContainerField;<br>
              if (hasAncestorX3D() &&
      findAncestorX3D().getVersion().startsWith("3"))<br>
                   correctedContainerField = "back";<br>
              else correctedContainerField = "backTexture";<br>
      <br>
              if      (getBackTexture() != null)<br>
                       ((X3DConcreteNode)
      getBackTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getBackTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getBackTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
      <br>
              if      (getBottomTexture() != null)<br>
                       ((X3DConcreteNode)
      getBottomTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getBottomTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getBottomTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
      <br>
              if      (getFrontTexture() != null)<br>
                       ((X3DConcreteNode)
      getFrontTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getFrontTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getFrontTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
      <br>
              if      (getLeftTexture() != null)<br>
                       ((X3DConcreteNode)
      getLeftTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getLeftTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getLeftTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
      <br>
              if      (getRightTexture() != null)<br>
                       ((X3DConcreteNode)
      getRightTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getRightTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getRightTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
      <br>
              if      (getTopTexture() != null)<br>
                       ((X3DConcreteNode)
      getTopTexture()).setContainerFieldOverride(correctedContainerField);<br>
              else if (getTopTextureProtoInstance() != null)<br>
                       ((X3DConcreteNode)
getTopTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
              }</p>
    <p><br>
    </p>
    <p><br>
    </p>
    <p>If someone could at least confirm the bug, that would be cool.<br>
    </p>
    <p>John<br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 5/28/21 2:08 PM, John Carlson wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAGC3UEmjqdPb9fS8J-04ty7JHg=pvXn31CYwFG0tzpTXUMTF8g@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="auto">I haven’t seen any validation problems when I
        changed the version of the JSON file to 4.0, JSON parser errors
        started when I changed the XML to 4.0.</div>
      <div dir="auto"><br>
      </div>
      <div dir="auto">Hopefully that is clear.   My thinking is kind of
        muggy right now.</div>
      <div dir="auto"><br>
      </div>
      <div dir="auto">John</div>
      <div dir="auto"><br>
      </div>
      <div dir="auto"><br>
      </div>
      <div><br>
        <div class="gmail_quote">
          <div dir="ltr" class="gmail_attr">On Fri, May 28, 2021 at
            10:56 AM Don Brutzman <<a href="mailto:brutzman@nps.edu"
              moz-do-not-send="true">brutzman@nps.edu</a>> wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Thanks
            John.  Yes there are a few differences in field names from
            X3D3 to X3D4, for improved object-model consistency. 
            Summarized at<br>
            <br>
            * X3D Scene Authoring Hints: Field name changes planned for
            improved consistency<br>
               <a
href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#fieldNameChanges"
              rel="noreferrer" target="_blank" moz-do-not-send="true">https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#fieldNameChanges</a><br>
            <br>
            We should be able to confirm correctness of X3DUOM 3.3 next
            week, am thinking that prior-version names/synonyms should
            be something to include in X3DUOM 4.0 as well.<br>
            <br>
            <br>
            On 5/27/2021 11:12 PM, John Carlson wrote:<br>
            > Report (still on old version of X3DJSAIL):<br>
            > <br>
            > These files are the one's I'm trying to get
            translations working for:<br>
            > <br>
            > /X3DJSONLD/src/main/data$ grep -l
            ComposedCubeMapTexture *.x3d| grep -v new<br>
            > <br>
            > ball.x3d<br>
            > bubbles.x3d<br>
            > bub.x3d<br>
            > flowerproto.x3d<br>
            > flowers4.x3d<br>
            > flowers7.x3d<br>
            > flowers.x3d<br>
            > geo.x3d<br>
            > mirror2.x3d<br>
            > mirror.x3d<br>
            > <br>
            > Here are the JSON files that don't parse:<br>
            > <br>
            > ~/X3DJSONLD/src/main/data$ for i in *.json; do jsonlint
            $i 2> /dev/null 1> /dev/null|| echo $i; done<br>
            > ball.new.json<br>
            > bubbles.new.json<br>
            > bub.new.json<br>
            > flowerproto.new.json<br>
            > flowers4.new.json<br>
            > flowers7.new.json<br>
            > flowers.new.json<br>
            > geo.new.json<br>
            > mirror2.new.json<br>
            > mirror.new.json<br>
            > SpatialAudioCameraAnimation.json<br>
            > SplitChannels.json<br>
            > text.new.json<br>
            > <br>
            > <br>
            > The new.json files are created from my generated Java
            code.  So either my code is wrong, or there's something
            wrong with X3DJSAIL.<br>
            > <br>
            > <br>
            > My code looks like this:<br>
            > <br>
            > <br>
            > .setTexture(new
            ComposedCubeMapTexture().setDEF("texture")<br>
            >                  .setBackTexture(new
            ImageTexture().setUrl(new MFString6().getArray()))<br>
            >                  .setBottomTexture(new
            ImageTexture().setUrl(new MFString7().getArray()))<br>
            >                  .setFrontTexture(new
            ImageTexture().setUrl(new MFString8().getArray()))<br>
            >                  .setLeftTexture(new
            ImageTexture().setUrl(new MFString9().getArray()))<br>
            >                  .setRightTexture(new
            ImageTexture().setUrl(new MFString10().getArray()))<br>
            >                  .setTopTexture(new
            ImageTexture().setUrl(new MFString11().getArray())))<br>
            > <br>
            > <br>
            > with setUSE below.<br>
            > <br>
            > <br>
            > John<br>
            > <br>
            > On 5/27/21 10:52 PM, John Carlson wrote:<br>
            >> A somewhat significant change to X3DUOM 3.3 causes
            generated X3D JSON schema 3.3 to reject files.<br>
            >><br>
            >> That is, there is no longer a bottomTexture,
            topTexture, frontTexture, etc. for ComposedCubeMapTexture. 
            Instead, "Texture" is left off of these fields.<br>
            >><br>
            >><br>
            >> 4.0 has the Texture added.<br>
            >><br>
            >><br>
            >> 2 suggestions:<br>
            >><br>
            >> Update your files to X3D4.<br>
            >><br>
            >> OR:<br>
            >><br>
            >> Add these fields to X3DUOM 3.3 or find some way to
            get the old fields into X3D JSON schema 3.3 during schema
            generation (help!).<br>
            >><br>
            >> I am not sure what the standard or the browsers do
            at this point.<br>
            >><br>
            >> I'm upgrading my files to X3D4 and see if they work
            in various browsers.<br>
            >><br>
            >> Help!<br>
            >><br>
            >> John<br>
            >><br>
            > <br>
            > _______________________________________________<br>
            > x3d-public mailing list<br>
            > <a href="mailto:x3d-public@web3d.org" target="_blank"
              moz-do-not-send="true">x3d-public@web3d.org</a><br>
            > <a
              href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"
              rel="noreferrer" target="_blank" moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
            <br>
            all the best, Don<br>
            -- <br>
            Don Brutzman  Naval Postgraduate School, Code USW/Br       <a
              href="mailto:brutzman@nps.edu" target="_blank"
              moz-do-not-send="true">brutzman@nps.edu</a><br>
            Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA 
             +1.831.656.2149<br>
            X3D graphics, virtual worlds, navy robotics <a
              href="http://faculty.nps.edu/brutzman" rel="noreferrer"
              target="_blank" moz-do-not-send="true">http://faculty.nps.edu/brutzman</a><br>
          </blockquote>
        </div>
      </div>
    </blockquote>
  </body>
</html>