<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 14 (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:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        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";}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.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:1516111037;
        mso-list-type:hybrid;
        mso-list-template-ids:684649128 966553720 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F06E;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:22.5pt;
        text-indent:-.25in;
        font-family:Wingdings;
        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;
        margin-left:58.5pt;
        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;
        margin-left:94.5pt;
        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;
        margin-left:130.5pt;
        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;
        margin-left:166.5pt;
        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;
        margin-left:202.5pt;
        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;
        margin-left:238.5pt;
        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;
        margin-left:274.5pt;
        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;
        margin-left:310.5pt;
        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"><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi, Roy and Michalis –<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>In addition to the quote from the spec, an Inline node must also handle IMPORT and EXPORT mappings. At SIGGraph and at the WG6 meeting, we discussed specifying ExternalGeometry and/or ExternalShape nodes. While they are intended for importing glTF content, there is no reason why they couldn’t also handle STL if am implementered desired it. The purpose of these two nodes is to allow content ready for rendering to be bulk loaded into a geometry processor (or geometry processor simulator </span><span style='font-family:Wingdings;color:#1F497D'>J</span><span style='color:#1F497D'>) with little or no interpretation, thus greatly speeding the handle of large amounts of geometry. The difference between ExternalGeometry and ExternalShape is that ExternalShape can also include appearance information as specified in glTF.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='margin-left:22.5pt;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-family:Wingdings;color:#1F497D'><span style='mso-list:Ignore'>n<span style='font:7.0pt "Times New Roman"'>  </span></span></span><![endif]><span style='color:#1F497D'>Dick<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>/******************************************<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| Richard F. Puk, Ph.D., President<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| Intelligraphics Incorporated<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| 7644 Cortina Court<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| Carlsbad, CA  92009-8206<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| Tel: +1-760-753-9027  Mobile:  +1-760-809-9027<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>| Email:  <a href="mailto:puk@igraphics.com"><span style='color:blue'>puk@igraphics.com</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>\****************************************** <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><a name="_MailEndCompose"><span style='color:#1F497D'><o:p> </o:p></span></a></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> cad [mailto:cad-bounces@web3d.org] <b>On Behalf Of </b>Roy Walmsley<br><b>Sent:</b> Monday, August 14, 2017 3:21 AM<br><b>To:</b> 'Michalis Kamburelis'; 'Don Brutzman'<br><b>Cc:</b> 'X3D Design Printing Scanning working group'; 'X3D Graphics public mailing list'<br><b>Subject:</b> Re: [cad] [x3d-public] STL File Format for 3D Printing - Simply Explained | All3DP<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoPlainText><span lang=EN-GB>Hi,<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Thanks for following up with this Michaelis. I was particularly interested to note that you permit an Inline node to read an STL file (as well as others, perhaps). I assume you simply specify the STL file in the URL, and your code selects an appropriate reader depending on the file extension and/or reading the header.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>I looked at the standard to see what it might have to say on this topic, in ISO/IEC 19775-1:2013, clause 9.3.2 X3DUrlObject<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Reference: <a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#X3DUrlObject">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#X3DUrlObject</a><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>The third paragraph is particularly relevant. It reads:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>"Each specified URL shall refer to a valid X3D file that contains a list of children nodes, prototypes and routes at the top level as described in 10.2.1 Grouping and children node types. The results are undefined if the URL refers to a file that is not an X3D file, or if the X3D file contains an invalid scene." <o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>To permit loading of file types other than formal X3D files this text would have to be modified.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>All the best,<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Roy<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>-----Original Message-----<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>From: x3d-public [<a href="mailto:x3d-public-bounces@web3d.org">mailto:x3d-public-bounces@web3d.org</a>] On Behalf Of Michalis Kamburelis<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Sent: 14 August 2017 04:35<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>To: Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Cc: X3D Design Printing Scanning working group <<a href="mailto:cad@web3d.org">cad@web3d.org</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Subject: Re: [x3d-public] STL File Format for 3D Printing - Simply Explained | All3DP<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>2017-08-14 3:35 GMT+02:00 Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>>:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> Good article of general interest:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>>         STL File Format for 3D Printing - Simply Explained | All3DP<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>>         June 13, 2017 bub Dibya Chakravorty<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>>         <o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> <a href="https://all3dp.com/what-is-stl-file-format-extension-3d-printing">https://all3dp.com/what-is-stl-file-format-extension-3d-printing</a><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> Interesting thought question:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> -if we follow Fraunhofer's SRC pattern and have both ExternalShape and <o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> ExternalGeometry nodes,<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> -  and now replace SRC with glTF 2, then<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> - might we similarly allow loading of STL models in ExternalShape and <o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>> ExternalGeometry nodes?<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>1. view3dscene <a href="https://castle-engine.sourceforge.io/view3dscene.php">https://castle-engine.sourceforge.io/view3dscene.php</a><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>can already read STL files (both text and binary encodings) and render them, and convert to X3D. You can also use "Inline" node to include STL files inside a larger X3D scene.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>2. STL became a standard format for 3D printing, but it's simplicity comes at a price. It does not carry *any* information beyond coordinates and normals.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>  This is not a criticism per se -- the STL simplicity works great in some usecases, like 3D printing.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>  But for visualization, when you want to show something "pretty" (not only to check whether your shape is correct), you will usually want something more. At least simple 2D texture coordinates. And STL does not allow them. (Not to mention colors per vertex, multiple texture coordinates, custom shader attributes...).<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Regards,<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>Michalis<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-GB>_______________________________________________<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB>x3d-public mailing list<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-GB><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><o:p></o:p></span></p></div></body></html>