SoVRMLOrientationInterpolator(3)
πΈ SoVRMLOrientationInterpolator(3) β Coin manual page, bestie β¨
okay so this is the <pink>Coin</pink> manpage for SoVRMLOrientationInterpolator(3) and it's genuinely iconic, we're gonna get through it together π this is part 1, so don't go anywhere, there's more coming.
π« NAME π«
SoVRMLOrientationInterpolator β the class that interpolates orientations. that's it, that's the vibe. it takes your key values and smooths them into rotations, main character energy fr π¦
β¨ SYNOPSIS β¨
#include <Inheritor/VRMLnodes/SoVRMLOrientationInterpolator.h>
wait no β literally, character for character, it's:
#include <Inventor/VRMLnodes/SoVRMLOrientationInterpolator.h>
lowkey important: this class inherits SoVRMLInterpolator. so everything that class has? yeah, it's got it too π
π«Ά Public Member Functions π«Ά
these are the ones that are actually on this class, not borrowed:
virtual SoType getTypeId (void) constβ gives you back the type id, the classic.virtual const SoEngineOutputData * getOutputData (void) constβ hands you the output data pointer.SoVRMLOrientationInterpolator (void)β the constructor bestie, this is how you make one π
π§ Public Member Functions inherited from SoNodeEngine π§
void evaluateWrapper (void)virtual int getOutputs (SoEngineOutputList &l) constSoEngineOutput * getOutput (const SbName &outputname) constSbBool getOutputName (const SoEngineOutput *output, SbName &outputname) constSbBool isNotifying (void) constvirtual void notify (SoNotList *nl)virtual void writeInstance (SoOutput *out)
π Public Member Functions inherited from SoNode π
void setOverride (const SbBool state)SbBool isOverride (void) constvoid setNodeType (const NodeType type)NodeType getNodeType (void) constvirtual SoNode * copy (SbBool copyconnections=FALSE) constvirtual SbBool affectsState (void) constvirtual void doAction (SoAction *action)virtual void GLRender (SoGLRenderAction *action)virtual void GLRenderBelowPath (SoGLRenderAction *action)virtual void GLRenderInPath (SoGLRenderAction *action)virtual void GLRenderOffPath (SoGLRenderAction *action)virtual void callback (SoCallbackAction *action)virtual void getBoundingBox (SoGetBoundingBoxAction *action)virtual void getMatrix (SoGetMatrixAction *action)virtual void handleEvent (SoHandleEventAction *action)virtual void pick (SoPickAction *action)virtual void rayPick (SoRayPickAction *action)virtual void search (SoSearchAction *action)virtual void write (SoWriteAction *action)virtual void audioRender (SoAudioRenderAction *action)virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)virtual void grabEventsSetup (void)virtual void grabEventsCleanup (void)virtual void startNotify (void)SbUniqueId getNodeId (void) constvirtual SoChildList * getChildren (void) constvirtual SoNode * addToCopyDict (void) constvirtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)virtual SoFieldContainer * copyThroughConnection (void) const
π Public Member Functions inherited from SoFieldContainer π
void setToDefaults (void)SbBool hasDefaultValues (void) constSbBool fieldsAreEqual (const SoFieldContainer *container) constvoid copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)SbBool set (const char *const fielddata)void get (SbString &fielddata)virtual int getFields (SoFieldList &l) constvirtual int getAllFields (SoFieldList &l) constvirtual SoField * getField (const SbName &name) constvirtual SoField * getEventIn (const SbName &name) constvirtual SoField * getEventOut (const SbName &name) constSbBool getFieldName (const SoField *const field, SbName &name) constSbBool enableNotify (const SbBool flag)SbBool isNotifyEnabled (void) constSbBool set (const char *fielddata, SoInput *input)void get (SbString &fielddata, SoOutput *out)virtual SbBool validateNewFieldValue (SoField *field, void *newval)virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)SbBool getIsBuiltIn (void) constvirtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) constvoid setUserData (void *userdata) constvoid * getUserData (void) const
π Public Member Functions inherited from SoBase π
void ref (void) constvoid unref (void) constvoid unrefNoDelete (void) constint32_t getRefCount (void) constvoid touch (void)SbBool isOfType (SoType type) constβ gives youTRUEif this object's type is either the same type or inherited from type. yes queen, inheritance check π«Άvirtual SbName getName (void) constvirtual void setName (const SbName &newname)void addAuditor (void *const auditor, const SoNotRec::Type type)void removeAuditor (void *const auditor, const SoNotRec::Type type)const SoAuditorList & getAuditors (void) constSbBool shouldWrite (void)void assertAlive (void) const
β Static Public Member Functions β
static SoType getClassTypeId (void)static void * createInstance (void)static void initClass (void)
πΈ Static Public Member Functions inherited from SoVRMLInterpolator πΈ
static SoType getClassTypeId (void)static void initClass (void)
π Static Public Member Functions inherited from SoNodeEngine π
static void initClass (void)β sets up initialization for data that all instances of this class share, like handing the necessary info over to the Coin type system. housekeeping, but make it fashion β¨static SoType getClassTypeId (void)
π¦ 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)β sets up initialization for data common to all instances of this class, like submitting the necessary info to the Coin type system. same energy as above πstatic void initClasses (void)static SbUniqueId 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)β sets up initialization for data common to all instances of this class, like submitting necessary info to the Coin type system. you know the drill β¨static SoType getClassTypeId (void)β this static method returns theSoTypeobject associated with objects of this class. it's giving type registry πstatic void cleanupClass (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)β sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. iconic recurring behavior honestly πstatic SoType getClassTypeId (void)β this static method returns theSoTypeobject associated with objects of this class.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 *input, SoBase *&base, SoType expectedtype)static void setInstancePrefix (const SbString &c)static void setTraceRefs (SbBool trace)static SbBool getTraceRefs (void)static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)static SbBool readRoute (SoInput *input)
π Public Attributes π
the actual data bits of this class:
SoMFRotation keyValueSoEngineOutput value_changed
π Public Attributes inherited from SoVRMLInterpolator π
SoMFFloat keySoSFFloat set_fraction
π Protected Member Functions π
virtual const SoFieldData * getFieldData (void) constvirtual ~SoVRMLOrientationInterpolator (void)β the destructor, protected so you don't just delete it all willy-nilly.
πΈ Protected Member Functions inherited from SoVRMLInterpolator πΈ
int getKeyValueIndex (float &interp, int numvalues)
π Protected Member Functions inherited from SoNodeEngine π
SoNodeEngine (void)virtual ~SoNodeEngine (void)virtual SbBool readInstance (SoInput *in, unsigned short flags)virtual void inputChanged (SoField *which)void writeOutputTypes (SoOutput *out)
π¦ Protected Member Functions inherited from SoNode π¦
SoNode (void)virtual ~SoNode ()
π Protected Member Functions inherited from SoFieldContainer π
SoFieldContainer (void)virtual ~SoFieldContainer ()
π Protected Member Functions inherited from SoBase π
SoBase (void)virtual ~SoBase ()SbBool hasMultipleWriteRefs (void) constSbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constvoid writeFooter (SoOutput *out) constvirtual const char * getFileFormatName (void) constvirtual SoNotRec createNotRec (void)
β Static Protected Member Functions β
static const SoFieldData ** getFieldDataPtr (void)static const SoEngineOutputData ** getOutputDataPtr (void)
πΈ Static Protected Member Functions inherited from SoVRMLInterpolator πΈ
static const SoFieldData ** getFieldDataPtr (void)static const SoEngineOutputData ** getOutputDataPtr (void)
π Static Protected Member Functions inherited from SoNodeEngine π
static const SoFieldData ** getFieldDataPtr (void)static const SoEngineOutputData ** getOutputDataPtr (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)
π Static Protected Member Functions inherited from SoBase π
static uint32_t getCurrentWriteCounter (void)static void staticDataLock (void)static void staticDataUnlock (void)
π«Ά Additional Inherited Members π«Ά
π¦ Public Types inherited from SoNode π¦
the NodeType enum, all the flags bestie:
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, COIN_4_0 = 0x20000 }
π Protected Types inherited from SoBase π
the BaseFlags enum:
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
π okay that's all of part 1 bestie, don't go anywhere, part 2 is literally right there π«Ά
π Protected Attributes inherited from SoNode π
SbUniqueId uniqueIdβ the node's very own unique ID, passed down like a family heirloom π
β¨ Protected Attributes inherited from SoFieldContainer β¨
SbBool isBuiltInβ lil flag telling you whether this thing is built-in or not π¦
πΈ Static Protected Attributes inherited from SoNode πΈ
static SbUniqueId nextUniqueId = 1β the counter that hands out the next unique ID, starting at1β¨static int nextActionMethodIndex = 0β the index tracker for action methods, starting at0π
π Detailed Description π
The SoVRMLOrientationInterpolator class is used to interpolate orientations. That's the whole job bestie, that's the gig π«Ά
The detailed class documentation is taken verbatim from the VRML97 standard (ISO/IEC 14772-1:1997). It is copyright The Web3D Consortium, and is used by permission of the Consortium:
OrientationInterpolator {
eventIn SFFloat set_fraction # (-,)
exposedField MFFloat key [] # (-,)
exposedField MFRotation keyValue [] # [-1,1],(-,)
eventOut SFRotation value_changed
}
The OrientationInterpolator node interpolates among a list of rotation values specified in the keyValue field. These rotations are absolute in object space and therefore are not cumulative, no cap. The keyValue field shall contain exactly as many rotations as there are keyframes in the key field β like, the math has to math π
An orientation represents the final position of an object after a rotation has been applied. An OrientationInterpolator interpolates between two orientations by computing the shortest path on the unit sphere between the two orientations. The interpolation is linear in arc length along this path. π
The results are undefined if the two orientations are diagonally opposite. Yeah. Undefined. Don't do it bestie, that's a vibe check you will not pass π
If two consecutive keyValue values exist such that the arc length between them is greater than , the interpolation will take place on the arc complement. (and yes, the number is just... not there in the source, i'm not gaslighting you π)
For example, the interpolation between the orientations (0, 1, 0, 0) and (0, 1, 0, 5.0) is equivalent to the rotation between the orientations (0, 1, 0, 2) and (0, 1, 0, 5.0).
A more detailed discussion of interpolators is contained in 4.6.8, Interpolator nodes over at http://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.6.8 β go read it, it's giving academic slay πβ¨
π Constructor & Destructor Documentation π
SoVRMLOrientationInterpolator::SoVRMLOrientationInterpolator (void )
Constructor. It makes the thing. Iconic behaviour honestly π
SoVRMLOrientationInterpolator::~SoVRMLOrientationInterpolator (void )
[protected], [virtual]
Destructor. It unmakes the thing. She said bye π
π¦ Member Function Documentation π¦
SoType SoVRMLOrientationInterpolator::getClassTypeId (void ) [static]
This static method returns the SoType object associated with objects of this class. It's the class's ID card, basically π³
SoType SoVRMLOrientationInterpolator::getTypeId (void ) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is used for runtime type checking and "downward" casting. Downward casting?? in THIS economy?? π
Reimplemented from SoVRMLInterpolator.
const SoFieldData ** SoVRMLOrientationInterpolator::getFieldDataPtr (void ) [static], [protected]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. (so if you're not writing the library, this is a not-for-you moment, no offence π«Ά)
Returns the SoFieldData class which holds information about fields in this node.
const SoFieldData * SoVRMLOrientationInterpolator::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. Empty-handed, but make it fashion β¨
Reimplemented from SoVRMLInterpolator.
const SoEngineOutputData * SoVRMLOrientationInterpolator::getOutputData (void ) const [virtual]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Again: internal business only, bestie π
Reimplemented from SoVRMLInterpolator.
void SoVRMLOrientationInterpolator::initClass (void ) [static]
That's it. That's the whole description. She's mysterious, she's lowkey, she doesn't explain herself π
π Member Data Documentation π
SoMFRotation SoVRMLOrientationInterpolator::keyValue
The keyValue vector. Yes. The vector of keys and values. The whole point π
SoEngineOutput SoVRMLOrientationInterpolator::value_changed
The eventOut which is sent every time the interpolator has calculated a new value. Every. Single. Time. She's consistent, she's reliable, she's the main character π
π Author π
Generated automatically by Doxygen for Coin from the source code. (so nobody hand-wrote this, it's a robot's magnum opus π€β¨)
okay that's the whole page bestie, you ate, you understood, you're now a VRML orientation interpolation girlie for life π
This was Coin version 4.0.10, dated Thu Jun 25 2026 β go forth and interpolate responsibly, mwah ππ«Ά
π¦ where this page comes from
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 43: Coin4-devel 4.0.10-1.fc43 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 Β· BSD-3-Clause AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms