SONURBSPROFILE(3iv)

πŸ’– SoNurbsProfile β€” the NURBS profile curve page, bestie edition πŸ’–

okay so. we're in the SoNurbsProfile(3IV) manual page, and honestly? it's a short one, so grab your strawberry drink πŸ“ and let's go, because this little node is doing a LOT of heavy lifting in the curve department.


🌸 NAME 🌸

SoNurbsProfile β€” NURBS profile curve. that's it. that's the whole name. iconic brevity, no notes. ✨


πŸ¦‹ INHERITS FROM πŸ¦‹

the whole family tree, and yes she comes from a long line of distinguished ancestors:

SoBase > SoFieldContainer > SoNode > SoProfile > SoNurbsProfile

so like… she's a SoProfile, which is a SoNode, which is a SoFieldContainer, which is a SoBase. main character lineage fr fr πŸ’…


✨ SYNOPSIS ✨

first things first, you gotta include her:

#include <Inventor/nodes/SoNurbsProfile.h>

🌈 Fields from class SoNurbsProfile

SoMFFloat           knotVector

🌈 Fields from class SoProfile

SoMFInt32           index
SoSFEnum            linkage

🌈 Methods from class SoNurbsProfile

                     SoNurbsProfile()
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 here's the tea β˜• β€” this node specifies a NURBS curve that gets used as a profile. and the way it works is basically the same way a standard SoNurbsCurve works… except (and this is the key part, don't skip it 🫢) the control points aren't just handed to you directly β€” they're constructed from the current set of profile coordinates, using the index field. that's the whole vibe. that's the plot. 🌟


πŸ’œ FIELDS πŸ’œ

  • knotVector (SoMFFloat) β€” the knot vector for the NURBS curve. and bestie, it must be a list of non-decreasing floating point values. non-decreasing. we do not go backwards in this house. πŸ“‰βŒπŸ“ˆβœ…

πŸŽ€ METHODS πŸŽ€

  • SoNurbsProfile() β€” creates a NURBS profile curve node with default settings. fresh out the box, defaults intact, ready to slay. ✨
  • static SoType getClassTypeId() β€” returns the type identifier for this class. it's giving "who am I" but in a bureaucratic sense. πŸͺͺ

πŸ”₯ ACTION BEHAVIOR πŸ”₯

the actions below all do the same cute little thing:

  • SoGLRenderAction
  • SoCallbackAction
  • SoRayPickAction

they all add a profile to the current traversal state. that's the move. that's the whole move. πŸ’ƒ


🌸 FILE FORMAT/DEFAULTS 🌸

here's what she looks like written down, defaults and all, verbatim, no cap:

NurbsProfile {
    index       0
    linkage     START_FIRST
    knotVector  0
}

🌈 SEE ALSO 🌈

go read these next, they're all in the same friend group:

  • SoLinearProfile
  • SoNurbsCurve
  • SoProfileCoordinate2
  • SoProfileCoordinate3

quick reminder bestie: knotVector has to be non-decreasing. that's a real requirement, not a suggestion. don't come for me when it breaks. 😭

okay that's the whole page!! it came from the SoNurbsProfile(3IV) source/version, and the footer date area was lowkey empty (SoNurbsProfile(3IV)()), so like… timeless, no date, forever iconic. πŸ’–βœ¨ go build something gorgeous with your NURBS, ily, bye πŸ«ΆπŸŽ€πŸ¦‹