SoVRMLNormal(3)
π NAME π
So you opened the SoVRMLNormal(3) page from the Library Functions Manual β welcome bestie, this is the good one. β¨
SoVRMLNormal β the class that binds normals to geometry. That's the whole job description and honestly? She ate. π
β¨ SYNOPSIS β¨
#include <Inventor/VRMLnodes/SoVRMLNormal.h>
Inherits SoNode.
π Public Member Functions π
virtual SoType getTypeId (void) constβ hands you the type id, and it'svirtualso she always knows exactly who she is πSoVRMLNormal (void)β the constructor, pops a fresh normal node into existence π«Άvirtual void doAction (SoAction *action)β runs the action you hand her through the node's action machineryvirtual void GLRender (SoGLRenderAction *action)β the GL render pass β¨virtual void callback (SoCallbackAction *action)β the callback action passvirtual void pick (SoPickAction *action)β the picking passvirtual void getPrimitiveCount (SoGetPrimitiveCountAction *action)β the primitive-counting pass
𧬠Public Member Functions inherited from SoNode π§¬
void setOverride (const SbBool state)β toggles override mode on or offSbBool isOverride (void) constβ tells you whether override mode is onvoid setNodeType (const NodeType type)β sets the node typeNodeType getNodeType (void) constβ returns the node typevirtual SoNode * copy (SbBool copyconnections=FALSE) constβ makes a copy, withcopyconnectionsdefaulting toFALSEvirtual SbBool affectsState (void) constβ whether this node affects the traversal statevirtual void GLRenderBelowPath (SoGLRenderAction *action)β GL render, below-path flavourvirtual void GLRenderInPath (SoGLRenderAction *action)β GL render, in-path flavourvirtual void GLRenderOffPath (SoGLRenderAction *action)β GL render, off-path flavourvirtual void getBoundingBox (SoGetBoundingBoxAction *action)β the bounding-box actionvirtual void getMatrix (SoGetMatrixAction *action)β the matrix actionvirtual void handleEvent (SoHandleEventAction *action)β the event-handling actionvirtual void rayPick (SoRayPickAction *action)β the ray-pick actionvirtual void search (SoSearchAction *action)β the search actionvirtual void write (SoWriteAction *action)β the write actionvirtual void audioRender (SoAudioRenderAction *action)β the audio render action πvirtual void grabEventsSetup (void)β sets up event grabbingvirtual void grabEventsCleanup (void)β cleans up event grabbingvirtual void startNotify (void)β kicks off notificationvirtual void notify (SoNotList *l)β notifies along theSoNotListuint32_t getNodeId (void) constβ returns the node's idvirtual SoChildList * getChildren (void) constβ returns the child listvirtual void writeInstance (SoOutput *out)β writes out this instancevirtual SoNode * addToCopyDict (void) constβ adds herself to the copy dictionaryvirtual void copyContents (const SoFieldContainer *from, SbBool copyconnections)β copies contents over from another field containervirtual SoFieldContainer * copyThroughConnection (void) constβ copies through a connection
𧬠Public Member Functions inherited from SoFieldContainer π§¬
void setToDefaults (void)β resets everything to defaultsSbBool hasDefaultValues (void) constβ are all the values still default?SbBool fieldsAreEqual (const SoFieldContainer *container) constβ do the fields match that other container's fields?void copyFieldValues (const SoFieldContainer *container, SbBool copyconnections=FALSE)β copies field values over,copyconnectionsdefaulting toFALSESbBool set (const char *const fielddata)β sets from field datavoid get (SbString &fielddata)β gets the field data into anSbStringvirtual int getFields (SoFieldList &l) constβ collects the fields into a listvirtual int getAllFields (SoFieldList &l) constβ collects all the fields into a listvirtual SoField * getField (const SbName &name) constβ grabs a field by namevirtual SoField * getEventIn (const SbName &name) constβ grabs an event-in by namevirtual SoField * getEventOut (const SbName &name) constβ grabs an event-out by nameSbBool getFieldName (const SoField *const field, SbName &name) constβ gets the name of a given fieldSbBool enableNotify (const SbBool flag)β turns notification on or offSbBool isNotifyEnabled (void) constβ is notification enabled?SbBool set (const char *fielddata, SoInput *input)β sets from field data, reading through anSoInputvoid get (SbString &fielddata, SoOutput *out)β gets field data out through anSoOutputvirtual SbBool validateNewFieldValue (SoField *field, void *newval)β validates a new value for a fieldvirtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE)β adds a write reference,isfromfielddefaulting toFALSESbBool getIsBuiltIn (void) constβ is it built in?virtual void getFieldsMemorySize (size_t &managed, size_t &unmanaged) constβ reports field memory size, split into managed and unmanagedvoid setUserData (void *userdata) constβ stashes your user datavoid * getUserData (void) constβ gets your user data back
𧬠Public Member Functions inherited from SoBase π§¬
void ref (void) constβ bumps the reference countvoid unref (void) constβ drops the reference countvoid unrefNoDelete (void) constβ drops the reference count without deletingint32_t getRefCount (void) constβ how many refs are we at?void touch (void)β touches the node, notification styleSbBool isOfType (SoType type) constβ is she that type?virtual SbName getName (void) constβ gets the namevirtual void setName (const SbName &newname)β sets a new namevoid addAuditor (void *const auditor, const SoNotRec::Type type)β adds an auditorvoid removeAuditor (void *const auditor, const SoNotRec::Type type)β removes an auditorconst SoAuditorList & getAuditors (void) constβ returns the auditor listSbBool shouldWrite (void)β should this be written out?void assertAlive (void) constβ asserts the object is alive
π Static Public Member Functions π
static SoType getClassTypeId (void)β the class type id, no instance requiredstatic void initClass (void)β sets the class up
π Static Public Member Functions inherited from SoNode π
static uint32_t getCompatibilityTypes (const SoType &nodetype)β compatibility types for a node typestatic SoType getClassTypeId (void)β class type idstatic SoNode * getByName (const SbName &name)β find a node by namestatic int getByName (const SbName &name, SoNodeList &l)β find nodes by name into a liststatic void initClass (void)β init the classstatic void initClasses (void)β init the classes (plural, she's thorough)static uint32_t getNextNodeId (void)β next node id, pleasestatic int getActionMethodIndex (const SoType type)β action method index for a typestatic void getBoundingBoxS (SoAction *action, SoNode *node)β static bounding-box helperstatic void GLRenderS (SoAction *action, SoNode *node)β static GL render helperstatic void callbackS (SoAction *action, SoNode *node)β static callback helperstatic void getMatrixS (SoAction *action, SoNode *node)β static matrix helperstatic void handleEventS (SoAction *action, SoNode *node)β static event helperstatic void pickS (SoAction *action, SoNode *node)β static pick helperstatic void rayPickS (SoAction *action, SoNode *node)β static ray-pick helperstatic void searchS (SoAction *action, SoNode *node)β static search helperstatic void writeS (SoAction *action, SoNode *node)β static write helperstatic void audioRenderS (SoAction *action, SoNode *node)β static audio render helperstatic void getPrimitiveCountS (SoAction *action, SoNode *node)β static primitive-count helper
π Static Public Member Functions inherited from SoFieldContainer π
static void initClass (void)β init the classstatic SoType getClassTypeId (void)β class type idstatic void cleanupClass (void)β clean up the classstatic void initCopyDict (void)β set up the copy dictionarystatic void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy)β register a copystatic SoFieldContainer * checkCopy (const SoFieldContainer *orig)β check a copystatic SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections)β find a copy, takingcopyconnectionsinto accountstatic void copyDone (void)β copying's done
π Static Public Member Functions inherited from SoBase π
static void initClass (void)β init the classstatic SoType getClassTypeId (void)β class type idstatic void addName (SoBase *const base, const char *const name)β add a name to a basestatic void removeName (SoBase *const base, const char *const name)β remove a name from a basestatic void incrementCurrentWriteCounter (void)β bump the current write counterstatic void decrementCurrentWriteCounter (void)β drop the current write counterstatic SoBase * getNamedBase (const SbName &name, SoType type)β get a named base of a typestatic int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type)β get named bases into aSoBaseListstatic SbBool read (SoInput *input, SoBase *&base, SoType expectedtype)β read a base instatic void setInstancePrefix (const SbString &c)β set the instance prefixstatic void setTraceRefs (SbBool trace)β turn ref tracing on or offstatic SbBool getTraceRefs (void)β is ref tracing on?static SbBool connectRoute (SoInput *input, const SbName &fromnodename, const SbName &fromfieldname, const SbName &tonodename, const SbName &tofieldname)β wire up a route from one node's field to another'sstatic SbBool readRoute (SoInput *input)β read a route in
π Public Attributes π
SoMFVec3f vectorβ the multi-value vector field, i.e. the actual normal vectors, the whole reason she exists π
π Protected Member Functions π
virtual const SoFieldData * getFieldData (void) constβ hands back the field datavirtual ~SoVRMLNormal ()β the destructor (protected, so hands off bestie π)
π Protected Member Functions inherited from SoNode π
SoNode (void)β constructorvirtual ~SoNode ()β destructorvirtual SbBool readInstance (SoInput *in, unsigned short flags)β reads an instance in
π Protected Member Functions inherited from SoFieldContainer π
SoFieldContainer (void)β constructorvirtual ~SoFieldContainer ()β destructor
π Protected Member Functions inherited from SoBase π
SoBase (void)β constructorvirtual ~SoBase ()β destructorvirtual void destroy (void)β destroySbBool hasMultipleWriteRefs (void) constβ does it have multiple write refs?SbBool writeHeader (SoOutput *out, SbBool isgroup, SbBool isengine) constβ writes a headervoid writeFooter (SoOutput *out) constβ writes a footervirtual const char * getFileFormatName (void) constβ the file format name
π‘οΈ Static Protected Member Functions π‘οΈ
static const SoFieldData ** getFieldDataPtr (void)β pointer to the field data pointer
π‘οΈ Static Protected Member Functions inherited from SoNode π‘οΈ
static const SoFieldData ** getFieldDataPtr (void)β pointer to the field data pointerstatic void setNextActionMethodIndex (int index)β set the next action method indexstatic int getNextActionMethodIndex (void)β get the next action method indexstatic void incNextActionMethodIndex (void)β increment the next action method indexstatic void setCompatibilityTypes (const SoType &nodetype, const uint32_t bitmask)β set compatibility types from a bitmask
π‘οΈ Static Protected Member Functions inherited from SoBase π‘οΈ
static uint32_t getCurrentWriteCounter (void)β get the current write counterstatic void staticDataLock (void)β lock the static datastatic void staticDataUnlock (void)β unlock the static data
π Additional Inherited Members π
- Public Types inherited from
SoNode: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 }
- Protected Types inherited from
SoBase:enum BaseFlags { IS_ENGINE = 0x01, IS_GROUP = 0x02 }
- Protected Attributes inherited from
SoNode:uint32_t uniqueId
- Protected Attributes inherited from
SoFieldContainer:SbBool isBuiltIn
- Static Protected Attributes inherited from
SoNode:static uint32_t nextUniqueId = 1static int nextActionMethodIndex = 0
π Detailed Description π
The SoVRMLNormal class is used to bind normals to geometry. (Yeah, same sentence as NAME. She's consistent, we love that for her. π
)
The detailed class documentation is taken verbatim from the VRML97 standard (ISO/IEC 14772-1:1997). It is copyright The Web3D Consortium, and is used by permission of the Consortium:
Normal {
exposedField MFVec3f vector [] # (-,)
}
This node defines a set of 3D surface normal vectors to be used in the vector field of some geometry nodes (e.g., SoVRMLIndexedFaceSet and SoVRMLElevationGrid). This node contains one multiple-valued field that contains the normal vectors. Normals shall be of unit length. β¨
fr fr, unit length. Not "close to unit length", not "unit-ish". Unit. Length. π
ποΈ Constructor & Destructor Documentation ποΈ
SoVRMLNormal::SoVRMLNormal (void)
Constructor. π«Ά
SoVRMLNormal::~SoVRMLNormal () [protected], [virtual]
Destructor.
okay bestie so this page is a two-parter and we are literally only halfway π β part 2 is coming right up, don't go anywhere π
π Member Function Documentation π
Okay bestie, this is where the actual functions live. Every single one, no skipping. π«Ά
β¨ SoType SoVRMLNormal::getTypeId (void ) const [virtual] β¨
This one hands you the type identification of any object that comes from a class inheriting SoBase. It's what makes run-time type checking and "downward" casting happen. No cap.
Usage example, and yes it's literally this:
void foo(SoNode * node)
{
if (node->getTypeId() == SoFile::getClassTypeId()) {
SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type
}
}
If you're an application programmer and you wanna extend the library with new nodes, engines, nodekits, draggers or others: this method needs to be overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually accomplished by using the pre-defined macros available through for instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on.
Wanna know more about writing Coin extensions? Go look at the class documentation of the toplevel superclasses for the various class groups.
Implements SoBase.
π const SoFieldData * SoVRMLNormal::getFieldData (void ) const [protected], [virtual] π
Returns a pointer to the class-wide field data storage object for this instance. If there are no fields present? It returns NULL. Periodt.
Reimplemented from SoFieldContainer.
π¬ void SoVRMLNormal::doAction (SoAction * action) [virtual] π¬
This function performs the typical operation of a node for any action. That's it. That's the vibe.
Reimplemented from SoNode.
π void SoVRMLNormal::GLRender (SoGLRenderAction * action) [virtual] π
Action method for the SoGLRenderAction. This gets called during rendering traversals. Nodes influencing the rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method.
Reimplemented from SoNode.
π void SoVRMLNormal::callback (SoCallbackAction * action) [virtual] π
Action method for SoCallbackAction. It 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. Slay.
Reimplemented from SoNode.
π― void SoVRMLNormal::pick (SoPickAction * action) [virtual] π―
Action method for SoPickAction. Does common processing for SoPickAction action instances. Simple as that.
Reimplemented from SoNode.
π’ void SoVRMLNormal::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. Nodes influencing how geometry nodes calculates their primitive count also overrides this method to change the relevant state variables. (Yes, that grammar is the original's, and we respect it. π
)
Reimplemented from SoNode.
π§ Member Data Documentation π§
π¦ SoMFVec3f SoVRMLNormal::vector π¦
The normal vectors. Empty by default. That's the whole tea.
πΈ Author πΈ
Generated automatically by Doxygen for Coin from the source code.
And that's the whole page, bestie! π This beauty came from the Coin source code, version 3.1.3, and it lives as SoVRMLNormal(3) in the manual. Go forth and normal-vector responsibly. π¦β¨
π¦ where this page comes from
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 43: Coin3-devel 3.1.3-40.fc43 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- fedora 44: Coin3-devel 3.1.3-42.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms