SOROTATESPHERICALDRAGGER(3iv)

πŸ’– NAME πŸ’–

okay bestie, welcome to the SoRotateSphericalDragger(3IV) page β€” this is the whole vibe: it's an object you can rotate about a spherical surface by dragging with the mouse. no cap, that's literally it.


πŸ¦‹ INHERITS FROM πŸ¦‹

the family tree goes like this, and yes she's deep in the lineage:

SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit >
SoDragger > SoRotateSphericalDragger

✨ SYNOPSIS ✨

first things first, you gotta pull her in:

#include <Inventor/draggers/SoRotateSphericalDragger.h>

Fields from class SoRotateSphericalDragger:

SoSFRotation        rotation

Fields from class SoDragger:

SoSFBool            isActive

Fields from class SoInteractionKit:

SoSFEnum            renderCaching
SoSFEnum            boundingBoxCaching
SoSFEnum            renderCulling
SoSFEnum            pickCulling

Parts from class SoBaseKit:

(SoNodeKitListPart)  callbackList

Methods from class SoRotateSphericalDragger:

                             SoRotateSphericalDragger()
void                       setProjector(SbSphereProjector *p)
const SbSphereProjector *  getProjector() const
static const SoNodekitCatalog *
                             getClassNodekitCatalog() const
static SoType              getClassTypeId()

Methods from class SoDragger:

void                addStartCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                removeStartCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                addMotionCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                removeMotionCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                addFinishCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                removeFinishCallback(SoDraggerCB *f, void *userData =
                         NULL)
void                addValueChangedCallback(SoDraggerCB *f, void *userData
                         = NULL)
void                removeValueChangedCallback(SoDraggerCB *f, void
                         *userData = NULL)
SbBool              enableValueChangedCallbacks()
void                setMinGesture(int pixels)
int                 getMinGesture() const
static void         setMinScale(float newMinScale)
static float        getMinScale()

Methods from class SoInteractionKit:

virtual SbBool      setPartAsPath(const SbName &partName, SoPath
                         *surrogatePath )

Methods from class SoBaseKit:

virtual const SoNodekitCatalog *
                         getNodekitCatalog() const
virtual SoNode *         getPart(const SbName &partName, SbBool
                              makeIfNeeded)
SbString                 getPartString(const SoBase *part)
virtual SoNodeKitPath *  createPathToPart(const SbName &partName, SbBool
                              makeIfNeeded, const SoPath *pathToExtend =
                              NULL)
virtual SbBool           setPart(const SbName &partName, SoNode *newPart)
SbBool                   set(char *partName, char *parameters)
SbBool                   set(char *nameValuePairs)
static SbBool            isSearchingChildren()
static void              setSearchingChildren(SbBool newVal)

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)
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

Macros from class SoBaseKit:

SO_GET_PART(kit, partName, partClass)
SO_CHECK_PART(kit, partName, partClass)

πŸŽ€ DESCRIPTION πŸŽ€

so SoRotateSphericalDragger is a simple dragger that rotates freely in all directions. the feel of it? it's giving "you're rolling a ball with your hand" πŸ€βœ¨.

the center of rotation is the origin of the local space, which is decided by where the dragger sits in the scene graph. and listen β€” transformation nodes placed before it will affect both the dragger and the direction of motion. so keep that in mind, bestie.

this node has a rotation field that always reflects its orientation in local space. if you set the field, the dragger rotates accordingly. you can also connect fields of other nodes or engines from this one to make them follow the dragger's orientation. obsessed, honestly πŸ’….

this dragger contains four parts: rotator, rotatorActive, feedback, and feedbackActive.

each of these is set by default from a resource described in the Dragger Resources section of the online reference page for this class. you can change the parts in any instance of this dragger using setPart().

you can make your program use different default resources for the parts by copying the file

/usr/share/data/draggerDefaults/rotateSphericalDragger.iv

into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory. yes ma'am, custom defaults, we love to see it 🌸.


🌈 FIELDS 🌈

  • SoSFRotation rotation β€” Orientation of the dragger.

⭐ METHODS ⭐

                             SoRotateSphericalDragger()
  • Constructor. the classic. she's born ✨
void                       setProjector(SbSphereProjector *p)
const SbSphereProjector *  getProjector() const
  • Set and get a different sphere projector. peep the SbSphereProjector man pages to find out how each kind affects the feel of your dragger's motion. the default uses an SbSpherePlaneProjector.
  • Passing in NULL will cause the default type of projector to be used. Any projector you pass in will be deleted by this dragger when this dragger is deleted 🫢 (so don't go deleting it yourself, that's a whole mess). Note that the center and radius of the sphere are determined by the dragger, based on the origin of the local space and the distance between the initial mouse click and that origin.
static const SoNodekitCatalog *
                             getClassNodekitCatalog() const
  • Returns an SoNodekitCatalog for this class
static SoType              getClassTypeId()
  • Returns type identifier for this class.

πŸ”₯ CATALOG PARTS πŸ”₯

All parts

  • callbackList β€” Part Type: NodeKitListPart; Default Type: --; NULL by Default: yes
  • rotator β€” Part Type: Separator; Default Type: --; NULL by Default: yes
  • rotatorActive β€” Part Type: Separator; Default Type: --; NULL by Default: yes
  • feedback β€” Part Type: Separator; Default Type: --; NULL by Default: yes
  • feedbackActive β€” Part Type: Separator; Default Type: --; NULL by Default: yes

πŸ’œ Extra information for list parts from above table

  • callbackList β€” Container Type: Separator; Permissible Types: Callback, EventCallback

🧚 DRAGGER RESOURCES 🧚

Resource: rotateSphericalRotator

  • Part: rotator
  • Appearance: white sphere made of three intersecting circles. Each circle is in a different plane of local space
  • Description: picking this initiates rotation

Resource: rotateSphericalRotatorActive

  • Part: rotatorActive
  • Appearance: yellow version of rotator
  • Description: displayed while in motion instead of the rotator

Resource: rotateSphericalFeedback

  • Part: feedback
  • Appearance: thin purple 3-D crosshairs at origin
  • Description: shows center of rotation when not moving

Resource: rotateSphericalFeedbackActive

  • Part: feedbackActive
  • Appearance: thin, slightly brighter purple 3-D crosshairs at origin
  • Description: shows center of rotation when moving

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

RotateSphericalDragger {
   renderCaching       AUTO
   boundingBoxCaching  AUTO
   renderCulling       AUTO
   pickCulling         AUTO
   isActive            FALSE
   rotation            0 0 1  0
   callbackList        NULL
   rotator             <rotateSphericalRotator resource>
   rotatorActive       <rotateSphericalRotatorActive resource>
   feedback            <rotateSphericalFeedback resource>
   feedbackActive      <rotateSphericalFeedbackActive resource>
}

πŸ‘‘ SEE ALSO πŸ‘‘

go read these next, bestie, the whole dragger cinematic universe:

  • SoInteractionKit
  • SoDragger
  • SoCenterballDragger
  • SoDirectionalLightDragger
  • SoDragPointDragger
  • SoHandleBoxDragger
  • SoJackDragger
  • SoPointLightDragger
  • SoRotateCylindricalDragger
  • SoRotateDiscDragger
  • SoScale1Dragger
  • SoScale2Dragger
  • SoScale2UniformDragger
  • SoScaleUniformDragger
  • SoSpotLightDragger
  • SoTabBoxDragger
  • SoTabPlaneDragger
  • SoTrackballDragger
  • SoTransformBoxDragger
  • SoTransformerDragger
  • SoTranslate1Dragger
  • SoTranslate2Dragger

and that's the whole page, periodt πŸ’… this was SoRotateSphericalDragger(3IV)() β€” manual name SoRotateSphericalDragger, section 3IV, no extra version or date info on the line itself, just that exact footer text. mwah, go rotate something spherical πŸŽ€βœ¨