---
name: "coin_nodes"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/coin_nodes"
---

# coin\_nodes(3)

Node Classes - Nodes are scene based objects performs various actions such as rendering.

## NAME

coin\_nodes - Node Classes

 \- Nodes are scene based objects performs various actions such as rendering.

## SYNOPSIS

### Classes

class **SoAlphaTest**\
 The **SoAlphaTest** class is a node used to control the GL alpha test function.  class **SoAnnotation**\
 The **SoAnnotation** node draws all its child geometry on top of other geometry.  class **SoAntiSquish**\
 The **SoAntiSquish** class is used to reset to uniform scaling.  class **SoArray**\
 The **SoArray** class is a group node for setting up regular arrays of subgraphs.  class **SoBaseColor**\
 The **SoBaseColor** class provides a node type for convenient setting of the base material color.  class **SoBlinker**\
 The **SoBlinker** class is a cycling switch node.  class **SoBumpMap**\
 The **SoBumpMap** class is used to map a bump map onto subsequent shapes.  class **SoBumpMapCoordinate**\
 The **SoBumpMapCoordinate** class is a node for providing bump map coordinates to shape nodes.  class **SoBumpMapTransform**\
 The **SoBumpMapTransform** class is used to define 2D bump map transformations.  class **SoCallback**\
 The **SoCallback** class is a node type which provides a means of setting callback hooks in the scene graph.  class **SoCacheHint**\
 The **SoCacheHint** class is a node containing hints about how to cache geometry.  class **SoCamera**\
 The **SoCamera** class is the abstract base class for camera definition nodes.  class **SoClipPlane**\
 The **SoClipPlane** class is a node type for specifying clipping planes.  class **SoColorIndex**\
 The **SoColorIndex** class is used to specify color indices for subsequent shapes.  class **SoComplexity**\
 The **SoComplexity** class is a node type which is used to set the trade-off between quality and performance.  class **SoCoordinate3**\
 The **SoCoordinate3** class is a node for providing coordinates to shape nodes.  class **SoCoordinate4**\
 The **SoCoordinate4** class is a node for providing coordinates to shape nodes.  class **SoDepthBuffer**\
 The **SoDepthBuffer** class is a node used to control the GL depth buffer.  class **SoDirectionalLight**\
 The **SoDirectionalLight** class is a node type for specifying directional light sources.  class **SoDrawStyle**\
 The **SoDrawStyle** class specifies common rendering properties for shapes.  class **SoEnvironment**\
 The **SoEnvironment** class is a node for specifying global rendering parameters.  class **SoEventCallback**\
 The **SoEventCallback** class provides functionality for catching events.  class **SoExtSelection**\
 The **SoExtSelection** class can be used for extended selection functionality.  class **SoFile**\
 The **SoFile** class is node container for another model file.  class **SoFont**\
 The **SoFont** class is an appearance node for setting fonts.  class **SoFontStyle**\
 The **SoFontStyle** class changes the appearance of fonts for text rendering nodes.  class **SoFrustumCamera**\
 The **SoFrustumCamera** class defines a camera with a generic frustum..  class **SoGroup**\
 The **SoGroup** class is a node which managed other node instances.  class **SoInfo**\
 The **SoInfo** class is a node for holding text information.  class **SoLOD**\
 The **SoLOD** class is used to choose a child based distance between viewer and object.  class **SoLabel**\
 The **SoLabel** class is a node for holding label information in a scene graph.  class **SoLevelOfDetail**\
 The **SoLevelOfDetail** class is used to choose a child based on projected size.  class **SoLight**\
 The **SoLight** class is the base class for light emitting nodes.  class **SoLightModel**\
 The **SoLightModel** class is a node for specifying the model for geometry lighting.  class **SoLinearProfile**\
 The **SoLinearProfile** class is a node for specifying linear profile curves.  class **SoListener**\
 The **SoListener** class defines listener attributes used when rendering sound.  class **SoLocateHighlight**\
 The **SoLocateHighlight** class highlights geometry under the cursor.  class **SoMaterial**\
 The **SoMaterial** class is a node type for setting up material values for scene geometry.  class **SoMaterialBinding**\
 The **SoMaterialBinding** class is a node for setting up how materials are mapped to shapes.  class **SoMatrixTransform**\
 The **SoMatrixTransform** class is a transformation node.  class **SoMultipleCopy**\
 The **SoMultipleCopy** class redraws its children multiple times at different transformations.  class **SoNode**\
 The **SoNode** class is the base class for nodes used in scene graphs.  class **SoNormal**\
 The **SoNormal** class is a node for providing normals to the state.  class **SoNormalBinding**\
 The **SoNormalBinding** class is a node for specifying normal vector bindings.  class **SoNurbsProfile**\
 The **SoNurbsProfile** class is a node for specifying smooth profile curves.  class **SoOrthographicCamera**\
 The **SoOrthographicCamera** class defines a camera node with orthographic rendering.  class **SoPackedColor**\
 The **SoPackedColor** class is a node for setting diffuse and transparency material values.  class **SoPathSwitch**\
 The **SoPathSwitch** class traverses only when current path matches a configurable path.  class **SoPendulum**\
 The **SoPendulum** class is used to create oscillating rotations.  class **SoPerspectiveCamera**\
 The **SoPerspectiveCamera** class defines a camera node with perspective rendering.  class **SoPickStyle**\
 The **SoPickStyle** class is a node for setting up how to do picking.  class **SoPointLight**\
 The **SoPointLight** class is a node type for light sources.  class **SoPolygonOffset**\
 The **SoPolygonOffset** class is a node type for *layering"*rendering*primitives.* class **SoProfile**\
 The **SoProfile** class is the abstract superclass for profile definitions.  class **SoProfileCoordinate2**\
 The **SoProfileCoordinate2** class is a node specifying a set of 2D coordinates for profiles.  class **SoProfileCoordinate3**\
 The **SoProfileCoordinate3** class is a node specifying a set of 3D coordinates for profiles.  class **SoResetTransform**\
 The **SoResetTransform** class is a node type which makes it possible to *nullify"*state*during*traversal. class **SoReversePerspectiveCamera**\
 The **SoReversePerspectiveCamera** class defines a camera node with reverse perspective rendering.  class **SoRotation**\
 The **SoRotation** class specifies a rotation transformation.  class **SoRotationXYZ**\
 The **SoRotationXYZ** class is a node type for specifying rotation around a particular axis.  class **SoRotor**\
 The **SoRotor** class is a node used to animate rotations.  class **SoScale**\
 The **SoScale** class is a node type for scaling scene graph geometry.  class **SoSceneTexture2**\
 The **SoSceneTexture2** class is used to create a 2D texture from a Coin scene graph.  class **SoSceneTextureCubeMap**\
 Renders a scene into a texture cube map.  class **SoSelection**\
 The **SoSelection** class manages a list of selected nodes.  class **SoSeparator**\
 The **SoSeparator** class is a state-preserving group node.  class **SoShapeHints**\
 The **SoShapeHints** class is a node containing hints about how to render geometry.  class **SoShuttle**\
 The **SoShuttle** class is used to oscillate between two translations.  class **SoSpotLight**\
 The **SoSpotLight** class is a node type for light sources with a cone shaped light volume.  class **SoSurroundScale**\
 The **SoSurroundScale** class is used to automatically scale geometry to surround other geometry.  class **SoSwitch**\
 The **SoSwitch** class is a group node which selects one child subgraph for traversal.  class **SoTexture**\
 Common base class for texture nodes.  class **SoTexture2**\
 The **SoTexture2** class is used to map a 2D texture onto subsequent geometry in the scene graph.  class **SoTexture3**\
 The **SoTexture3** class is used to map a 3D texture onto geometry.  class **SoTexture2Transform**\
 The **SoTexture2Transform** class is used to define 2D texture transformations.  class **SoTexture3Transform**\
 The **SoTexture3Transform** class is used to define 3D texture transformations.  class **SoTextureCombine**\
 The **SoTextureCombine** class is a node for setting texture combine functions.  class **SoTextureCoordinate2**\
 The **SoTextureCoordinate2** class contains a set of coordinates for the mapping of 2D textures.  class **SoTextureCoordinate3**\
 The **SoTextureCoordinate3** class contains a set of coordinates for the mapping of 2D textures.  class **SoTextureCoordinateBinding**\
 The **SoTextureCoordinateBinding** class says how texture coordinates should be bound to shapes.  class **SoTextureCoordinateCube**\
 The **SoTextureCoordinateCube** class generates cube mapped texture coordinates for shapes.  class **SoTextureCoordinateCylinder**\
 The **SoTextureCoordinateCylinder** class generates cylinder mapped texture coordinates for shapes.  class **SoTextureCoordinateSphere**\
 The **SoTextureCoordinateSphere** class generates sphere mapped texture coordinates for shapes.  class **SoTextureCoordinateDefault**\
 The **SoTextureCoordinateDefault** class removes texture coordinates from the state.  class **SoTextureCoordinateEnvironment**\
 The **SoTextureCoordinateEnvironment** class generates texture coordinates by projecting onto a surrounding texture.  class **SoTextureCoordinateFunction**\
 The **SoTextureCoordinateFunction** class is an abstract base class for texture coordinate generating nodes.  class **SoTextureCoordinatePlane**\
 The **SoTextureCoordinatePlane** class generates texture coordinates by projecting onto a plane.  class **SoTextureCoordinateNormalMap**\
 The **SoTextureCoordinateNormalMap** class generates texture coordinates by projecting onto a surrounding texture.  class **SoTextureCoordinateReflectionMap**\
 The **SoTextureCoordinateReflectionMap** class generates 3D reflection texture coordinates.  class **SoTextureCoordinateObject**\
 The **SoTextureCoordinateObject** class generates texture coordinates by...  class **SoTextureCubeMap**\
 The **SoTextureCubeMap** class is used to map a cube map onto subsequent shape nodes.  class **SoTextureMatrixTransform**\
 The **SoTextureMatrixTransform** class is used to define a texture matrix transformation.  class **SoTextureScalePolicy**\
 The **SoTextureScalePolicy** class is a node for controlling the texture scale policy.  class **SoTextureUnit**\
 The **SoTextureUnit** class is a node for setting the active texture unit.  class **SoTransform**\
 The **SoTransform** class is the *all-purpose"*transformation*node*type. class **SoTransparencyType**\
 The **SoTransparencyType** class is a node for setting the transparency type for shapes.  class **SoTransformSeparator**\
 The **SoTransformSeparator** class is a group node preserving the current transformations.  class **SoTransformation**\
 The **SoTransformation** class is the abstract base class for transformation nodes.  class **SoTranslation**\
 The **SoTranslation** class is a node type for specifying geometry translations.  class **SoUnits**\
 The **SoUnits** class is a node for setting unit types.  class **SoVertexProperty**\
 The **SoVertexProperty** class collects the functionality of various appearance nodes.  class **SoWWWAnchor**\
 The **SoWWWAnchor** class adds URL callbacks to the highlighted geometry.  class **SoWWWInline**\
 The **SoWWWInline** class is a node used to include data from an URL.  class **SoAsciiText**\
 The **SoAsciiText** class renders flat 3D text.  class **SoCone**\
 The **SoCone** class is for rendering cone shapes.  class **SoCube**\
 The **SoCube** class is for rendering cubes.  class **SoCylinder**\
 The **SoCylinder** class is for rendering cylinder shapes.  class **SoFaceSet**\
 The **SoFaceSet** class is used to render and organize non-indexed polygonal face data.  class **SoImage**\
 The **SoImage** class draws a 2D image on the viewport.  class **SoIndexedFaceSet**\
 The **SoIndexedFaceSet** class is used to handle generic indexed facesets.  class **SoIndexedLineSet**\
 The **SoIndexedLineSet** class is used to render and otherwise represent indexed lines.  class **SoIndexedMarkerSet**\
 The **SoIndexedMarkerSet** class is used to display a set of bitmap markers at 3D positions.  class **SoIndexedNurbsCurve**\
 The **SoIndexedNurbsCurve** class is a node for representing smooth curves.  class **SoIndexedNurbsSurface**\
 The **SoIndexedNurbsSurface** class can be used to render NURBS surfaces.  class **SoIndexedPointSet**\
 The **SoIndexedPointSet** class is used to display a set of 3D points.  class **SoIndexedShape**\
 The **SoIndexedShape** class is the superclass for all indexed vertex shapes.  class **SoIndexedTriangleStripSet**\
 The **SoIndexedTriangleStripSet** class keeps data for rendering and otherwise representing triangle strips.  class **SoLineSet**\
 The **SoLineSet** class is used to render and organize non-indexed polylines.  class **SoMarkerSet**\
 The **SoMarkerSet** class displays a set of 2D bitmap markers in 3D.  class **SoNonIndexedShape**\
 The **SoNonIndexedShape** class is the superclass for all non-indexed vertex based shapes.  class **SoNurbsCurve**\
 The **SoNurbsCurve** class is a node for representing smooth curves.  class **SoNurbsSurface**\
 The **SoNurbsSurface** class is used to render smooth surfaces.  class **SoPointSet**\
 The **SoPointSet** class is used to display a set of 3D points.  class **SoQuadMesh**\
 The **SoQuadMesh** class is used to render and optimize a quadrilateral mesh.  class **SoShape**\
 The **SoShape** class is the superclass for geometry shapes.  class **SoSphere**\
 The **SoSphere** class is for rendering sphere shapes.  class **SoText2**\
 The **SoText2** class is a node type for visualizing 2D text aligned with the camera plane.  class **SoText3**\
 The **SoText3** class renders extruded 3D text.  class **SoTriangleStripSet**\
 The **SoTriangleStripSet** class is used to render and control non-indexed triangle strips.  class **SoVertexShape**\
 The **SoVertexShape** class is the superclass for all vertex based shapes.  class **SoShadowStyle**\
 The **SoShadowStyle** class is a node for setting the shadow style on nodes.  class **SoShadowSpotLight**\
 The **SoShadowSpotLight** class is a node for setting up a spot light which casts shadows.  class **SoShadowCulling**\
 The **SoShadowCulling** class is a node for setting the shadow style on nodes.  class **SoGeoOrigin**\
 The **SoGeoOrigin** class is used to specify an absolute geographic location against which geometry is referenced.  class **SoGeoLocation**\
 The **SoGeoLocation** class is used to georeference the following nodes.  class **SoGeoSeparator**\
 The **SoGeoSeparator** class is used to georeference a scene graph.  class **SoGeoCoordinate**\
 The **SoGeoCoordinate** class is used to specify a list of geographical coordinates.

### Macros

\#define **SO\_NODE\_HEADER**(classname)\
 \#define **SO\_NODE\_ABSTRACT\_HEADER**(classname)\
 \#define **SO\_NODE\_INIT\_CLASS**(classname,  parentclass,  parentname)\
 \#define **SO\_NODE\_INIT\_ABSTRACT\_CLASS**(classname,  parentclass,  parentname)\
 \#define **SO\_NODE\_SOURCE**(classname)\
 \#define **SO\_NODE\_ABSTRACT\_SOURCE**(classname)\
 \#define **SO\_NODE\_CONSTRUCTOR**(classname)\
 \#define **SO\_NODE\_IS\_FIRST\_INSTANCE**()\
 \#define **SO\_NODE\_ADD\_FIELD**(field,  defaultvalue)\
 \#define **SO\_NODE\_DEFINE\_ENUM\_VALUE**(enumname,  enumvalue)\

## Detailed Description

Nodes are scene based objects performs various actions such as rendering.

This is the set of nodes Coin implements using the original Open Inventor pattern, meaning they read and write to and from files using the Inventor/VRML1 format, and produce side-effects for subsequent siblings under the same **SoSeparator** node during action traversal.

A subset of these nodes constitute the VRML1 format, and a bigger subset constitutes the Inventor format. The rest of the nodes are extensions that are not part of any standardized format.

For VRML97 nodes, see the **VRMLnodes** page.

The VRML1.0 specification is at http://www.web3d.org/x3d/specifications/vrml/VRML1.0/index.html

## Macro Definition Documentation

### #define SO\_NODE\_HEADER( classname)

This macro adds standard declarations needed in Coin nodes for object creation and type identification.

**See also**

**SO\_NODE\_SOURCE**

### #define SO\_NODE\_ABSTRACT\_HEADER( classname)

This macro adds standard declarations needed in Coin nodes for type identification. It differs from **SO\_NODE\_HEADER** in that the object creation part is omitted.

**See also**

**SO\_NODE\_ABSTRACT\_SOURCE**

### #define SO\_NODE\_INIT\_CLASS( classname, parentclass, parentname)

This macro is used in the initClass-function in a node class. It registers the class by name (by creating a new **SoType** for the class), so file reading will be able to create a node of this type and fill it with its field values.

**See also**

**SO\_NODE\_INIT\_ABSTRACT\_CLASS**

### #define SO\_NODE\_INIT\_ABSTRACT\_CLASS( classname, parentclass, parentname)

This macro is used in the initClass-function in abstract node classes. It registers the class by name (by creating a new **SoType** for the class) for type identification purposes.

**See also**

**SO\_NODE\_INIT\_CLASS**

### #define SO\_NODE\_SOURCE( classname)

This macro sets up the implementation of the declarations in **SO\_NODE\_HEADER**. It should be placed in the implementation file for extension nodes.

**See also**

**SO\_NODE\_HEADER**

### #define SO\_NODE\_ABSTRACT\_SOURCE( classname)

This macro sets up the implementation of the declarations in **SO\_NODE\_ABSTRACT\_HEADER**. It should be placed in the implementation file for abstract extension nodes.

**See also**

**SO\_NODE\_ABSTRACT\_HEADER**

### #define SO\_NODE\_CONSTRUCTOR( classname)

Place this in the node constructor. It sets up the field data object for the node class.

### #define SO\_NODE\_IS\_FIRST\_INSTANCE()

This macro can be used as a predicate to test if the constructed node is the first constructed instance of a node class, in case some extra initialization needs to be done that can't be done in the initClass() function.

### #define SO\_NODE\_ADD\_FIELD( field, defaultvalue)

This registers a field for a node, and sets its value to the default value. For use in the constructor, below the **SO\_NODE\_CONSTRUCTOR** macro.

### #define SO\_NODE\_DEFINE\_ENUM\_VALUE( enumname, enumvalue)

This macro associates enum names with values, used for file input/output.

## Author

Generated automatically by Doxygen for Coin from the source code.
