<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:251166672;
mso-list-type:hybrid;
mso-list-template-ids:-433039978 -1027992180 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l1
{mso-list-id:1014263009;
mso-list-type:hybrid;
mso-list-template-ids:-716034578 1358179444 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.25in;
text-indent:-.25in;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:Calibri;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:.75in;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.25in;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:1.75in;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.25in;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:2.75in;
text-indent:-.25in;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.25in;
text-indent:-.25in;
font-family:Symbol;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:3.75in;
text-indent:-.25in;
font-family:"Courier New";}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:4.25in;
text-indent:-.25in;
font-family:Wingdings;}
@list l2
{mso-list-id:1733695802;
mso-list-type:hybrid;
mso-list-template-ids:-824415656 -1266660760 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Symbol;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:"Courier New";}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;
font-family:Wingdings;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Thanks for excellent comment Holger. Apologies for delayed response on my part.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I agree that consistent interface hierarchies are essential and required.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Next, please note updated url. You provided a link to the earlier Committee Draft (CD) version.<o:p></o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>X3D4 Architecture, CD, 25.3.11 GeoViewpoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/geospatial.html#GeoViewpoint<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That document was updated as follows. This Draft International Specification (DIS) passed ISO international balloting, Dick and I will be applying final comments by Web3D Consortium and various national bodies to further improve the document in coming weeks.<o:p></o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>X3D4 Architecture, DIS, 25.3.11 GeoViewpoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/geospatial.html#GeoViewpoint<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l2 level1 lfo2'><span style='font-size:8.5pt;color:black'>SFNode [in,out] navigationInfo NULL [NavigationInfo]</span><o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So it looks like this early omission was noted and handled in a previous review. Nevertheless your diligence is appreciated since the window for error corrections is about to close.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here are some additional checks that I performed, ensuring that this important connection is included in our documentation, validation and code libraries.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l1 level1 lfo3'>X3D Tooltips, GeoViewpoint NavigationInfo<o:p></o:p></li><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l1 level1 lfo3'>https://www.web3d.org/x3d/content/X3dTooltips.html#GeoViewpoint.navigationInfo<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:-.25in;mso-list:l1 level1 lfo3'>X3D Unified Object Model (X3DUOM), derived from X3D XML Schema, includes it:<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> <ConcreteNode name="GeoViewpoint"><o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> <InterfaceDefinition <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> specificationUrl=https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/geospatial.html#GeoViewpoint<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> appinfo="GeoViewpoint specifies viewpoints using geographic coordinates."><o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> <componentInfo name="Geospatial" level="1"/><o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> <Inheritance baseType="X3DViewpointNode"/>\<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> <field name="navigationInfo"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> type="SFNode"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> accessType="inputOutput"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> default="NULL"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> acceptableNodeTypes="NavigationInfo"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> inheritedFrom="X3DViewpointNode"<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:9.0pt'> description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode."/><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3DJSAIL, X3D Java Scene Access Interface Library includes it<o:p></o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>Package org.web3d.x3d.sai.Navigation, Interface X3DViewpointNode<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/sai/Navigation/X3DViewpointNode.html<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>All Known Implementing Classes: GeoViewpoint, OrthoViewpoint, Viewpoint<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>x3d.py python includes it:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'>class GeoViewpoint(_X3DViewpointNode):<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> """<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> GeoViewpoint specifies viewpoints using geographic coordinates.<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> """<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> @property # getter - - - - - - - - - -<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> def navigationInfo(self):<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> """[NavigationInfo] The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode."""<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> return self.__navigationInfo<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> @navigationInfo.setter<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> def navigationInfo(self, navigationInfo):<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> if navigationInfo is None:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> navigationInfo = None # default<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> assertValidSFNode(navigationInfo)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> if not navigationInfo is None and not isinstance(navigationInfo,(NavigationInfo,ProtoInstance)):<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> # print(flush=True)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> raise X3DTypeError(str(navigationInfo) + ' does not match required node type (NavigationInfo,ProtoInstance) and is invalid')<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:9.0pt;font-family:"Courier New"'> self.__navigationInfo = NavigationInfo<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So looks like we are set. Thanks again.<o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>Don Brutzman Naval Postgraduate School, Code USW/Br brutzman@nps.edu<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, Navy robotics https://</span> <span style='font-size:10.0pt;font-family:"Courier New"'>faculty.nps.edu/brutzman<o:p></o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> x3d-public <x3d-public-bounces@web3d.org> <b>On Behalf Of </b>Holger Seelig<br><b>Sent:</b> Saturday, December 10, 2022 12:57 PM<br><b>To:</b> X3D <x3d-public@web3d.org><br><b>Subject:</b> [x3d-public] Base of X3DViewpointNode<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X3DViewpointNode is base of Viewpoint, OrthoViewpoint, and GeoViewpoint. Base means the parent classes inherit ALL fields of the base node. <o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>This is not the case with GeoViewpoint, which misses new v4.0 field navigationInfo, I don’t see why this should be.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>See:<o:p></o:p></p></div><div><div><div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=300 style='width:225.0pt;background:#E5E6E9;border-collapse:collapse'><tr><td style='padding:0in 0in 0in 0in'><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=300 style='width:225.0pt;background:#E5E6E9'><tr><td style='padding:6.0pt 0in 6.0pt 0in'><div style='margin-left:12.0pt;margin-right:12.0pt;max-width:100%;overflow:hidden'><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Helvetica",sans-serif'><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/geospatial.html#GeoViewpoint"><span style='color:#272727;text-decoration:none'>Extensible 3D (X3D), ISO/IEC 19775-1:202x, 25 Geospatial Component</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Helvetica",sans-serif;color:black'><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/geospatial.html#GeoViewpoint"><span style='color:gray;text-decoration:none'>web3d.org</span></a></span><span style='font-size:8.5pt;font-family:"Helvetica",sans-serif'><o:p></o:p></span></p></div></td><td width=36 style='width:27.0pt;padding:4.5pt 9.0pt 4.5pt 0in'><p class=MsoNormal><span style='color:black'><a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/geospatial.html#GeoViewpoint"><span style='font-family:"Helvetica",sans-serif;text-decoration:none'><img border=0 width=36 height=36 style='width:.375in;height:.375in' id="Picture_x0020_1" src="cid:image001.png@01D91DE0.D0606B80"></span></a></span><span style='font-family:"Helvetica",sans-serif'><o:p></o:p></span></p></td></tr></table></td></tr></table><p class=MsoNormal><o:p> </o:p></p></div></div></div></div></body></html>