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

Don Brutzman brutzman at nps.edu
Wed Jan 27 09:44:13 PST 2016


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



More information about the x3d-public mailing list