SOTABBOXMANIP(3iv)

πŸ’… SoTabBoxManip β€” the 3IV manual, but make it make sense ✨

okay bestie, sit down, hydrate, and let's talk about SoTabBoxManip πŸŽ€ β€” it's a transform node, but make it a 3D interface for editing scale and translation. yes, it is as iconic as it sounds.


🌸 INHERITS FROM

the whole family tree, and she's got main character energy at every level:

SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform >
SoTransformManip > SoTabBoxManip

✨ SYNOPSIS ✨

first, the include, because duh:

#include <Inventor/manips/SoTabBoxManip.h>

πŸ¦‹ Fields from class SoTransform

these are the fields she inherits, and no we are NOT skipping any of them:

SoSFVec3f           translation
SoSFRotation        rotation
SoSFVec3f           scaleFactor
SoSFRotation        scaleOrientation
SoSFVec3f           center

πŸŽ€ Methods from class SoTabBoxManip

her very own:

                     SoTabBoxManip()
 static SoType       getClassTypeId()

🌈 Methods from class SoTransformManip

inherited, still slaying:

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

πŸ’– Methods from class SoTransform

the full roster, literally all of them:

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

the OGs, the foundation, the blueprint:

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 SoTabBoxManip is derived from SoTransform (by way of SoTransformManip, iykyk). and the way that works is: when its fields change, the nodes that come after it in the scene graph scale, and/or translate. that's the whole gig. periodt.

as a subclass of SoTransformManip, this manip also comes with a 3D interface so you can edit some of its fields. in this case, that interface edits the scaleFactor and translation fields. obsessed.

now, a manipulator is NOT the same thing as a dragger, and this is important so listen up 🫢:

  • move a dragger β†’ no other nodes are affected. it's giving solo act.
  • move an SoTransformManip β†’ other nodes move along with it. it's giving group project that actually works.

(see the reference page for SoTransformManip for the full tea.)

the interface for an SoTabBoxManip is exactly the same as that of the SoTabBoxDragger. to find out more about the interface, see the reference page for SoTabBoxDragger. and to find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.

on screen, this manip will surround the objects influenced by its motion 🌈. why? because it turns on the surroundScale part of the dragger. (see the reference page for SoSurroundScale for the receipts.)


πŸ”₯ METHODS

  • SoTabBoxManip() β€” constructor. the birth. the origin story. πŸ’«
  • static SoType getClassTypeId() β€” returns the type identifier for this class. her ID, her passport, her little name tag 🏷️

🌟 FILE FORMAT/DEFAULTS

the default vibes, verbatim, no notes:

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

πŸ‘‘ SEE ALSO

the whole friend group, go say hi:

SoCenterballManip, SoHandleBoxManip, SoJackManip, SoTabBoxDragger, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManip


that's the whole page bestie, no cap, every flag, every field, every default, all of it. you're welcome πŸ’–

and that's a wrap on the SoTabBoxManip(3IV) page, brought to you by the 3IV manual, dated whenever this dropped, version whatever shipped with it β€” mwah, slay, go surround some objects βœ¨πŸ¦‹πŸ’