SOTRACKBALLMANIP(3iv)

πŸ’« SoTrackballManip β€” NAME πŸ’«

okay bestie, meet SoTrackballManip β€” a transform node that comes with a whole 3D interface for changing rotation and scaling. it's giving "spin the ball, resize the thing" energy fr fr πŸŽ€


🌸 INHERITS FROM 🌸

SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform >
SoTransformManip > SoTrackballManip

like yes she has a whole ancestry, a whole lineage, main character bloodline πŸ’…


✨ SYNOPSIS ✨

#include <Inventor/manips/SoTrackballManip.h>

🫢 Fields from class SoTransform

SoSFVec3f           translation
SoSFRotation        rotation
SoSFVec3f           scaleFactor
SoSFRotation        scaleOrientation
SoSFVec3f           center

πŸ¦‹ Methods from class SoTrackballManip

                     SoTrackballManip()
static SoType       getClassTypeId()

πŸ’œ Methods from class SoTransformManip

SoDragger *         getDragger()
SbBool              replaceNode(SoPath *p )
SbBool              replaceManip(SoPath *p, SoTransform *newOne ) const

🌈 Methods from class SoTransform

void                pointAt(const SbVec3f &fromPoint, const SbVec3f
                         &toPoint)
void                getScaleSpaceMatrix(SbMatrix &mat, SbMatrix &inv)
                         const
void                getRotationSpaceMatrix(SbMatrix &mat, SbMatrix &inv)
                         const
void                getTranslationSpaceMatrix(SbMatrix &mat, SbMatrix
                         &inv) const
void                multLeft(const SbMatrix &mat)
void                multRight(const SbMatrix &mat)
void                combineLeft(SoTransformation *nodeOnRight)
void                combineRight(SoTransformation *nodeOnLeft)
void                setMatrix(const SbMatrix &mat)
void                recenter(const SbVec3f &newCenter)

πŸŽ€ 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 πŸ‘‘

so SoTrackballManip is derived from SoTransform (by way of SoTransformManip, the little middle-man, love that for her). when its fields change, the nodes following it in the scene graph rotate, scale, and/or translate. periodt. πŸ’«

as a subclass of SoTransformManip, this manipulator also has a 3D interface to edit some of its fields. in this case, the interface edits the rotation and scaleFactor fields. so cute, so useful.

now, a manipulator differs from a dragger, and this part matters bestie, listen up 🫢 β€” when you move a dragger, no other nodes are affected. when you move an SoTransformManip, other nodes move along with it. (see the reference page for SoTransformManip).

the interface for an SoTrackballManip is exactly the same as that of the SoTrackballDragger. to find out more about the interface, see the reference page for SoTrackballDragger. to find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip. iykyk πŸ’…

on screen, this manipulator will surround the objects influenced by its motion. this is because it turns on the surroundScale part of the dragger (see the reference page for SoSurroundScale). it literally hugs your objects. iconic behaviour honestly πŸŽ€


πŸ”₯ METHODS πŸ”₯

  • SoTrackballManip() β€” the constructor. she's born ✨
  • static SoType getClassTypeId() β€” returns the type identifier for this class. the ID card, if you will πŸͺͺ

🧚 FILE FORMAT/DEFAULTS 🧚

TrackballManip {
    translation       0 0 0
    rotation          0 0 1  0
    scaleFactor       1 1 1
    scaleOrientation  0 0 1  0
    center            0 0 0
}

look at those defaults, all chill and zeroed out, no cap πŸ’œ


🌸 SEE ALSO 🌸

  • SoCenterballManip
  • SoHandleBoxManip
  • SoJackManip
  • SoTabBoxManip
  • SoTrackballDragger
  • SoTransformBoxManip
  • SoTransformerManip
  • SoTransform
  • SoTransformManip

πŸ’– that's the whole page bestie. every flag, every field, every signature, every default β€” all of it, none skipped, we don't do that here.

this lil legend right here is SoTrackballManip, and she lives in the (3IV) section, fr fr β€” that's the tag on her name and the tag on the page footer too. go forth and rotate, you absolute icon πŸŒˆβœ¨πŸ‘‘