SOCENTERBALLMANIP(3iv)

πŸ’– SoCenterballManip πŸ’–

okay so bestie, we're reading the SoCenterballManip(3IV) page together, and honestly? it's giving main character energy. it's a transform node with a whole 3D interface for editing rotation and center. periodt.


✨ NAME ✨

SoCenterballManip β€” a transform node with a 3D interface for editing rotation and center πŸ’…


🌸 INHERITS FROM 🌸

the whole glow-up lineage, in order:

SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform >
SoTransformManip > SoCenterballManip

πŸ¦‹ SYNOPSIS πŸ¦‹

first things first, you gotta include the header:

#include <Inventor/manips/SoCenterballManip.h>

πŸŽ€ Fields from class SoTransform

these are the fields it inherits, no cap:

SoSFVec3f           translation
SoSFRotation        rotation
SoSFVec3f           scaleFactor
SoSFRotation        scaleOrientation
SoSFVec3f           center

πŸŽ€ Methods from class SoCenterballManip

its own two little icons:

                     SoCenterballManip()
 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 SoCenterballManip is derived from SoTransform (by way of SoTransformManip, iykyk). the tea is: when its fields change, nodes following it in the scene graph rotate, scale, and/or translate. literally they just get dragged along with it 😭

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 center fields. just those two. iconic.

now, a manipulator differs from a dragger, and this part matters bestie. 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 SoCenterballManip is exactly the same as that of the SoCenterballDragger. to find out more about the interface, see the reference page for SoCenterballDragger. to find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip.

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


🌈 METHODS 🌈

  • SoCenterballManip() β€” the constructor, bestie. it makes one.
  • static SoType getClassTypeId() β€” returns the type identifier for this class.

πŸ“ FILE FORMAT/DEFAULTS πŸ“

here's exactly what it looks like when you write it out, defaults and all:

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

⭐ SEE ALSO ⭐

go read these next, fr fr:

SoCenterballDragger, SoHandleBoxManip, SoJackManip, SoTabBoxManip, SoTrackballManip, SoTransformBoxManip, SoTransformerManip, SoTransform, SoTransformManip


that's the whole page, no skips, no cuts πŸ’–

and for the cute sign-off: the footer on this one is literally just SoCenterballManip(3IV)() β€” no source, no version, no date, it's giving mysterious. we love that for it. 🫢✨πŸ’