<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Thanks for your efforts.  Here are my attempted answers.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<ol start="1" data-editing-info="{"applyListStyleFromLevel":false,"orderedStyleType":1}" style="list-style-type: decimal;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">"ProtoInstance with USE field should not contain a name field in Holger's Library examples.  Previously discussed, with no change evident."</div>
</li></ol>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
ProtoInstance with USE (<span style="font-size: 14.6667px;">attribute, </span>not a field) pointing to the original DEF ProtoInstance is also required to have a name.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
If I recall correctly, for some years it was not required in the XML encoding, but extended inquiry by X3D community and working group eventually made it required. </div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
However in the ClassicVRML Encoding, only the USE identifier is needed.</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D ClassicVRML Encoding 4.0 (draft), Annex A Grammar</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-2v4.0-WD1/Part02/grammar.html</div>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
nodeStatement::=</div>
<div class="elementToProof" style="margin-right: 40px; margin-left: 40px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
node |</div>
<div style="margin-right: 40px; margin-left: 40px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
DEF nodeNameId node |</div>
<div class="elementToProof" style="margin-right: 40px; margin-left: 40px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
USE nodeNameId ; </div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
This means that requirements are NOT the same between XML encoding and ClassicVRML encoding:  this is a rare difference between the two.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
References of interest:</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D Tooltips, DTD autogenerated documentation and XML Schema autogenerated documentation do not require it.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#ProtoInstance</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/X3dDoctypeDocumentation4.0.html#ProtoInstance</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_ProtoInstance.html</div>
<div class="_Entity _EType_OWALinkPreview _EId_OWALinkPreview _EReadonly_1"></div>
<div><br>
</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">Mantis 678: 4.3.10 - ProtoInstance always requires name, even when USE node</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://mantis.web3d.org/view.php?id=678 (resolved)</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">Requires USE node for XML encoding, matching VRML encoding</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><br>
</div>
</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D XML Encoding 4.0 (draft), Concepts, 4.3.10 ProtoInstance and fieldValue statement syntax</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-1v4.0-WD1/Part01/concepts.html#ProtoInstanceAndFieldValueStatement</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><span style="background-color: rgb(255, 255, 0);">ProtoInstance definitions always require a valid name, even when defining a USE node. This approach permits confirmation of author intent that the correct prototype is applied.</span></div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div><span style="background-color: rgb(255, 255, 0);">EXAMPLE 16  ProtoInstance USE node</span></div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><span style="background-color: rgb(255, 255, 0);"><ProtoInstance USE='MyVPO' name='ViewPositionOrientation'/></span></div>
</li></ul>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
I am also finding mixed messages in validation and documentation, so further review and reconciliation is needed.</div>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
I don't think we considered the difference with Classic VRML encoding when applying this to XML encoding.  If anyone is concerned, we can reopen the issue.</div>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Thanks for identifying a problem area, I'll work to ensure that the validation and documentation tools match the draft 4.0 XML encoding specification.</div>
<div class="elementToProof" style="text-align: left; text-indent: 0px; margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
2. "X3dToJson.xslt produces an MFString for NavigationInfo@type, should be array of strings"</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
MFString is an array of strings.  So apologies but I don't understand.  It is not clear what problem you are identifying.  An example would help.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Here is one...  It looks like a single string is being produced, incorrectly, rather than an MFString array of strings.</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D Example Archives: X3D4AM, X3D for Advanced Modeling, Hello World Scenes, Hello Portugal</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/HelloWorldScenes/HelloPortugalIndex.html</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">.x3d XML: <NavigationInfo type='"EXAMINE" "LOOKAT" "ANY"'/></div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">JSON:  </div>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          { "NavigationInfo":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
            {</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
              "@type":"\"EXAMINE\" \"LOOKAT\" \"ANY\""</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
            }</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          },</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Please confirm what you think the syntax for "@type" should be, the following instead?  At that point we have shared understanding and I can apply a change to the X3dToJson.xslt stylesheet.</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<pre><div class="elementToProof"> "@type":["EXAMINE","LOOKAT","ANY"]</div></pre>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Reference:</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D to JSON Stylesheet Converter</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/stylesheets/X3dToJson.html</div>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
3. "X3dToJson.xslt: Appearance-pointProperties should be an object, not an array."</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
The following is what I am finding in our X3D Example Archives.  PointProperties seems correct.</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"> X3D Example Archives: Basic, Points, Basic Point Sprites</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/content/examples/Basic/Points/BasicPointSpritesIndex.html</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/content/examples/Basic/Points/BasicPointSprites.x3d</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/content/examples/Basic/Points/BasicPointSprites.json</div>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
      <Shape></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
        <Appearance DEF='PointProperties1'></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          <span style="background-color: rgb(255, 255, 0);"><PointProperties attenuation='1 0.01 0.1' containerField='pointProperties' pointSizeMaxValue='100' pointSizeMinValue='5' pointSizeScaleFactor='100'/></span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          <!-- X3Dv3.3 ImageTexture has no effect on points, X3Dv4.0 each point is replaced by an image sprite --></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          <ImageTexture url='"images/sphere.png" "https://www.web3d.org/x3d/content/examples/Basic/Points/images/sphere.png"'/></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
        </Appearance></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
        <PointSet></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          <Coordinate point='1 0 0 0.970142 0.242536 0 0.970142 0 0.242536 0.904534 0.301511 0.301511 0.83205 0 0.5547 0.666667 0.333333 0.666667 0.5547 0 0.83205 0.301511 0.301511 0.904534 0.242536 0 0.970142 0 0.242536 0.970142 0 0 1 0.83205 0.5547 0 0.666667
 0.666667 0.333333 0.333333 0.666667 0.666667 0 0.5547 0.83205 0.5547 0.83205 0 0.301511 0.904534 0.301511 0 0.83205 0.5547 0.242536 0.970142 0 0 0.970142 0.242536 0 1 0 -0.242536 0 0.970142 -0.301511 0.301511 0.904534 -0.5547 0 0.83205 -0.666667 0.333333 0.666667
 -0.83205 0 0.5547 -0.904534 0.301511 0.301511 -0.970142 0 0.242536 -0.970142 0.242536 0 -1 0 0 -0.333333 0.666667 0.666667 -0.666667 0.666667 0.333333 -0.83205 0.5547 0 -0.301511 0.904534 0.301511 -0.5547 0.83205 0 -0.242536 0.970142 0 0 -0.242536 0.970142
 0.301511 -0.301511 0.904534 0.666667 -0.333333 0.666667 0.904534 -0.301511 0.301511 0.970142 -0.242536 0 0 -0.5547 0.83205 0.333333 -0.666667 0.666667 0.666667 -0.666667 0.333333 0.83205 -0.5547 0 0 -0.83205 0.5547 0.301511 -0.904534 0.301511 0.5547 -0.83205
 0 0 -0.970142 0.242536 0.242536 -0.970142 0 0 -1 0 -0.970142 -0.242536 0 -0.904534 -0.301511 0.301511 -0.666667 -0.333333 0.666667 -0.301511 -0.301511 0.904534 -0.83205 -0.5547 0 -0.666667 -0.666667 0.333333 -0.333333 -0.666667 0.666667 -0.5547 -0.83205 0
 -0.301511 -0.904534 0.301511 -0.242536 -0.970142 0 0 0 -1 0 0.242536 -0.970142 0.242536 0 -0.970142 0.301511 0.301511 -0.904534 0.5547 0 -0.83205 0.666667 0.333333 -0.666667 0.83205 0 -0.5547 0.904534 0.301511 -0.301511 0.970142 0 -0.242536 0 0.5547 -0.83205
 0.333333 0.666667 -0.666667 0.666667 0.666667 -0.333333 0 0.83205 -0.5547 0.301511 0.904534 -0.301511 0 0.970142 -0.242536 -0.970142 0 -0.242536 -0.904534 0.301511 -0.301511 -0.83205 0 -0.5547 -0.666667 0.333333 -0.666667 -0.5547 0 -0.83205 -0.301511 0.301511
 -0.904534 -0.242536 0 -0.970142 -0.666667 0.666667 -0.333333 -0.333333 0.666667 -0.666667 -0.301511 0.904534 -0.301511 0.904534 -0.301511 -0.301511 0.666667 -0.333333 -0.666667 0.301511 -0.301511 -0.904534 0 -0.242536 -0.970142 0.666667 -0.666667 -0.333333
 0.333333 -0.666667 -0.666667 0 -0.5547 -0.83205 0.301511 -0.904534 -0.301511 0 -0.83205 -0.5547 0 -0.970142 -0.242536 -0.301511 -0.301511 -0.904534 -0.666667 -0.333333 -0.666667 -0.904534 -0.301511 -0.301511 -0.333333 -0.666667 -0.666667 -0.666667 -0.666667
 -0.333333 -0.301511 -0.904534 -0.301511'/></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
          <Color color='1 0 0 0.970142 0.242536 0 0.970142 0 0.242536 0.904534 0.301511 0.301511 0.83205 0 0.5547 0.666667 0.333333 0.666667 0.5547 0 0.83205 0.301511 0.301511 0.904534 0.242536 0 0.970142 0 0.242536 0.970142 0 0 1 0.83205 0.5547 0 0.666667
 0.666667 0.333333 0.333333 0.666667 0.666667 0 0.5547 0.83205 0.5547 0.83205 0 0.301511 0.904534 0.301511 0 0.83205 0.5547 0.242536 0.970142 0 0 0.970142 0.242536 0 1 0 0.242536 0 0.970142 0.301511 0.301511 0.904534 0.5547 0 0.83205 0.666667 0.333333 0.666667
 0.83205 0 0.5547 0.904534 0.301511 0.301511 0.970142 0 0.242536 0.970142 0.242536 0 1 0 0 0.333333 0.666667 0.666667 0.666667 0.666667 0.333333 0.83205 0.5547 0 0.301511 0.904534 0.301511 0.5547 0.83205 0 0.242536 0.970142 0 0 0.242536 0.970142 0.301511 0.301511
 0.904534 0.666667 0.333333 0.666667 0.904534 0.301511 0.301511 0.970142 0.242536 0 0 0.5547 0.83205 0.333333 0.666667 0.666667 0.666667 0.666667 0.333333 0.83205 0.5547 0 0 0.83205 0.5547 0.301511 0.904534 0.301511 0.5547 0.83205 0 0 0.970142 0.242536 0.242536
 0.970142 0 0 1 0 0.970142 0.242536 0 0.904534 0.301511 0.301511 0.666667 0.333333 0.666667 0.301511 0.301511 0.904534 0.83205 0.5547 0 0.666667 0.666667 0.333333 0.333333 0.666667 0.666667 0.5547 0.83205 0 0.301511 0.904534 0.301511 0.242536 0.970142 0 0 0
 1 0 0.242536 0.970142 0.242536 0 0.970142 0.301511 0.301511 0.904534 0.5547 0 0.83205 0.666667 0.333333 0.666667 0.83205 0 0.5547 0.904534 0.301511 0.301511 0.970142 0 0.242536 0 0.5547 0.83205 0.333333 0.666667 0.666667 0.666667 0.666667 0.333333 0 0.83205
 0.5547 0.301511 0.904534 0.301511 0 0.970142 0.242536 0.970142 0 0.242536 0.904534 0.301511 0.301511 0.83205 0 0.5547 0.666667 0.333333 0.666667 0.5547 0 0.83205 0.301511 0.301511 0.904534 0.242536 0 0.970142 0.666667 0.666667 0.333333 0.333333 0.666667 0.666667
 0.301511 0.904534 0.301511 0.904534 0.301511 0.301511 0.666667 0.333333 0.666667 0.301511 0.301511 0.904534 0 0.242536 0.970142 0.666667 0.666667 0.333333 0.333333 0.666667 0.666667 0 0.5547 0.83205 0.301511 0.904534 0.301511 0 0.83205 0.5547 0 0.970142 0.242536
 0.301511 0.301511 0.904534 0.666667 0.333333 0.666667 0.904534 0.301511 0.301511 0.333333 0.666667 0.666667 0.666667 0.666667 0.333333 0.301511 0.904534 0.301511'/></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
        </PointSet></div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
      </Shape></div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                { "Shape":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                  {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                    "-appearance":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                      { "Appearance":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                        {</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          "@DEF":"PointProperties1",</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                          "-pointProperties":[</span></div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                            { "PointProperties":</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                              {</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                                "@attenuation":[1,0.01,0.1],</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                                "@pointSizeMaxValue":100,</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                                "@pointSizeMinValue":5,</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                                "@pointSizeScaleFactor":100</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                              }</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                            }</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<span style="background-color: rgb(255, 255, 0);">                          ],</span></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          "-children":[</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              "#comment":"X3Dv3.3 ImageTexture has no effect on points, X3Dv4.0 each point is replaced by an image sprite"</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          ],</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          "-texture":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            { "ImageTexture":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                                "@url":["images/sphere.png","https://www.web3d.org/x3d/content/examples/Basic/Points/images/sphere.png"]</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                        }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                      },</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                    "-geometry":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                      { "PointSet":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                        {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          "-coord":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            { "Coordinate":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                                "@point":[1,0,0,0.970142,0.242536,0,0.970142,0,0.242536,0.904534,0.301511,0.301511,0.83205,0,0.5547,0.666667,0.333333,0.666667,0.5547,0,0.83205,0.301511,0.301511,0.904534,0.242536,0,0.970142,0,0.242536,0.970142,0,0,1,0.83205,0.5547,0,0.666667,0.666667,0.333333,0.333333,0.666667,0.666667,0,0.5547,0.83205,0.5547,0.83205,0,0.301511,0.904534,0.301511,0,0.83205,0.5547,0.242536,0.970142,0,0,0.970142,0.242536,0,1,0,-0.242536,0,0.970142,-0.301511,0.301511,0.904534,-0.5547,0,0.83205,-0.666667,0.333333,0.666667,-0.83205,0,0.5547,-0.904534,0.301511,0.301511,-0.970142,0,0.242536,-0.970142,0.242536,0,-1,0,0,-0.333333,0.666667,0.666667,-0.666667,0.666667,0.333333,-0.83205,0.5547,0,-0.301511,0.904534,0.301511,-0.5547,0.83205,0,-0.242536,0.970142,0,0,-0.242536,0.970142,0.301511,-0.301511,0.904534,0.666667,-0.333333,0.666667,0.904534,-0.301511,0.301511,0.970142,-0.242536,0,0,-0.5547,0.83205,0.333333,-0.666667,0.666667,0.666667,-0.666667,0.333333,0.83205,-0.5547,0,0,-0.83205,0.5547,0.301511,-0.904534,0.301511,0.5547,-0.83205,0,0,-0.970142,0.242536,0.242536,-0.970142,0,0,-1,0,-0.970142,-0.242536,0,-0.904534,-0.301511,0.301511,-0.666667,-0.333333,0.666667,-0.301511,-0.301511,0.904534,-0.83205,-0.5547,0,-0.666667,-0.666667,0.333333,-0.333333,-0.666667,0.666667,-0.5547,-0.83205,0,-0.301511,-0.904534,0.301511,-0.242536,-0.970142,0,0,0,-1,0,0.242536,-0.970142,0.242536,0,-0.970142,0.301511,0.301511,-0.904534,0.5547,0,-0.83205,0.666667,0.333333,-0.666667,0.83205,0,-0.5547,0.904534,0.301511,-0.301511,0.970142,0,-0.242536,0,0.5547,-0.83205,0.333333,0.666667,-0.666667,0.666667,0.666667,-0.333333,0,0.83205,-0.5547,0.301511,0.904534,-0.301511,0,0.970142,-0.242536,-0.970142,0,-0.242536,-0.904534,0.301511,-0.301511,-0.83205,0,-0.5547,-0.666667,0.333333,-0.666667,-0.5547,0,-0.83205,-0.301511,0.301511,-0.904534,-0.242536,0,-0.970142,-0.666667,0.666667,-0.333333,-0.333333,0.666667,-0.666667,-0.301511,0.904534,-0.301511,0.904534,-0.301511,-0.301511,0.666667,-0.333333,-0.666667,0.301511,-0.301511,-0.904534,0,-0.242536,-0.970142,0.666667,-0.666667,-0.333333,0.333333,-0.666667,-0.666667,0,-0.5547,-0.83205,0.301511,-0.904534,-0.301511,0,-0.83205,-0.5547,0,-0.970142,-0.242536,-0.301511,-0.301511,-0.904534,-0.666667,-0.333333,-0.666667,-0.904534,-0.301511,-0.301511,-0.333333,-0.666667,-0.666667,-0.666667,-0.666667,-0.333333,-0.301511,-0.904534,-0.301511]</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            },</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                          "-color":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            { "Color":</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              {</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                                "@color":[1,0,0,0.970142,0.242536,0,0.970142,0,0.242536,0.904534,0.301511,0.301511,0.83205,0,0.5547,0.666667,0.333333,0.666667,0.5547,0,0.83205,0.301511,0.301511,0.904534,0.242536,0,0.970142,0,0.242536,0.970142,0,0,1,0.83205,0.5547,0,0.666667,0.666667,0.333333,0.333333,0.666667,0.666667,0,0.5547,0.83205,0.5547,0.83205,0,0.301511,0.904534,0.301511,0,0.83205,0.5547,0.242536,0.970142,0,0,0.970142,0.242536,0,1,0,0.242536,0,0.970142,0.301511,0.301511,0.904534,0.5547,0,0.83205,0.666667,0.333333,0.666667,0.83205,0,0.5547,0.904534,0.301511,0.301511,0.970142,0,0.242536,0.970142,0.242536,0,1,0,0,0.333333,0.666667,0.666667,0.666667,0.666667,0.333333,0.83205,0.5547,0,0.301511,0.904534,0.301511,0.5547,0.83205,0,0.242536,0.970142,0,0,0.242536,0.970142,0.301511,0.301511,0.904534,0.666667,0.333333,0.666667,0.904534,0.301511,0.301511,0.970142,0.242536,0,0,0.5547,0.83205,0.333333,0.666667,0.666667,0.666667,0.666667,0.333333,0.83205,0.5547,0,0,0.83205,0.5547,0.301511,0.904534,0.301511,0.5547,0.83205,0,0,0.970142,0.242536,0.242536,0.970142,0,0,1,0,0.970142,0.242536,0,0.904534,0.301511,0.301511,0.666667,0.333333,0.666667,0.301511,0.301511,0.904534,0.83205,0.5547,0,0.666667,0.666667,0.333333,0.333333,0.666667,0.666667,0.5547,0.83205,0,0.301511,0.904534,0.301511,0.242536,0.970142,0,0,0,1,0,0.242536,0.970142,0.242536,0,0.970142,0.301511,0.301511,0.904534,0.5547,0,0.83205,0.666667,0.333333,0.666667,0.83205,0,0.5547,0.904534,0.301511,0.301511,0.970142,0,0.242536,0,0.5547,0.83205,0.333333,0.666667,0.666667,0.666667,0.666667,0.333333,0,0.83205,0.5547,0.301511,0.904534,0.301511,0,0.970142,0.242536,0.970142,0,0.242536,0.904534,0.301511,0.301511,0.83205,0,0.5547,0.666667,0.333333,0.666667,0.5547,0,0.83205,0.301511,0.301511,0.904534,0.242536,0,0.970142,0.666667,0.666667,0.333333,0.333333,0.666667,0.666667,0.301511,0.904534,0.301511,0.904534,0.301511,0.301511,0.666667,0.333333,0.666667,0.301511,0.301511,0.904534,0,0.242536,0.970142,0.666667,0.666667,0.333333,0.333333,0.666667,0.666667,0,0.5547,0.83205,0.301511,0.904534,0.301511,0,0.83205,0.5547,0,0.970142,0.242536,0.301511,0.301511,0.904534,0.666667,0.333333,0.666667,0.904534,0.301511,0.301511,0.333333,0.666667,0.666667,0.666667,0.666667,0.333333,0.301511,0.904534,0.301511]</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                              }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                            }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                        }</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                      }</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
                  }</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
If you still think that there is a problem, please describe again and provide an example.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
4. "OrthoViewpoint.setFieldOfView has 4 parameters, probably should be one parameter, or X3DJSAIL should provide a 4 parameter option."</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
OrthoViewpoint fieldOfView is only zero or four floats.  Anything else does not define the 4 corners of an orthographic field of view.  X3DJSAIL is OK.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
This has been the basis of the long-running issue: do we leave it with type MFFloat, or do we make it type SFVec4f (similar to ClipPlane.plane and TextureProjectorParallel.fieldOfView) so that incorrect array lengths are detected during validation.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Related:</div>
<ul data-editing-info="{"applyListStyleFromLevel":false,"unorderedStyleType":1}" style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D Tooltips 4.0, OrthoViewpoint.fieldOfView</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#OrthoViewpoint.fieldOfView</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><b>Warning: </b>if provided, OrthoViewpoint fieldOfView has exactly four numeric values, otherwise results are undefined.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><b>Warning:</b> OrthoViewpoint fieldOfView has type MFFloat even though SFVec3f is more correct to prevent modeling errors, deficiency recorded as Mantis 1398</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><br>
</div>
</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">Mantis 1398: OrthoViewpoint fieldOfView type needs to be SFVec4f, not MFFloat</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://mantis.web3d.org/view.php?id=1398</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof"><br>
</div>
</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3D Architecture 4.1 (draft), 42.4.2 TextureProjectorParallel</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/navigation.html#OrthoViewpoint</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">The <i>fieldOfView</i> field <span style="background-color: rgb(255, 255, 0);">
for this parallel projection</span> specifies minimum and maximum extents of the view in units of the local coordinate system. A small field of view roughly corresponds to a telephoto lens; a large field of view roughly corresponds to a wide-angle lens.
<span style="background-color: rgb(255, 255, 0);">If provided, the <i>fieldOfView</i> field has exactly four numeric values, otherwise results are undefined.</span></div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">X3DJSAIL OrthoViewpoint setFieldOfView has multiple methods for floats, doubles (which are downcast to floats) and integers (which are promoted to floats).  The preceding warning will appear in the Javadoc following the next release
 build.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/OrthoViewpoint.html#setFieldOfView(float[])</div>
</li></ul>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
I hope that this answer is satisfactory.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
As ever:</div>
<ol start="1" data-editing-info="{"applyListStyleFromLevel":true}" style="list-style-type: decimal;">
<li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0); margin-right: 0px; margin-left: 0px;">
<div class="elementToProof" style="margin-top: 0px; margin-bottom: 0px;">Bug reports are effective when example snippets are provided.  Showing errors or problems in any .x3d .x3dv .json .java .py .ttl examples or other X3D source is the best way to identify
 them.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0); margin-right: 0px; margin-left: 0px;">
