Class SoLineSet
- All Implemented Interfaces:
SafeDisposable
vertexProperty
field (from SoVertexShape
), or the current inherited coordinates. For optimal performance, the vertexProperty
field is recommended.
Coordinates are used in order, starting with startIndex
(zero by default).
If the numVertices
field contains -1 (the default), then all the coordinates (starting with startIndex) are rendered as a single polyline.
Otherwise each polyline uses the number of vertices specified by a value in the numVertices
field. For example, an SoLineSet
with a numVertices
of [3,4,2] would use the first three coordinates for the first polyline, the next four coordinates for the second polyline, and the next two coordinates for the third polyline. Thus the number of values in the numVertices
field indicates the number of polylines in the set.
The coordinates of the line set are transformed by the current cumulative transformation.
The line width and pattern are controlled by fields in SoDrawStyle
.
The lines are drawn with the current drawing style (see SoDrawStyle
), but drawing style FILLED is treated as LINES.
Treatment of the current material, normal and tangent binding is as follows:
- PER_PART binding specifies a material, normal or tangent for each segment of the line.
- PER_FACE binding specifies a material, normal or tangent for each polyline.
- PER_VERTEX specifies a material, normal or tangent for each vertex.
- The _INDEXED bindings mean exactly the same as their non-indexed counterparts.
- The default material binding is OVERALL.
- The default normal and tangent bindings are PER_VERTEX
The current complexity value has no effect on the rendering of line sets.
Shape Antialiasing type is SoShape.LINES
.
Lighting:
- By default, lighting is enabled (
SoLightModel
model = PER_VERTEX_PHONG). But...
Unlike polygonal shapes, lighting will not be applied to line shapes unless the application explicitly sets normal vectors (usingSoVertexProperty
orSoNormal
) or sets tangent vectors (usingSoVertexProperty
). Normal vectors are not automatically computed for line shapes.
- If lighting is enabled and tangent vectors are specified:
then normal vectors are ignored and lines are lighted using the Illuminated Stream Lines algorithm (Zöckler, Stalling & Hege, 1996) (http://www.zib.de/visual-publications/sources/src-1996/isl.pdf).
- If lighting is enabled and normal vectors are specified but
not tangent vectors:
then lines are lighted using the same algorithm as polygonal shapes.
- Note the above discussion is specific to rendering of
line shapes , e.g. this node.
If you render a polygonal shape, e.g.SoFaceSet
, using LINES mode (SoDrawStyle
), the rules for polygonal shapes apply (if lighting is enabled and no normal vectors were specified, then normal vectors are automatically computed by Open Inventor).
- NOTE: If you want to apply lighting in a shader, you must explicitly set normal or tangent vectors, otherwise lighting will be disabled for the line shape.
Limitations:
- Currently does not use VBOs (vertex buffer objects) for rendering. For very large line sets, performance may be better using
SoIndexedLineSet
.
File format/default:
LineSet {
vertexProperty | NULL |
startIndex | 0 |
numVertices | -1 |
Action behavior:
SoGLRenderAction
Draws lines based on the current coordinates, normals, tangents, materials, drawing style, and so on.
SoRayPickAction
Picks lines based on the current coordinates and transformation. Details about the intersection are returned in an SoLineDetail
.
SoGetBoundingBoxAction
Computes the bounding box that encloses all vertices of the line set with the current transformation applied to them. Sets the center to the average of the coordinates of all vertices.
SoCallbackAction
If any line segment callbacks are registered with the action, they will be invoked for each successive segment in the line set.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoShape
SoShape.ShapeTypes
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoNode
SoNode.RenderModes
Nested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand
-
Field Summary
FieldsFields inherited from class com.openinventor.inventor.nodes.SoNonIndexedShape
startIndex
Fields inherited from class com.openinventor.inventor.nodes.SoVertexShape
vertexProperty
Fields inherited from class com.openinventor.inventor.nodes.SoShape
boundingBoxIgnoring
Fields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class com.openinventor.inventor.nodes.SoVertexShape
getNormalCache, getTangentCache
Methods inherited from class com.openinventor.inventor.nodes.SoShape
getShapeType, isPrimitiveRestartAvailable, isPrimitiveRestartAvailable
Methods inherited from class com.openinventor.inventor.nodes.SoNode
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderEngineMode, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, write
Methods inherited from class com.openinventor.inventor.fields.SoFieldContainer
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
Methods inherited from class com.openinventor.inventor.misc.SoBase
dispose, getName, isDisposable, isSynchronizable, setName, setSynchronizable
Methods inherited from class com.openinventor.inventor.Inventor
getNativeResourceHandle
-
Field Details
-
numVertices
Number of vertices per polyline.
-
-
Constructor Details
-
SoLineSet
public SoLineSet()Creates a line set node with default settings.
-