SOTRANSFORMERDRAGGER(3iv)
π SoTransformerDragger(3IV) π
okay bestie, welcome to the SoTransformerDragger(3IV) manual. This one is a box-like object you scale, rotate, and translate by dragging with the mouse. She is literally giving main character energy, fr fr. π
β¨ NAME β¨
SoTransformerDragger β box-like object you scale, rotate, and translate by dragging with the mouse
π INHERITS FROM π
SoBase > SoFieldContainer > SoNode > SoBaseKit > SoInteractionKit > SoDragger > SoTransformerDragger
π¦ SYNOPSIS π¦
okay so here is the whole cast list, no cap:
#include <Inventor/draggers/SoTransformerDragger.h>
Fields from class SoTransformerDragger:
SoSFRotation rotation
SoSFVec3f translation
SoSFVec3f scaleFactor
SoSFFloat minDiscRotDot
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 SoTransformerDragger:
SoTransformerDragger()
static const SoNodekitCatalog *
getClassNodekitCatalog() const
static SoType getClassTypeId()
static const SoNodekitCatalog *
getClassNodekitCatalog() const
static SoType getClassTypeId()
void setColinearThreshold(int newVal )
int getColinearThreshold()
void setLocateHighlighting(SbBool onOff )
SbBool isLocateHighlighting()
void unsquishKnobs()
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 π
SoTransformerDragger is a dragger shaped like a box. It has small cubes at the corners and small balls sticking out of the middle of each face. Click and drag any face of the box for 2D translation in the plane of that face. Drag any corner-cube to scale the box uniformly. Pick any of the mid-face balls to rotate the whole dragger about its center. Iconic behavior, honestly. π
The SoTransformerDragger uses locate highlighting, so you can tell which part you are about to select before pressing the mouse button. By default, the locate highlight color is gold. β¨
Click-drag any face to translate the dragger within the plane of that face. The face you selected will highlight in yellow. While you drag, yellow feedback arrows display the two directions of motion. Press the <Shift> key and the arrows turn orange; you may now pick between these two directions to constrain the motion. The direction you move the cursor in will determine which direction is chosen. Press the <Control> key and the dragger will translate perpendicular to that plane. The translation field is modified as the face is dragged.
Click a corner to scale the dragger. The corner you selected will turn yellow and radial lines will indicate that you may move toward and away from the center of the box. Drag radially and you will perform uniform scale. Press the <Control> key to scale about the opposite corner instead of the center of the box.
To stretch the dragger non-uniformly, press <Shift> when you drag the corner cube. Now you will see three orange arrows indicating that your gesture will determine which direction to choose. Move the cursor and the selected arrow will turn yellow while the others disappear. Now the dragger will stretch only in the direction you selected. Pressing <Control> at the same time as <Shift> allows you to stretch the dragger while keeping the opposite side pinned in place. When you drag a corner, this modifies the scaleFactor and possibly the translation field of the dragger.
Click one of the spherical knobs to rotate the dragger. When you first click, you'll see two orange lines and two purple circles. The purple circles indicate the two ways you can rotate. The orange lines are, once again, the two choices for your mouse gesture. Each line begins you moving around one of the two circles. Once you move the cursor far enough, the selected line turns yellow and you begin rotating the dragger about the selected circle. The other circle and line will disappear.
To perform unconstrained ("free") rotation, just press <Shift> while you drag the spherical knob. There will be no choices; instead all three purple circles will be displayed, forming a ball that you can roll around. Regardless of how you rotate, dragging the spherical knobs will modify the rotatation field of the dragger. Depending on how it is centered and what transforms precede it in the scene graph, rotation is likely to affect the translation and scaleFactor fields as well.
Pressing the <Control> key will change the center of rotation in both the constrained and unconstrained (<Shift>) case. By default, rotation occurs about the center of the bounding box. With <Control> depressed, rotation occurs about the middle of the opposite side of the bounding box. The purple feedback will change to illustrate this; the feedback circles increase in size and purple crosshairs sprout at the new rotational center.
Ordinarily, the knobs of the dragger are unsquished upon readin from file and when the mouse button is released at the end of a drag. If you want this to happen more often, then you should call the method unsquishKnobs.
As with all draggers, if you change the fields the dragger will move to match the new settings.
Remember: This is not an SoTransform!. If you want to move other objects with this dragger, you can either:
- [a] Use an
SoTransformerManip, which is subclassed fromSoTransform. It creates one of these draggers and uses it as the interface to change its fields. (see theSoTransformerManipman page). - [b] Use field-to-field connections to connect the fields of this dragger to those of any
SoTransformationnode.
You can change the parts in any instance of this dragger using setPart(). The default part geometries are defined as resources for this SoTransformerDragger class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file /usr/share/data/draggerDefaults/transformerDragger.iv into your own directory, editing the file, and then setting the environment variable SO_DRAGGER_DIR to be a path to that directory.
π FIELDS π
SoSFRotation rotationβ Orientation of the dragger. πSoSFVec3f translationβ Position of the dragger. πSoSFVec3f scaleFactorβ Scale of the dragger. πSoSFFloat minDiscRotDotβ Specifies the minimum dot product betweeneyeDirandrotPlanenormal before switching from record-player-type rotation to rolling-pin-type rotation. This transition is made so that rotations don't get screwy when the circle is edge-on. Lies in range [0-1]. Best to leave this alone. π«
β¨ METHODS β¨
ok so here's where the dragger actually does stuff π all of these are the public methods, and yes, the manpage lists a couple of them twice, so bestie, you're getting them twice too. no cap, that's just what it says. π«Ά
SoTransformerDragger()β the Constructor. that's it, that's the whole thing, it builds the thing. iconic behavior. β¨static const SoNodekitCatalog * getClassNodekitCatalog() constβ Returns anSoNodekitCatalogfor this class.static SoType getClassTypeId()β Returns type identifier for this class.static const SoNodekitCatalog * getClassNodekitCatalog() constβ Returns anSoNodekitCatalogfor this class. (yes babe it's listed again. twice the catalog, twice the slay. π)static SoType getClassTypeId()β Returns type identifier for this class. (also a rerun. the manpage said it twice so I'm saying it twice. periodt.)void setColinearThreshold(int newVal )int getColinearThreshold()β okay so these two are a pair, and the tea is: when you're picking a direction for constraining based on gesture, this parameter decides how many pixels have to separate two axes before they count as actually distinct. if they get judged as "the same", then the shorter of the two gets discarded. so basically: pixels apart = different vibes, pixels together = one vibe, and the little one goes π«₯void setLocateHighlighting(SbBool onOff )SbBool isLocateHighlighting()β Controls whether or not locate highlighting is used. Default isTRUE. so by default, yes, the highlight is happening. πvoid unsquishKnobs()β Tells the dragger to unsquish its rotation and scale knobs during the next traversal. ordinarily the knobs only get unsquished upon readin from file and when the mouse button is released at the end of a drag. if you want this to happen more often, then you should call this method. the knobs are being compressed and you're giving them room to breathe, and honestly? relatable. π¦
π CATALOG PARTS π
All parts
ngl this was a table in the original and I'm not allowed to do tables, so here's every single part, its type, its default type, and whether it's NULL by default. spoiler: every single one is yes. all of them. the whole roster. π
callbackListβ Part Type:NodeKitListPartβ Default Type:--β NULL by Default:yessurroundScaleβ Part Type:SurroundScaleβ Default Type:--β NULL by Default:yestranslator1β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator1Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator2β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator2Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator3β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator3Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator4β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator4Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator5β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator5Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator6β Part Type:Separatorβ Default Type:--β NULL by Default:yestranslator6Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator1β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator1Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator2β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator2Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator3β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator3Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator4β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator4Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator5β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator5Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator6β Part Type:Separatorβ Default Type:--β NULL by Default:yesrotator6Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale1β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale1Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale2β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale2Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale3β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale3Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale4β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale4Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale5β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale5Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale6β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale6Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale7β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale7Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscale8β Part Type:Separatorβ Default Type:--β NULL by Default:yesscale8Activeβ Part Type:Separatorβ Default Type:--β NULL by Default:yesxAxisFeedbackActiveβ Part Type:Separatorβ Default Type:--β NULL by Default:yesxAxisFeedbackSelectβ Part Type:Separatorβ Default Type:--β NULL by Default:yesxCrosshairFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesyAxisFeedbackActiveβ Part Type:Separatorβ Default Type:--β NULL by Default:yesyAxisFeedbackSelectβ Part Type:Separatorβ Default Type:--β NULL by Default:yesyCrosshairFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yeszAxisFeedbackActiveβ Part Type:Separatorβ Default Type:--β NULL by Default:yeszAxisFeedbackSelectβ Part Type:Separatorβ Default Type:--β NULL by Default:yeszCrosshairFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yestranslateBoxFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesscaleBoxFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposXWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposXRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposYWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposYRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposZWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesposZRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegXWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegXRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegYWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegYRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegZWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesnegZRoundWallFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesradialFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesxCircleFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yesyCircleFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yeszCircleFeedbackβ Part Type:Separatorβ Default Type:--β NULL by Default:yes
Extra information for list parts from above table
only one of the parts above is a list part, and here's its whole situation πΈ
callbackListβ Container Type:Separatorβ Permissible Types:Callback,EventCallback
π DRAGGER RESOURCES π
okay bestie this section is the aesthetic section. every part of this dragger can be restyled through resources, and here's every single one with its resource name, which part it maps to, what it looks like, and what it's for. grab a snack, there's a lot. π
- Resource:
transformerLocateMaterial- Part:
none - Appearance: Gold diffuse and emissive color
- Description: Locate highlight color used for all parts.
- Part:
- Resource:
transformerOverallStyle- Part:
overallStyle - Appearance: White Low-Complexity lines
- Description: If nothing else specified, this is style of the part.
- Part:
- Resource:
transformerTranslator1- Part:
translator1 - Appearance: White Line-Style Square
- Description: Top face of transformer. Picking this initiates translation in x-z plane.
- Part:
- Resource:
transformerTranslator2- Part:
translator2 - Appearance: White Line-Style Square
- Description: Bottom face of transformer. Picking this initiates translation in x-z plane.
- Part:
- Resource:
transformerTranslator3- Part:
translator3 - Appearance: White Line-Style Square
- Description: Left face of transformer. Picking this initiates translation in y-z plane.
- Part:
- Resource:
transformerTranslator4- Part:
translator4 - Appearance: White Line-Style Square
- Description: Right face of transformer. Picking this initiates translation in y-z plane.
- Part:
- Resource:
transformerTranslator5- Part:
translator5 - Appearance: White Line-Style Square
- Description: Front face of transformer. Picking this initiates translation in x-y plane.
- Part:
- Resource:
transformerTranslator6- Part:
translator6 - Appearance: White Line-Style Square
- Description: Back face of transformer. Picking this initiates translation in x-y plane.
- Part:
- Resource:
transformerTranslator1Active- Part:
translator1Active - Appearance: Yellow version of
transformerTranslator1 - Description: Replaces
transformerTranslator1during dragging.
- Part:
- Resource:
transformerTranslator2Active- Part:
translator2Active - Appearance: Yellow version of
transformerTranslator2 - Description: Replaces
transformerTranslator2during dragging.
- Part:
okay so the translator "active" knobs β these are the glow-up versions that show up the second you start dragging, bestie. yellow = you're in the middle of something. π
- Resource:
transformerTranslator3Active- Part:
translator3Active - Appearance: Yellow version of
transformerTranslator3 - Description: Replaces
transformerTranslator3during dragging.
- Part:
- Resource:
transformerTranslator4Active- Part:
translator4Active - Appearance: Yellow version of
transformerTranslator4 - Description: Replaces
transformerTranslator4during dragging.
- Part:
- Resource:
transformerTranslator5Active- Part:
translator5Active - Appearance: Yellow version of
transformerTranslator5 - Description: Replaces
transformerTranslator5during dragging.
- Part:
- Resource:
transformerTranslator6Active- Part:
translator6Active - Appearance: Yellow version of
transformerTranslator6 - Description: Replaces
transformerTranslator6during dragging.
- Part:
now the rotators π green sphere on a lil stick, and grabbing it is the whole vibe β that's how you start a rotation, no cap. six of them, one per direction, because of course.
- Resource:
transformerRotator1- Part:
rotator1 - Appearance: Green Sphere at end of a stick
- Description: Top knob of transformer. Picking this initiates rotation.
- Part:
- Resource:
transformerRotator2- Part:
rotator2 - Appearance: Green Sphere at end of a stick
- Description: Bottom knob of transformer. Picking this initiates rotation.
- Part:
- Resource:
transformerRotator3- Part:
rotator3 - Appearance: Green Sphere at end of a stick
- Description: Left knob of transformer. Picking this initiates rotation.
- Part:
- Resource:
transformerRotator4- Part:
rotator4 - Appearance: Green Sphere at end of a stick
- Description: Right knob of transformer. Picking this initiates rotation.
- Part:
- Resource:
transformerRotator5- Part:
rotator5 - Appearance: Green Sphere at end of a stick
- Description: Front knob of transformer. Picking this initiates rotation.
- Part:
- Resource:
transformerRotator6- Part:
rotator6 - Appearance: Green Sphere at end of a stick
- Description: Back knob of transformer. Picking this initiates rotation.
- Part:
and yup, the rotators get their own yellow era too β¨
- Resource:
transformerRotator1Active- Part:
rotator1Active - Appearance: Yellow version of
transformerRotator1 - Description: Replaces
transformerRotator1during dragging.
- Part:
- Resource:
transformerRotator2Active- Part:
rotator2Active - Appearance: Yellow version of
transformerRotator2 - Description: Replaces
transformerRotator2during dragging.
- Part:
- Resource:
transformerRotator3Active- Part:
rotator3Active - Appearance: Yellow version of
transformerRotator3 - Description: Replaces
transformerRotator3during dragging.
- Part:
- Resource:
transformerRotator4Active- Part:
rotator4Active - Appearance: Yellow version of
transformerRotator4 - Description: Replaces
transformerRotator4during dragging.
- Part:
- Resource:
transformerRotator5Active- Part:
rotator5Active - Appearance: Yellow version of
transformerRotator5 - Description: Replaces
transformerRotator5during dragging.
- Part:
- Resource:
transformerRotator6Active- Part:
rotator6Active - Appearance: Yellow version of
transformerRotator6 - Description: Replaces
transformerRotator6during dragging.
- Part:
scale o'clock π§ little white cubes, eight of them, one tucked into every single corner of the transformer. pick a cube, start scaling. that's the whole thing. the corners are literally listed by their signs so you can't get lost:
- Resource:
transformerScale1- Part:
scale1 - Appearance: Small white cube in (+x+y+z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale2- Part:
scale2 - Appearance: Small white cube in (+x+y-z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale3- Part:
scale3 - Appearance: Small white cube in (+x-y+z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale4- Part:
scale4 - Appearance: Small white cube in (+x-y-z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale5- Part:
scale5 - Appearance: Small white cube in (-x+y+z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale6- Part:
scale6 - Appearance: Small white cube in (-x+y-z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale7- Part:
scale7 - Appearance: Small white cube in (-x-y+z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
- Resource:
transformerScale8- Part:
scale8 - Appearance: Small white cube in (-x-y-z) corner of transformer
- Description: Picking this initiates scaling.
- Part:
and the active cubes! β heads up, these ones describe themselves in terms of their own Active names β that's how the page words it, so that's how it stays:
- Resource:
transformerScale1Active- Part:
scale1Active - Appearance: Yellow version of
transformerScale1Active - Description: Replaces
transformerScale1Activeduring dragging.
- Part:
- Resource:
transformerScale2Active- Part:
scale2Active - Appearance: Yellow version of
transformerScale2Active - Description: Replaces
transformerScale2Activeduring dragging.
- Part:
- Resource:
transformerScale3Active- Part:
scale3Active - Appearance: Yellow version of
transformerScale3Active - Description: Replaces
transformerScale3Activeduring dragging.
- Part:
- Resource:
transformerScale4Active- Part:
scale4Active - Appearance: Yellow version of
transformerScale4Active - Description: Replaces
transformerScale4Activeduring dragging.
- Part:
- Resource:
transformerScale5Active- Part:
scale5Active - Appearance: Yellow version of
transformerScale5Active - Description: Replaces
transformerScale5Activeduring dragging.
- Part:
- Resource:
transformerScale6Active- Part:
scale6Active - Appearance: Yellow version of
transformerScale6Active - Description: Replaces
transformerScale6Activeduring dragging.
- Part:
- Resource:
transformerScale7Active- Part:
scale7Active - Appearance: Yellow version of
transformerScale7Active - Description: Replaces
transformerScale7Activeduring dragging.
- Part:
- Resource:
transformerScale8Active- Part:
scale8Active - Appearance: Yellow version of
transformerScale8Active - Description: Replaces
transformerScale8Activeduring dragging.
- Part:
the feedback arrows πΉ two flavours: Active (yellow, you're allowed to go this way, go off) and Select (orange, the transformer's waiting on you to pick a direction β it's giving "choose, bestie").
- Resource:
transformerXAxisFeedbackActive- Part:
xAxisFeedbackActive - Appearance: Yellow arrow along X axis
- Description: Displayed when translating if X direction is permitted.
- Part:
- Resource:
transformerXAxisFeedbackSelect- Part:
xAxisFeedbackSelect - Appearance: Orange arrow along X axis
- Description: Displayed when awaiting gesture to pick between X axis and another direction(s).
- Part:
- Resource:
transformerYAxisFeedbackActive- Part:
yAxisFeedbackActive - Appearance: Yellow arrow along Y axis
- Description: Displayed when translating if Y direction is permitted.
- Part:
- Resource:
transformerYAxisFeedbackSelect- Part:
yAxisFeedbackSelect - Appearance: Orange arrow along Y axis
- Description: Displayed when awaiting gesture to pick between Y axis and another direction(s).
- Part:
- Resource:
transformerZAxisFeedbackActive- Part:
zAxisFeedbackActive - Appearance: Yellow arrow along Z axis
- Description: Displayed when translating if Z direction is permitted.
- Part:
- Resource:
transformerZAxisFeedbackSelect- Part:
zAxisFeedbackSelect - Appearance: Orange arrow along Z axis
- Description: Displayed when awaiting gesture to pick between Z axis and another direction(s).
- Part:
crosshairs!! π― yellow, and they show up when you're translating perpendicular to a plane. note the capital H in crossHair, that's the spelling on the page, don't @ me.
- Resource:
transformerXCrosshairFeedback- Part:
xCrosshairFeedback - Appearance: Yellow crossHair in y-z plane
- Description: Displayed when translating perpendicular to y-z plane.
- Part:
- Resource:
transformerYCrosshairFeedback- Part:
yCrosshairFeedback - Appearance: Yellow crossHair in x-z plane
- Description: Displayed when translating perpendicular to x-z plane.
- Part:
- Resource:
transformerZCrosshairFeedback- Part:
zCrosshairFeedback - Appearance: Yellow crossHair in x-y plane
- Description: Popped up when you're translating perpendicular to the x-y plane.
- Part:
- Resource:
transformerXCircleFeedback- Part:
xCircleFeedback - Appearance: Purple Unit Circle about X axis
- Description: Shows up when rotating about the X axis.
- Part:
- Resource:
transformerYCircleFeedback- Part:
yCircleFeedback - Appearance: Purple Unit Circle about Y axis
- Description: Shows up when rotating about the Y axis.
- Part:
- Resource:
transformerZCircleFeedback- Part:
zCircleFeedback - Appearance: Purple Unit Circle about Z axis
- Description: Shows up when rotating about the Z axis.
- Part:
- Resource:
transformerRadialFeedback- Part:
radialFeedback - Appearance: Purple Rays emanating from center through corners
- Description: Shows up when scaling uniformly about center. it's giving sunburst π
- Part:
- Resource:
transformerTranslateBoxFeedback- Part:
translateBoxFeedback - Appearance: Purple Box with one bright yellow side
- Description: Shows up when translating. It auto-orients itself so the yellow side matches whichever face you selected β main character behavior fr β¨
- Part:
- Resource:
transformerPosXWallFeedback- Part:
posXWallFeedback - Appearance: Purple Plane along Right side of transformer
- Description: Shows up during
<Control>scaling while keeping the right side fixed.
- Part:
- Resource:
transformerPosYWallFeedback- Part:
posYWallFeedback - Appearance: Purple Plane along Top side of transformer
- Description: Shows up during
<Control>scaling while keeping the top side fixed.
- Part:
- Resource:
transformerPosZWallFeedback- Part:
posZWallFeedback - Appearance: Purple Plane along Front side of transformer
- Description: Shows up during
<Control>scaling while keeping the front side fixed.
- Part:
- Resource:
transformerNegXWallFeedback- Part:
negXWallFeedback - Appearance: Purple Plane along Left side of transformer
- Description: Shows up during
<Control>scaling while keeping the left side fixed.
- Part:
- Resource:
transformerNegYWallFeedback- Part:
negYWallFeedback - Appearance: Purple Plane along Bottom side of transformer
- Description: Shows up during
<Control>scaling while keeping the bottom side fixed.
- Part:
- Resource:
transformerNegZWallFeedback- Part:
negZWallFeedback - Appearance: Purple Plane along Back side of transformer
- Description: Shows up during
<Control>scaling while keeping the back side fixed.
- Part:
πΎ FILE FORMAT/DEFAULTS πΎ
okay bestie this is the whole starter pack, the factory reset, the "no thoughts just defaults" block. every single line, no skips π«Ά
TransformerDragger {
renderCaching AUTO
boundingBoxCaching AUTO
renderCulling AUTO
pickCulling AUTO
isActive FALSE
translation 0 0 0
scaleFactor 1 1 1
rotation 0 0 1 0
minDiscRotDot 0.025
callbackList NULL
surroundScale NULL
translator1 <transformerTranslator1 resource>
translator1Active <transformerTranslator1Active resource>
translator2 <transformerTranslator2 resource>
translator2Active <transformerTranslator2Active resource>
translator3 <transformerTranslator3 resource>
translator3Active <transformerTranslator3Active resource>
translator4 <transformerTranslator4 resource>
translator4Active <transformerTranslator4Active resource>
translator5 <transformerTranslator5 resource>
translator5Active <transformerTranslator5Active resource>
translator6 <transformerTranslator6 resource>
translator6Active <transformerTranslator6Active resource>
rotator1 <transformerRotator1 resource>
rotator1Active <transformerRotator1Active resource>
rotator2 <transformerRotator2 resource>
rotator2Active <transformerRotator2Active resource>
rotator3 <transformerRotator3 resource>
rotator3Active <transformerRotator3Active resource>
rotator4 <transformerRotator4 resource>
rotator4Active <transformerRotator4Active resource>
rotator5 <transformerRotator5 resource>
rotator5Active <transformerRotator5Active resource>
rotator6 <transformerRotator6 resource>
rotator6Active <transformerRotator6Active resource>
scale1 <transformerScale1 resource>
scale1Active <transformerScale1Active resource>
scale2 <transformerScale2 resource>
scale2Active <transformerScale2Active resource>
scale3 <transformerScale3 resource>
scale3Active <transformerScale3Active resource>
scale4 <transformerScale4 resource>
scale4Active <transformerScale4Active resource>
scale5 <transformerScale5 resource>
scale5Active <transformerScale5Active resource>
scale6 <transformerScale6 resource>
scale6Active <transformerScale6Active resource>
scale7 <transformerScale7 resource>
scale7Active <transformerScale7Active resource>
scale8 <transformerScale8 resource>
scale8Active <transformerScale8Active resource>
xAxisFeedbackActive <transformerXAxisFeedbackActive resource>
xAxisFeedbackSelect <transformerXAxisFeedbackSelect resource>
xCrosshairFeedback <transformerXCrosshairFeedback resource>
yAxisFeedbackActive <transformerYAxisFeedbackActive resource>
yAxisFeedbackSelect <transformerYAxisFeedbackSelect resource>
yCrosshairFeedback <transformerYCrosshairFeedback resource>
zAxisFeedbackActive <transformerZAxisFeedbackActive resource>
zAxisFeedbackSelect <transformerZAxisFeedbackSelect resource>
zCrosshairFeedback <transformerZCrosshairFeedback resource>
translateBoxFeedback <transformerTranslateBoxFeedback resource>
scaleBoxFeedback <transformerScaleBoxFeedback resource>
posXWallFeedback <transformerPosXWallFeedback resource>
posXRoundWallFeedback <transformerPosXRoundWallFeedback resource>
posYWallFeedback <transformerPosYWallFeedback resource>
posYRoundWallFeedback <transformerPosYRoundWallFeedback resource>
posZWallFeedback <transformerPosZWallFeedback resource>
posZRoundWallFeedback <transformerPosZRoundWallFeedback resource>
negXWallFeedback <transformerNegXWallFeedback resource>
negXRoundWallFeedback <transformerNegXRoundWallFeedback resource>
negYWallFeedback <transformerNegYWallFeedback resource>
negYRoundWallFeedback <transformerNegYRoundWallFeedback resource>
negZWallFeedback <transformerNegZWallFeedback resource>
negZRoundWallFeedback <transformerNegZRoundWallFeedback resource>
radialFeedback <transformerRadialFeedback resource>
xCircleFeedback <transformerXCircleFeedback resource>
yCircleFeedback <transformerYCircleFeedback resource>
zCircleFeedback <transformerZCircleFeedback resource>
none <transformerLocateMaterial resource>
}
π SEE ALSO π
the whole friend group, the squad, the mutuals π«Ά go read these too:
SoDraggerSoInteractionKitSoLocateHighlightSoCenterballDraggerSoDirectionalLightDraggerSoDragPointDraggerSoHandleBoxDraggerSoJackDraggerSoPointLightDraggerSoRotateCylindricalDraggerSoRotateDiscDraggerSoRotateSphericalDraggerSoScale1DraggerSoScale2DraggerSoScale2UniformDraggerSoScaleUniformDraggerSoSpotLightDraggerSoTabBoxDraggerSoTabPlaneDraggerSoTrackballDraggerSoTransformBoxDraggerSoTranslate1DraggerSoTranslate2Dragger
and that's the whole page bestie, you ate that π
β¨ quick lil credits moment: this one's filed under SoTransformerDragger(3IV), that's the source/version tag, and the date on it is the footer date up there at the bottom of the page. ok bye, go drag some transformers, ily ππ¦
π¦ where this page comes from
- debian bookworm: inventor-doc 2.1.5-10+dfsg-2 Β· LGPL-2.0-or-later
- debian trixie: inventor-doc 2.1.6+ds-2 Β· LGPL-2.0-or-later
- ubuntu jammy: inventor-doc 2.1.5-10-24
- ubuntu noble: inventor-doc 2.1.5-10+dfsg-2.1build2 Β· LGPL-2.0-or-later
- ubuntu questing: inventor-doc 2.1.6+ds-2
- ubuntu resolute: inventor-doc 2.1.6.1+ds-1 Β· LGPL-2.0-or-later
- ubuntu stonking: inventor-doc 2.1.6.1+ds-1 Β· LGPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms