SoVRMLNormal(3)

πŸ“¦ version 3.1.3, in fedora 43, fedora 44

πŸŽ€ 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's virtual so 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 machinery
  • virtual void GLRender (SoGLRenderAction *action) β€” the GL render pass ✨
  • virtual void callback (SoCallbackAction *action) β€” the callback action pass
  • virtual void pick (SoPickAction *action) β€” the picking pass
  • virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) β€” the primitive-counting pass

🧬 Public Member Functions inherited from SoNode 🧬

  • void setOverride (const SbBool state) β€” toggles override mode on or off
  • SbBool isOverride (void) const β€” tells you whether override mode is on
  • void setNodeType (const NodeType type) β€” sets the node type
  • NodeType getNodeType (void) const β€” returns the node type
  • virtual SoNode * copy (SbBool copyconnections=FALSE) const β€” makes a copy, with copyconnections defaulting to FALSE
  • virtual SbBool affectsState (void) const β€” whether this node affects the traversal state
  • virtual void GLRenderBelowPath (SoGLRenderAction *action) β€” GL render, below-path flavour
  • virtual void GLRenderInPath (SoGLRenderAction *action) β€” GL render, in-path flavour
  • virtual void GLRenderOffPath (SoGLRenderAction *action) β€” GL render, off-path flavour
  • virtual void getBoundingBox (SoGetBoundingBoxAction *action) β€” the bounding-box action
  • virtual void getMatrix (SoGetMatrixAction *action) β€” the matrix action
  • virtual void handleEvent (SoHandleEventAction *action) β€” the event-handling action
  • virtual void rayPick (SoRayPickAction *action) β€” the ray-pick action
  • virtual void search (SoSearchAction *action) β€” the search action
  • virtual void write (SoWriteAction *action) β€” the write action
  • virtual void audioRender (SoAudioRenderAction *action) β€” the audio render action πŸ”Š
  • virtual void grabEventsSetup (void) β€” sets up event grabbing
  • virtual void grabEventsCleanup (void) β€” cleans up event grabbing
  • virtual void startNotify (void) β€” kicks off notification
  • virtual void notify (SoNotList *l) β€” notifies along the SoNotList
  • uint32_t getNodeId (void) const β€” returns the node's id
  • virtual SoChildList * getChildren (void) const β€” returns the child list
  • virtual void writeInstance (SoOutput *out) β€” writes out this instance
  • virtual SoNode * addToCopyDict (void) const β€” adds herself to the copy dictionary
  • virtual void copyContents (const SoFieldContainer *from, SbBool copyconnections) β€” copies contents over from another field container
  • virtual SoFieldContainer * copyThroughConnection (void) const β€” copies through a connection

🧬 Public Member Functions inherited from SoFieldContainer 🧬

  • void setToDefaults (void) β€” resets everything to defaults
  • SbBool 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, copyconnections defaulting to FALSE
  • SbBool set (const char *const fielddata) β€” sets from field data
  • void get (SbString &fielddata) β€” gets the field data into an SbString
  • virtual int getFields (SoFieldList &l) const β€” collects the fields into a list
  • virtual int getAllFields (SoFieldList &l) const β€” collects all the fields into a list
  • virtual SoField * getField (const SbName &name) const β€” grabs a field by name
  • virtual SoField * getEventIn (const SbName &name) const β€” grabs an event-in by name
  • virtual SoField * getEventOut (const SbName &name) const β€” grabs an event-out by name
  • SbBool getFieldName (const SoField *const field, SbName &name) const β€” gets the name of a given field
  • SbBool enableNotify (const SbBool flag) β€” turns notification on or off
  • SbBool isNotifyEnabled (void) const β€” is notification enabled?
  • SbBool set (const char *fielddata, SoInput *input) β€” sets from field data, reading through an SoInput
  • void get (SbString &fielddata, SoOutput *out) β€” gets field data out through an SoOutput
  • virtual SbBool validateNewFieldValue (SoField *field, void *newval) β€” validates a new value for a field
  • virtual void addWriteReference (SoOutput *out, SbBool isfromfield=FALSE) β€” adds a write reference, isfromfield defaulting to FALSE
  • SbBool 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 unmanaged
  • void setUserData (void *userdata) const β€” stashes your user data
  • void * getUserData (void) const β€” gets your user data back

🧬 Public Member Functions inherited from SoBase 🧬

  • void ref (void) const β€” bumps the reference count
  • void unref (void) const β€” drops the reference count
  • void unrefNoDelete (void) const β€” drops the reference count without deleting
  • int32_t getRefCount (void) const β€” how many refs are we at?
  • void touch (void) β€” touches the node, notification style
  • SbBool isOfType (SoType type) const β€” is she that type?
  • virtual SbName getName (void) const β€” gets the name
  • virtual void setName (const SbName &newname) β€” sets a new name
  • void addAuditor (void *const auditor, const SoNotRec::Type type) β€” adds an auditor
  • void removeAuditor (void *const auditor, const SoNotRec::Type type) β€” removes an auditor
  • const SoAuditorList & getAuditors (void) const β€” returns the auditor list
  • SbBool 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 required
  • static 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 type
  • static SoType getClassTypeId (void) β€” class type id
  • static SoNode * getByName (const SbName &name) β€” find a node by name
  • static int getByName (const SbName &name, SoNodeList &l) β€” find nodes by name into a list
  • static void initClass (void) β€” init the class
  • static void initClasses (void) β€” init the classes (plural, she's thorough)
  • static uint32_t getNextNodeId (void) β€” next node id, please
  • static int getActionMethodIndex (const SoType type) β€” action method index for a type
  • static void getBoundingBoxS (SoAction *action, SoNode *node) β€” static bounding-box helper
  • static void GLRenderS (SoAction *action, SoNode *node) β€” static GL render helper
  • static void callbackS (SoAction *action, SoNode *node) β€” static callback helper
  • static void getMatrixS (SoAction *action, SoNode *node) β€” static matrix helper
  • static void handleEventS (SoAction *action, SoNode *node) β€” static event helper
  • static void pickS (SoAction *action, SoNode *node) β€” static pick helper
  • static void rayPickS (SoAction *action, SoNode *node) β€” static ray-pick helper
  • static void searchS (SoAction *action, SoNode *node) β€” static search helper
  • static void writeS (SoAction *action, SoNode *node) β€” static write helper
  • static void audioRenderS (SoAction *action, SoNode *node) β€” static audio render helper
  • static void getPrimitiveCountS (SoAction *action, SoNode *node) β€” static primitive-count helper

🌟 Static Public Member Functions inherited from SoFieldContainer 🌟

  • static void initClass (void) β€” init the class
  • static SoType getClassTypeId (void) β€” class type id
  • static void cleanupClass (void) β€” clean up the class
  • static void initCopyDict (void) β€” set up the copy dictionary
  • static void addCopy (const SoFieldContainer *orig, const SoFieldContainer *copy) β€” register a copy
  • static SoFieldContainer * checkCopy (const SoFieldContainer *orig) β€” check a copy
  • static SoFieldContainer * findCopy (const SoFieldContainer *orig, const SbBool copyconnections) β€” find a copy, taking copyconnections into account
  • static void copyDone (void) β€” copying's done

🌟 Static Public Member Functions inherited from SoBase 🌟

  • static void initClass (void) β€” init the class
  • static SoType getClassTypeId (void) β€” class type id
  • static void addName (SoBase *const base, const char *const name) β€” add a name to a base
  • static void removeName (SoBase *const base, const char *const name) β€” remove a name from a base
  • 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 a named base of a type
  • static int getNamedBases (const SbName &name, SoBaseList &baselist, SoType type) β€” get named bases into a SoBaseList
  • static SbBool read (SoInput *input, SoBase *&base, SoType expectedtype) β€” read a base in
  • static void setInstancePrefix (const SbString &c) β€” set the instance prefix
  • static void setTraceRefs (SbBool trace) β€” turn ref tracing on or off
  • static 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's
  • static 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 data
  • virtual ~SoVRMLNormal () β€” the destructor (protected, so hands off bestie πŸ™ˆ)

πŸ”’ Protected Member Functions inherited from SoNode πŸ”’

  • SoNode (void) β€” constructor
  • virtual ~SoNode () β€” destructor
  • virtual SbBool readInstance (SoInput *in, unsigned short flags) β€” reads an instance in

πŸ”’ Protected Member Functions inherited from SoFieldContainer πŸ”’

  • SoFieldContainer (void) β€” constructor
  • virtual ~SoFieldContainer () β€” destructor

πŸ”’ Protected Member Functions inherited from SoBase πŸ”’

  • SoBase (void) β€” constructor
  • virtual ~SoBase () β€” 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 β€” writes a header
  • void writeFooter (SoOutput *out) const β€” writes a footer
  • virtual 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 pointer
  • static void setNextActionMethodIndex (int index) β€” set the next action method index
  • static int getNextActionMethodIndex (void) β€” get the next action method index
  • static void incNextActionMethodIndex (void) β€” increment the next action method index
  • static 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 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:
    • 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 = 1
    • static 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