<div class="elementToProof" style="margin-top: 0px; margin-bottom: 0px;">Bug reports are even more effective when example errors can be identified in the X3D Example Archives.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">Inability to find a node or field of interest in the X3D Example Archives often indicates that we need another example so that checking and conversions can be part of our comprehensive error checking.</div>
</li><li style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<div class="elementToProof">No diffs on XSLT conversions or autogenerated code will be accepted.  These are complex codebases and we can't afford to have potential errors inadvertently committed.  Getting clear on correct inputs producing correct outputs is
 sufficient.</div>
</li></ol>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
=====================================</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Again thanks, have fun with rigorous X3D!  ðŸ™‚</div>
<div class="elementToProof" id="Signature">
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;"><br>
</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;">all the best, Don</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;">--</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;">Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;">X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman</span></p>
<p style="margin: 0in; font-family: Calibri, sans-serif; font-size: 11pt;"><span style="font-family: "Courier New"; font-size: 9pt;"> </span></p>
</div>
<div id="appendonsend"></div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr style="display: inline-block; width: 98%;">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family: Calibri, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);"><b>From:</b> John Carlson <yottzumm@gmail.com><br>
<b>Sent:</b> Wednesday, December 18, 2024 10:10 PM<br>
<b>To:</b> Extensible 3D (X3D) Graphics public discussion <x3d-public@web3d.org><br>
<b>Cc:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>; khyoo@chungbuk.ac.kr <khyoo@chungbuk.ac.kr>; Myeong Won Lee <myeongwonlee@gmail.com><br>
<b>Subject:</b> Re: [x3d-public] X3D 4.0 specification problem: TextureProjectorparallel.fieldOfView</span>
<div class="elementToProof"> </div>
</div>
<div style="direction: ltr;">Summary, pending updates from Don.</div>
<div style="direction: ltr;"><br>
</div>
<div class="elementToProof" style="direction: ltr;">ProtoInstance with USE field should not contain a name field in Holger's Library examples.  Previously discussed, with no change evident.</div>
<div class="elementToProof" style="direction: ltr;">X3dToJson.xslt produces an MFString for NavigationInfo@type, should be array of strings, per Don's suggestion.  I will try to reapply a patch.</div>
<div class="elementToProof" style="direction: ltr;">X3dToJson.xslt: Appearance-pointProperties should be an object, not an array.</div>
<div class="elementToProof" style="direction: ltr;">X3DToJava.xslt OrthoViewpoint.setFieldOfView has 4 parameters, probably should be one parameter, or X3DJSAIL should provide a 4 parameter option.</div>
<div style="direction: ltr;">John needs to fix VolumeEmitter.java.</div>
<div style="direction: ltr;">There seems to be some package conflict with X3DJSAIL and Holger's VolumeEmitter example.  I am not sure.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I will repeat the JSON tests with Holger's x3d-tidy.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Details:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I changed the X3DUOM+X_ITE field type of OrthoViewpoint.fieldOfView temporarily, and ran my  fieldTypesGenerator.py in X3DJSONLD:  My fieldTypes.js had this change in git diff:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">        "centerOfRotation" : "SFVec3f",<br>
        "description" : "SFString",<br>
        "farDistance" : "SFFloat",<br>
-       "fieldOfView" : "MFFloat",<br>
+       "fieldOfView" : "SFVec3f",<br>
        "IS" : "SFNode",<br>
        "isBound" : "SFBool",</div>
<div style="direction: ltr;">        "jump" : "SFBool",</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Plus others from Holger's X_ITE component.  I have not tried any serialization of X3D JSON versions of glTF samples yet.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Then I ran ```bash local.sh``` in  X3DJSONLD/src/main/shell</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">json2all.js produced no changes to my serialized files.  There were only changes to date in my JSON files.  I elide the date when producing serialized files, otherwise, I would get loads of change that I would have to check in with no
 real modifications to the file.  What this means is the serialized files reflect the source XML, not the intermediate JSON.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I went looking for more examples.  Since I couldn't find any in the email (is there one?) I pursued the sourceforge archives.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">The only one I found in the sourceforge archives was this:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Basic/development/TestSchematronDiagnostics.x3d:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><OrthoViewpoint DEF='NoSpacesInDescription' description='NeedToPutSpacesInDescription'/></div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">No ConformanceNist?  Frustrated, I decided to do a svn update.  There were many updates.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">No OrthoViewpoint search result updates.  I'm not sure what to use for fieldOfView to test my serializers?</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I will do a search on Holger's Library:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Found two;, great!</div>
<div style="direction: ltr;">./Tests/Components/ParticleSystems/VolumeEmitter.x3d<br>
./Tests/Components/Shape/Connectors.x3d</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Moved those to my data folder.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Try to run several.sh</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Apparently, the X3DJSONLD install had failed.  Reinstalled.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Reran.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Ran into issues with iri and iri-reference in X3D JSON schema.  I had not upgraded X3DJSONLD.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Fixed ajv configuration.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Ajv reports:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Adding schema:  4.0<br>
Suppressing @USE missing property.  Use $ node x3dvalidate.js --fullreport ../data/Connectors.json ... to reveal possibly confusing errors<br>
Suppressing NavigationInfo.type as array.  Use $ node x3dvalidate.js --fullreport ../data/Connectors.json file ... to reveal possibly confusing errors<br>
Suppressing null passingSchemas.  Use $ node x3dvalidate.js --fullreport ../data/Connectors.json file ... to reveal possibly confusing errors<br>
Success validating ../data/Connectors.json<br>
chopped rejoined "\"PLANE_create3000.de\", \"ANY\""<br>
Suppressing @USE missing property.  Use $ node x3dvalidate.js --fullreport ../data/VolumeEmitter.json ... to reveal possibly confusing errors<br>
Suppressing null passingSchemas.  Use $ node x3dvalidate.js --fullreport ../data/VolumeEmitter.json file ... to reveal possibly confusing errors<br>
Success validating ../data/VolumeEmitter.json</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">```$ npx x3dvalidate --fullreport ../data/Connectors.json``` reports:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">keyword: type<br>
 location in document: /X3D/Scene/-children/4/NavigationInfo/@type<br>
 message: must be array<br>
 params: {"type":"array"}<br>
 file: ../data/Connectors.json<br>
 version: 4.0</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr; color: rgb(0, 0, 255);">The JSON code looks like:</div>
