<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<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 thoughtful posts.  Here are some background considerations regarding X3D design.</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);">
In general, the X3D Architecture specification tries to define compatible default behavior if a NULL declaration (or omission) of an essential SFNode field is found in a scene.</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);">
Further, the specification maintains a really light touch regarding handling of problems in a scene graph.  Typical prose says things like "behavior is undefined" so that well-meaning remedies or requirements are not forced on browsers.  This is intended to
 avoid undesirable complications or computational cost that might impact browser performance.  This puts the responsibility on the author (or authoring software) to "do the right thing" in the first place.</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);">
p.s. Ongoing regression testing of Java X3DJSAIL and Python X3DPSAIL libraries revealed that Appearance backMaterial field was not defined in the XML source asset.  Now integrated.  All improvements always welcome.</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>
<ul data-editing-info="{"orderedStyleType":1,"unorderedStyleType":1}" style="margin-top: 0px; margin-bottom: 0px; 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:  Appearance backMaterial</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>[backMaterial accessType inputOutput, type SFNode singleton, NULL node] [X3DMaterialNode]</b><br>
Single contained Material, PhysicalMaterial or UnlitMaterial node that can specify visual attributes for lighting response (color types, transparency, etc.) applied to back faces of corresponding geometry.<br>
<b>Warning:</b> it is only allowed to define a backMaterial field if the material field is also defined (not NULL).<br>
<b>Warning:</b> the node type for backMaterial field (if any) must match node type for material field.</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#Appearance.backMaterial</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);">
<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);">
Have fun with X3D!  ��</div>
<div 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>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> x3d-public <x3d-public-bounces@web3d.org> on behalf of Andreas Plesch via x3d-public <x3d-public@web3d.org><br>
<b>Sent:</b> Wednesday, August 7, 2024 4:33 PM<br>
<b>To:</b> X3D Graphics public mailing list <x3d-public@web3d.org><br>
<b>Cc:</b> Andreas Plesch <andreasplesch@gmail.com><br>
<b>Subject:</b> Re: [x3d-public] Finding required fields (Appearance)</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Shorter answer:<br>
<br>
Let me clarify that I fully agree that an Appearance field value is<br>
not strictly required in which case it will be NULL which in turn<br>
leads to an unlit white rendering.<br>
<br>
Since this is rarely useful (sometimes it is)  I originally listed the<br>
minimal Shape node which leads to a more expected rendering and then<br>
can be modified as needed, as a more practical response..<br>
<br>
Longer answer:<br>
<br>
I think the real question may be what are useful default values.<br>
Additionally, should NULL be ever used as a default value since it is<br>
not obvious what a NULL value may indicate or what consequences it may<br>
have. After all, non-node valued fields never have null values as<br>
defaults.<br>
<br>
For example, for the Appearance field in Shape I would have expected<br>
the default value to be an Appearance node with its default values for<br>
its fields. Similarly, I would have expected for the Material field in<br>
Appearance a default value which is a Material node with its default<br>
values.<br>
<br>
Of course, it is not possible to change the default values of existing<br>
nodes but for new nodes careful consideration may be given to<br>
assigning default values to node fields which may not be NULL.<br>
<br>
-Andreas<br>
<br>
> Date: Wed, 7 Aug 2024 13:47:29 -0500<br>
> From: John Carlson <yottzumm@gmail.com><br>
> To: Joe D Williams <joedwil@earthlink.net><br>
> Cc: "Extensible 3D (X3D) Graphics public discussion"<br>
>         <x3d-public@web3d.org>, Michalis Kamburelis <michalis.kambi@gmail.com><br>
> Subject: Re: [x3d-public] Finding required fields (Appearance)<br>
> Message-ID:<br>
>         <CAGC3UEmFeFAEMAG-ZUkO9fvTmrX3n3sxW2rf4Sc3+XZLMF2jdw@mail.gmail.com><br>
> Content-Type: text/plain; charset="utf-8"<br>
><br>
> If you just take my subject, without reading the whole message, you might<br>
> assume that I am talking about an Appearance node instead of appearance<br>
> field.<br>
><br>
> My question was, is the appearance field required in Shape.<br>
><br>
> Sure, geometry and material are not required either.<br>
><br>
> For context, the question was, what?s the minimal code for a graphical<br>
> object in X3DOM.<br>
> Andreas and I had come up with two different answers, and I was trying to<br>
> use documentation to determine whether an Appearance node was required.<br>
> The X3DOM didn?t list NULL as a default value.  Andreas? approach was to<br>
> try actual examples.<br>
><br>
> I?m pretty sure that just a shape node and a geometry node are required to<br>
> show a graphical object, but at this point, let?s try actual examples.<br>
><br>
> Thanks,<br>
><br>
> John<br>
><br>
> On Sat, Aug 3, 2024 at 5:37?PM Joe D Williams <joedwil@earthlink.net> wrote:<br>
><br>
> > >  Finding required fields (Appearance) ...<br>
> ><br>
> ><br>
> ><br>
> ><br>
> > <a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Shape">
https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Shape</a><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > <a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Appearance">
https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Appearance</a><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > <a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Material">
https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/shape.html#Material</a><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > Please look at the x3d standard. As you mentioned, default geometry is<br>
> > null in Shape.<br>
> ><br>
> ><br>
> ><br>
> > If there is a geometry then the Shape Material node is used. For Material<br>
> > there is a default set which would tend to make the geometry visible. For<br>
> > example, default transparency is 0.<br>
> ><br>
> ><br>
> ><br>
> > My, my, my, ... how the material node has grown along with PBR for 4.0:)<br>
> ><br>
> ><br>
> ><br>
> > All Best,<br>
> ><br>
> > Joe<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > Shape : X3DShapeNode {<br>
> >   SFNode  [in,out] appearance  NULL     [X3DAppearanceNode]<br>
> >   SFBool  [in,out] bboxDisplay FALSE<br>
> >   SFBool  [in,out] castShadow  TRUE<br>
> >   SFNode  [in,out] geometry    NULL     [X3DGeometryNode]<br>
> >   SFNode  [in,out] metadata    NULL     [X3DMetadataObject]<br>
> >   SFBool  [in,out] visible     TRUE<br>
> >   SFVec3f []       bboxCenter  0 0 0    (-?,?)<br>
> >   SFVec3f []       bboxSize    -1 -1 -1 [0,?) or ?1 ?1 ?1<br>
> > }<br>
> ><br>
> ><br>
> ><br>
> > Appearance : X3DAppearanceNode {<br>
> >   SFNode   [in,out] acousticProperties NULL   [AcousticProperties]<br>
> >   SFFloat  [in,out] alphaCutoff        0.5    [0,1]<br>
> >   SFString [in,out] alphaMode          "AUTO" ["AUTO", "OPAQUE", "MASK",<br>
> > "BLEND"]<br>
> >   SFNode   [in,out] backMaterial       NULL   [X3DOneSidedMaterialNode]<br>
> >   SFNode   [in,out] fillProperties     NULL   [FillProperties]<br>
> >   SFNode   [in,out] lineProperties     NULL   [LineProperties]<br>
> >   SFNode   [in,out] material           NULL   [X3DMaterialNode]<br>
> >   SFNode   [in,out] metadata           NULL   [X3DMetadataObject]<br>
> >   SFNode   [in,out] pointProperties    NULL   [PointProperties]<br>
> >   MFNode   [in,out] shaders            []     [X3DShaderNode]<br>
> >   SFNode   [in,out] texture            NULL   [X3DTextureNode]<br>
> >   SFNode   [in,out] textureTransform   NULL   [X3DTextureTransformNode]<br>
> > }<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > Material : X3DOneSidedMaterialNode {<br>
> >   SFFloat  [in,out] ambientIntensity          0.2          [0,1]<br>
> >   SFNode   [in,out] ambientTexture            NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] ambientTextureMapping     ""<br>
> >   SFColor  [in,out] diffuseColor              0.8 0.8 0.8  [0,1]<br>
> >   SFNode   [in,out] diffuseTexture            NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] diffuseTextureMapping     ""<br>
> >   SFColor  [in,out] emissiveColor             0 0 0        [0,1]<br>
> >   SFNode   [in,out] emissiveTexture           NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] emissiveTextureMapping    ""<br>
> >   SFNode   [in,out] metadata                  NULL<br>
> > [X3DMetadataObject]<br>
> >   SFFloat  [in,out] normalScale               1            [0, ?)<br>
> >   SFNode   [in,out] normalTexture             NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] normalTextureMapping      ""<br>
> >   SFFloat  [in,out] occlusionStrength         1            [0,1]<br>
> >   SFNode   [in,out] occlusionTexture          NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] occlusionTextureMapping   ""<br>
> >   SFFloat  [in,out] shininess                 0.2          [0,1]<br>
> >   SFNode   [in,out] shininessTexture          NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] shininessTextureMapping   ""<br>
> >   SFColor  [in,out] specularColor             0 0 0        [0,1]<br>
> >   SFNode   [in,out] specularTexture           NULL<br>
> > [X3DSingleTextureNode]<br>
> >   SFString [in,out] specularTextureMapping    ""<br>
> >   SFFloat  [in,out] transparency              0            [0,1]<br>
> > }<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > not mention PhysicalMaterial and  UnlitMaterial.<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > -----Original Message-----<br>
> > From: Extensible 3D (X3D) Graphics public discussion <x3d-public@web3d.org<br>
> > ><br>
> > Sent: Aug 2, 2024 10:34 AM<br>
> > To: Michalis Kamburelis <michalis.kambi@gmail.com><br>
> > Cc: John Carlson <yottzumm@gmail.com>, Extensible 3D (X3D) Graphics<br>
> > public discussion <x3d-public@web3d.org><br>
> > Subject: Re: [x3d-public] Finding required fields (Appearance)<br>
> ><br>
> ><br>
> > I got something for x3d schema, but X3DUOM was blank.  I don?t have my<br>
> > computer and I?m using chrome.  I?m at the airport.<br>
> ><br>
> > Should I use the spec on the road and tooltips? CGE?<br>
> ><br>
> > John<br>
> ><br>
> > On Fri, Aug 2, 2024 at 9:35?AM John Carlson <yottzumm@gmail.com> wrote:<br>
> ><br>
> >> I don?t know if Apple can still prevent other browsers from avoiding<br>
> >> Apple?s Safari renderer on iOS.  The issue was that apparently, the pages<br>
> >> were blank because I was viewing XML schema and X3DUOM.  Maybe I didn?t<br>
> >> wait long enough.  AFAIK, there?s no view source on Safari on iOS?  Anyone<br>
> >> know a trick?<br>
> >><br>
> >> I was unable to search through X3D JSON Schema on GitHub because the page<br>
> >> crashed.<br>
> >><br>
> >> I can?t even search through my X3DUOM to JSON schema mapping on a web<br>
> >> page which is rendered HTML.<br>
> >><br>
> >> I will try chrome unless the Firefox is proved to work on iOS.<br>
> >><br>
> >> John<br>
> >><br>
> >> On Fri, Aug 2, 2024 at 7:31?AM Michalis Kamburelis <<br>
> >> michalis.kambi@gmail.com> wrote:<br>
> >><br>
> >>> Shape.appearance can be NULL.<br>
> >>><br>
> >>> I'm not sure about notes of iOS and Safari, it should naturally work<br>
> >>> to search GitHub or to browse X3D specs :) You can also install other<br>
> >>> browsers, lke Firefox, on iOS.<br>
> >>><br>
> >>> Michalis<br>
> >>><br>
> >>> czw., 1 sie 2024 o 17:32 John Carlson via x3d-public<br>
> >>> <x3d-public@web3d.org> napisa?(a):<br>
> >>> ><br>
> >>> > I?m looking for a way to determine whether an Appearance node is<br>
> >>> required, viewable  in iOS Safari? Default is NULL in Shape, so I assume<br>
> >>> not.<br>
> >>> ><br>
> >>> > I?m going to check X3D JSON Schema.  Safari bombs when searching on<br>
> >>> GitHub.<br>
> >>> ><br>
> >>> > Any approach would be great, I may even try vim.<br>
> >>> ><br>
> >>> > John<br>
> >>> > _______________________________________________<br>
> >>> > x3d-public mailing list<br>
> >>> > x3d-public@web3d.org<br>
> >>> > <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
> >><br>
> >><br>
> ><br>
> -------------- next part --------------<br>
> An HTML attachment was scrubbed...<br>
> URL: <<a href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240807/13c29e42/attachment-0001.html">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20240807/13c29e42/attachment-0001.html</a>><br>
><br>
> ------------------------------<br>
><br>
> Subject: Digest Footer<br>
><br>
> _______________________________________________<br>
> x3d-public mailing list<br>
> x3d-public@web3d.org<br>
> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
><br>
><br>
> ------------------------------<br>
><br>
> End of x3d-public Digest, Vol 185, Issue 12<br>
> *******************************************<br>
<br>
<br>
<br>
-- <br>
Andreas Plesch<br>
Waltham, MA 02453<br>
<br>
_______________________________________________<br>
x3d-public mailing list<br>
x3d-public@web3d.org<br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</div>
</span></font></div>
</body>
</html>