<div dir="ltr"><div>Super, thanks everyone.   I always check headers and meta information.  </div><div><br></div><div>Every model and related products are unrestricted open source.  Absent another specific open-source license, we use the BSD-style non-viral Web3D license.</div><div><ul><li>Web3D Consortium Open-Source License for Models and Software</li><li><a href="https://www.web3d.org/x3d/content/examples/license.html">https://www.web3d.org/x3d/content/examples/license.html</a></li></ul></div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><span style="font-family:monospace">all the best, Don</span></div><div style="color:rgb(34,34,34)"><font face="monospace">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace">Relative Motion Consulting  <a href="https://RelativeMotion.info" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 3:06 PM GPU Group <<a href="mailto:gpugroup@gmail.com">gpugroup@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="auto">Yes of course use those examples except check the header area -- I might have borrowed a few from an x3d browser that was ahead on Layout and Layering, I can't remember the name of that browser, might be in the Browser Node Support Table. Any that have no licence or author info just assume MIT or CC0 or whatever you want.</div><div>-Doug Sanden</div><div><a href="https://wiki.web3d.org/wiki/index.php/Player_support_for_X3D_components" target="_blank">https://wiki.web3d.org/wiki/index.php/Player_support_for_X3D_components</a> <br></div><div>- was it Swirl that was ahead on layout/layering?</div><div><a href="https://freewrl.sourceforge.io/tests/35_Layering/" target="_blank">https://freewrl.sourceforge.io/tests/35_Layering/</a><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026, 3:12 p.m. 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="auto">How about it Doug, can this example be used in the archive?</div><div dir="auto"><br></div><div dir="auto">Thanks!</div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 3:20 PM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" rel="noreferrer" target="_blank">holger.seelig@yahoo.de</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>Please not that this Viewport.x3d test is from the freewrl tests directory and will look same in freewrl.<div><br></div><div><a href="https://create3000.github.io/Library/Tests/Components/Layering/Viewport.x3d" rel="noreferrer" target="_blank">https://create3000.github.io/Library/Tests/Components/Layering/Viewport.x3d</a></div><div><br></div><div><a href="https://freewrl.sourceforge.io/tests/35_Layering/" rel="noreferrer" target="_blank">https://freewrl.sourceforge.io/tests/35_Layering/</a><br><div><br></div><div>Best regards,</div><div>Holger</div><div><br><div><div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="text-align:start;text-indent:0px"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">—</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><div><div><div><div><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="text-align:start;text-indent:0px"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Holger Seelig<br><a href="mailto:holger.seelig@yahoo.de" rel="noreferrer" target="_blank">holger.seelig@yahoo.de</a><br><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 04.01.2026 um 21:52 schrieb John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noreferrer" target="_blank">yottzumm@gmail.com</a>>:</div><br><div><div dir="auto">Holger’s example here has a rich use of clipBoundary!</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/create3000/Library/blob/main/Tests/Components/Layering/Viewport.x3d" style="font-size:inherit" rel="noreferrer" target="_blank">https://github.com/create3000/Library/blob/main/Tests/Components/Layering/Viewport.x3d</a></div><br></div><div dir="auto">Hopefully, you’ll get a donation!</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">John </div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 12:14 PM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" rel="noreferrer" target="_blank">don.brutzman@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>Appreciate your offer of a sophisticated example, but that is not what the archives and implementer community need right now.</div><div><br></div><div>In addition to LayerSet Layer Viewport, you have prototypes (which overly complicate a simple test) and Script code (which is not well supported by all X3D browsers).</div><div><br></div><div>ComposedCubeMapTexture and ComposedShader and ShaderPart add further complications that are not widely supported.</div><div><br></div><div>The request remains, for anyone: simple example demonstrating Viewport (perhaps with Layer LayerSet and no other more-complex nodes).</div><div><br>I recently sent everyone a long explanation of why simple examples are important, especially for issue requests.</div><div><ul><li>[x3d-public] Request for X3D encoding comment output from X3DPSAIL</li><li><a href="https://web3d.org/pipermail/x3d-public_web3d.org/2025-December/022165.html" rel="noreferrer" target="_blank">https://web3d.org/pipermail/x3d-public_web3d.org/2025-December/022165.html</a></li></ul></div><div>Hope this helps.</div></div><div dir="ltr"><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">Relative Motion Consulting  <a href="https://relativemotion.info/" style="font-family:monospace" rel="noreferrer" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 9:48 AM John Carlson <<a href="mailto:yottzumm@gmail.com" rel="noreferrer" 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="auto">You can use this example of clipBoundary, in the archives, if you replace the shaders and images:</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/bumpyx_itesliders.x3d" style="font-size:inherit" rel="noreferrer" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/data/bumpyx_itesliders.x3d</a></div><br></div><div dir="auto">I was working on a version with different shaders and no images.  The sliders didn’t work in FreeWRL, so I shelved it.  It’s available on this page, and you can use in the archives.</div><div dir="auto"><br></div><div dir="auto"></div><div style="font-size:inherit" dir="auto"><a href="https://coderextreme.net/X3DJSONLD/src/main/html/bumpyrefs.html" style="font-size:inherit" rel="noreferrer" target="_blank">https://coderextreme.net/X3DJSONLD/src/main/html/bumpyrefs.html</a></div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">I don’t know if the sliders work on these as I am on my phone.   Try dragging the grey/white letters next to the = sign with the mouse.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Again, much of this is Christoph Valentin and Doug Sanden’s work, with a new face!</div><div dir="auto"></div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 10:42 AM Don Brutzman <<a href="mailto:don.brutzman@gmail.com" rel="noreferrer" target="_blank">don.brutzman@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>John, we do not have a simple example demonstrating proper use of the Viewport node in the X3D Example Archives, and so it is difficult to test what you are reporting.</div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)"><br></font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">all the best, Don</font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">-- </font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">X3D Graphics, Maritime Robotics, Distributed Simulation</font></div><div style="color:rgb(34,34,34)"><font face="monospace" style="font-family:monospace;color:rgb(34,34,34)">Relative Motion Consulting  <a href="https://relativemotion.info/" style="font-family:monospace" rel="noreferrer" target="_blank">https://RelativeMotion.info</a></font></div></div></div></div><br></div><br><div class="gmail_quote"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 4, 2026 at 8:31 AM John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" rel="noreferrer" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"></blockquote></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><div dir="auto">One of the gotchas in adding strict mode to Ajv JSON schema validation is Viewport.clipBoundary:</div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><pre style="font-family:monospace;font-size:inherit;margin-left:25px;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration:none;background-color:rgb(255,255,255)">Viewport : X3DViewportNode, X3DBoundedObject {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  MFFloat [in,out] clipBoundary   0 1 0 1  [0,1]
  SFBool  [in,out] bboxDisplay    FALSE
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFBool  [in,out] visible        TRUE
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}</pre></div>I don’t recall if this was discussed on the mailing list before.</div><div dir="auto"><br></div><div dir="auto">The error reported was:</div></div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit"><pre style="white-space:pre-wrap;font-size:inherit;font-style:normal;font-weight:400;letter-spacing:normal;text-indent:0px;text-transform:none;word-spacing:1px;text-decoration:none;font-family:monospace;color:rgb(49,49,49)"><code style="font-size:1rem;font-family:monospace">strict mode: "prefixItems" is 4-tuple, but minItems or maxItems/items are not specified or different at path "#/oneOf/1/properties/%40clipBoundary"</code></pre></div><br></div><div dir="auto">I don’t know if # prefixItems = 4 is appropriate here, since clipBoundary is an MFFloat.  I don’t know how to set a default for MFFloat without prefixItems.  I could set minItems = 0</div><div dir="auto"><br></div><div dir="auto">The JSON schema says: </div><div dir="auto"><br></div><div dir="auto"><div style="font-size:inherit">  "@clipBoundary": {<br style="font-size:inherit">              "$comment": "MFFloat inputOutput",<br style="font-size:inherit">              "type": "array",<br style="font-size:inherit">              "prefixItems": [<br style="font-size:inherit">                {<br style="font-size:inherit">                  "default": 0,<br style="font-size:inherit">                  "maximum": 1,<br style="font-size:inherit">                  "minimum": 0,<br style="font-size:inherit">                  "type": "number"<br style="font-size:inherit">                },<br style="font-size:inherit">                {<br style="font-size:inherit">                  "default": 1,<br style="font-size:inherit">                  "maximum": 1,<br style="font-size:inherit">                  "minimum": 0,<br style="font-size:inherit">                  "type": "number"<br style="font-size:inherit">                },<br style="font-size:inherit">                {<br style="font-size:inherit">                  "default": 0,<br style="font-size:inherit">                  "maximum": 1,<br style="font-size:inherit">                  "minimum": 0,<br style="font-size:inherit">                  "type": "number"<br style="font-size:inherit">                },<br style="font-size:inherit">                {<br style="font-size:inherit">                  "default": 1,<br style="font-size:inherit">                  "maximum": 1,<br style="font-size:inherit">                  "minimum": 0,<br style="font-size:inherit">                  "type": "number"<br style="font-size:inherit">                }<br style="font-size:inherit">              ],<br style="font-size:inherit">              "items": {<br style="font-size:inherit">                "maximum": 1,<br style="font-size:inherit">                "minimum": 0,<br style="font-size:inherit">                "type": "number"<br style="font-size:inherit">              }<br style="font-size:inherit">            },</div><br></div><div dir="auto"><span><br></span></div><div dir="auto"><span>X3DUOM 4.0 says: </span></div><div dir="auto"><div dir="auto"><br></div><div><div style="font-size:inherit" dir="auto">ConcreteNode name="Viewport"><br style="font-size:inherit">         <InterfaceDefinition specificationUrl="<a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#Viewport" rel="noreferrer" target="_blank">https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#Viewport</a>"<br style="font-size:inherit">                              appinfo="Viewport is a Grouping node that can contain most nodes."><br style="font-size:inherit">            <componentInfo name="Layering" level="1"/><br style="font-size:inherit">            <Inheritance baseType="X3DViewportNode"/><br style="font-size:inherit">[snip]<br style="font-size:inherit">            <field name="clipBoundary"<br style="font-size:inherit">                   type="MFFloat"<br style="font-size:inherit">                   accessType="inputOutput"<br style="font-size:inherit">                   default="0 1 0 1"<br style="font-size:inherit">                   minInclusive="0"<br style="font-size:inherit">                   maxInclusive="1"<br style="font-size:inherit">                   description="clipBoundary is specified in fractions of the normal render surface in the sequence left/right/bottom/top."/><br style="font-size:inherit">[snip]</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">An addition, such as min/max length, if needed, would be a welcome addition to X3DUOM.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">Also X3DUOM 4.0 XML ConcreteNode Viewport wasn’t viewable on my iPhone in Google drive as downloaded from <a href="http://web3d.org/" rel="noreferrer" target="_blank">web3d.org</a> (there was no way to view the full XML in safari, chrome or on sourceforge or drive)<span style="font-size:inherit">.  I probably could have downloaded from sourceforge.</span></div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">So I used my old copy on GitHub.</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto">John</div><div style="font-size:inherit" dir="auto"><br></div><div style="font-size:inherit" dir="auto"><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
</blockquote></div></div>
</blockquote></div></div>
</div>
</div></blockquote></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" rel="noreferrer" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div></div>
</blockquote></div>
</blockquote></div>