<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)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Mangal;
        panose-1:2 4 5 3 5 2 3 3 2 2;}
@font-face
        {font-family:Mangal;
        panose-1:2 4 5 3 5 2 3 3 2 2;}
@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:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Consolas",serif;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:56.7pt 42.5pt 56.7pt 85.05pt;}
div.WordSection1
        {page:WordSection1;}
--></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 bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I am putting together an X3D importer for Blender, and, potentially, for another open source project. As a part of that effort, I have to convert X3D geometries,
 all 15 of them, into vertex/face arrays. As long as there are X3D 3.3 scenes out there, Extrusion support is not going away.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I’m not *<b>using</b>* extrusions in any meaningful sense. All I want is a standard that covers the entire parameter space. Is that too much to ask for?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext"> Leonard Daly [mailto:Leonard.Daly@realism.com]
<br>
<b>Sent:</b> Wednesday, February 03, 2016 11:04 AM<br>
<b>To:</b> x3d-public@web3d.org<br>
<b>Subject:</b> Re: [x3d-public] Extrusions, take 3: initial proposed spec changes<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Seva,<br>
<br>
What do you use Extrusion for? <br>
<br>
I am thinking that the node may not be needed anymore. There are a couple of use cases that I haven't figured out yet and I wish to make sure your uses are understood and a functional solution exists in V4.<br>
<br>
<br>
Leonard Daly<br>
<br>
<br>
<br>
<br>
On 2/3/2016 5:36 AM, Alekseyev, Vsevolod (NIH/NIAID) [E] wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<pre>"If only 2 non-coincident spine points are provided, the corresponding SCP planes for each are perpendicular to the vector defined by these two points."<o:p></o:p></pre>
</blockquote>
<pre><o:p> </o:p></pre>
<pre>That doesn't help clarify the issue at all. First, this language adds nothing to the "coincident spine -> rotate the XZ" rule, second, axes in the plane must be defined, not just the plane itself. And, as we all can see from the misplaced wings on <a href="http://www.jishop.com/temp/x3d/#AV8bHarrier">http://www.jishop.com/temp/x3d/#AV8bHarrier</a> , the choice of axes does matter.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre><o:p> </o:p></pre>
<pre>________________________________________<o:p></o:p></pre>
<pre>From: Don Brutzman [<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>]<o:p></o:p></pre>
<pre>Sent: Wednesday, January 27, 2016 12:44 PM<o:p></o:p></pre>
<pre>To: Alekseyev, Vsevolod (NIH/NIAID) [E]; x3d public mailing list<o:p></o:p></pre>
<pre>Subject: Re: [x3d-public] Extrusions, take 3: initial proposed spec changes<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Thanks again Seva for the excellent test cases.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Dick, Leonard, Roy and I worked on today's weekly X3D Working Group teleconference to craft improved specification prose.  Details follow.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Next week we would like to continue with the prior wiki page examples, plus the long series of emails on this and related threads.<o:p></o:p></pre>
<pre><a href="http://www.web3d.org/wiki/index.php/Extrusion_Edge_Cases">http://www.web3d.org/wiki/index.php/Extrusion_Edge_Cases</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Together we created new Mantis issue 923 from the mail, with responses as follows.  Review and comment welcome.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Access note:  Web3D members have access to all issues.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Issue 0000923: 13.3.5 Extrusion - Edge cases<o:p></o:p></pre>
<pre><a href="http://www.web3d.org/member-only/mantis/view.php?id=923">http://www.web3d.org/member-only/mantis/view.php?id=923</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>Description:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Hi X3D community,<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Extrusion">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Extrusion</a> [^]<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>I've tried and failed twice to explain the problems with the definition of the Extrusion node. So here's a tl;dr version:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Dear authors of the X3D standard, please take a careful look at the standard and answer me:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>1) When the spine goes (0,0,0)-(0,-1,0), what is the SCP?<o:p></o:p></pre>
<pre>Note: all answers but one will render one of the reference models in the Savage archive invalid.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>2) When the spine goes (0,0,0)-(0,1,0)-(0,0,0), what is the SCP?<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>3) When the spine goes (0,0,0)-(1,1,0)-(1,1,0)-(1,1,0)-(2,0,0), what is the SCP for the three middle points?<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Case (1). Need to clearly define SCP when only 2 spine points are defined.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>13.3.5.3 Algorithmic description<o:p></o:p></pre>
<pre><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Algorithmicdescription">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Algorithmicdescription</a> [^]<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Suggested prose additions:<o:p></o:p></pre>
<pre>"If only 2 non-coincident spine points are provided, the corresponding SCP planes for each are perpendicular to the vector defined by these two points."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>"If fewer than 2 non-coincident spine points are provided, the extrusion is not well defined and no results are rendered."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Case (2), first consideration. The prose for orientation is inserted in the middle of the SCP definition. This muddles the definition for SCP.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Suggested move for existing sentences:<o:p></o:p></pre>
<pre>     "The SCP is then rotated by the corresponding orientation value. This rotation is performed relative to the SCP. For example, to impart twist in the cross-section, a rotation about the Y-axis (0 1 0) would be used. Other orientations are valid and rotate the cross-section out of the SCP."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Place these as a new paragraph at the end of the section, after the complete definition of SCP. With slight modification:<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>     "Each SCP is then rotated by the corresponding orientation value. This rotation is performed relative to the SCP itself. For example, to impart twist in the cross-section, a rotation about the local Y-axis (0 1 0) would be used. Other orientation values are valid and may rotate the cross-section out of the plane of the original SCP."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Case (2), second consideration. Does the existing algorithm handle the example in question, in that three sequential spine points are defined where the first and third are coincident? This is a kind of reflection upon itself.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>We would expect to have 3 SCPs, each parallel, where the first and third are coincident. We further need to be careful with plane orientation (direction of normal) for each of these SCPs.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>When 2 vectors are coincident head-to-tail (and vice versa) the cross product does not appear to be well defined, since many perpendiculars are possible. A similiar situation may occur if they two vectors are parallel. These appear to be a special case.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>These circumstances appear to be addressed in the following section.<o:p></o:p></pre>
<pre>13.3.5.4 Special cases<o:p></o:p></pre>
<pre><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Specialcases">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Specialcases</a> [^]<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Case (3). Suggested specification prose revision.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>     "If two points are coincident, they both have the same SCP."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>is better expressed by<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>     "If two or more sequential points in a spine array are coincident, they are each treated as a single point when computing the corresponding SCP, and each will have an identical SCP.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>NOTE. This case is useful when animating the spine array without needed to simultaneously modify the corresponding orientation and scale arrays."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre>Additional change A.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Figure 13.5 title is "Spine-aligned cross-section plane at a spine point.<a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#f-Spine-alignedcross-section[^]Needtoadd">"<o:p></o:p></a></pre>
<pre><span class="MsoHyperlink"><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#f-Spine-alignedcross-section[^]Needtoadd">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#f-Spine-alignedcross-section [^]<o:p></o:p></a></span></pre>
<pre><span class="MsoHyperlink"><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#f-Spine-alignedcross-section[^]Needtoadd"><o:p><span style="text-decoration:none"> </span></o:p></a></span></pre>
<pre><span class="MsoHyperlink"><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#f-Spine-alignedcross-section[^]Needtoadd">Need to add "</a></span>(SCP)" in the figure title above.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>======================================<o:p></o:p></pre>
<pre>Additional change B.<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>13.3.5.4 Special cases<o:p></o:p></pre>
<pre><a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Specialcases">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/geometry3D.html#Specialcases</a> [^]<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>Change<o:p></o:p></pre>
<pre>     "If two points are coincident, they both have the same SCP."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>to<o:p></o:p></pre>
<pre>     "If two sequential spine points are coincident, they both have the same SCP."<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre>==========================================================================<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>all the best, Don<o:p></o:p></pre>
<pre>--<o:p></o:p></pre>
<pre>Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></pre>
<pre>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<o:p></o:p></pre>
<pre>X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman">http://faculty.nps.edu/brutzman</a><o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>x3d-public mailing list<o:p></o:p></pre>
<pre><a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><o:p></o:p></pre>
<pre><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></pre>
<pre><o:p> </o:p></pre>
</blockquote>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">-- <br>
<b><span style="font-size:13.5pt;color:#333366">Leonard Daly</span></b><span style="color:#333366"><br>
3D Systems & Cloud Consultant<br>
X3D Co-Chair on Sabbatical<br>
LA ACM SIGGRAPH Chair<br>
President, Daly Realism - <i>Creating the Future</i> </span><o:p></o:p></p>
</div>
</div>
</body>
</html>