[x3d-public] Extrusions, take 3: initial proposed spec changes

Alekseyev, Vsevolod (NIH/NIAID) [E] VAlekseyev at niaid.nih.gov
Wed Feb 3 19:22:19 PST 2016


Intent is irrelevant. These examples were specifically designed to be ambiguous and/or undefined. The intent was to demonstrate the gaps in the standard :)

#1 (red): that's not what Don's proposed rule would produce. Under Don't rule, the midpoint SCP would bisect the angle between the spine segments. I personally think Don's rule makes more sense than the existing wording. Still, even the compliance with the existing standard is tricky on that one. If for midpoint 1 angle rule trumps the reuse rule, *but* for points two and three the reuse rule trumps the angle rule, then it's correct under the standard.

#2 (green): hard to tell without axes in the picture. Let me think a bit.

#3 (blue): definitely wrong. It was meant to be a pyramid inside a pyramid, see the attached image.

________________________________________
From: Roy Walmsley [roy.walmsley at ntlworld.com]
Sent: Wednesday, February 03, 2016 9:17 AM
To: Alekseyev, Vsevolod (NIH/NIAID) [E]
Cc: 'Don Brutzman'; 'x3d public mailing list'
Subject: RE: [x3d-public] Extrusions, take 3: initial proposed spec changes

Seva,

Thanks for your comment. We will probably consider that in today's meeting.

I took your extracts from three examples on your wiki page (see
http://www.web3d.org/wiki/index.php/Extrusion_Edge_Cases) and merged them
into a single example. I made minor changes to scaling, translation, and
material colours to lay them out. The full listing is reproduced below, and
also appended.

I ran the file in my own Coin3D based viewer, and generated the image
attached. My question is whether you believe that the three images represent
the intent of the author for each of the three cases. IMHO I think the
answers are yes, no, yes respectively.

Regards,

Roy

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN"
"http://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Full' version='3.3'
xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance'
xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.3.x
sd'>
  <head>
    <meta content='ExtrusionEdgeCases.x3d' name='title'/>
    <meta content='Scene incorporating extrusion edge cases'
name='description'/>
    <meta content="http://www.web3d.org/wiki/index.php/Extrusion_Edge_Cases"
name="wikiPage"/>
    <meta content='29 January 2016' name='created'/>
    <meta content='Roy Walmsley' name='creator'/>
  </head>
  <Scene>
    <Group>
     <Transform translation="2 10 0">
       <Shape>
         <Appearance>
           <Material diffuseColor="0.8 0.1 0.05"/>
         </Appearance>
         <Extrusion spine="-5 0 0 0 0 0 4 4 0 4 4 0 4 4 0 8 0 0"
crossSection="-1 0 0 1 1 0 -1 0" scale="1 1 1 1 1 1 2 2 3 3 3 3"/>
       </Shape>
     </Transform>
    </Group>
    <Group>
     <Transform translation="-2 -2 0" scale="2 2 2">
       <Shape>
         <Appearance>
           <Material diffuseColor="0 0.8 0.1"/>
         </Appearance>
         <Extrusion spine="0 0 0 0 1 0" solid="false" crossSection="-1 0 0 2
1 0 -1 0"/>
       </Shape>
     </Transform>
   </Group>
   <Group>
     <Transform translation="2 -2 0" scale="2 2 2">
       <Shape>
         <Appearance>
           <Material diffuseColor="0 0.8 0.1"/>
         </Appearance>
         <Extrusion spine="3 1 0 3 0 0" solid="false" crossSection="-1 0 0 2
1 0 -1 0"/>
       </Shape>
     </Transform>
   </Group>
   <Group>
     <Transform translation="20 0 0" scale="1.5 1.5 1.5">
       <Shape>
         <Appearance>
           <Material diffuseColor="0.1 0 0.8"/>
         </Appearance>
         <Extrusion spine="0 0 0 0 1 0 0 0 0" solid="false" scale="1 1 1.2
1.2 1.4 1.4" beginCap="false" endCap="false"/>
       </Shape>
     </Transform>
   </Group>
 </Scene>
</X3D>

-----Original Message-----
From: x3d-public [mailto:x3d-public-bounces at web3d.org] On Behalf Of
Alekseyev, Vsevolod (NIH/NIAID) [E]
Sent: 03 February 2016 13:36
To: Don Brutzman; x3d public mailing list
Subject: Re: [x3d-public] Extrusions, take 3: initial proposed spec changes

> "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."

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 http://www.jishop.com/temp/x3d/#AV8bHarrier ,
the choice of axes does matter.





________________________________________
From: Don Brutzman [brutzman at nps.edu]
Sent: Wednesday, January 27, 2016 12:44 PM
To: Alekseyev, Vsevolod (NIH/NIAID) [E]; x3d public mailing list
Subject: Re: [x3d-public] Extrusions, take 3: initial proposed spec changes

Thanks again Seva for the excellent test cases.

Dick, Leonard, Roy and I worked on today's weekly X3D Working Group
teleconference to craft improved specification prose.  Details follow.

Next week we would like to continue with the prior wiki page examples, plus
the long series of emails on this and related threads.
http://www.web3d.org/wiki/index.php/Extrusion_Edge_Cases

Together we created new Mantis issue 923 from the mail, with responses as
follows.  Review and comment welcome.

Access note:  Web3D members have access to all issues.

Issue 0000923: 13.3.5 Extrusion - Edge cases
http://www.web3d.org/member-only/mantis/view.php?id=923

==========================================================================
==========================================================================
==========================================================================
Description:

Hi X3D community,

http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components
/geometry3D.html#Extrusion [^]

I've tried and failed twice to explain the problems with the definition of
the Extrusion node. So here's a tl;dr version:

Dear authors of the X3D standard, please take a careful look at the standard
and answer me:

1) When the spine goes (0,0,0)-(0,-1,0), what is the SCP?
Note: all answers but one will render one of the reference models in the
Savage archive invalid.

2) When the spine goes (0,0,0)-(0,1,0)-(0,0,0), what is the SCP?

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?
==========================================================================
==========================================================================
==========================================================================

Case (1). Need to clearly define SCP when only 2 spine points are defined.

13.3.5.3 Algorithmic description
http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components
/geometry3D.html#Algorithmicdescription [^]

Suggested prose additions:
"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."

"If fewer than 2 non-coincident spine points are provided, the extrusion is
not well defined and no results are rendered."

======================================

Case (2), first consideration. The prose for orientation is inserted in the
middle of the SCP definition. This muddles the definition for SCP.

Suggested move for existing sentences:
     "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."

Place these as a new paragraph at the end of the section, after the complete
definition of SCP. With slight modification:

     "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."

======================================

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.

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.

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.

These circumstances appear to be addressed in the following section.
13.3.5.4 Special cases
http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components
/geometry3D.html#Specialcases [^]

======================================

Case (3). Suggested specification prose revision.

     "If two points are coincident, they both have the same SCP."

is better expressed by

     "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.

NOTE. This case is useful when animating the spine array without needed to
simultaneously modify the corresponding orientation and scale arrays."

======================================
Additional change A.

Figure 13.5 title is "Spine-aligned cross-section plane at a spine point."
http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components
/geometry3D.html#f-Spine-alignedcross-section [^]

Need to add "(SCP)" in the figure title above.

======================================
Additional change B.

13.3.5.4 Special cases
http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components
/geometry3D.html#Specialcases [^]

Change
     "If two points are coincident, they both have the same SCP."

to
     "If two sequential spine points are coincident, they both have the same
SCP."

==========================================================================
==========================================================================
==========================================================================

all the best, Don
--
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

_______________________________________________
x3d-public mailing list
x3d-public at web3d.org
http://web3d.org/mailman/listinfo/x3d-public_web3d.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Intent.png
Type: image/png
Size: 10283 bytes
Desc: Intent.png
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20160204/2fc0bea8/attachment-0001.png>


More information about the x3d-public mailing list