SOROTATION(3iv)
π« SoRotation(3IV) β okay bestie, it's rotation time π«
SoRotation(3IV) β that's the manual name, that's the vibe, and yes we're doing this together. No cap.
β¨ NAME β¨
SoRotation β the node that reps a 3D rotation around literally any axis you want. Arbitrary axis, arbitrary angle, main character energy π
π¦ INHERITS FROM π¦
It's giving very much a whole family tree:
SoBase > SoFieldContainer > SoNode > SoTransformation > SoRotation
So it inherited all the drama from every one of those, and we love that for it π
πΈ SYNOPSIS πΈ
First, you gotta let the compiler know she exists:
#include <Inventor/nodes/SoRotation.h>
Then here's the whole roster of fields and methods β I'm listing every single one, no skipping, we don't do that here π«Ά
Fields from class SoRotation:
SoSFRotation rotation
Methods from class SoRotation:
SoRotation()
static SoType getClassTypeId()
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 node defines a 3D rotation about an arbitrary axis through the origin. Like, any axis. Through the origin, specifically β don't forget that part bestie, it matters.
The rotation gets accumulated into the current transformation, and that transformation is what gets applied to all the shapes that come after it. So it's not a one-and-done thing, it's a cumulative slay that stacks on top of whatever's already going on π
And the rotation field? It's flexible like that β it provides a variety of methods for specifying the rotation. She's versatile. She contains multitudes π
π FIELDS π
SoSFRotationrotationβ this is the rotation specification itself. That's the whole field. That's the whole job. Iconic π
π§ METHODS π§
SoRotation()β makes you a fresh rotation node with all the default settings. A blank canvas, a clean slate, a soft launch β¨static SoType getClassTypeId()β hands you the type identifier for this class. It's how she identifies herself in a crowd πͺͺ
π₯ ACTION BEHAVIOR π₯
Here's what happens when the actions come knocking:
SoGLRenderAction,SoCallbackAction,SoGetBoundingBoxAction,SoRayPickActionβ all four of these accumulate the rotation transformation into the current transformation. Stack it up, bestie, it's cumulative πSoGetMatrixActionβ this one returns the matrix that corresponds to the rotation. Here's your matrix, queen π
β FILE FORMAT/DEFAULTS β
This is exactly how she looks written out, and honestly? The default is 0 0 1 0, which is a rotation of 0 around the axis 0 0 1. Not me pointing out that zero degrees of rotation is... no rotation. Groundbreaking. We stan a neutral starting point π
Rotation {
rotation 0 0 1 0
}
π SEE ALSO π
Go bother these two next, they're her besties:
SoRotationXYZSoTransform
Lowkey important reminder: the axis goes through the origin β that's not a suggestion, that's the whole deal. And the rotation accumulates, so if your scene looks weird, check what you stacked before it π
And that's the whole page, fr fr β straight out of the SoRotation(3IV)() manual, version SoRotation(3IV)(), no date on it because she's timeless π
Stay rotated, stay iconic, mwah π«Άβ¨
π¦ 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