Extension of PointSet that draws a small bitmap (symbol) at each 3D location. More...
#include <Inventor/nodes/SoMarkerSet.h>
Public Member Functions | |
virtual SoType | getTypeId () const |
Returns the type identifier for this specific instance. | |
SoMarkerSet () | |
Constructor. | |
Public Member Functions inherited from SoPointSet | |
SoPointSet () | |
Creates a point set node with default settings. | |
Public Member Functions inherited from SoVertexShape | |
SoNormalCache * | getNormalCache () const |
Returns the current normal cache, or NULL if there is none. | |
SoTangentCache * | getTangentCache () const |
Returns the current tangent cache, or NULL if there is none. | |
Public Member Functions inherited from SoShape | |
virtual SbBool | affectsState () const |
Overrides default method on SoNode. | |
ShapeType | getShapeType () |
Gets the current shape Full Scene Antialiasing type. | |
Public Member Functions inherited from SoNode | |
virtual void | setOverride (const SbBool state) |
Turns the override flag on or off. | |
virtual SbBool | isOverride () const |
Returns the state of the override flag. | |
virtual SoNode * | copy (SbBool copyConnections=FALSE) const |
Creates and returns an exact copy of the node. | |
virtual void | touch () |
Marks an instance as modified, simulating a change to it. | |
Public Member Functions inherited from SoFieldContainer | |
void | setToDefaults () |
Sets all fields in this object to their default values. | |
SbBool | hasDefaultValues () const |
Returns TRUE if all of the object's fields have their default values. | |
SbBool | fieldsAreEqual (const SoFieldContainer *fc) const |
Returns TRUE if this object's fields are exactly equal to fc's fields. | |
void | copyFieldValues (const SoFieldContainer *fc, SbBool copyConnections=FALSE) |
Copies the contents of fc's fields into this object's fields. | |
SoNONUNICODE SbBool | set (const char *fieldDataString) |
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
SbBool | set (const SbString &fieldDataString) |
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
void | get (SbString &fieldDataString) |
Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
virtual int | getFields (SoFieldList &list) const |
Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
virtual int | getAllFields (SoFieldList &list) const |
Returns a list of fields, including the eventIn's and eventOut's. | |
virtual SoField * | getField (const SbName &fieldName) const |
Returns a the field of this object whose name is fieldName. | |
virtual SoField * | getEventIn (const SbName &fieldName) const |
Returns a the eventIn with the given name. | |
virtual SoField * | getEventOut (const SbName &fieldName) const |
Returns the eventOut with the given name. | |
SbBool | getFieldName (const SoField *field, SbName &fieldName) const |
Returns the name of the given field in the fieldName argument. | |
SbBool | enableNotify (SbBool flag) |
Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE). | |
SbBool | isNotifyEnabled () const |
Notification is the process of telling interested objects that this object has changed. | |
virtual void | setUserData (void *data) |
Sets application data. | |
void * | getUserData (void) const |
Gets user application data. | |
Public Member Functions inherited from SoBase | |
virtual SbName | getName () const |
Returns the name of an instance. | |
virtual void | setName (const SbName &name) |
Sets the name of an instance. | |
void | setSynchronizable (const bool b) |
Sets this to be a ScaleViz synchronizable object. | |
bool | isSynchronizable () const |
Gets the ScaleViz synchronizable state of this object. | |
Public Member Functions inherited from SoRefCounter | |
void | ref () const |
Adds a reference to an instance. | |
void | unref () const |
Removes a reference from an instance. | |
void | unrefNoDelete () const |
unrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero. | |
int | getRefCount () const |
Returns current reference count. | |
void | lock () const |
lock this instance. | |
void | unlock () const |
unlock this instance. | |
Public Member Functions inherited from SoTypedObject | |
SbBool | isOfType (const SoType &type) const |
Returns TRUE if this object is of the type specified in type or is derived from that type. | |
template<typename TypedObjectClass > | |
SbBool | isOfType () const |
Returns TRUE if this object is of the type of class TypedObjectClass or is derived from that class. | |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static int | getNumDefinedMarkers () |
Return the number of defined markers. | |
static void | addMarker (int markerIndex, const SbVec2s &size, const unsigned char *bytes, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE) |
Add a new marker with index markerIndex . | |
static void | addMarker (int markerIndex, const SbVec2s &size, const unsigned char *bytes, const uint32_t *orderedRGBA, SbBool isLSBFirst=TRUE, SbBool isUpToDown=TRUE) |
Add a new colored marker with index markerIndex . | |
static void | addMarker (int markerIndex, SoMarker *marker) |
Add a new marker with index markerIndex using an existing marker definition. | |
static SbBool | getMarker (int markerIndex, SbVec2s &size, const unsigned char *&bytes, SbBool &isLSBFirst) |
Retrieve the description of the marker with index markerIndex . | |
static SbBool | getMarker (int markerIndex, SbVec2s &size, const unsigned char *&bytes, const uint32_t *&orderedRGBA, SbBool &isLSBFirst) |
Retrieve the description of the colored marker with index markerIndex . | |
static SoMarker * | getMarker (int markerIndex) |
Retrieve the definition of the marker with index markerIndex . | |
static SbBool | removeMarker (int markerIndex) |
Remove the marker with index markerIndex . | |
Static Public Member Functions inherited from SoPointSet | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Static Public Member Functions inherited from SoNonIndexedShape | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Static Public Member Functions inherited from SoVertexShape | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Static Public Member Functions inherited from SoShape | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static SbBool | isPrimitiveRestartAvailable (SoState *state=NULL) |
Returns TRUE if the primitive restart feature is available. | |
Static Public Member Functions inherited from SoNode | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static SoNode * | getByName (const SbName &name) |
A node's name can be set using SoBase::setName(). | |
static int | getByName (const SbName &name, SoNodeList &list) |
A node's name can be set using SoBase::setName(). | |
Static Public Member Functions inherited from SoFieldContainer | |
static SoType | getClassTypeId () |
Returns the type of this class. | |
Static Public Member Functions inherited from SoBase | |
static SoType | getClassTypeId () |
Returns type identifier for this class. | |
Static Public Member Functions inherited from SoTypedObject | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Public Attributes | |
SoMFInt32 | markerIndex |
Specifies the marker index (type of marker) for each marker. | |
SoMFFloat | markerScale |
Specifies the scale factor applied to each marker. | |
SoSFFloat | markerGlobalScale |
Specifies a global scale factor applied to all markers. | |
Public Attributes inherited from SoPointSet | |
SoSFInt32 | numPoints |
Number of points. | |
Public Attributes inherited from SoNonIndexedShape | |
SoSFInt32 | startIndex |
Index of first coordinate of shape. | |
Public Attributes inherited from SoVertexShape | |
SoSFNode | vertexProperty |
vertex property node. | |
Public Attributes inherited from SoShape | |
SoSFBool | boundingBoxIgnoring |
Whether to ignore this node during bounding box traversal. | |
Extension of PointSet that draws a small bitmap (symbol) at each 3D location.
This class draws a marker (small image) at each of a set of points located at the coordinates specified by the vertexProperty field (from SoVertexShape) or the current inherited 3D coordinates. For best performance, the vertexProperty field is recommended. SoMarkerSet uses the coordinates in order, starting with the coordinate at startIndex. The number of coordinates to use (the number of markers in the set) is specified by the numPoints field. The default value of this field is -1, which means to use all the coordinates, so it may not be necessary to explicitly set this field.
You specify the marker to be drawn at each point using the field markerIndex, which indexes into the global list of marker definitions. There is a set of pre-defined markers already in the global list. You can add your own marker definitions to this list using the addMarker functions. Marker definitions in the global list can be used by any SoMarkerSet or SoIndexedMarkerSet node. You can specify fewer index values than the number of markers to be drawn (the number of coordinates). In this case the node will cycle through the provided index values as many times as necessary. If all the markers in the set will use the same definition it is only necessary to set the first value in markerIndex.
You can specify a scale factor (> 0) for each marker using the field markerScale. You can specify fewer scale values than the number of markers to be drawn, but in this case the "missing" values are assumed to be 1. You can also specify a scale factor to be applied to every marker in the set using the field markerGlobalScale. This scale factor is applied in addition to the individual scale factor (if any).
A marker is an image defined by a bitmap and optional color values. If no color values are given then image pixels corresponding to "1" bits are drawn using the current material color (see SoMaterial) and pixels corresponding to "0" bits are not drawn (whatever is behind the marker shows through). If color values are given then each pixel in the image is assigned an RGBA value.
The coordinates of the markers are transformed by the current cumulative transformation.
Lighting is not applied to points (i.e., they are rendered with light model BASE_COLOR) unless the application explicitly sets normal vectors using SoVertexProperty or SoNormal.
Automatic simplification (by skipping points) is controlled by the SoComplexity field value. Only values < 0.5 have any effect.
Note that custom markers defined with addMarker are not automatically saved in the Open Inventor file when an SoWriteAction is applied to the scene graph (and therefore are not defined if the scene graph is reloaded). To save marker definitions in an Open Inventor file use the SoMarker node.
Limitations:
Shape Antialiasing type is SoShape::POINTS.
Note that SoMarkerSet does not cast a shadow (SoShadowGroup).
The following markers are defined by default:
markerIndex | 0 |
markerScale | 1 |
markerGlobalScale | 1 |
vertexProperty | NULL |
startIndex | 0 |
numPoints | -1 |
SoGetPrimitiveCountAction
Increments the image count by 1 for each marker in the marker set.
SoCoordinate3, SoFullSceneAntialiasing, SoIndexedMarkerSet, SoMarker, SoPointSet, SoVertexProperty
Definition at line 144 of file SoMarkerSet.h.
Marker type.
Definition at line 207 of file SoMarkerSet.h.
SoMarkerSet::SoMarkerSet | ( | ) |
Constructor.
|
static |
Add a new colored marker with index markerIndex .
If the marker exists, it is replaced. size is the size of the marker in pixels. bytes is the marker bitmap. orderedRGBA is an array of per-pixel color values to apply to the marker. The bitmap is arranged row by row from left to right and top to bottom (according to the parameter isUpToDown ). Each byte in the bitmap corresponds to eight pixels. Each value in orderedRGBA corresponds to one pixel. Open Inventor makes a copy of the bitmap and color values.
isLSBFirst : If TRUE, bits are ordered within a byte from least significant to most significant; otherwise the first bit in each byte is the most significant one. 8 isUpToDown : If TRUE, marker bitmap and color array are described from top to bottom (bytes[0] is the left top corner of the bitmap), otherwise from bottom to top (bytes[0] is the bottom left corner).
|
static |
Add a new marker with index markerIndex .
If the marker exists, it is replaced. size is the size of the marker in pixels. bytes is the marker bitmap. The bitmap is arranged row by row from left to right and top to bottom (according to the parameter isUpToDown ). Each byte in the bitmap corresponds to eight pixels. Open Inventor makes a copy of the bitmap.
isLSBFirst : If TRUE, bits are ordered within a byte from least significant to most significant; otherwise the first bit in each byte is the most significant one.
isUpToDown : If TRUE, marker bitmap is described from top to bottom (bytes[0] is the left top corner of the bitmap), otherwise from bottom to top (bytes[0] is the bottom left corner).
|
static |
Add a new marker with index markerIndex using an existing marker definition.
If the marker exists, it is replaced.
|
static |
Returns the type identifier for this class.
|
static |
Retrieve the definition of the marker with index markerIndex .
Returns NULL if the marker does not exist.
|
static |
Retrieve the description of the colored marker with index markerIndex .
Returns TRUE if the marker exists, otherwise returns FALSE and the parameters are not modified. If the marker does not have color values, orderedRGBA will point to a single uint32_t containing the value zero.
|
static |
Retrieve the description of the marker with index markerIndex .
Returns TRUE if the marker exists, otherwise returns FALSE and the parameters are not modified.
|
static |
Return the number of defined markers.
|
virtual |
Returns the type identifier for this specific instance.
Reimplemented from SoPointSet.
|
static |
Remove the marker with index markerIndex .
Returns TRUE if the marker was successfully removed, FALSE otherwise.
SoSFFloat SoMarkerSet::markerGlobalScale |
Specifies a global scale factor applied to all markers.
Default is 1. This scale factor is applied in addition to the individual scale factors (if any) specified in the markerScale field.
Supported only when using shader implementation (this is the default).
NOTE: field available since Open Inventor 9.3
Definition at line 199 of file SoMarkerSet.h.
SoMFInt32 SoMarkerSet::markerIndex |
Specifies the marker index (type of marker) for each marker.
Default is 0. Predefined markers are in enum MarkerType. You can specify fewer index values than the number of markers to be drawn (the number of coordinates). In this case the node will cycle through the provided index values as many times as necessary. For example, if all the markers in the set will use the same definition it is only necessary to set the first value in markerIndex.
Note: This is an integer valued field. When writing an application you can use enum values to set the field. However in a .iv file you can only use integer values.
For example, you cannot write:
You must write:
Definition at line 174 of file SoMarkerSet.h.
SoMFFloat SoMarkerSet::markerScale |
Specifies the scale factor applied to each marker.
Default is 1.
You can specify fewer scale values than the number of markers to be drawn. In this case the "missing" values are looped from the first scale value each necessary time. You can also specify a scale factor to be applied to every marker in the set using the field markerGlobalScale.
Supported only when using shader implementation (this is the default).
NOTE: field available since Open Inventor 9.3
Definition at line 188 of file SoMarkerSet.h.