SoPointSet(3)

πŸ“¦ version 3.1.3, in fedora 43, fedora 44

πŸ’– SoPointSet(3) β€” Library Functions Manual πŸ’–

okay so welcome to the SoPointSet(3) page, bestie. This is the Library Functions Manual, and we're about to get into the point-set of it all. This is part 1 of 3, so buckle up. ✨


🌸 NAME 🌸

SoPointSet β€” The SoPointSet class is used to display a set of 3D points.


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <Inventor/nodes/SoPointSet.h>

Inherits SoNonIndexedShape.

Inherited by SoMarkerSet.


✨ Public Member Functions ✨

  • virtual SoType getTypeId (void) const β€” type-id getter, slay.
  • SoPointSet (void) β€” constructor, periodt.
  • virtual void GLRender (SoGLRenderAction *action) β€” GL render, iconic.
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” bounding box grab.
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) β€” primitive count, fr fr.

πŸ’« Public Member Functions inherited from SoVertexShape πŸ’«

  • virtual void notify (SoNotList *nl) β€” notify, no cap.
  • virtual void write (SoWriteAction *action) β€” write it out.

πŸ’« Public Member Functions inherited from SoShape πŸ’«

  • virtual SbBool affectsState (void) const β€” state check.
  • virtual void rayPick (SoRayPickAction *action) β€” ray pick.
  • virtual void callback (SoCallbackAction *action) β€” callback.
  • const SoBoundingBoxCache * getBoundingBoxCache (void) const β€” bbox cache getter.

πŸ’« Public Member Functions inherited from SoNode πŸ’«

  • void setOverride (const SbBool state) β€” set override.
  • SbBool isOverride (void) const β€” is it override?
  • void setNodeType (const NodeType type) β€” set node type.
  • NodeType getNodeType (void) const β€” get node type.
  • virtual SoNode * copy (SbBool copyconnections=FALSE) const β€” copy, with default FALSE.
  • virtual void doAction (SoAction *action) β€” do action.
  • virtual void GLRenderBelowPath (SoGLRenderAction *action) β€” GL render below path.
  • virtual void GLRenderInPath (SoGLRenderAction *action) β€” GL render in path.
  • virtual void GLRenderOffPath (SoGLRenderAction *action) β€” GL render off path.
  • virtual void getMatrix (SoGetMatrixAction *action) β€” get matrix.
  • virtual void handleEvent (SoHandleEventAction *action) β€” handle event.
  • virtual void pick (SoPickAction *action) β€” pick.
  • virtual void search (SoSearchAction *action) β€” search.
  • virtual void audioRender (SoAudioRenderAction *action) β€” audio render.
  • virtual void grabEventsSetup (void) β€” grab events setup.
  • virtual void grabEventsCleanup (void) β€” grab events cleanup.
  • virtual void startNotify (void) β€” start notify.
  • uint32_t getNodeId (void) const β€” node id getter.
  • virtual SoChildList * getChildren (void) const β€” get children.
  • virtual void writeInstance (SoOutput *out) β€” write instance.
  • virtual SoNode * addToCopyDict (void) const β€” add to copy dict.
  • virtual void copyContents (const SoFieldContainer *from, SbBool copyconnections) β€” copy contents.
  • virtual SoFieldContainer * copyThroughConnection (void) const β€” copy through connection.

πŸ’« Public Member Functions inherited from SoFieldContainer πŸ’«

  • void setToDefaults (void) β€” set to defaults.
  • SbBool hasDefaultValues (void) const β€” has default values?
  • SbBool fieldsAreEqual (const SoFieldContainer *container) const β€” fields equal?
  • void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE) β€” copy field values, default FALSE.
  • SbBool set (const char *const fielddata) β€” set from field data.
  • void get (SbString &fielddata) β€” get field data.
  • virtual int getFields (SoFieldList &l) const β€” get fields.
  • virtual int getAllFields (SoFieldList &l) const β€” get all fields.
  • virtual SoField * getField (const SbName &name) const β€” get field by name.
  • virtual SoField * getEventIn (const SbName &name) const β€” get event in.
  • virtual SoField * getEventOut (const SbName &name) const β€” get event out.
  • SbBool getFieldName (const SoField *const field, SbName &name) const β€” get field name.
  • SbBool enableNotify (const SbBool flag) β€” enable notify.
  • SbBool isNotifyEnabled (void) const β€” notify enabled?
  • SbBool set (const char *fielddata, SoInput *input) β€” set with input.
  • void get (SbString &fielddata, SoOutput *out) β€” get with output.
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval) β€” validate new field value.
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE) β€” add write reference, default FALSE.
  • SbBool getIsBuiltIn (void) const β€” built-in check.
  • virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) const β€” memory size getter.
  • void setUserData (void *userdata) const β€” set user data.
  • void * getUserData (void) const β€” get user data.

πŸ’« Public Member Functions inherited from SoBase πŸ’«

  • void ref (void) const β€” ref it.
  • void unref (void) const β€” unref it.
  • void unrefNoDelete (void) const β€” unref without delete.
  • int32_t getRefCount (void) const β€” ref count getter.
  • void touch (void) β€” touch.
  • SbBool isOfType (SoType type) const β€” type check.
  • virtual SbName getName (void) const β€” get name.
  • virtual void setName (const SbName &newname) β€” set name.
  • void addAuditor (void *const auditor, const SoNotRec::Type type) β€” add auditor.
  • void removeAuditor (void *const auditor, const SoNotRec::Type type) β€” remove auditor.
  • const SoAuditorList & getAuditors (void) const β€” get auditors.
  • SbBool shouldWrite (void) β€” should write?
  • void assertAlive (void) const β€” assert alive.

✨ Static Public Member Functions ✨

  • static SoType getClassTypeId (void) β€” class type id.
  • static void initClass (void) β€” init class.

πŸ’« Static Public Member Functions inherited from SoNonIndexedShape πŸ’«

  • static SoType getClassTypeId (void) β€” class type id.
  • static void initClass (void) β€” init class.

πŸ’« Static Public Member Functions inherited from SoVertexShape πŸ’«

  • static SoType getClassTypeId (void) β€” class type id.
  • static void initClass (void) β€” init class.

πŸ’« Static Public Member Functions inherited from SoShape πŸ’«

  • static SoType getClassTypeId (void) β€” class type id.
  • static void initClass (void) β€” init class.
  • static void getScreenSize (SoState *const state, const SbBox3f &boundingbox, SbVec2s &rectsize) β€” get screen size.
  • static float getDecimatedComplexity (SoState *state, float complexity) β€” get decimated complexity.

πŸ’« Static Public Member Functions inherited from SoNode πŸ’«

  • static uint32_t getCompatibilityTypes (const SoType &nodetype) β€” compatibility types.
  • static SoType getClassTypeId (void) β€” class type id.
  • static SoNode * getByName (const SbName &name) β€” get by name.
  • static int getByName (const SbName &name, SoNodeList &l) β€” get by name into list.
  • static void initClass (void) β€” init class.
  • static void initClasses (void) β€” init classes.
  • static uint32_t getNextNodeId (void) β€” next node id.
  • static int getActionMethodIndex (const SoType type) β€” action method index.
  • static void getBoundingBoxS (SoAction *action, SoNode *node) β€” bounding box S.
  • static void GLRenderS (SoAction *action, SoNode *node) β€” GL render S.
  • static void callbackS (SoAction *action, SoNode *node) β€” callback S.
  • static void getMatrixS (SoAction *action, SoNode *node) β€” get matrix S.
  • static void handleEventS (SoAction *action, SoNode *node) β€” handle event S.
  • static void pickS (SoAction *action, SoNode *node) β€” pick S.
  • static void rayPickS (SoAction *action, SoNode *node) β€” ray pick S.
  • static void searchS (SoAction *action, SoNode *node) β€” search S.
  • static void writeS (SoAction *action, SoNode *node) β€” write S.
  • static void audioRenderS (SoAction *action, SoNode *node) β€” audio render S.
  • static void getPrimitiveCountS (SoAction *action, SoNode *node) β€” primitive count S.

πŸ’« Static Public Member Functions inherited from SoFieldContainer πŸ’«

  • static void initClass (void) β€” init class.
  • static SoType getClassTypeId (void) β€” class type id.
  • static void cleanupClass (void) β€” cleanup class.
  • static void initCopyDict (void) β€” init copy dict.
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” add copy.
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” check copy.
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” find copy.
  • static void copyDone (void) β€” copy done.

πŸ’« Static Public Member Functions inherited from SoBase πŸ’«

  • static void initClass (void) β€” init class.
  • static SoType getClassTypeId (void) β€” class type id.
  • static void addName (SoBase *const base, const char *const name) β€” add name.
  • static void removeName (SoBase *const base, const char *const name) β€” remove name.
  • static void incrementCurrentWriteCounter (void) β€” increment write counter.
  • static void decrementCurrentWriteCounter (void) β€” decrement write counter.
  • static SoBase * getNamedBase (const SbName &name, SoType type) β€” get named base.
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” get named bases.
  • static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype) β€” read.
  • static void setInstancePrefix (const SbString &c) β€” set instance prefix.
  • static void setTraceRefs (SbBool trace) β€” set trace refs.
  • static SbBool getTraceRefs (void) β€” get trace refs.
  • static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname) β€” connect route.
  • static SbBool readRoute (SoInput *input) β€” read route.

✨ Public Attributes ✨

  • SoSFInt32 numPoints β€” the number of points, bestie.

πŸ’« Public Attributes inherited from SoNonIndexedShape πŸ’«

  • SoSFInt32 startIndex β€” start index.

πŸ’« Public Attributes inherited from SoVertexShape πŸ’«

  • SoSFNode vertexProperty β€” vertex property.

✨ Protected Member Functions ✨

  • virtual const SoFieldData * getFieldData (void) const β€” get field data.
  • virtual ~SoPointSet () β€” destructor, bye bestie.
  • virtual void generatePrimitives (SoAction *action) β€” generate primitives.
  • virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f &center) β€” compute bbox.
  • virtual SbBool generateDefaultNormals (SoState *, SoNormalCache *nc) β€” generate default normals.
  • virtual SbBool generateDefaultNormals (SoState *state, SoNormalBundle *bundle) β€” generate default normals with bundle.

πŸ’« Protected Member Functions inherited from SoNonIndexedShape πŸ’«

  • SoNonIndexedShape (void) β€” constructor.
  • virtual ~SoNonIndexedShape () β€” destructor.
  • void computeCoordBBox (SoAction *action, int numVertices, SbBox3f &box, SbVec3f &center) β€” compute coord bbox.
  • void fixNumVerticesPointers (SoState *state, const int32_t *&start, const int32_t *&end, int32_t *dummyarray) const β€” fix num vertices pointers.

πŸ’« Protected Member Functions inherited from SoVertexShape πŸ’«

  • SoVertexShape (void) β€” constructor.
  • virtual ~SoVertexShape () β€” destructor.
  • virtual SbBool shouldGLRender (SoGLRenderAction *action) β€” should GL render?
  • void setNormalCache (SoState *const state, const int num, const SbVec3f *normals) β€” set normal cache.
  • SoNormalCache * getNormalCache (void) const β€” get normal cache.
  • SoNormalCache * generateAndReadLockNormalCache (SoState *const state) β€” generate and read lock normal cache.
  • void getVertexData (SoState *state, const SoCoordinateElement *&coords, const SbVec3f *&normals, const SbBool neednormals) β€” get vertex data.
  • void readLockNormalCache (void) β€” read lock normal cache.
  • void readUnlockNormalCache (void) β€” read unlock normal cache.

part 2 is coming, don't move. πŸ’…

πŸ’œ Protected Member Functions inherited from SoShape

okay so everything in this whole block is protected β€” that means it's for the class's own family only, iykyk, not for you to poke at from outside 🫢. SoPointSet just gets all of these handed down from SoShape like vintage jewelry from your cool aunt. The original page doesn't write a blurb for any of them, so I'm giving you the full cast list, no skips, no cuts ✨:

  • SoShape (void) β€” the base constructor doing its base constructor moment πŸ’…
  • virtual ~SoShape () β€” the base destructor, also virtual, also iconic
  • float getComplexityValue (SoAction *action) β€” the name's giving "complexity value, but fetched", and that's all I'm legally allowed to say 😭
  • void beginSolidShape (SoGLRenderAction *action) β€” opens up a solid-shape situation
  • void endSolidShape (SoGLRenderAction *action) β€” and closes it back up, periodt
  • void GLRenderBoundingBox (SoGLRenderAction *action) β€” bounding box rendering, GL edition πŸ”₯
  • SbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action) β€” a lil yes/no on whether to count primitives
  • SbBool shouldRayPick (SoRayPickAction *const action) β€” and a lil yes/no on whether to bother ray picking
  • void computeObjectSpaceRay (SoRayPickAction *const action) β€” computes the object-space ray
  • void computeObjectSpaceRay (SoRayPickAction *const action, const SbMatrix &matrix) β€” same energy, but with a matrix passed in πŸ’«
  • virtual SoDetail * createTriangleDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3, SoPickedPoint *pp) β€” builds a SoDetail for a triangle hit
  • virtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp) β€” same, but for a line segment
  • virtual SoDetail * createPointDetail (SoRayPickAction *action, const SoPrimitiveVertex *v, SoPickedPoint *pp) β€” and same again for a single point (hi, that's literally our whole thing here πŸŽ€)
  • void invokeTriangleCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3) β€” fires off the triangle callbacks
  • void invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2) β€” fires off the line-segment callbacks
  • void invokePointCallbacks (SoAction *const action, const SoPrimitiveVertex *const v) β€” fires off the point callbacks ⭐
  • void beginShape (SoAction *const action, const TriangleShape shapetype, SoDetail *const detail=NULL) β€” opens a shape, note the detail defaults to NULL ✨
  • void shapeVertex (const SoPrimitiveVertex *const v) β€” feeds one vertex to the shape
  • void endShape (void) β€” closes the shape, slay
  • void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal) β€” generates a vertex, with an s/t texture coord situation
  • void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const float r, const SbVec3f &normal) β€” the overloaded twin, and this one brings an extra r along for the ride πŸ¦‹
  • SbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex) β€” kicks off a vertex array
  • void finishVertexArray (SoGLRenderAction *action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex) β€” and wraps that vertex array right back up

πŸ¦‹ Protected Member Functions inherited from SoNode

  • SoNode (void) β€” base constructor, protected, as always πŸ’œ
  • virtual ~SoNode () β€” virtual destructor, protected, classic
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” reads an instance off the input, note that flags is an unsigned short

🌸 Protected Member Functions inherited from SoFieldContainer

  • SoFieldContainer (void) β€” constructor
  • virtual ~SoFieldContainer () β€” virtual destructor

🌈 Protected Member Functions inherited from SoBase

  • SoBase (void) β€” constructor
  • virtual ~SoBase () β€” virtual destructor
  • virtual void destroy (void) β€” the destroyer, virtual πŸ’€
  • SbBool hasMultipleWriteRefs (void) const β€” a const little yes/no about multiple write refs
  • SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) const β€” writes a header, const, takes an SoOutput *out plus isgroup and isengine flags
  • void writeFooter (SoOutput *out) const β€” writes the footer, also const
  • virtual const char * getFileFormatName (void) const β€” hands you the file format name as a const char *, and it's virtual and const because it contains multitudes ✨

πŸ’… Static Protected Member Functions

  • static const SoFieldData ** getFieldDataPtr (void) β€” the static field-data pointer getter 🫢

πŸŽ€ Static Protected Member Functions inherited from SoNonIndexedShape

  • static const SoFieldData ** getFieldDataPtr (void) β€” same function, same signature, inherited down the line

πŸŽ€ Static Protected Member Functions inherited from SoVertexShape

  • static const SoFieldData ** getFieldDataPtr (void) β€” yeah bestie, it's that one again

πŸŽ€ Static Protected Member Functions inherited from SoShape

  • static const SoFieldData ** getFieldDataPtr (void) β€” still the same one, we're just naming every ancestor it came from, no cap

πŸŽ€ Static Protected Member Functions inherited from SoNode

  • static const SoFieldData ** getFieldDataPtr (void) β€” the field-data getter, yet again πŸ’«
  • static void setNextActionMethodIndex (int index) β€” sets the next action method index to index
  • static int getNextActionMethodIndex (void) β€” reads back that next action method index
  • static void incNextActionMethodIndex (void) β€” increments it
  • static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask) β€” sets compatibility types from an SoType and a uint32_t bitmask

πŸŽ€ Static Protected Member Functions inherited from SoBase

  • static uint32_t getCurrentWriteCounter (void) β€” hands you the current write counter as a uint32_t
  • static void staticDataLock (void) β€” locks the static data πŸ”’
  • static void staticDataUnlock (void) β€” unlocks the static data πŸ”“

πŸ‘‘ Additional Inherited Members

Public Types inherited from SoShape:

enum TriangleShape { TRIANGLE_STRIP, TRIANGLE_FAN, TRIANGLES, POLYGON, QUADS, QUAD_STRIP, POINTS, LINES, LINE_STRIP }

Public Types inherited from SoNode:

enum NodeType { INVENTOR = 0x0000, VRML1 = 0x0001, VRML2 = 0x0002, INVENTOR_1 = 0x0004, INVENTOR_2_0 = 0x0008, INVENTOR_2_1 = 0x0010, INVENTOR_2_5 = 0x0020, INVENTOR_2_6 = 0x0040, COIN_1_0 = 0x0080, COIN_2_0 = 0x0100, EXTENSION = 0x0200, COIN_2_2 = 0x0400, COIN_2_3 = 0x0800, COIN_2_4 = 0x1000, INVENTOR_5_0 = 0x2000, COIN_2_5 = 0x4000, COIN_3_0 = 0x8000, INVENTOR_6_0 = 0x10000 }

Protected Types inherited from SoBase:

enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }

Protected Attributes inherited from SoNode:

  • uint32_t uniqueId

Protected Attributes inherited from SoFieldContainer:

  • SbBool isBuiltIn

Static Protected Attributes inherited from SoNode:

  • static uint32_t nextUniqueId = 1
  • static int nextActionMethodIndex = 0

✨ Detailed Description ✨

So SoPointSet is the class you use to display a set of 3D points. That's the whole assignment. It's giving dot plot, it's giving starfield, it's giving "I just want some points in space, bestie" πŸ’–

This node either uses the coordinates currently on the state β€” typically set up by a leading SoCoordinate3 node in the scenegraph β€” or it pulls them from a SoVertexProperty node attached to this node β€” and it uses whichever of those to render a set of 3D points. Two doors, same points πŸšͺ✨

The SoPointSet::numPoints field is the one that says how many points from the coordinate set should actually be rendered (or otherwise handled by traversal actions). So it's the "how many of y'all are coming" field πŸ‘‘

Here's a simple usage example of SoPointSet in a scenegraph, literally copied, don't touch it:

#Inventor V2.1 ascii

Separator {
   Material {
      diffuseColor [
       1 0 0, 0 1 0, 0 0 1, 1 1 0, 1 0 1, 1 1 1, 1 0.8 0.6, 0.6 0.8 1
      ]
   }
   MaterialBinding { value PER_PART }

   Coordinate3 {
      point [
       -1 1 0, -1 -1 0, 1 -1 0, 1 1 0, 0 2 -1, -2 0 -1, 0 -2 -1, 2 0 -1
      ]
   }

   DrawStyle { pointSize 3 }

   PointSet { }
}

FILE FORMAT/DEFAULTS:

PointSet {
    vertexProperty NULL
    startIndex 0
    numPoints -1
}

🌟 Constructor & Destructor Documentation 🌟

SoPointSet::SoPointSet (void )

Constructor. That's it, that's the whole sentence, and honestly? Respect 🫑

SoPointSet::~SoPointSet () [protected], [virtual]

Destructor. Note the [protected] and [virtual] β€” so it's family-only and it's virtual, as destructors in this bloodline tend to be πŸ’…

πŸ’… Member Function Documentation πŸ’…


✨ SoType SoPointSet::getTypeId (void ) const [virtual] ✨

Okay bestie, this one hands you the type identification of any object that descends from SoBase. It's literally the whole reason run-time type checking and "downward" casting are even possible. πŸ‘‘

Usage example, no cap:

void foo(SoNode * node)
{
  if (node->getTypeId() == SoFile::getClassTypeId()) {
    SoFile * filenode = (SoFile *)node;  // safe downward cast, knows the type
  }
}

Now listen, if you're an application programmer wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. That's not a vibe check you can skip, fr fr. Usually you do it as part of setting up the full type system for extension classes, and that's typically accomplished by using the pre-defined macros available through for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on. ✨

Want more tea on writing Coin extensions? See the class documentation of the toplevel superclasses for the various class groups. 🫢

  • Reimplemented from SoNonIndexedShape.
  • Reimplemented in SoMarkerSet.

🌸 const SoFieldData * SoPointSet::getFieldData (void ) const [protected], [virtual] 🌸

Gives you back a pointer to the class-wide field data storage object for this instance. And if there are literally no fields present? It returns NULL. That's it, that's the whole function. πŸ’€

  • Reimplemented from SoNonIndexedShape.
  • Reimplemented in SoMarkerSet.

πŸ”₯ void SoPointSet::GLRender (SoGLRenderAction * action) [virtual] πŸ”₯

This is the action method for the SoGLRenderAction, bestie.

It gets called during rendering traversals. Any node that influences the rendering state in any way, or who wants to throw geometry primitives at OpenGL, overrides this method. Main character energy only. πŸ’…

  • Reimplemented from SoShape.
  • Reimplemented in SoMarkerSet.

πŸ¦‹ void SoPointSet::getBoundingBox (SoGetBoundingBoxAction * action) [virtual] πŸ¦‹

Action method for the SoGetBoundingBoxAction, periodt.

It calculates the bounding box and center coordinates for the node, and modifies the values of the action to encompass the bounding box for this node, and to shift the center point for the scene more towards the one for this node. ✨

Nodes influencing how geometry nodes calculate their bounding box also override this method to change the relevant state variables.

  • Reimplemented from SoShape.

πŸŽ€ void SoPointSet::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual] πŸŽ€

Action method for the SoGetPrimitiveCountAction, iykyk.

It calculates the number of triangle, line segment and point primitives for the node, and adds these to the counters of the action. Numbers going up, slay. πŸ”’

Nodes influencing how geometry nodes calculate their primitive count also override this method to change the relevant state variables.

  • Reimplemented from SoShape.
  • Reimplemented in SoMarkerSet.

πŸ’œ void SoPointSet::generatePrimitives (SoAction * action) [protected], [virtual] πŸ’œ

This method implements action behavior for shape nodes for SoCallbackAction. It is invoked from SoShape::callback(). And hear me out: (Subclasses should not override SoNode::callback().) Like, don't do it. 🚫

The subclass implementations use the convenience methods SoShape::beginShape(), SoShape::shapeVertex(), and SoShape::endShape(), with SoDetail instances, to pass the primitives making up the shape back to the caller. Chef's kiss. πŸ‘©β€πŸ³πŸ’‹

  • Implements SoShape.

🌈 void SoPointSet::computeBBox (SoAction * action, SbBox3f & box, SbVec3f & center) [protected], [virtual] 🌈

Implemented by SoShape subclasses to let the SoShape superclass know the exact size and weighted center point of the shape's bounding box. ✨

The bounding box and center point should be calculated and returned in the local coordinate system. Don't get cute with it. πŸ“

This method implements action behavior for shape nodes for SoGetBoundingBoxAction. It is invoked from SoShape::getBoundingBox(). And again: (Subclasses should not override SoNode::getBoundingBox().)

The box parameter sent in is guaranteed to be an empty box, while center is undefined upon function entry. So like, don't trust center when you walk in the door. πŸ™ˆ

  • Implements SoShape.

⭐ SbBool SoPointSet::generateDefaultNormals (SoState * state, SoNormalCache * cache) [protected], [virtual] ⭐

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. (Not me reading internal docs anyway. πŸ’€)

Subclasses should override this method to generate default normals using the SoNormalCache class. This is more effective than using SoNormalGenerator. Return TRUE if normals were generated, FALSE otherwise.

Default method just returns FALSE.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
  • Reimplemented from SoVertexShape.

πŸ“ SbBool SoPointSet::generateDefaultNormals (SoState * state, SoNormalBundle * bundle) [protected], [virtual] πŸ“

Same internal-to-the-library situation here, bestie β€” this API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Subclasses should override this method to generate default normals using the SoNormalBundle class. TRUE should be returned if normals were generated, FALSE otherwise.

Default method returns FALSE.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
  • Reimplemented from SoVertexShape.

🧚 Member Data Documentation 🧚

πŸ‘‘ SoSFInt32 SoPointSet::numPoints

Used to specify the number of points in the point set. Coordinates for the points will be taken from the state stack's set of 3D coordinates, typically set up by a leading SoCoordinate3 node. 🎯

If this field is equal to -1 (the default value) all coordinates currently on the state will be rendered or otherwise handled by traversal actions.

SoPointSet inherits the field SoNonIndexedShape::startIndex, which specifies the start index for points from the current state set of coordinates. Please note that this field has been obsoleted, but is still provided for compatibility. (Aging gracefully, honestly. πŸ’…)


πŸ’– Author πŸ’–

Generated automatically by Doxygen for Coin from the source code.


And that's a wrap on part 3, bestie!! πŸŽ€ This whole thing came out of Coin Version 3.1.3, and you're reading the SoPointSet(3) page β€” auto-generated straight from the source code, no ghostwriters. Go forth and render those points, you icon. πŸ¦‹βœ¨πŸ’–

πŸ“¦ where this page comes from