<div style="direction: ltr; color: rgb(0, 0, 255);"><br>
</div>
<div style="direction: ltr; color: rgb(0, 0, 255);">          { "NavigationInfo":<br>
            {<br>
              "@type":"\"PLANE_create3000.de\", \"ANY\""<br>
            }<br>
          },</div>
<div style="direction: ltr; color: rgb(0, 0, 255);"><br>
</div>
<div style="direction: ltr; color: rgb(0, 0, 255);">@type should be an array, as Don says, but he doesn't change the stylesheet.  I guess I will look for stylesheet updates.  I don't see anything relevant, updating anyway.</div>
<div style="direction: ltr; color: rgb(0, 0, 255);">  I will propose a patch again.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I guess I'm still arguing with Don about this.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">```$ npx x3dvalidate --fullreport ../data/VolumeEmitter.json``` reports:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">keyword: type<br>
 location in document: /X3D/Scene/-children/4/ParticleSystem/-appearance/Appearance/-pointProperties<br>
 message: must be object<br>
 params: {"type":"object"}<br>
 file: ../data/VolumeEmitter.json<br>
 version: 4.0</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">This one is more interesting and indicates a problem with X3dToJson.xslt or X3D JSON schema.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Relevant code:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">              "-appearance":<br>
                { "Appearance":<br>
                  {<br>
                    "-pointProperties":[<br>
                      { "PointProperties":<br>
                        {<br>
                          "@pointSizeScaleFactor":2,<br>
                          "@pointSizeMaxValue":2<br>
                        }<br>
                      }<br>
                    ]<br>
                  }<br>
                }</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">XML looks like:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">      <Appearance><br>
        <PointProperties<br>
            pointSizeScaleFactor='2'<br>
            pointSizeMaxValue='2'/><br>
      </Appearance></div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Web3d is down, so I can't reference the standard.  X_ITE's website indicates Appearance.pointProperties is an SFNode:</div>
