Abstract base class for all extrusion-based shape nodes. More...
#include <Inventor/nodes/SoBaseExtrusion.h>
Public Types | |
enum | ScaleMode { DEFAULT, SPINE_ONLY, SECTION_ONLY, NONE } |
enum | ExtrusionMode { SMOOTH = 0, BASIC = 1, SMOOTH_WITHOUT_SELF_INTERSECTIONS = 2 } |
Public Member Functions | |
virtual SoType | getTypeId () const |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFBool | beginCap |
SoSFBool | endCap |
SoMFVec3f | spine |
SoSFEnum | scaleMode |
SoSFEnum | extrusionMode |
Friends | |
class | SoExtrusionImpl |
Abstract base class for all extrusion-based shape nodes.
This node is the abstract base class for all extrusion-based shape (geometry) nodes. It is used as a repository for convenience functions for subclasses and to provide a type identifier to make it easy to determine whether a shape is extrusion-based.
All extrusion-based shapes are created by extruding a 2D shape along a 3D spine. The user can determine which caps are created using the fields beginCap and endCap.
The scaleMode field is used to select the points that will be scaled by the scaleFactor in the current transformation (for example SoTransform), if any. Translation and rotation are applied in all cases.
The extrusionMode field is used to select the extrusion algorithm.
SoExtrusion, SoCircularExtrusion
SMOOTH |
Default extrusion algorithm. The algorithm uses constant section parts cut at spine points in a way similar to what a framer would do to build a frame. This provides a better continuity of the shape and avoids cracks. This algorithm determines the piecewise extrusion directions as a vector between consecutive spine points. This means that zero or really small distances between consecutive points can produce odd extrusion directions and result in wrong geometry. It is up to the application to filter spine points to avoid these cases. The algorithm can produce odd geometries when spines points are overlapping or zigzags. |
BASIC |
Old extrusion algorithm. It does not guarantee that extrusion portions have constant section and shapes could be more twisted. |
SMOOTH_WITHOUT_SELF_INTERSECTIONS |
Smooth but avoids self intersections caused by large curvature radius of the spine. When the spine has curves with a large curvature radius compared to the radius of the extrusion section, SMOOTH generation might produce self intersections. Use this mode to avoid self intersections at the cost of some localized violation of the extrusion smoothness. (Section parts at spine joints may not be constant where self intersections were present.) This mode is useful to avoid artifacts in boolean results when SoBaseExtrusion derived objects are used as operands for CSG operations. |
static SoType SoBaseExtrusion::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoShape.
Reimplemented in SoCircularExtrusion, and SoExtrusion.
virtual SoType SoBaseExtrusion::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoShape.
Reimplemented in SoCircularExtrusion, and SoExtrusion.
friend class SoExtrusionImpl [friend] |
If TRUE, begin planar cap surfaces generated.
Default is TRUE.
If TRUE, end planar cap surfaces generated.
Default is TRUE.
Construction behavior of the extrusion.
Use enum ExtrusionMode. Default is SMOOTH.
Scaling behavior of the extrusion.
Use enum ScaleMode. Default is DEFAULT.
Spine points.
Default is [0 0 0, 0 1 0].