<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=ks_c_5601-1987"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@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:1952786310;
        mso-list-type:hybrid;
        mso-list-template-ids:-147273000 -1346759078 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:4;
        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;}
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="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoPlainText>Thanks for continued analysis.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in'><p class=MsoPlainText style='border:none;padding:0in'>I like the clearer field names in glTF reference that you provided:<o:p></o:p></p></div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 style='background:white;border-collapse:collapse'><thead><tr><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Property<o:p></o:p></span></b></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Description<o:p></o:p></span></b></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Required<o:p></o:p></span></b></p></td></tr></thead><tr><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>innerConeAngle</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p></o:p></span></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Angle, in radians, from centre of spotlight where falloff begins. Must be greater than or equal to </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>0</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'> and less than </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>outerConeAngle</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>.<o:p></o:p></span></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>No, Default: </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>0</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p></o:p></span></p></td></tr><tr><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>outerConeAngle</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p></o:p></span></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Angle, in radians, from centre of spotlight where falloff ends. Must be greater than </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>innerConeAngle</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'> and less than or equal to </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>PI / 2.0</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>.<o:p></o:p></span></p></td><td style='padding:4.5pt 9.75pt 4.5pt 9.75pt'><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>No, Default: </span><span style='font-size:10.0pt;font-family:Consolas;color:#24292F'>PI / 4.0</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p></o:p></span></p></td></tr></table><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in'><p class=MsoPlainText style='border:none;padding:0in'><o:p> </o:p></p></div><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>It seems clear to me that innerConeAngle corresponds to beamWidth, and outerConeAngle corresponds to cutOffAngle.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>If you disagree with ¡°cutOffAngle > beamWidth¡± (perhaps greater than or equals) relationship, then you think the opposite and thus would need a new diagram, correct?  Similarly, that is a functional change to the (possibly still incorrect?) X3D Spotlight.<o:p></o:p></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>X3D4 Architecture, Figure 17.1 — SpotLight node<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/lighting.html#f-SpotLightnode<o:p></o:p></li></ul><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>If these parameters have been forever broken, then we need to unambiguously define and illustrate the correct approach.  I am open to possibility of alignment with glTF to ensure that no misunderstandings are carried forward.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>If a simpler adjustment of default values might work, that is possible¡¦ in general though, defaults are chosen to be somewhat forgiving so that authors can tell something is going on (directionality is sometimes difficult) and then tune values accordingly.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Taking a step back: this all seems fundamental yet we are circling¡¦ suggest we get together on Web3D teleconference this week.  Hoping that Friday¡¯s regular X3D weekly meeting might work for you?  Several people can be in attendance then.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>all the best, Don<o:p></o:p></p><p class=MsoPlainText>-- <o:p></o:p></p><p class=MsoPlainText>Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></p><p class=MsoPlainText>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></p><p class=MsoPlainText>X3D graphics, virtual worlds, Navy robotics https:// faculty.nps.edu/brutzman<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span style='mso-fareast-language:KO'>-----Original Message-----<br>From: Michalis Kamburelis <michalis.kambi@gmail.com> <br>Sent: Monday, February 14, 2022 3:50 AM<br>To: Brutzman, Donald (Don) (CIV) <brutzman@nps.edu><br>Cc: X3D Graphics public mailing list <x3d-public@web3d.org><br>Subject: Re: [x3d-public] Defaults of SpotLight.cutOffAngle, beamWidth changed (maybe by mistake) in X3D 3.3</span></p><p class=MsoPlainText>I have to say<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>1. I don't agree that "Thus default values need to have cutOffAngle > beamWidth."<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>2. And I don't agree that cutOffAngle = pi/2 is good default. It's surprisingly wide, all other software/formats I checked (see below) have smaller cutOffAngle (aka outerConeAngle).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>AD 1 - The specification explicitly allows "If the beamWidth is greater than the cutOffAngle, beamWidth is defined to be equal to the cutOffAngle and the light source emits full intensity within the entire solid angle defined by cutOffAngle...." And the equations in spec reflect that, everything works OK when beamWidth > cutOffAngle.<o:p></o:p></p><p class=MsoPlainText>You don't have a smooth falloff in this case, but it looks reasonable.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>AD 2 - This is my main pain point. I really think that cutOffAngle =<o:p></o:p></p><p class=MsoPlainText>pi/2 is too wide, it means that whole spot angle is 180 degrees, so SpotLight is at "maximally wide" state shining on half of 3D space. I looked at defaults in other formats/application, and noone has so wide<o:p></o:p></p><p class=MsoPlainText>default:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>- glTF punctual lights (<o:p></o:p></p><p class=MsoPlainText><a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKhronosGroup%2FglTF%2Ftree%2Fmain%2Fextensions%2F2.0%2FKhronos%2FKHR_lights_punctual&amp;data=04%7C01%7Cbrutzman%40nps.edu%7C5493278ab60b46b9951e08d9efb03649%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637804363573077429%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=d3IA54ENWoYel6mMl6mRHOy9QEdJ7qX%2FERHqNIDVXno%3D&amp;reserved=0"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKhronosGroup%2FglTF%2Ftree%2Fmain%2Fextensions%2F2.0%2FKhronos%2FKHR_lights_punctual&amp;data=04%7C01%7Cbrutzman%40nps.edu%7C5493278ab60b46b9951e08d9efb03649%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637804363573077429%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=d3IA54ENWoYel6mMl6mRHOy9QEdJ7qX%2FERHqNIDVXno%3D&amp;reserved=0</span></a><o:p></o:p></p><p class=MsoPlainText>) have by default outerConeAngle = pi/4<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>- Blender Spot light has by default size = 45 degrees, but this expresses 2*outerConeAngle. So Blender default is like outerConeAngle = 22.5 degrees = pi/8, even smaller<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>- Unity Spot has by default size = 30 degrees, but this is also 2*outerConeAngle. So again it is even smaller, like outerConeAngle =<o:p></o:p></p><p class=MsoPlainText>15 degrees = pi/12<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>So really noone has so large default cutOffAngle = pi/2, everyone I see has smaller. I believe that VRML 97 and X3D 3.0, 3.1, 3.2 did it right, no change was necessary. And we should revert to that. So defaults at<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>  - beamWidth pi/2<o:p></o:p></p><p class=MsoPlainText>  - cutOffAngle pi/4<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>If you really want to make beamWidth by default smaller, then change only beamWidth. Make beamWidth by default pi/4 or even pi/8. But don't change the cutOffAngle to pi/2. This is so large (and compatibility-breaking for no good reason, IMHO) that I'm really reluctant to follow X3D 3.3 defaults in Castle Game Engine / view3dscene, and I'm tempted to just stay with older defaults.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Regards,<o:p></o:p></p><p class=MsoPlainText>Michalis<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>pon., 14 lut 2022 o 09:32 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>> napisa©©(a):<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Thanks for looking at this Michalis.  Further detail is available at<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Mantis 441: 17.4.3 SpotLight -- Default Values<o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/member-only/mantis/view.php?id=441"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/member-only/mantis/view.php?id=441</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Essential point: beamWidth is the inner angle of full intensity, cutOffAngle is the outer angle of zero intensity. Thus default values need to have cutOffAngle > beamWidth.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> So I think that this change, performed in 2009, fixed a prior problem in the specification.  Brightest area needs to be the inside cone, with intensity gradually fading until reaching the outside cone.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Hopefully that now looks better to you.  Thanks for all scrutiny.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> *  <o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/P"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/P</span></a><o:p></o:p></p><p class=MsoPlainText>> art01/components/lighting.html#SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> 17.4.4 SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> SpotLight : X3DLightNode {<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] ambientIntensity 0        [0,1]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFVec3f [in,out] attenuation      1 0 0    [0,¡Ä)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] beamWidth        ¥ð/4      (0,¥ð/2]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFColor [in,out] color            1 1 1    [0,1]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] cutOffAngle      ¥ð/2      (0,¥ð/2]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFVec3f [in,out] direction        0 0 -1   (-¡Ä,¡Ä)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFBool  [in,out] global           TRUE<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] intensity        1        [0,¡Ä)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFVec3f [in,out] location         0 0 0    (-¡Ä,¡Ä)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFNode  [in,out] metadata         NULL     [X3DMetadataObject]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFBool  [in,out] on               TRUE<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] radius           100      [0,¡Ä)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFBool  [in,out] shadows          FALSE<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   SFFloat [in,out] shadowIntensity  1        [0,1]<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> }<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> p.s. I just confirmed correctly matching values in X3D XML Schema and DTD.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> all the best, Don<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> --<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> X3D graphics, virtual worlds, Navy robotics https:// <o:p></o:p></p><p class=MsoPlainText>> faculty.nps.edu/brutzman<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> From: x3d-public <<a href="mailto:x3d-public-bounces@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public-bounces@web3d.org</span></a>> On Behalf Of Michalis <o:p></o:p></p><p class=MsoPlainText>> Kamburelis<o:p></o:p></p><p class=MsoPlainText>> Sent: Sunday, February 13, 2022 8:42 PM<o:p></o:p></p><p class=MsoPlainText>> To: X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public@web3d.org</span></a>><o:p></o:p></p><p class=MsoPlainText>> Subject: Re: [x3d-public] Defaults of SpotLight.cutOffAngle, beamWidth <o:p></o:p></p><p class=MsoPlainText>> changed (maybe by mistake) in X3D 3.3<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Note: I have a hypothesis why this happened.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> The drawing presented at SpotLight description (it is the same in all X3D versions) shows a situation when beamWidth < cutOffAngle. The drawing shows a situation when these is smooth falloff between beamWidth and cutOffAngle. Maybe someone thought that defaults do not match this drawing, ans thus reversed the defaults.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> I would say that the drawing just doesn't, and never meant to, show the default state. It just shows an example state that is possible.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Regards,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Michalis<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> W dniu pon., 14.02.2022 o 05:10 Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com"><span style='color:windowtext;text-decoration:none'>michalis.kambi@gmail.com</span></a>> napisa©©(a):<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Hi,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> I just noticed an alarming regression at SpotLight definition across <o:p></o:p></p><p class=MsoPlainText>> X3D versions.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> 1. In VRML 97, X3D 3.0, 3.1 and 3.2 the default values are:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - beamWidth pi/2<o:p></o:p></p><p class=MsoPlainText>>   - cutOffAngle pi/4<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   This means that there is no smooth falloff from beamWidth to <o:p></o:p></p><p class=MsoPlainText>> cutOffAngle. Spot light has multiplier = 1 in range 0...pi/4, and then <o:p></o:p></p><p class=MsoPlainText>> it's zero outside of pi/4.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   I think this is the good definition. It makes sense as default.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   See:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - VRML 97: <o:p></o:p></p><p class=MsoPlainText>> <a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftecfa"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftecfa</span></a><o:p></o:p></p><p class=MsoPlainText>> .unige.ch%2Fguides%2Fvrml%2Fvrml97%2Fspec%2Fpart1%2FnodesRef.html%23Sp<o:p></o:p></p><p class=MsoPlainText>> otLight&amp;data=04%7C01%7Cbrutzman%40nps.edu%7C5493278ab60b46b9951e08<o:p></o:p></p><p class=MsoPlainText>> d9efb03649%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C63780436357307<o:p></o:p></p><p class=MsoPlainText>> 7429%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT<o:p></o:p></p><p class=MsoPlainText>> iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=DR7HBogG27XNmzipDNWEXGHtHw0<o:p></o:p></p><p class=MsoPlainText>> HQyJgaT%2BSPqIcKWY%3D&amp;reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - X3D 3.0: <o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/documents/specifications/19775-1/V3.0/Part01/com"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/documents/specifications/19775-1/V3.0/Part01/com</span></a><o:p></o:p></p><p class=MsoPlainText>> ponents/lighting.html#SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - X3D 3.1: this version seems to be published only as "diff from X3D <o:p></o:p></p><p class=MsoPlainText>> 3.0", and it has no change regarding SpotLight, see <o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/documents/specifications/19775-1/V3.1/Part01/com"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/documents/specifications/19775-1/V3.1/Part01/com</span></a><o:p></o:p></p><p class=MsoPlainText>> ponents/lighting.html<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - X3D 3.2: <o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/documents/specifications/19775-1/V3.2/Part01/com"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/documents/specifications/19775-1/V3.2/Part01/com</span></a><o:p></o:p></p><p class=MsoPlainText>> ponents/lighting.html#SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> 2. In X3D 3.3 and 4.0 however, the defaults are reversed:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - beamWidth pi/4<o:p></o:p></p><p class=MsoPlainText>>   - cutOffAngle pi/2<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   This makes a different behavior, and one that is IMHO less expected.<o:p></o:p></p><p class=MsoPlainText>> cutOffAngle pi/2 means that "total angle of spotlight" is pi, 180 <o:p></o:p></p><p class=MsoPlainText>> degrees. This is possible, but unexpected as default for a spot light.<o:p></o:p></p><p class=MsoPlainText>> It's a very wide light, effectively shining on half of 3D space.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   See:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - X3D 3.3: <o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/com"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/com</span></a><o:p></o:p></p><p class=MsoPlainText>> ponents/lighting.html#SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - X3D 4.0 draft:<o:p></o:p></p><p class=MsoPlainText>> <a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/P"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/P</span></a><o:p></o:p></p><p class=MsoPlainText>> art01/components/lighting.html#SpotLight<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> What others do?<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> - Castle Game Engine and view3dscene always followed AD 1. I didn't <o:p></o:p></p><p class=MsoPlainText>> even know that there was a change to this in X3D 3.3.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> - InstantReality (at least docs) also follows AD 1, looking at<o:p></o:p></p><p class=MsoPlainText>> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoc"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoc</span></a>.<o:p></o:p></p><p class=MsoPlainText>> instantreality.org%2Fdocumentation%2Fnodetype%2FSpotLight%2F&amp;data=<o:p></o:p></p><p class=MsoPlainText>> 04%7C01%7Cbrutzman%40nps.edu%7C5493278ab60b46b9951e08d9efb03649%7C6d93<o:p></o:p></p><p class=MsoPlainText>> 6231a51740ea9199f7578963378e%7C0%7C0%7C637804363573077429%7CUnknown%7C<o:p></o:p></p><p class=MsoPlainText>> TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVC<o:p></o:p></p><p class=MsoPlainText>> I6Mn0%3D%7C3000&amp;sdata=n1Vnxg6FcwwzV54VjD0hAvPq3X25SCrYvmP%2FFSNtrc<o:p></o:p></p><p class=MsoPlainText>> k%3D&amp;reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> - X3DOM (at least docs) is confused, judging from<o:p></o:p></p><p class=MsoPlainText>> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoc"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoc</span></a>.<o:p></o:p></p><p class=MsoPlainText>> x3dom.org%2Fauthor%2FLighting%2FSpotLight.html&amp;data=04%7C01%7Cbrut<o:p></o:p></p><p class=MsoPlainText>> zman%40nps.edu%7C5493278ab60b46b9951e08d9efb03649%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637804363573077429%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=payjbNAnAV%2B2lc8N7Ku0EGt7K6sJdWMyV%2FTJtAsds4Q%3D&amp;reserved=0 . They say that both cutOffAngle and beamWidth are both pi/2 by default, which is not consistent with any X3D version.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> I didn't test InstantReality or X3DOM in practice, only looked at docs now.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Proposal: let's fix X3D 4.0. Revert the defaults to what was in X3D 3.2:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>   - beamWidth pi/2<o:p></o:p></p><p class=MsoPlainText>>   - cutOffAngle pi/4<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Unless someone knows a good reason for change in X3D 3.3, I'm tempted <o:p></o:p></p><p class=MsoPlainText>> to call this just a simple human mistake when someone was editing X3D <o:p></o:p></p><p class=MsoPlainText>> 3.3.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Regards,<o:p></o:p></p><p class=MsoPlainText>> Michalis<o:p></o:p></p></div></body></html>