SOINDEXEDNURBSCURVE(3iv)

πŸ’– SoIndexedNurbsCurve β€” the indexed NURBS curve shape node (from the 3IV manual, bestie) πŸ’–

okay so picture this: you wanna draw a curvy little line, but you want to be fancy about it. that's her. that's the main character. 🌈


🌸 INHERITS FROM 🌸

SoBase > SoFieldContainer > SoNode > SoShape > SoIndexedNurbsCurve

the whole family tree, no cap. she got it from her ancestors. πŸ’…


✨ SYNOPSIS ✨

#include <Inventor/nodes/SoIndexedNurbsCurve.h>

Fields from class SoIndexedNurbsCurve:

SoSFInt32           numControlPoints
SoMFInt32           coordIndex
SoMFFloat           knotVector

Methods from class SoIndexedNurbsCurve:

                     SoIndexedNurbsCurve()
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 this class represents a NURBS curve and it's built entirely off the knot vector and the control points you hand it. it's giving choose-your-own-adventure but for geometry. πŸ’–

the knotVector field is a floating-point array of values β€” those values are the coordinates of the knot points in the curve, and you MUST enter them in non-decreasing order. like. non-decreasing. don't test her. 😭

the numControlPoints field says how many control points the curve is gonna have, and it pulls the actual coordinates from the ones indexed in the coordIndex field.

want a curve of minimum order (2)? easy bestie ✨ just specify two more knots than control points and have at least two control points. that curve would literally just be a set of line segments connecting the control points together. lowkey simple, still cute.

want a curve of maximum order (8)? πŸ‘‘ specify 8 more knots than control points and have at least 8 control points. in this curve, each control point would have influence on a larger portion of the curve than with curves of lesser order. main character energy honestly.

the control points of the curve are transformed by the current transformation matrix. the curve is drawn with the current lighting model and drawing style β€” and heads up, drawing style FILLED is treated as LINES. πŸ™ˆ

also: the coordinates, normals, and texture coordinates of a NURBS curve are generated, so you cannot bind explicit normals or texture coordinates to a NURBS curve. she comes pre-loaded, no outside help needed. πŸ’…

and the approximation of the curve by line segments is affected by the current complexity value. so like, complexity is the vibe check here.


πŸŽ€ FIELDS πŸŽ€

  • SoSFInt32 numControlPoints β€” number of control points for the curve. how many besties are on the roster. 🫢
  • SoMFInt32 coordIndex β€” coordinate indices for the control points. the little address book pointing at who's who.
  • SoMFFloat knotVector β€” the knot vector for the curve. values must be in non-decreasing order. non-decreasing. always. ⭐

πŸ’… METHODS πŸ’…

  • SoIndexedNurbsCurve() β€” creates an indexed NURBS curve node with default settings. she's born. she's iconic. πŸŽ€
  • static SoType getClassTypeId() β€” returns type identifier for this class. iykyk. ✨

πŸ”₯ ACTION BEHAVIOR πŸ”₯

  • SoGLRenderAction β€” draws the curve based on the current coordinates, material, and so on. she's on screen and she's serving. πŸ’–
  • SoRayPickAction β€” picks the curve based on the current coordinates and transformation. getting picked is a compliment, fr fr. 🌸
  • SoGetBoundingBoxAction β€” computes the bounding box that encloses all control points of the curve with the current transformation applied to them. sets the center to the average of the control points. like a little group hug box. πŸ¦‹
  • SoCallbackAction β€” if any line segment callbacks are registered with the action, they will be invoked for each successive segment approximating the curve. every segment gets its moment. πŸ‘‘

🌈 FILE FORMAT/DEFAULTS 🌈

IndexedNurbsCurve {
   numControlPoints  0
   coordIndex        0
   knotVector        0
}

the glow-up starting point. everyone begins somewhere. πŸ’œ


⭐ SEE ALSO ⭐

  • SoNurbsCurve
  • SoIndexedNurbsSurface

her cousins!! go say hi!! 🫢


and that's the whole page bestie, no crumbs left πŸ“ β€” this was SoIndexedNurbsCurve(3IV)(), source/version and date and all, straight from the 3IV manual and it slayed. periodt. πŸ’…βœ¨