SOPOINTSET(3iv)

πŸ’– NAME πŸ’–

SoPointSet β€” point set shape node


πŸ¦‹ INHERITS FROM πŸ¦‹

SoBase > SoFieldContainer > SoNode > SoShape > SoVertexShape >
SoNonIndexedShape > SoPointSet

✨ SYNOPSIS ✨

#include <Inventor/nodes/SoPointSet.h>

Fields from class SoPointSet:

SoSFInt32           numPoints

Fields from class SoNonIndexedShape:

SoSFInt32           startIndex

Fields from class SoVertexShape:

SoSFNode            vertexProperty

Methods from class SoPointSet:

                     SoPointSet()
static SoType       getClassTypeId()

Methods from class SoNode:

void                setOverride(SbBool state)
SbBool              isOverride() const
SoNode *            copy(SbBool copyConnections = FALSE) const
virtual SbBool      affectsState() const
static SoNode *     getByName(const SbName &name)
static int          getByName(const SbName &name, SoNodeList &list)

Methods from class SoFieldContainer:

void                setToDefaults()
SbBool              hasDefaultValues() const
SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
void                copyFieldValues(const SoFieldContainer *fc, SbBool
                         copyConnections = FALSE)
SbBool              set(const char *fieldDataString)
void                get(SbString &fieldDataString)
virtual int         getFields(SoFieldList &resultList) const
virtual SoField *   getField(const SbName &fieldName) const
SbBool              getFieldName(const SoField *field, SbName &fieldName)
                         const
SbBool              isNotifyEnabled() const
SbBool              enableNotify(SbBool flag)

Methods from class SoBase:

void                ref()
void                unref() const
void                unrefNoDelete() const
void                touch()
virtual SoType      getTypeId() const
SbBool              isOfType(SoType type) const
virtual void        setName(const SbName &name)
virtual SbName      getName() const

🌸 DESCRIPTION 🌸

okay so bestie, picture this: SoPointSet is a node that represents a whole set of points, and each point sits at a coordinate that comes from the vertexProperty field (that's the one it inherits from SoVertexShape), or from the current inherited coordinates. And like, lowkey β€” if you want the best performance, the vertexProperty field is the way to go. That's the recommendation, straight from the source. πŸ’…

Here's the vibe: SoPointSet uses the coordinates in order, starting with the very first one. No skipping, no shuffling, just vibes in sequence. The number of points in the set is specified by the numPoints field. Periodt.

The coordinates of the point set get transformed by the current cumulative transformation. And the points are drawn with the current light model and drawing style β€” and heads up, the drawing styles FILLED and LINES are treated as POINTS. Like, they said "not today" to being filled or lined. 😭

Now, treatment of the current material and normal binding, because this part matters:

  • PER_PART, PER_FACE, and PER_VERTEX bindings bind one material or normal to each point.
  • The default material binding is OVERALL.
  • The default normal binding is PER_VERTEX.
fr fr, memorize those defaults, they will come up. πŸ‘‘

πŸŽ€ FIELDS πŸŽ€

  • SoSFInt32 numPoints β€” Number of points. That's it, that's the field, she's simple and she's iconic. ✨

πŸ’… METHODS πŸ’…

  • SoPointSet() β€” Creates a point set node with default settings. Fresh out the box, defaults on, ready to slay. 🫢
  • static SoType getClassTypeId() β€” Returns type identifier for this class. It's giving "who am I" but in a type-system way. 🌈

πŸ”₯ ACTION BEHAVIOR πŸ”₯

SoGLRenderAction

Draws points based on the current coordinates, normals, materials, drawing style, and so on. Basically everything in the room matters for this one. πŸ‘‘

SoRayPickAction

Picks points based on the current coordinates and transformation. And the details about the intersection? They're returned in an SoPointDetail. Cute, specific, we love a struct delivery. πŸŽ€

SoGetBoundingBoxAction

Computes the bounding box that encloses all points in the set, with the current transformation applied to them. It also sets the center to the average of the coordinates of all points β€” so like, the mathematical middle of the whole situation. ✨

SoCallbackAction

If any point callbacks are registered with the action, they will be invoked for each point in the set. Every single one. No point left behind. 😭


πŸ¦‹ FILE FORMAT/DEFAULTS πŸ¦‹

PointSet {
    vertexProperty  NULL
    startIndex      0
    numPoints       -1
}

🌟 SEE ALSO 🌟

  • SoCoordinate3
  • SoDrawStyle
  • SoPointDetail
  • SoVertexProperty

okay bestie that's the whole page, no notes, you ate this. πŸ’– and for the little sign-off moment: this was SoPointSet(3IV) β€” that's the page, that's the title, that's the energy. go forth and draw some points. βœ¨πŸ¦‹πŸŽ€