SOTRANSFORMERMANIP(3iv)

πŸ’– SoTransformerManip πŸ’–

okay bestie, welcome to the manual page for SoTransformerManip(3IV) β€” yes that's the whole title, no notes. this is the Open Inventor one, and she is thriving.


🌸 NAME 🌸

SoTransformerManip β€” a transform node with a 3D interface for changing scaling, rotation, and translation. it's giving "i let you drag stuff around in 3D space and it actually feels good" ✨


πŸ¦‹ INHERITS FROM πŸ¦‹

the whole glow-up lineage, in order:

SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform >
SoTransformManip > SoTransformerManip

she comes from a long line of iconic nodes and she knows it πŸ’…


✨ SYNOPSIS ✨

first things first, you gotta include her:

#include <Inventor/manips/SoTransformerManip.h>

πŸŽ€ Fields from class SoTransform

SoSFVec3f           translation
SoSFRotation        rotation
SoSFVec3f           scaleFactor
SoSFRotation        scaleOrientation
SoSFVec3f           center

πŸŽ€ Methods from class SoTransformerManip

                     SoTransformerManip()
static SoType        getClassTypeId()
void                 setLocateHighlighting(SbBool onOff )
SbBool               isLocateHighlighting()
void                 unsquishKnobs()

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

okay so. this is a new manipulator with some improvements over the older inventor manips. she's the upgraded version, the remix, the deluxe edition. here's the feature list, bestie:

  1. full interface for rotate, translate, and scale πŸ”₯
  2. better feedback πŸ’…
  3. locate highlighting ✨

SoTransformerManip is derived from SoTransform (by way of SoTransformManip). so like, when its fields change, the nodes following it in the scene graph rotate, scale, and/or translate. the whole downstream squad gets moved, no cap.

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 scaleFactor, rotation and translation fields. those three are the main characters here πŸ‘‘

so, a manipulator differs from a dragger β€” and this is the important part, don't skip it:

  • 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 for the full tea β˜•)

the interface for an SoTransformerManip is exactly the same as that of the SoTransformerDragger. to find out more about the interface, see the reference page for SoTransformerDragger. to find out how the manipulator uses a dragger to provide its interface, see the reference page for SoTransformManip. it's a whole ecosystem, iykyk.

on screen, this manipulator 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). she literally wraps around your stuff. protective queen energy 🫢


⭐ METHODS ⭐

  • SoTransformerManip() β€” the constructor. hi bestie, she's born ✨
  • static SoType getClassTypeId() β€” returns the type identifier for this class. classic. every class has one, it's their little ID card πŸ’³
  • void setLocateHighlighting(SbBool onOff ) SbBool isLocateHighlighting() β€” controls whether or not the dragger inside this manip will perform locate highlighting. default is TRUE. so like, on by default, she's ✨lit✨.
  • void unsquishKnobs() β€” tells the dragger inside this manip to unsquish its rotation and scale knobs during the next traversal. ordinarily, the knobs are only unsquished upon readin from file and when the mouse button is released at the end of a drag. so if you want this to happen more often, then you should call this method. that's it, that's the whole thing. call it when you want the knobs un-squished, periodt πŸ’…

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

here's what she looks like fresh out the box, defaults and all:

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

nothing moved, nothing rotated, nothing scaled. blank slate, main character energy, ready for whatever 🌈


🌈 SEE ALSO 🌈

the whole friend group, go say hi:

  • SoTransformerDragger
  • SoTransform
  • SoCenterballManip
  • SoHandleBoxManip
  • SoJackManip
  • SoTabBoxManip
  • SoTrackballManip
  • SoTransformBoxManip
  • SoTransformManip

πŸ’€ reminder bestie: SoTransformerManip(3IV) β€” that's the manual section, don't come for me about the parentheses.

okay that's the whole page, you ate that, go build something cute with it πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ«ΆπŸ‘‘

this has been SoTransformerManip(3IV) β€” source/version line: SoTransformerManip(3IV)() πŸŽ€ stay iconic ✨