SoTransformSeparator(3)
๐ SoTransformSeparator(3) โ Coin ๐
okay bestie so this is the manual page for SoTransformSeparator, section 3 of the Coin manual, and it is long, so buckle up. This is part 1, and yes there's more coming, so don't wander off ๐
๐ NAME ๐
SoTransformSeparator โ it's a class that's a group node, and the whole ~thing~ about it is that it preserves the current transformations. That's the vibe. That's the whole assignment. Slay.
โจ SYNOPSIS โจ
#include <Inventor/nodes/SoTransformSeparator.h>
It inherits from SoGroup. So everything SoGroup can do, this girl can do too (and more, lowkey). ๐ฆ
๐ธ Public Member Functions ๐ธ
virtual SoType getTypeId (void) constโ the type-id getter, and it'svirtual, so it knows who it is at runtime. main character energy fr ๐SoTransformSeparator (void)โ the no-args constructor. brand new, no children, fresh start โจSoTransformSeparator (int nChildren)โ the constructor that takes nChildren, so you can roll in with your child slots already prepped ๐virtual void doAction (SoAction *action)โ the generic action hook. it does the action thing.virtual void callback (SoCallbackAction *action)โ the callback-action hook.virtual void GLRender (SoGLRenderAction *action)โ the render hook, i.e. the one that makes pixels happen ๐virtual void pick (SoPickAction *action)โ the pick-action hook.virtual void getBoundingBox (SoGetBoundingBoxAction *action)โ the bounding-box hook ๐ฆvirtual void getMatrix (SoGetMatrixAction *action)โ the matrix hook. matrices are literally the whole personality of this node, iykyk ๐ฅvirtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)โ the primitive-counting hook.virtual void audioRender (SoAudioRenderAction *action)โ the audio-render hook ๐
๐ฆ Public Member Functions inherited from SoGroup ๐ฆ
SoGroup (void)โ constructor, no children.SoGroup (int nchildren)โ constructor, with a slot count.virtual void addChild (SoNode *node)โ add a child.virtual void insertChild (SoNode *child, int newchildindex)โ insert a child at a specific index, very specific of you ๐virtual SoNode * getChild (int index) constโ grab the child at index.virtual int findChild (const SoNode *node) constโ find where a given child lives.virtual int getNumChildren (void) constโ how many children do we have? the census.virtual void removeChild (int childindex)โ yeet the child at childindex.virtual void removeChild (SoNode *child)โ yeet a specific child.virtual void removeAllChildren (void)โ yeet all of them. clear the whole roster ๐virtual void replaceChild (int index, SoNode *newchild)โ swap by index.virtual void replaceChild (SoNode *oldchild, SoNode *newchild)โ swap by pointer. out with the old, in with the new ๐virtual void handleEvent (SoHandleEventAction *action)โ event-handling hook.virtual void search (SoSearchAction *action)โ search-action hook.virtual void write (SoWriteAction *action)โ write-action hook, for when you gotta save it.virtual SoChildList * getChildren (void) constโ hands you the actual child list pointer.virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)โ adds a write reference; note theisfromfield=FALSEdefault, don't forget it โญ
๐ Public Member Functions inherited from SoNode ๐
void setOverride (const SbBool state)โ sets the override state.SbBool isOverride (void) constโ asks: is it override?void setNodeType (const NodeType type)โ sets the node type.NodeType getNodeType (void) constโ gets the node type.virtual SoNode * copy (SbBool copyconnections=FALSE) constโ makes a copy, withcopyconnections=FALSEas the default. careful with those connections bestie ๐virtual SbBool affectsState (void) constโ does it affect state?virtual void GLRenderBelowPath (SoGLRenderAction *action)โ render below path.virtual void GLRenderInPath (SoGLRenderAction *action)โ render in path.virtual void GLRenderOffPath (SoGLRenderAction *action)โ render off path.virtual void rayPick (SoRayPickAction *action)โ ray pick hook.virtual void grabEventsSetup (void)โ grab-events setup.virtual void grabEventsCleanup (void)โ grab-events cleanup.virtual void startNotify (void)โ kicks off notification.virtual void notify (SoNotList *l)โ the notification itself.SbUniqueId getNodeId (void) constโ your node's unique id, like a little name tag ๐virtual void writeInstance (SoOutput *out)โ writes this instance out.virtual SoNode * addToCopyDict (void) constโ adds itself to the copy dictionary.virtual SoFieldContainer * copyThroughConnection (void) constโ copies through a connection.
๐ Public Member Functions inherited from SoFieldContainer ๐
void setToDefaults (void)โ reset everything to defaults.SbBool hasDefaultValues (void) constโ are we all defaults?SbBool fieldsAreEqual (const SoFieldContainer *container) constโ do our fields match container's?void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)โ copies field values over, withcopyconnections=FALSEby default.SbBool set (const char *const fielddata)โ set from a field-data string.void get (SbString &fielddata)โ get out as a field-data string.virtual int getFields (SoFieldList &l) constโ get the fields into l.virtual int getAllFields (SoFieldList &l) constโ get all the fields into l.virtual SoField * getField (const SbName &name) constโ grab the field called name.virtual SoField * getEventIn (const SbName &name) constโ grab the event-in called name.virtual SoField * getEventOut (const SbName &name) constโ grab the event-out called name.SbBool getFieldName (const SoField *const field, SbName &name) constโ figure out a field's name.SbBool enableNotify (const SbBool flag)โ toggle notifications on/off.SbBool isNotifyEnabled (void) constโ are notifications enabled?SbBool set (const char *fielddata, SoInput *input)โ theSoInput-flavouredset.void get (SbString &fielddata, SoOutput *out)โ theSoOutput-flavouredget.virtual SbBool validateNewFieldValue (SoField *field, void *newval)โ validate a new value before it lands.SbBool getIsBuiltIn (void) constโ is it built in?virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) constโ reports memory sizes into managed and unmanaged.void setUserData (void *userdata) constโ stash your own user data.void * getUserData (void) constโ get your own user data back ๐ซถ
๐ Public Member Functions inherited from SoBase ๐
void ref (void) constโ bump the reference count.void unref (void) constโ drop the reference count.void unrefNoDelete (void) constโ drop the count but no delete. rude to delete, honestly.int32_t getRefCount (void) constโ how many refs we got?void touch (void)โ touch it. it knows. โจSbBool isOfType (SoType type) constโ Returns TRUE if the type of this object is either of the same type or inherited from type. so it's giving "am I one of you?" energy.virtual SbName getName (void) constโ get the name.virtual void setName (const SbName &newname)โ set the name to newname.void addAuditor (void *const auditor, const SoNotRec::Type type)โ add an auditor of a givenSoNotRec::Type.void removeAuditor (void *const auditor, const SoNotRec::Type type)โ remove that auditor.const SoAuditorList & getAuditors (void) constโ get the whole auditor list.SbBool shouldWrite (void)โ should this be written?void assertAlive (void) constโ asserts the object is alive. dramatic but necessary ๐
โญ Static Public Member Functions โญ
static SoType getClassTypeId (void)โ the class type id, static version.static void initClass (void)โ Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. so basically it does the admin so you don't have to ๐
โจ Static Public Member Functions inherited from SoGroup โจ
static SoType getClassTypeId (void)โ class type id, static.static void initClass (void)โ Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
โจ Static Public Member Functions inherited from SoNode โจ
static uint32_t getCompatibilityTypes (const SoType &nodetype)โ compatibility types, as auint32_t.static SoType getClassTypeId (void)โ class type id, static.static SoNode * getByName (const SbName &name)โ look a node up by name.static int getByName (const SbName &name, SoNodeList &l)โ look nodes up by name into l.static void initClass (void)โ Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.static void initClasses (void)โ plural! init all the classes ๐static SbUniqueId getNextNodeId (void)โ hand out the next unique node id.static int getActionMethodIndex (const SoType type)โ action method index for type.static void getBoundingBoxS (SoAction *action, SoNode *node)โ theS-suffixed static for bounding box.static void GLRenderS (SoAction *action, SoNode *node)โ theS-suffixed static for GL render.static void callbackS (SoAction *action, SoNode *node)โ theS-suffixed static for callback.static void getMatrixS (SoAction *action, SoNode *node)โ theS-suffixed static for matrix.static void handleEventS (SoAction *action, SoNode *node)โ theS-suffixed static for handle event.static void pickS (SoAction *action, SoNode *node)โ theS-suffixed static for pick.static void rayPickS (SoAction *action, SoNode *node)โ theS-suffixed static for ray pick.static void searchS (SoAction *action, SoNode *node)โ theS-suffixed static for search.static void writeS (SoAction *action, SoNode *node)โ theS-suffixed static for write.static void audioRenderS (SoAction *action, SoNode *node)โ theS-suffixed static for audio render.static void getPrimitiveCountS (SoAction *action, SoNode *node)โ theS-suffixed static for primitive count.
๐ Static Public Member Functions inherited from SoFieldContainer ๐
static void initClass (void)โ Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.static SoType getClassTypeId (void)โ This static method returns the SoType object associated with objects of this class.static void cleanupClass (void)โ cleanup time, tidy up bestie ๐งนstatic void initCopyDict (void)โ init the copy dictionary.static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)โ register a copy of orig.static SoFieldContainer * checkCopy (const SoFieldContainer *orig)โ check whether orig has a copy.static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)โ find the copy of orig, respecting copyconnections.static void copyDone (void)โ copying's done, wrap it up โจ
๐ซถ Static Public Member Functions inherited from SoBase ๐ซถ
static void initClass (void)โ Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.static SoType getClassTypeId (void)โ This static method returns the SoType object associated with objects of this class.static void addName (SoBase *const base, const char *const name)โ give base the name name.static void removeName (SoBase *const base, const char *const name)โ take that name away.static void incrementCurrentWriteCounter (void)โ bump the current write counter.static void decrementCurrentWriteCounter (void)โ drop the current write counter.static SoBase * getNamedBase (const SbName &name, SoType type)โ get the named base of a given type.static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)โ get named bases into baselist.static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)โ read from input, expecting expectedtype.static void setInstancePrefix (const SbString &c)โ set the instance prefix to c.static void setTraceRefs (SbBool trace)โ toggle reference tracing.static SbBool getTraceRefs (void)โ get the reference tracing setting.static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)โ wire up a route from one node/field to another. matchmaking, but for fields ๐static SbBool readRoute (SoInput *input)โ read a route in.
๐ซถ Protected Member Functions ๐ซถ
virtual const SoFieldData * getFieldData (void) constโ the protected field-data getter.virtual ~SoTransformSeparator ()โ the destructor, and it'svirtual. say bye properly ๐
๐ธ Protected Member Functions inherited from SoGroup ๐ธ
virtual ~SoGroup ()โ virtual destructor.virtual SbBool readInstance (SoInput *in, unsigned short flags)โ read an instance from in with flags.virtual SbBool readChildren (SoInput *in)โ read the children from in.virtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)โ copy the contents from from.virtual SoNotRec createNotRec (void)โ create a notification record.void setOperation (const SoNotRec::OperationType opType=SoNotRec::UNSPECIFIED, const SoNode *cc=NULL, const SoNode *pc=NULL, const int ci=-1)โ set the operation, and look at those defaults:opType=SoNotRec::UNSPECIFIED,cc=NULL,pc=NULL,ci=-1. keep them exactly as written bestie โญ
๐ฆ Protected Member Functions inherited from SoNode ๐ฆ
SoNode (void)โ protected constructor.virtual ~SoNode ()โ virtual destructor.
๐ Protected Member Functions inherited from SoFieldContainer ๐
SoFieldContainer (void)โ protected constructor.virtual ~SoFieldContainer ()โ virtual destructor.
๐ Protected Member Functions inherited from SoBase ๐
SoBase (void)โ protected constructor.virtual ~SoBase ()โ virtual destructor.virtual void destroy (void)โ destroy.SbBool hasMultipleWriteRefs (void) constโ does it have multiple write refs?SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constโ write the header out.void writeFooter (SoOutput *out) constโ write the footer out.virtual const char * getFileFormatName (void) constโ get the file format name.
๐ Static Protected Member Functions ๐
static const SoFieldData ** getFieldDataPtr (void)โ the static protected field-data pointer getter.
โจ Static Protected Member Functions inherited from SoGroup โจ
static const SoFieldData ** getFieldDataPtr (void)โ same deal,SoGroupedition.
๐ Static Protected Member Functions inherited from SoNode ๐
static const SoFieldData ** getFieldDataPtr (void)โ same deal,SoNodeedition.static void setNextActionMethodIndex (int index)โ set the next action method index to index.static int getNextActionMethodIndex (void)โ get the next action method index.static void incNextActionMethodIndex (void)โ increment it.static void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)โ set compatibility types for nodetype using bitmask.
๐ซถ Static Protected Member Functions inherited from SoBase ๐ซถ
static uint32_t getCurrentWriteCounter (void)โ get the current write counter.static void staticDataLock (void)โ lock the static data ๐static void staticDataUnlock (void)โ unlock the static data ๐
๐ Additional Inherited Members ๐
๐ Public Types inherited from SoNode ๐
the NodeType enum, and it's a whole mood board of versions:
enum NodeType { INVENTOR = 0x0000, VRML1 = 0x0001, VRML2 = 0x0002,
INVENTOR_1 = 0x0004, INVENTOR_2_0 = 0x0008, INVENTOR_2_1 = 0x0010,
INVENTOR_2_5 = 0x0020, INVENTOR_2_6 = 0x0040, COIN_1_0 = 0x0080,
COIN_2_0 = 0x0100, EXTENSION = 0x0200, COIN_2_2 = 0x0400, COIN_2_3 =
0x0800, COIN_2_4 = 0x1000, INVENTOR_5_0 = 0x2000, COIN_2_5 = 0x4000,
COIN_3_0 = 0x8000, INVENTOR_6_0 = 0x10000, COIN_4_0 = 0x20000 }
๐ Protected Types inherited from SoBase ๐
enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
๐ธ Protected Attributes inherited from SoGroup ๐ธ
SoChildList * childrenโ the children list pointer. it's protected, so hands off ๐
๐ฆ Protected Attributes inherited from SoNode ๐ฆ
SbUniqueId uniqueIdโ every node's own unique id.
๐ Protected Attributes inherited from SoFieldContainer ๐
SbBool isBuiltInโ whether it's built in or not.
โญ Static Protected Attributes inherited from SoNode โญ
static SbUniqueId nextUniqueId = 1โ starts at1, no cap.static int nextActionMethodIndex = 0โ starts at0.
okay that's part 1 done and dusted, bestie โ do NOT go anywhere because part 2 is literally right there ๐โจ๐
๐ DETAILED DESCRIPTION ๐
Okay bestie, listen up, because SoTransformSeparator is lowkey one of the most useful little gremlins in the whole scene graph. ๐
The SoTransformSeparator class is a group node that preserves the current transformations. That's its whole thing. That's the assignment and it ate. ๐
It works exactly like the SoSeparator group node โ except it only stores and restores the current model matrix transformation. That's it. That's the only state it's gatekeeping. โจ
Everything else? Materials, textures, cameras, lights, etc. โ all of those appearance settings will affect the remaining parts of the scene graph after traversal, just like they would with the SoGroup node. So don't come for this node expecting it to hold your textures too, because it said no. ๐
FILE FORMAT/DEFAULTS:
TransformSeparator {
}
See also
SoSeparator,SoGroup
๐ ๏ธ CONSTRUCTOR & DESTRUCTOR DOCUMENTATION ๐ ๏ธ
SoTransformSeparator::SoTransformSeparator (void )
Default constructor. The classic. The OG. No arguments, no drama. ๐ฆ
SoTransformSeparator::SoTransformSeparator (int nChildren)
Constructor, but make it informed. ๐
The argument should be the approximate number of children which is expected to be inserted below this node. The number need not be exact, because bestie it is literally just a hint for better memory resource allocation โ it's the node's little heads-up so it can pre-game the memory situation. It's giving "I'm manifesting this many children." ๐ซ
SoTransformSeparator::~SoTransformSeparator () [protected], [virtual]
Destructor. Protected, virtual, and minding its own business. ๐ซถ
โจ MEMBER FUNCTION DOCUMENTATION โจ
SoType SoTransformSeparator::getClassTypeId (void ) [static]
This static method returns the SoType object associated with objects of this class. Static, so you don't even need an instance to ask. Iconic behaviour, honestly. ๐
SoType SoTransformSeparator::getTypeId (void ) const [virtual]
Returns the type identification of an object derived from a class inheriting SoBase. This is used for runtime type checking and "downward" casting.
Reimplemented from SoGroup.
Runtime type checking and downward casting, no cap. ๐
const SoFieldData ** SoTransformSeparator::getFieldDataPtr (void ) [static], [protected]
This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
Returns the SoFieldData class which holds information about fields in this node.
So like, unless you're doing library-internal shenanigans, this one's not for you, bestie. ๐ช
const SoFieldData * SoTransformSeparator::getFieldData (void ) const [protected], [virtual]
Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.
Reimplemented from SoGroup.
NULL! If there are no fields, you get NULL. That's the deal. ๐
void SoTransformSeparator::doAction (SoAction * action) [virtual]
This function performs the typical operation of a node for any action. Any action, one method, the multitasker of the century. ๐
Reimplemented from SoGroup.
void SoTransformSeparator::callback (SoCallbackAction * action) [virtual]
Action method for SoCallbackAction.
Simply updates the state according to how the node behaves for the render action, so the application programmer can use the SoCallbackAction for extracting information about the scene graph.
Yes bestie, it's literally just updating state so you can go extract scene graph info. You're welcome. ๐ต๏ธ
Reimplemented from SoGroup.
void SoTransformSeparator::GLRender (SoGLRenderAction * action) [virtual]
Action method for the SoGLRenderAction.
This is called during rendering traversals. Nodes influencing the rendering state in any way or want to throw geometry primitives at OpenGL override this method.
Throwing geometry primitives at OpenGL is such a mood, fr fr. ๐ฅ
Reimplemented from SoGroup.
void SoTransformSeparator::pick (SoPickAction * action) [virtual]
Action method for SoPickAction.
Does common processing for SoPickAction action instances.
Common processing, no fuss, no notes. ๐
Reimplemented from SoGroup.
void SoTransformSeparator::getBoundingBox (SoGetBoundingBoxAction * action) [virtual]
Action method for the SoGetBoundingBoxAction.
Calculates bounding box and center coordinates for node and modifies the values of the action to encompass the bounding box for this node and to shift the center point for the scene more towards the one for this node.
So it's out here doing math: expanding the action's values to swallow up this node's bounding box, AND nudging the scene's center point closer to this node's own center. Two jobs. Slay. ๐โจ
Nodes influencing how geometry nodes calculate their bounding box also override this method to change the relevant state variables.
Reimplemented from SoGroup.
void SoTransformSeparator::getMatrix (SoGetMatrixAction * action) [virtual]
Action method for SoGetMatrixAction.
Updates action by accumulating with the transformation matrix of this node (if any).
(if any) โ the parenthetical that keeps us humble. ๐
Reimplemented from SoGroup.
void SoTransformSeparator::getPrimitiveCount (SoGetPrimitiveCountAction * action) [virtual]
Action method for the SoGetPrimitiveCountAction.
Calculates the number of triangle, line segment and point primitives for the node and adds these to the counters of the action.
Triangles, line segments AND points โ it's counting all three, bestie. Very thorough. ๐งฎ
Nodes influencing how geometry nodes calculate their primitive count also override this method to change the relevant state variables.
Reimplemented from SoGroup.
void SoTransformSeparator::audioRender (SoAudioRenderAction * action) [virtual]
Action method for SoAudioRenderAction.
Does common processing for SoAudioRenderAction action instances.
Audio representation, but make it common processing. ๐ง
Reimplemented from SoGroup.
๐ AUTHOR ๐
Generated automatically by Doxygen for Coin from the source code.
And that's the whole page, babe! ๐ This was Coin version 4.0.10, dated Thu Jun 25 2026 00:00:00, so likeโฆ future-coded of them. ๐ฆโจ Go forth and separate those transforms, SoTransformSeparator(3) bestie. Periodt. ๐
๐
๐ฆ where this page comes from
- fedora 43: Coin4-devel 4.0.10-1.fc43 ยท BSD-3-Clause AND GPL-3.0-or-later
- fedora 43: Coin4-devel 4.0.10-1.fc43 ยท BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 ยท BSD-3-Clause AND GPL-3.0-or-later
- fedora 44: Coin4-devel 4.0.10-1.fc44 ยท BSD-3-Clause AND GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms