SOHANDLEBOXMANIP(3iv)

πŸ’… SoHandleBoxManip β€” from the 3IV manual, bestie

okay so picture this: you're in Open Inventor, you've got a scene graph, and you need a lil 3D gizmo that lets you drag scale and translation around like it's a TikTok transition. That's this. That's the whole vibe. Let's go. πŸŽ€


✨ NAME ✨

SoHandleBoxManip β€” a transform node with a 3D Interface for Editing ScaleFactor and Translation. πŸ’–


🌸 INHERITS FROM 🌸

SoBase > SoFieldContainer > SoNode > SoTransformation > SoTransform >
SoTransformManip > SoHandleBoxManip

yeah she's got a whole ancestry, generational wealth of node classes, we love a lineage πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <Inventor/manips/SoHandleBoxManip.h>

⭐ Fields from class SoTransform

  • SoSFVec3f β€” translation
  • SoSFRotation β€” rotation
  • SoSFVec3f β€” scaleFactor
  • SoSFRotation β€” scaleOrientation
  • SoSFVec3f β€” center

⭐ Methods from class SoHandleBoxManip

  • SoHandleBoxManip()
  • 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 πŸ‘‘

SoHandleBoxManip is derived from SoTransform (by way of SoTransformManip, so like, it's the child of a child, very nepo baby of it honestly πŸ’…). When its fields change, nodes following it in the scene graph rotate, scale, and/or translate. ✨

As a subclass of SoTransformManip, this manip also has a 3D interface to edit some of its fields. In this case? The interface edits the scaleFactor and translation fields. That's the assignment, and she ate. πŸ“

🫢 A manipulator differs from a dragger. 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 SoHandleBoxManip is exactly the same as that of the SoHandleBoxDragger. To find out more about the interface, go read the reference page for SoHandleBoxDragger. And to find out how the manipulator uses a dragger to provide its interface, go read the reference page for SoTransformManip. iykyk πŸ“š

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). It's giving main character energy, obviously β€” it's literally surrounding the whole scene. πŸ’€


🧚 METHODS 🧚

  • SoHandleBoxManip() β€” Constructor. Makes the thing. That's it, that's the whole job, and she does it flawlessly. πŸŽ€
  • static SoType getClassTypeId() β€” Returns the type identifier for this class. Your lil name tag at the function party. 🏷️

🌈 FILE FORMAT/DEFAULTS 🌈

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

no cap, these are the defaults, and they are immaculate: nothing moved, nothing rotated, nothing scaled, everything centered. the neutral pose. the resting face. 😌


⭐ SEE ALSO ⭐

  • SoCenterballManip
  • SoHandleBoxDragger
  • SoJackManip
  • SoTabBoxManip
  • SoTrackballManip
  • SoTransformBoxManip
  • SoTransformerManip
  • SoTransform
  • SoTransformManip

and that's the whole page, bestie 🫢 the footer just says SoHandleBoxManip(3IV)() all over again β€” no version number, no date, just vibes and a page number. so here's my sign-off instead: stay iconic, keep your scale factor at 1 1 1, and go surround some objects. mwah. πŸ’–βœ¨πŸŒΈ