SoPointSet(3)
π 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 defaultFALSE.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, defaultFALSE.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, defaultFALSE.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 ¢er)β 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 ¢er)β 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 iconicfloat 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 situationvoid endSolidShape (SoGLRenderAction *action)β and closes it back up, periodtvoid GLRenderBoundingBox (SoGLRenderAction *action)β bounding box rendering, GL edition π₯SbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action)β a lil yes/no on whether to count primitivesSbBool shouldRayPick (SoRayPickAction *const action)β and a lil yes/no on whether to bother ray pickingvoid computeObjectSpaceRay (SoRayPickAction *const action)β computes the object-space rayvoid 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 aSoDetailfor a triangle hitvirtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp)β same, but for a line segmentvirtual 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 callbacksvoid invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)β fires off the line-segment callbacksvoid 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 thedetaildefaults toNULLβ¨void shapeVertex (const SoPrimitiveVertex *const v)β feeds one vertex to the shapevoid endShape (void)β closes the shape, slayvoid 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 ans/ttexture coord situationvoid 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 extraralong for the ride π¦SbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex)β kicks off a vertex arrayvoid 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, classicvirtual SbBool readInstance (SoInput *in, unsigned short flags)β reads an instance off the input, note thatflagsis anunsigned short
πΈ Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)β constructorvirtual ~SoFieldContainer ()β virtual destructor
π Protected Member Functions inherited from SoBase
SoBase (void)β constructorvirtual ~SoBase ()β virtual destructorvirtual void destroy (void)β the destroyer, virtual πSbBool hasMultipleWriteRefs (void) constβ aconstlittle yes/no about multiple write refsSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes a header,const, takes anSoOutput *outplusisgroupandisengineflagsvoid writeFooter (SoOutput *out) constβ writes the footer, alsoconstvirtual const char * getFileFormatName (void) constβ hands you the file format name as aconst char *, and it'svirtualandconstbecause 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 toindexstatic int getNextActionMethodIndex (void)β reads back that next action method indexstatic void incNextActionMethodIndex (void)β increments itstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)β sets compatibility types from anSoTypeand auint32_tbitmask
π Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter (void)β hands you the current write counter as auint32_tstatic 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 = 1static 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
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms