SoIndexedNurbsSurface(3)
β¨ SoIndexedNurbsSurface(3) β¨
okay bestie, welcome to the SoIndexedNurbsSurface page from the Library Functions Manual π this one's a whole icon β the class that renders NURBS surfaces. buckle up, it's a long one, and this is only part 1 π«Ά
πΈ NAME πΈ
SoIndexedNurbsSurface β the class that can be used to render NURBS surfaces. literally its whole job, and it eats π
π¦ SYNOPSIS π¦
#include <Inventor/nodes/SoIndexedNurbsSurface.h>
Inherits SoShape.
so yeah, it's a shape node β it inherits all the SoShape behavior like the nepo baby it is, but in a good way π
π Public Member Functions π
virtual SoType getTypeId (void) constβ hands you the SoType of this node. classic identity check β¨SoIndexedNurbsSurface (void)β the constructor. makes you a brand new one, no notes πvirtual void GLRender (SoGLRenderAction *action)β the render girlie. does the actual drawing when the action comes calling π¨virtual void rayPick (SoRayPickAction *action)β handles ray picking so you can click on this thing and have it notice you π«Άvirtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)β reports how many primitives this surface is giving. counting vibes only π’void sendPrimitive (SoAction *, SoPrimitiveVertex *)β ships out a primitive vertex to the action. no cap π€
π§ Public Member Functions inherited from SoShape
virtual SbBool affectsState (void) constβ tells you if this node touches the traversal statevirtual void notify (SoNotList *nl)β the notification pipeline momentvirtual void getBoundingBox (SoGetBoundingBoxAction *action)β computes the bounding box for the actionvirtual void callback (SoCallbackAction *action)β the callback-action handlerconst SoBoundingBoxCache * getBoundingBoxCache (void) constβ gives you the cached bounding box, so it doesn't have to recompute every time. efficient queen π
π Public Member Functions inherited from SoNode
void setOverride (const SbBool state)β flip override mode on or offSbBool isOverride (void) constβ is it overridden? we simply must knowvoid setNodeType (const NodeType type)β sets the node typeNodeType getNodeType (void) constβ reads back the node typevirtual SoNode * copy (SbBool copyconnections=0) constβ makes a copy, optionally with connectionsvirtual void doAction (SoAction *action)β runs the action through this nodevirtual void GLRenderBelowPath (SoGLRenderAction *action)β GL render, below-path flavorvirtual void GLRenderInPath (SoGLRenderAction *action)β GL render, in-path flavorvirtual void GLRenderOffPath (SoGLRenderAction *action)β GL render, off-path flavorvirtual void getMatrix (SoGetMatrixAction *action)β the matrix grabvirtual void handleEvent (SoHandleEventAction *action)β event handling behaviorvirtual void pick (SoPickAction *action)β the picking handlervirtual void search (SoSearchAction *action)β search action handlervirtual void write (SoWriteAction *action)β write action handlervirtual void audioRender (SoAudioRenderAction *action)β yes, audio render. immersive fr πvirtual void grabEventsSetup (void)β sets up event grabbingvirtual void grabEventsCleanup (void)β cleans up that event grabbingvirtual void startNotify (void)β kicks off notificationuint32_t getNodeId (void) constβ the node's unique id numbervirtual SoChildList * getChildren (void) constβ the child list (this node is not a group, but the API's there)virtual void writeInstance (SoOutput *out)β writes this instance outvirtual SoNode * addToCopyDict (void) constβ adds itself to the copy dictionaryvirtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)β copies the field contents overvirtual SoFieldContainer * copyThroughConnection (void) constβ copy through a connection
π Public Member Functions inherited from SoFieldContainer
void setToDefaults (void)β resets everything to defaultsSbBool hasDefaultValues (void) constβ are we running stock? yes or noSbBool fieldsAreEqual (const SoFieldContainer *container) constβ field-by-field comparisonvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=0)β yoinks field values from another containerSbBool set (const char *const fielddata)β set from a field data stringvoid get (SbString &fielddata)β get as a field data stringvirtual int getFields (SoFieldList &l) constβ fills your list with fieldsvirtual int getAllFields (SoFieldList &l) constβ all of themvirtual SoField * getField (const SbName &name) constβ fetch a field by namevirtual SoField * getEventIn (const SbName &name) constβ fetch an event-in by namevirtual SoField * getEventOut (const SbName &name) constβ fetch an event-out by nameSbBool getFieldName (const SoField *const field, SbName &name) constβ reverse lookup: field β nameSbBool enableNotify (const SbBool flag)β toggle notificationsSbBool isNotifyEnabled (void) constβ are notifications on?SbBool set (const char *fielddata, SoInput *in)β set with an SoInput for contextvoid get (SbString &fielddata, SoOutput *out)β get with an SoOutput for contextvirtual SbBool validateNewFieldValue (SoField *field, void *newval)β validation hookvirtual void addWriteReference (SoOutput *out, SbBool isfromfield=0)β registers a write referenceSbBool getIsBuiltIn (void) constβ built-in or not?void setUserData (void *userdata) constβ stash your own pointervoid * getUserData (void) constβ get that pointer back
π Public Member Functions inherited from SoBase
void ref (void) constβ up the ref countvoid unref (void) constβ down the ref countvoid unrefNoDelete (void) constβ down the count, don't deleteint32_t getRefCount (void) constβ how many refs we gotvoid touch (void)β touch it, triggers the notification chainSbBool isOfType (SoType type) constβ type checkvirtual SbName getName (void) constβ the namevirtual void setName (const SbName &newname)β set the namevoid addAuditor (void *const auditor, const SoNotRec::Type type)β add an auditorvoid removeAuditor (void *const auditor, const SoNotRec::Type type)β remove an auditorconst SoAuditorList & getAuditors (void) constβ the auditor listSbBool shouldWrite (void)β should this be written out?void assertAlive (void) constβ the alive check. drama, but necessary π
β Static Public Member Functions β
static SoType getClassTypeId (void)β the class's SoTypestatic void initClass (void)β sets the class up in the type system. must be called before you use it, periodt
π Static Public Member Functions inherited from SoShape
static SoType getClassTypeId (void)static void initClass (void)static void getScreenSize (SoState *const state, const SbBox3f &boundingbox, SbVec2s &rectsize)static float getDecimatedComplexity (SoState *state, float complexity)
π¦ Static Public Member Functions inherited from SoNode
static uint32_t getCompatibilityTypes (const SoType &nodetype)static SoType getClassTypeId (void)static SoNode * getByName (const SbName &name)static int getByName (const SbName &name, SoNodeList &l)static void initClass (void)static void initClasses (void)static uint32_t getNextNodeId (void)static int getActionMethodIndex (const SoType type)static void getBoundingBoxS (SoAction *action, SoNode *node)static void GLRenderS (SoAction *action, SoNode *node)static void callbackS (SoAction *action, SoNode *node)static void getMatrixS (SoAction *action, SoNode *node)static void handleEventS (SoAction *action, SoNode *node)static void pickS (SoAction *action, SoNode *node)static void rayPickS (SoAction *action, SoNode *node)static void searchS (SoAction *action, SoNode *node)static void writeS (SoAction *action, SoNode *node)static void audioRenderS (SoAction *action, SoNode *node)static void getPrimitiveCountS (SoAction *action, SoNode *node)
π
Static Public Member Functions inherited from SoFieldContainer
static void initClass (void)static SoType getClassTypeId (void)static void initCopyDict (void)static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)static SoFieldContainer * checkCopy (const SoFieldContainer *orig)static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)static void copyDone (void)
π Static Public Member Functions inherited from SoBase
static void initClass (void)static SoType getClassTypeId (void)static void addName (SoBase *const base, const char *const name)static void removeName (SoBase *const base, const char *const name)static void incrementCurrentWriteCounter (void)static void decrementCurrentWriteCounter (void)static SoBase * getNamedBase (const SbName &name, SoType type)static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)static SbBool read (SoInput *in, SoBase *&base, SoType expectedtype)static void setInstancePrefix (const SbString &c)static void setTraceRefs (SbBool trace)static SbBool getTraceRefs (void)static SbBool connectRoute (SoInput *in, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)static SbBool readRoute (SoInput *in)
π Public Attributes π
these are the fields, bestie. the real main characters π
SoSFInt32 numUControlPointsβ number of control points in the U directionSoSFInt32 numVControlPointsβ number of control points in the V directionSoMFInt32 coordIndexβ the index into the coordinates for the surfaceSoMFFloat uKnotVectorβ the knot vector for U, because NURBS said "we're doing math today" β¨SoMFFloat vKnotVectorβ the knot vector for VSoSFInt32 numSControlPointsβ number of control points in the S (texture) directionSoSFInt32 numTControlPointsβ number of control points in the T (texture) directionSoMFInt32 textureCoordIndexβ the index into the texture coordinatesSoMFFloat sKnotVectorβ knot vector for SSoMFFloat tKnotVectorβ knot vector for T
πΈ Protected Member Functions πΈ
virtual const SoFieldData * getFieldData (void) constβ the field data table lookupvirtual ~SoIndexedNurbsSurface ()β the destructor. bye girlie πvirtual void generatePrimitives (SoAction *action)β generates the primitives for the actionvirtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f ¢er)β computes the bounding box and centerSoDetail * createTriangleDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, const SoPrimitiveVertex *v3, SoPickedPoint *pp)β builds the triangle detail for ray picks
π§ Protected Member Functions inherited from SoShape
SoShape (void)virtual ~SoShape ()float getComplexityValue (SoAction *action)virtual SbBool shouldGLRender (SoGLRenderAction *action)void beginSolidShape (SoGLRenderAction *action)void endSolidShape (SoGLRenderAction *action)void GLRenderBoundingBox (SoGLRenderAction *action)SbBool shouldPrimitiveCount (SoGetPrimitiveCountAction *action)SbBool shouldRayPick (SoRayPickAction *const action)void computeObjectSpaceRay (SoRayPickAction *const action)void computeObjectSpaceRay (SoRayPickAction *const action, const SbMatrix &matrix)virtual SoDetail * createLineSegmentDetail (SoRayPickAction *action, const SoPrimitiveVertex *v1, const SoPrimitiveVertex *v2, SoPickedPoint *pp)virtual SoDetail * createPointDetail (SoRayPickAction *action, const SoPrimitiveVertex *v, SoPickedPoint *pp)void invokeTriangleCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2, const SoPrimitiveVertex *const v3)void invokeLineSegmentCallbacks (SoAction *const action, const SoPrimitiveVertex *const v1, const SoPrimitiveVertex *const v2)void invokePointCallbacks (SoAction *const action, const SoPrimitiveVertex *const v)void beginShape (SoAction *const action, const TriangleShape shapetype, SoDetail *const detail=NULL)void shapeVertex (const SoPrimitiveVertex *const v)void endShape (void)void generateVertex (SoPrimitiveVertex *const pv, const SbVec3f &point, const SbBool useTexFunc, const SoTextureCoordinateElement *const tce, const float s, const float t, const SbVec3f &normal)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)SbBool startVertexArray (SoGLRenderAction *action, const SoCoordinateElement *coords, const SbVec3f *pervertexnormals, const SbBool texpervertex, const SbBool colorpervertex)void finishVertexArray (SoGLRenderAction *action, const SbBool vbo, const SbBool normpervertex, const SbBool texpervertex, const SbBool colorpervertex)
π Protected Member Functions inherited from SoNode
SoNode (void)virtual ~SoNode ()virtual SbBool readInstance (SoInput *in, unsigned short flags)
π¦ Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)~SoFieldContainer ()
π
Protected Member Functions inherited from SoBase
SoBase (void)virtual ~SoBase ()virtual void destroy (void)SbBool hasMultipleWriteRefs (void) constSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constvoid writeFooter (SoOutput *out) constvirtual const char * getFileFormatName (void) const
β Static Protected Member Functions β
static const SoFieldData ** getFieldDataPtr (void)β pointer to the field data pointer. yes it's a double pointer, we love a lil indirection π
π Static Protected Member Functions inherited from SoShape
static const SoFieldData ** getFieldDataPtr (void)
π Static Protected Member Functions inherited from SoNode
static const SoFieldData ** getFieldDataPtr (void)static void setNextActionMethodIndex (int index)static int getNextActionMethodIndex (void)static void incNextActionMethodIndex (void)static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)
that's it for part 1 bestie, don't go anywhere π
𧬠Static Protected Member Functions inherited from SoBase
static uint32_t getCurrentWriteCounter (void)β it's giving static protected member function energy. πstatic void staticDataLock (void)β locking it down, no cap. πstatic void staticDataUnlock (void)β and we unlock, periodt. π
π« Friends
class SoIndexedNurbsSurfacePβ the bestie friend class. π«Ά
𧬠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 }
Protected Types inherited from SoBase
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
Protected Attributes inherited from SoNode
uint32_t uniqueIdβ the unique ID, bestie. π
Protected Attributes inherited from SoFieldContainer
SbBool isBuiltInβ built-in or not, that is the question. π
Static Protected Attributes inherited from SoNode
static uint32_t nextUniqueId = 0static int nextActionMethodIndex = 0
β¨ Detailed Description β¨
The SoIndexedNurbsSurface class can be used to render NURBS surfaces. It's literally that girl. π
It is very similar to the SoNurbsSurface class, but controlpoints can be specified using indices. Slay.
FILE FORMAT/DEFAULTS:
IndexedNurbsSurface {
numUControlPoints 0
numVControlPoints 0
coordIndex 0
uKnotVector 0
vKnotVector 0
numSControlPoints 0
numTControlPoints 0
textureCoordIndex -1
sKnotVector 0
tKnotVector 0
}
π οΈ Constructor & Destructor Documentation
ποΈ SoIndexedNurbsSurface::SoIndexedNurbsSurface (void )
- Constructor. It constructs, periodt. ποΈ
- References
coordIndex,numSControlPoints,numTControlPoints,numUControlPoints,numVControlPoints,sKnotVector,SoIndexedNurbsSurface(),textureCoordIndex,tKnotVector,uKnotVector, andvKnotVector. - Referenced by
getFieldData(), andSoIndexedNurbsSurface().
π SoIndexedNurbsSurface::~SoIndexedNurbsSurface () [protected], [virtual]
- Destructor. It's giving cleanup crew energy. π§Ή
π§ Member Function Documentation
π SoType SoIndexedNurbsSurface::getTypeId (void ) const [virtual]
- Returns the type identification of an object derived from a class inheriting
SoBase. This is used for run-time type checking and "downward" casting. No cap. - Usage example, iykyk:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
}
else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {
SoGroup * group = (SoGroup *)node; // safe downward cast, knows the type
}
}
- For application programmers wanting to extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance
Inventor/nodes/SoSubNode.h(SO_NODE_INIT_CLASSandSO_NODE_CONSTRUCTORfor node classes),Inventor/engines/SoSubEngine.h(for engine classes) and so on. Ngl, that's the whole vibe. - For more information on writing Coin extensions, see the class documentation of the toplevel superclasses for the various class groups.
- Reimplemented from
SoShape.
π const SoFieldData * SoIndexedNurbsSurface::getFieldData (void ) const [protected], [virtual]
- Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns
NULL. Fr fr. - Reimplemented from
SoShape. - References
SoIndexedNurbsSurface().
π void SoIndexedNurbsSurface::GLRender (SoGLRenderAction * action) [virtual]
- Action method for the
SoGLRenderAction. - This is called during rendering traversals. Nodes influencing the rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method.
- Reimplemented from
SoShape. - References
SoAction::getState(), andSoShape::shouldGLRender().
π void SoIndexedNurbsSurface::rayPick (SoRayPickAction * action) [virtual]
- Calculates picked point based on primitives generated by subclasses.
- Reimplemented from
SoShape. - References
SoAction::getState(),SoState::pop(),SoDebugError::postWarning(),SoState::push(),SoShape::rayPick(), andSoShape::shouldRayPick().
π void SoIndexedNurbsSurface::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual]
- Action method for the
SoGetPrimitiveCountAction. - Calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the action.
- Nodes influencing how geometry nodes calculates their primitive count also overrides this method to change the relevant state variables.
- Reimplemented from
SoShape. - References
SoShape::getPrimitiveCount().
π void SoIndexedNurbsSurface::sendPrimitive (SoAction * , SoPrimitiveVertex * )
- This method is part of the original SGI Inventor API, but not implemented in Coin, as it looks like a method that should probably have been private in Open Inventor. Not me reading that. π
π void SoIndexedNurbsSurface::generatePrimitives (SoAction * action) [protected], [virtual]
- The method implements action behavior for shape nodes for
SoCallbackAction. It is invoked fromSoShape::callback(). (Subclasses should not overrideSoNode::callback().) - The subclass implementations uses the convenience methods
SoShape::beginShape(),SoShape::shapeVertex(), andSoShape::endShape(), withSoDetailinstances, to pass the primitives making up the shape back to the caller. - Implements
SoShape.
π void SoIndexedNurbsSurface::computeBBox (SoAction * action, SbBox3f & box, SbVec3f & center) [protected], [virtual]
- Calculates the bounding box of all control points and sets the center to the average of these points.
- Implements
SoShape. - References
coordIndex,SbBox3f::extendBy(),SbVec4f::getReal(),SoAction::getState(), andSbBox3f::makeEmpty().
π SoDetail * SoIndexedNurbsSurface::createTriangleDetail (SoRayPickAction * action, const SoPrimitiveVertex * v1, const SoPrimitiveVertex * v2, const SoPrimitiveVertex * v3, SoPickedPoint * pp) [protected], [virtual]
- Will create triangle detail for a
SoPickedPoint. This method will only be called internally, whengeneratePrimitives()is used for picking (SoShape::rayPick()is not overridden). - This method returns
NULLin Open Inventor, and subclasses will need to override this method to create details for aSoPickedPoint. - This is not necessary with Coin. Of course, if you choose to override it, it will work in the same way as Open Inventor.
- For this to work, you must supply a face or line detail when generating primitives. If you supply
NULLfor the detail argument inSoShape::beginShape(), you'll have to override this method. - Reimplemented from
SoShape.
π¦ Member Data Documentation
SoSFInt32 SoIndexedNurbsSurface::numUControlPoints
- Number of control points in the U direction.
- Referenced by
SoIndexedNurbsSurface().
SoSFInt32 SoIndexedNurbsSurface::numVControlPoints
- Number of control points in the V direction.
- Referenced by
SoIndexedNurbsSurface().
SoMFInt32 SoIndexedNurbsSurface::coordIndex
- The coordinate control point indices.
- Referenced by
computeBBox(), andSoIndexedNurbsSurface().
SoMFFloat SoIndexedNurbsSurface::uKnotVector
- The Bezier knot vector for the U direction.
- Referenced by
SoIndexedNurbsSurface().
SoMFFloat SoIndexedNurbsSurface::vKnotVector
- The Bezier knot vector for the V direction.
- Referenced by
SoIndexedNurbsSurface().
SoSFInt32 SoIndexedNurbsSurface::numSControlPoints
- Number of control points in the S direction.
- Referenced by
SoIndexedNurbsSurface().
SoSFInt32 SoIndexedNurbsSurface::numTControlPoints
- Number of control points in the T direction.
- Referenced by
SoIndexedNurbsSurface().
SoMFInt32 SoIndexedNurbsSurface::textureCoordIndex
- The texture coordinate control point indices.
- Referenced by
SoIndexedNurbsSurface().
SoMFFloat SoIndexedNurbsSurface::sKnotVector
- The Bezier knot vector for the S direction.
- Referenced by
SoIndexedNurbsSurface().
SoMFFloat SoIndexedNurbsSurface::tKnotVector
- The Bezier knot vector for the T direction.
- Referenced by
SoIndexedNurbsSurface().
π©βπ» Author
Generated automatically by Doxygen for Coin from the source code. It's giving documentation royalty. π
This iconic page is brought to you by Coin, Version 2.5.0, and it's the SoIndexedNurbsSurface(3) manpage. No cap. πβ¨
π¦ where this page comes from
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 43: Coin2-devel 2.5.0-52.fc43 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.fc44 Β· GPL-2.0-only
- fedora 44: Coin2-devel 2.5.0-54.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