<div style="direction: ltr; color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);"><br>
</span></div>
<h3 style="direction: ltr; line-height: 1.2; margin: 2rem 0px 1rem; font-family: Lato, "Microsoft Yahei", sans-serif; font-size: 21.76px; font-weight: 400;">
<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">SFNode [in, out]
<b>pointProperties</b> NULL <small style="box-sizing: border-box; font-size: 16.32px; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<h3 style="direction: ltr; line-height: 1.2; margin-right: 0px; margin-left: 0px; font-size: 21.76px; font-weight: 400;">
[PointProperties]</h3>
</small></span></h3>
<p style="direction: ltr; margin-top: 0px; margin-bottom: 1rem; font-family: "Source Sans Pro", "Microsoft Yahei", sans-serif; font-size: 16.48px;">
<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Single contained
<a href="https://create3000.github.io/x_ite/components/shape/pointproperties/" id="OWA0d853230-34a9-1927-6a1e-b7b2eb91ef6f" class="OWAAutoLink" originalsrc="https://create3000.github.io/x_ite/components/shape/pointproperties/" data-auth="Verified" style="margin-top: 0px; margin-bottom: 0px;">
PointProperties</a> node that can specify additional visual attributes applied to corresponding point geometry.</span></p>
<p style="direction: ltr; margin-top: 0px; margin-bottom: 1rem; font-family: "Source Sans Pro", "Microsoft Yahei", sans-serif; font-size: 16.48px;">
<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"><br>
</span></p>
<p style="direction: ltr; margin-top: 0px; margin-bottom: 1rem; font-family: "Source Sans Pro", "Microsoft Yahei", sans-serif; font-size: 16.48px;">
<span style="color: rgb(0, 0, 0);">X3DOM's website says:</span></p>
<p style="direction: ltr; margin-top: 0px; margin-bottom: 1rem; font-family: "Source Sans Pro", "Microsoft Yahei", sans-serif; font-size: 16.48px;">
<span style="color: rgb(0, 0, 0);"><br>
</span></p>
<table style="direction: ltr; margin-bottom: 21px; width: 1140px; max-width: 100%; color: rgb(51, 51, 51); box-sizing: border-box; border-collapse: collapse; border-spacing: 0px;">
<tbody>
<tr>
<td style="width: 110.922px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
<div style="direction: ltr; line-height: 1.42857; font-family: "Open Sans", Calibri, Candara, Arial, sans-serif; font-size: 15px; color: rgb(51, 51, 51);">
pointProperties</div>
</td>
<td style="width: 62.7344px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
<div style="direction: ltr; line-height: 1.42857; font-family: "Open Sans", Calibri, Candara, Arial, sans-serif; font-size: 15px; color: rgb(51, 51, 51);">
SFNode</div>
</td>
<td style="width: 110.484px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
<div style="direction: ltr; line-height: 1.42857; font-family: "Open Sans", Calibri, Candara, Arial, sans-serif; font-size: 15px; color: rgb(38, 111, 151);">
<a href="https://doc.x3dom.org/developer/x3dom/nodeTypes/PointProperties.html" id="OWA29da22dc-c39d-9b1d-0b4b-d32824888bd7" class="OWAAutoLink" originalsrc="https://doc.x3dom.org/developer/x3dom/nodeTypes/PointProperties.html" data-auth="Verified" style="color: rgb(38, 111, 151);">PointProperties</a></div>
</td>
<td style="width: 16px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
</td>
<td style="width: 16px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
</td>
<td style="width: 69.0156px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
<span style="font-family: "Open Sans", Calibri, Candara, Arial, sans-serif; font-size: 15px; color: rgb(51, 51, 51);"><img style="box-sizing: border-box;" src="https://doc.x3dom.org/static/images/x3d.png"></span></td>
<td style="width: 754.859px; height: 59.3438px; direction: ltr; line-height: 1.42857; border-top: 1px solid rgb(221, 221, 221); background-color: rgb(249, 249, 249); padding: 8px; vertical-align: top; box-sizing: border-box;">
<div style="direction: ltr; line-height: 1.42857; font-family: "Open Sans", Calibri, Candara, Arial, sans-serif; font-size: 15px; color: rgb(51, 51, 51);">
The pointProperties field, if specified, shall contain a PointProperties node. If pointProperties is NULL or unspecified, the pointProperties field has no effect.</div>
</td>
</tr>
</tbody>
</table>
<div style="direction: ltr; color: rgb(0, 0, 255);">So it appears like pointProperties should be an object,and not an array.  I am currently using X3dToJson.xslt, which is incorrect from the point of view of X3DOM and X_ITE, and X3D JSON schema is correct. 
 This is a new fiinding for me, and I will try to patch the stylesheet.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">My suggestion is to review X3dToJson.xslt and have a correct X3D JSON schema to test the results.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Continuing with several.sh:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">My java is can mostly compile, see compilation:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">javac -proc:full -J-Xss1g -J-Xmx4g Connectors.java<br>
~/X3DJSONLD/src/main/shell<br>
~/X3DJSONLD/src/main/java/net/coderextreme/data ~/X3DJSONLD/src/main/shell<br>
javac -proc:full -J-Xss1g -J-Xmx4g VolumeEmitter.java<br>
VolumeEmitter.java:85: error: cannot find symbol<br>
          .setEmitter(new VolumeEmitter().setDirection(new double[] {0,0,0}).setMass(0.01).setSurfaceArea(0.01)<br>
                                         ^<br>
  symbol:   method setDirection(double[])<br>
  location: class VolumeEmitter<br>
1 error</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">There's issues with Don's, probably pending X3dToJava.xslt.  Will attempt to update stylesheet:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">compiling<br>
~/X3DJSONLD/src/main/java ~/X3DJSONLD/src/main/shell<br>
.\net\x3djsonld\data\VolumeEmitter.java:110: error: no suitable method found for setFieldOfView(double,double,double,double)<br>
    .addChild(new OrthoViewpoint().setDescription("OrthoViewpoint").setFieldOfView(-1.5,-1.5,1.5,1.5))<br>
                                                                   ^<br>
    method OrthoViewpoint.setFieldOfView(float[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(MFFloat) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(ArrayList<Float>) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(int[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(double[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
.\net\x3djsonld\data\VolumeEmitter.java:113: error: cannot find symbol<br>
      .setEmitter(new /*avoid name collision with file name by defining full package*/org.web3d.x3d.jsail.VolumeEmitter().setDirection(0.0,0.0,0.0).setMass(0.01).setSurfaceArea(0.01)<br>
                                                                                                         ^<br>
  symbol:   class VolumeEmitter<br>
  location: package org.web3d.x3d.jsail<br>
2 errors</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">More work with Java stylesheet.  Holger needs to update his ProtoInstances:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">BEGIN ../data/Connectors.x3d > java, *** Error: found ProtoInstance USE='N1' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N1' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N1' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N2' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N3' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N6' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N4' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N5' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N7' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N6' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N7' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N8' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N1' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N2' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N3' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N4' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N5' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N6' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N7' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
*** Error: found ProtoInstance USE='N8' with unnecessary name='Node' included, need to remove name field from ProtoInstance USE nodes<br>
END ../data/Connectors.x3d</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">I'm guessing even though X3dToJava.xslt stylesheet is updated, X3DJSAIL still needs to be updated:  (these are fresh downloads from sourceforge, with my own build of X3DJSAIL, which are probably not released):</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">Same errors as above:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">.\net\x3djsonld\data\VolumeEmitter.java:110: error: no suitable method found for setFieldOfView(double,double,double,double)<br>
    .addChild(new OrthoViewpoint().setDescription("OrthoViewpoint").setFieldOfView(-1.5,-1.5,1.5,1.5))<br>
                                                                   ^<br>
    method OrthoViewpoint.setFieldOfView(float[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(MFFloat) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(ArrayList<Float>) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(int[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
    method OrthoViewpoint.setFieldOfView(double[]) is not applicable<br>
      (actual and formal argument lists differ in length)<br>
.\net\x3djsonld\data\VolumeEmitter.java:113: error: cannot find symbol<br>
      .setEmitter(new /*avoid name collision with file name by defining full package*/org.web3d.x3d.jsail.VolumeEmitter().setDirection(0.0,0.0,0.0).setMass(0.01).setSurfaceArea(0.01)<br>
                                                                                                         ^<br>
  symbol:   class VolumeEmitter<br>
  location: package org.web3d.x3d.jsail</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">More stuff on Holger's side with stylesheet conversion.  with X3dToES5.xslt.  I will look for stylesheet updates.  The stylesheet up to date, but still errors:</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">$ ../../../../shell/jjs.sh Connectors.js 2>&1 |grep Exception|sort -u<br>
org.web3d.x3d.sai.InvalidProtoException: *** ProtoInstance has name field, which is not included in a ProtoInstance USE node.</div>
<div style="direction: ltr;"><br>
</div>
<div style="direction: ltr;">It does look like Don has done a great deal of work on the stylesheets overall, further investigation and updates are needed on my part.</div>
</body>
</html>