SoTrackballManip(3)
okay so bestie π pull up a chair, hydrate, and get comfy, because we're reading SoTrackballManip(3) from the Coin library together and it's gonna be a whole journey. π«Ά No cap, it's long, but we're built for this.
π NAME π
SoTrackballManip β the SoTrackballManip wraps an SoTrackballDragger for convenience. that's literally the entire vibe. it's giving "I did the hard part so you don't have to." β¨
π¦ SYNOPSIS π¦
#include <Inventor/manips/SoTrackballManip.h>
Inherits SoTransformManip. (so it's deep in the family tree, main character lineage fr π)
π Public Member Functions
virtual SoType getTypeId (void) constβ hands you theSoTypeof this thing, iykyk.SoTrackballManip (void)β the constructor, aka how you actually make one of these. π
πΈ Public Member Functions inherited from SoTransformManip
SoTransformManip (void)β constructor for the parent class.SoDragger * getDragger (void)β grabs the dragger doing the work.SbBool replaceNode (SoPath *p)β swaps in a node, returns anSbBool.SbBool replaceManip (SoPath *p, SoTransform *newone) constβ swaps this manip out fornewone, const-style.virtual void doAction (SoAction *action)β runs an action.virtual void callback (SoCallbackAction *action)β the callback-action entry point.virtual void GLRender (SoGLRenderAction *action)β renders it. π¨virtual void getBoundingBox (SoGetBoundingBoxAction *action)β computes the bounding box.virtual void getMatrix (SoGetMatrixAction *action)β grabs the matrix.virtual void handleEvent (SoHandleEventAction *action)β handles events.virtual void pick (SoPickAction *action)β picking behavior, lowkey essential.virtual void search (SoSearchAction *action)β search-action handling.virtual SoChildList * getChildren (void) constβ returns the child list.
π¦ Public Member Functions inherited from SoTransform
SoTransform (void)β constructor.void pointAt (const SbVec3f &frompoint, const SbVec3f &topoint)β points from one spot to another.void getScaleSpaceMatrix (SbMatrix &mat, SbMatrix &inv) constβ gives you the scale-space matrix and its inverse.void getRotationSpaceMatrix (SbMatrix &mat, SbMatrix &inv) constβ rotation-space matrix + inverse.void getTranslationSpaceMatrix (SbMatrix &mat, SbMatrix &inv) constβ translation-space matrix + inverse.void multLeft (const SbMatrix &mat)β multiplies on the left.void multRight (const SbMatrix &mat)β multiplies on the right.void combineLeft (SoTransformation *nodeonright)β combines from the left.void combineRight (SoTransformation *nodeonleft)β combines from the right.void setMatrix (const SbMatrix &mat)β sets the matrix.void recenter (const SbVec3f &newcenter)β recenters it aroundnewcenter.virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)β primitive-count handling.
β¨ Public Member Functions inherited from SoNode
void setOverride (const SbBool state)β sets the override state.SbBool isOverride (void) constβ is it overriding? asks.void setNodeType (const NodeType type)β sets the node type.NodeType getNodeType (void) constβ gets the node type.virtual SoNode * copy (SbBool copyconnections=FALSE) constβ makes a copy,copyconnectionsdefaults toFALSE.virtual SbBool affectsState (void) constβ does it touch the state?virtual void GLRenderBelowPath (SoGLRenderAction *action)β renders below the path.virtual void GLRenderInPath (SoGLRenderAction *action)β renders in the path.virtual void GLRenderOffPath (SoGLRenderAction *action)β renders off the path.virtual void rayPick (SoRayPickAction *action)β ray picking. π₯virtual void write (SoWriteAction *action)β writes it out.virtual void audioRender (SoAudioRenderAction *action)β audio render, yes really.virtual void grabEventsSetup (void)β sets up event grabbing.virtual void grabEventsCleanup (void)β cleans up event grabbing.virtual void startNotify (void)β kicks off notification.virtual void notify (SoNotList *l)β notify with a list.SbUniqueId getNodeId (void) constβ the unique node id.virtual void writeInstance (SoOutput *out)β writes an instance.virtual SoNode * addToCopyDict (void) constβ adds itself to the copy dict.virtual SoFieldContainer * copyThroughConnection (void) constβ copies through a connection.
π Public Member Functions inherited from SoFieldContainer
void setToDefaults (void)β resets everything to defaults.SbBool hasDefaultValues (void) constβ are all the values default?SbBool fieldsAreEqual (const SoFieldContainer *container) constβ compares fields with another container.void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)β copies field values over,copyconnectionsdefaults toFALSE.SbBool set (const char *const fielddata)β sets from a fielddata string.void get (SbString &fielddata)β gets the fielddata into anSbString.virtual int getFields (SoFieldList &l) constβ fills the field list.virtual int getAllFields (SoFieldList &l) constβ fills the list with all the fields.virtual SoField * getField (const SbName &name) constβ grabs a field by name.virtual SoField * getEventIn (const SbName &name) constβ grabs an event-in by name.virtual SoField * getEventOut (const SbName &name) constβ grabs an event-out by name.SbBool getFieldName (const SoField *const field, SbName &name) constβ looks up a field's name.SbBool enableNotify (const SbBool flag)β toggles notifications.SbBool isNotifyEnabled (void) constβ are notifications on?SbBool set (const char *fielddata, SoInput *input)β sets from fielddata with anSoInput.void get (SbString &fielddata, SoOutput *out)β gets fielddata with anSoOutput.virtual SbBool validateNewFieldValue (SoField *field, void *newval)β validates a new field value.virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)β adds a write reference,isfromfielddefaults toFALSE.SbBool getIsBuiltIn (void) constβ is it built-in?virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) constβ reports field memory sizes intomanagedandunmanaged.void setUserData (void *userdata) constβ attaches user data.void * getUserData (void) constβ retrieves user data.
π Public Member Functions inherited from SoBase
void ref (void) constβ bumps the ref count. π«Άvoid unref (void) constβ drops the ref count.void unrefNoDelete (void) constβ unrefs without deleting.int32_t getRefCount (void) constβ how many refs we holding?void touch (void)β touches it (and the notification ripples out).SbBool isOfType (SoType type) constβ returnsTRUEif the type of this object is either of the same type or inherited fromtype.virtual SbName getName (void) constβ gets the name.virtual void setName (const SbName &newname)β sets the name.void addAuditor (void *const auditor, const SoNotRec::Type type)β adds an auditor.void removeAuditor (void *const auditor, const SoNotRec::Type type)β removes an auditor.const SoAuditorList & getAuditors (void) constβ returns the auditor list.SbBool shouldWrite (void)β should it write?void assertAlive (void) constβ asserts it's still alive. dramatic but fair π
π Static Public Member Functions
static SoType getClassTypeId (void)β the class'sSoType.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.
β Static Public Member Functions inherited from SoTransformManip
static SoType getClassTypeId (void)β the class'sSoType.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.
π Static Public Member Functions inherited from SoTransform
static SoType getClassTypeId (void)β the class'sSoType.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.
π« Static Public Member Functions inherited from SoTransformation
static SoType getClassTypeId (void)β the class'sSoType.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.
π Static Public Member Functions inherited from SoNode
static uint32_t getCompatibilityTypes (const SoType &nodetype)β compatibility types for a node type.static SoType getClassTypeId (void)β the class'sSoType.static SoNode * getByName (const SbName &name)β find a node by name.static int getByName (const SbName &name, SoNodeList &l)β find nodes by name into a list.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.static void initClasses (void)β initializes the classes (plural, slay).static SbUniqueId getNextNodeId (void)β the next node id in line.static int getActionMethodIndex (const SoType type)β the action method index for a type.static void getBoundingBoxS (SoAction *action, SoNode *node)β static bounding-box helper.static void GLRenderS (SoAction *action, SoNode *node)β static GL render helper.static void callbackS (SoAction *action, SoNode *node)β static callback helper.static void getMatrixS (SoAction *action, SoNode *node)β static get-matrix helper.static void handleEventS (SoAction *action, SoNode *node)β static handle-event helper.static void pickS (SoAction *action, SoNode *node)β static pick helper.static void rayPickS (SoAction *action, SoNode *node)β static ray-pick helper.static void searchS (SoAction *action, SoNode *node)β static search helper.static void writeS (SoAction *action, SoNode *node)β static write helper.static void audioRenderS (SoAction *action, SoNode *node)β static audio-render helper.static void getPrimitiveCountS (SoAction *action, SoNode *node)β static primitive-count helper.
π¦ 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 information to the Coin type system.static SoType getClassTypeId (void)β This static method returns theSoTypeobject associated with objects of this class.static void cleanupClass (void)β cleans up the class.static void initCopyDict (void)β sets up the copy dict.static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)β registers a copy.static SoFieldContainer * checkCopy (const SoFieldContainer *orig)β checks for a copy.static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)β finds a copy, withcopyconnections.static void copyDone (void)β signals copying is done.
π 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.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)β adds a name to a base.static void removeName (SoBase *const base, const char *const name)β removes a name from a base.static void incrementCurrentWriteCounter (void)β bumps the current write counter.static void decrementCurrentWriteCounter (void)β drops the current write counter.static SoBase * getNamedBase (const SbName &name, SoType type)β fetches a named base of a given type.static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)β fetches named bases into a list.static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)β reads a base from input.static void setInstancePrefix (const SbString &c)β sets the instance prefix.static void setTraceRefs (SbBool trace)β toggles ref tracing.static SbBool getTraceRefs (void)β gets the ref-trace setting.static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)β connects a route between two fields.static SbBool readRoute (SoInput *input)β reads a route from input.
πΈ Protected Member Functions
virtual const SoFieldData * getFieldData (void) constβ returns the field data.virtual ~SoTrackballManip (void)β the destructor. bye bestie π₯²
π Protected Member Functions inherited from SoTransformManip
virtual ~SoTransformManip (void)β destructor.void setDragger (SoDragger *newdragger)β sets a new dragger.virtual void copyContents (const SoFieldContainer *fromfc, SbBool copyconnections)β copies contents from another field container.void attachSensors (const SbBool onoff)β attaches or detaches sensors.
π Protected Member Functions inherited from SoTransform
virtual ~SoTransform ()β destructor.
β Protected Member Functions inherited from SoTransformation
SoTransformation (void)β constructor.virtual ~SoTransformation ()β destructor.
π¦ Protected Member Functions inherited from SoNode
SoNode (void)β constructor.virtual ~SoNode ()β destructor.virtual SbBool readInstance (SoInput *in, unsigned short flags)β reads an instance.
π« Protected Member Functions inherited from SoFieldContainer
SoFieldContainer (void)β constructor.virtual ~SoFieldContainer ()β destructor.
π Protected Member Functions inherited from SoBase
SoBase (void)β constructor.virtual ~SoBase ()β destructor.virtual void destroy (void)β destroys it.SbBool hasMultipleWriteRefs (void) constβ multiple write refs or nah?SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes a header.void writeFooter (SoOutput *out) constβ writes a footer.virtual const char * getFileFormatName (void) constβ the file format name.virtual SoNotRec createNotRec (void)β makes a notification record.
π Static Protected Member Functions
static const SoFieldData ** getFieldDataPtr (void)β pointer to the field data pointer, don't think about it too hard, it's fine.
β¨ Static Protected Member Functions inherited from SoTransformManip
static const SoFieldData ** getFieldDataPtr (void)β the field data pointer.static void transferFieldValues (const SoTransform *from, SoTransform *to)β moves field values from one transform to another.static void valueChangedCB (void *f, SoDragger *d)β the value-changed callback.static void fieldSensorCB (void *f, SoSensor *d)β the field-sensor callback.
π Static Protected Member Functions inherited from SoTransform
static const SoFieldData ** getFieldDataPtr (void)β the field data pointer.
π Static Protected Member Functions inherited from SoTransformation
static const SoFieldData ** getFieldDataPtr (void)β the field data pointer.
and bestieβ¦ that's just part one, we're not even done yet. don't go anywhere, there's more coming and it's gonna be so worth it πβ¨
π¦ Static Protected Member Functions inherited from SoNode
Like, these are the family heirlooms from SoNode that only the class itself and its subclasses get to touch, bestie. Internal vibes only:
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
And these cuties come from SoBase, same energy:
static uint32_t getCurrentWriteCounter (void)static void staticDataLock (void)static void staticDataUnlock (void)
π«Ά Additional Inherited Members
Okay so this is the whole "everything your girl also got handed down" section, and it's a lot, so buckle up:
β Public Types inherited from SoNode
The iconic NodeType enum, every single value, no skips, periodt:
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 }
π Public Attributes inherited from SoTransform
These are the fields your girl inherits and totally shows off at the function:
SoSFVec3f translationSoSFRotation rotationSoSFVec3f scaleFactorSoSFRotation scaleOrientationSoSFVec3f center
π Protected Types inherited from SoBase
Just one lil enum, living its protected life:
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
π Protected Attributes inherited from SoTransformManip
The behind-the-scenes sensor squad and the children list. So much admin, honestly:
SoFieldSensor * rotateFieldSensorSoFieldSensor * translFieldSensorSoFieldSensor * scaleFieldSensorSoFieldSensor * centerFieldSensorSoFieldSensor * scaleOrientFieldSensorSoChildList * children
π Protected Attributes inherited from SoNode
SbUniqueId uniqueId
π Protected Attributes inherited from SoFieldContainer
SbBool isBuiltIn
π§ Static Protected Attributes inherited from SoNode
static SbUniqueId nextUniqueId = 1static int nextActionMethodIndex = 0
β¨ Detailed Description β¨
Okay so the whole point of SoTrackballManip? It wraps an SoTrackballDragger for you, because convenience is the moment. π«Ά
The manipulator class takes care of wrapping up the SoTrackballDragger in a simple and convenient API for the application programmer, making it automatically surround the geometry it influences and taking care of the book-keeping routines for its interaction with the relevant fields of an SoTransformation node.
Here's a dead simple, standalone example on how to set up an SoTrackballManip in a scene graph β copy it, run it, slay:
#include <Inventor/Qt/SoQt.h>
#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
#include <Inventor/nodes/SoCone.h>
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/manips/SoTrackballManip.h>
int
main(int argc, char* argv[])
{
QWidget * mainwin = SoQt::init(argv[0]);
SoSeparator * root = new SoSeparator;
root->ref();
SoTrackballManip * manip = new SoTrackballManip;
root->addChild(manip);
root->addChild(new SoCone);
SoQtExaminerViewer * viewer = new SoQtExaminerViewer(mainwin);
viewer->setSceneGraph(root);
SoQt::show(mainwin);
SoQt::mainLoop();
root->unref();
return 0;
}
Compile and hit 'ESC' to go into scene graph interaction mode in the examiner viewer, then change the rotation of the cone by interacting with the dragger bands. That's it, that's the whole vibe. π₯
π Constructor & Destructor Documentation
SoTrackballManip::SoTrackballManip (void )
Default constructor. Allocates an SoTrackballDragger and an SoSurroundScale node to surround the geometry within our part of the scene graph. It literally sets up its whole little world for you. π
SoTrackballManip::~SoTrackballManip (void ) [protected], [virtual]
Destructor. Cleanup time bestie, we don't leave messes.
π« Member Function Documentation
SoType SoTrackballManip::getClassTypeId (void ) [static]
This static method returns the SoType object associated with objects of this class.
SoType SoTrackballManip::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.
Reimplemented from SoTransformManip.
const SoFieldData ** SoTrackballManip::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 likeβ¦ not your business, but okay, we're telling you anyway. π
Returns the SoFieldData class which holds information about fields in this node.
const SoFieldData * SoTrackballManip::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.
Reimplemented from SoTransformManip.
π Author
Generated automatically by Doxygen for Coin from the source code.
And that's the whole page, bestie β no cap, you read all of it. π This one's from Version 4.0.10, dated Thu Jun 25 2026 00:00:00, and it's filed under SoTrackballManip(3). Go forth and rotate your cones. π
π
π¦ 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