nodes(3)
π nodes(3) π
okay so bestie, welcome to nodes(3) from the Library Functions Manual β yes that's the whole vibe of this page, and it's about to be your new hyperfixation fr fr π¦β¨
β¨ NAME β¨
nodes β Node Classes π
that's it, that's the whole name section β short, sweet, and serving main character energy. we are talking Node Classes here, and ngl the rest of this manual is gonna eat π πΈ
β¨ SYNOPSIS β¨
π Classes π
okay so here's the full lineup of classes, bestie β every single one, no cap. π
SoGeoCoordinateβ the class you use when you need to specify a whole list of geographical coordinates πSoGeoLocationβ this one georeferences the nodes that come after it πSoGeoOriginβ specifies an absolute geographic location, and geometry gets referenced against it πΊοΈSoGeoSeparatorβ used to georeference a scene graph πSoAnnotationβ draws all its child geometry on top of other geometry, main character energy β¨SoAntiSquishβ resets to uniform scaling, no squishing allowed π ββοΈSoArrayβ a group node for setting up regular arrays of subgraphs π§©SoBaseColorβ a node type for conveniently setting the base material color π¨SoBlinkerβ a cycling switch node, blink blink πSoBumpMapβ maps a bump map onto subsequent shapes πΊοΈSoBumpMapCoordinateβ provides bump map coordinates to shape nodes πSoBumpMapTransformβ defines 2D bump map transformations πSoCacheHintβ a node with hints about how to cache geometry πΎSoCallbackβ a node type that gives you a way to set callback hooks in the scene graph πͺSoCameraβ the abstract base class for camera definition nodes π·SoClipPlaneβ a node type for specifying clipping planes βοΈSoColorIndexβ specifies color indices for subsequent shapes πSoComplexityβ a node type for setting the tradeoff between quality and performance βοΈSoCoordinate3β provides coordinates to shape nodes (3D, bestie) πSoCoordinate4β provides coordinates to shape nodes (4D, fancy) π§SoDepthBufferβ controls the GL depth buffer π³οΈSoDirectionalLightβ a node type for specifying directional light sources π‘SoDrawStyleβ specifies common rendering properties for shapes ποΈSoEnvironmentβ specifies global rendering parameters πSoEventCallbackβ gives you functionality for catching events π£SoExtSelectionβ can be used for extended selection functionality π±οΈSoFileβ a node container for another model file πSoFontβ an appearance node for setting fonts π€SoFontStyleβ changes the appearance of fonts for text rendering nodes βοΈSoFrustumCameraβ defines a camera with a generic frustum.. (yes, two dots, iconic) πΈSoGroupβ a node which manages other node instances π―ββοΈSoInfoβ a node for holding text information πSoLODβ chooses a child based on distance between viewer and object πSoLabelβ a node for holding label information in a scene graph π·οΈSoLevelOfDetailβ chooses a child based on projected size πSoLightβ the base class for light emitting nodes π‘SoLightModelβ a node for specifying the model for geometry lighting πSoLinearProfileβ a node for specifying linear profile curves πSoListenerβ defines listener attributes used when rendering sound πSoLocateHighlightβ highlights geometry under the cursor π±οΈSoMaterialβ a node type for setting up material values for scene geometry π§΅SoMaterialBindingβ sets up how materials are mapped to shapes πΊοΈSoMatrixTransformβ a transformation node π’SoMultipleCopyβ redraws its children multiple times at different transformations πSoNodeβ the base class for nodes used in scene graphs π§¬SoNormalβ a node for providing normals to the state πSoNormalBindingβ specifies normal vector bindings π§SoNurbsProfileβ a node for specifying smooth profile curves πSoOrthographicCameraβ defines a camera node with orthographic rendering π·SoPackedColorβ a node for setting diffuse and transparency material values π¨SoPathSwitchβ traverses only when current path matches a configurable path π€οΈSoPendulumβ used to create oscillating rotations π°οΈSoPerspectiveCameraβ defines a camera node with perspective rendering πΈSoPickStyleβ sets up how to do picking π―SoPointLightβ a node type for light sources π‘SoPolygonOffsetβ a node type for layering rendering primitives π§±SoProfileβ the abstract superclass for profile definitions πSoProfileCoordinate2β specifies a set of 2D coordinates for profiles πSoProfileCoordinate3β specifies a set of 3D coordinates for profiles πSoResetTransformβ makes it possible to nullify state during traversal πSoRotationβ specifies a rotation transformation πSoRotationXYZβ a node type for specifying rotation around a particular axis πSoRotorβ a node used to animate rotations πSoScaleβ a node type for scaling scene graph geometry πSoSceneTexture2β creates a 2D texture from a Coin scene graph πΌοΈSoSceneTextureCubeMapβ renders a scene into a texture cube map π§SoSelectionβ manages a list of selected nodes βSoSeparatorβ a state-preserving group node π‘οΈSoShapeHintsβ a node with hints about how to render geometry π‘SoShuttleβ oscillates between two translations πSoSpotLightβ a node type for light sources with a cone shaped light volume π¦SoSurroundScaleβ automatically scales geometry to surround other geometry πSoSwitchβ a group node which selects one child subgraph for traversal πSoTexture2β maps a 2D texture onto subsequent geometry in the scene graph πΌοΈSoTexture2Transformβ defines 2D texture transformations πSoTexture3β maps a 3D texture onto geometry π§SoTexture3Transformβ defines 3D texture transformations πSoTextureCombineβ a node for setting texture combine functions π§ͺSoTextureCoordinate2β contains a set of coordinates for the mapping of 2D textures πSoTextureCoordinate3β contains a set of coordinates for the mapping of 2D textures πSoTextureCoordinateBindingβ says how texture coordinates should be bound to shapes π§΅SoTextureCoordinateCubeβ autogenerates cubemapped texture coordinated for shapes π§SoTextureCoordinateCylinderβ autogenerates cylinder mapped texture coordinated for shapes π’οΈSoTextureCoordinateDefaultβ removes texture coordinates from the state π§ΉSoTextureCoordinateEnvironmentβ generates texture coordinates by projecting onto a surrounding texture πSoTextureCoordinateFunctionβ an abstract base class for texture coordinate generating nodes π§¬SoTextureCoordinateNormalMapβ generates texture coordinates by projecting onto a surrounding texture πSoTextureCoordinateObjectβ generates texture coordinates by... (yes, it just trails off, iconic) β¨SoTextureCoordinatePlaneβ generates texture coordinates by projecting onto a plane βοΈSoTextureCoordinateReflectionMapβ generates 3D reflection texture coordinates πͺSoTextureCoordinateSphereβ autogenerates spheremapped texture coordinated for shapes πSoTextureCubeMapβ maps a cube map onto subsequent shape nodes π§SoTextureMatrixTransformβ defines a texture matrix transformation π’SoTextureScalePolicyβ a node for controlling the texture scale policy πSoTextureUnitβ a node for setting the active texture unit ποΈSoTransformSoTransformβ the all-purpose transformation node type, she does it all πSoTransformSeparatorβ a group node that preserves the current transformationsSoTransformationβ the abstract base class for transformation nodesSoTranslationβ a node type for specifying geometry translationsSoTransparencyTypeβ a node for setting the transparency type for shapesSoUnitsβ a node for setting unit typesSoVertexPropertyβ collects the functionality of various appearance nodesSoWWWAnchorβ adds URL callbacks to the highlighted geometrySoWWWInlineβ a node used to include data from an URLSoFragmentShaderβ used for setting up fragment shader programsSoGeometryShaderβ used for loading geometry shader programsSoVertexShaderβ used for setting up vertex shader programsSoShadowCullingβ a node for setting the shadow style on nodesSoShadowSpotLightβ a node for setting up a spot light which casts shadowsSoShadowStyleβ a node for setting the shadow style on nodesSoAsciiTextβ renders flat 3D textSoConeβ for rendering cone shapesSoCubeβ for rendering cubesSoCylinderβ for rendering cylinder shapesSoFaceSetβ used to render and organize non-indexed polygonal face dataSoImageβ draws a 2D image on the viewportSoIndexedFaceSetβ used to handle generic indexed facesetsSoIndexedLineSetβ used to render and otherwise represent indexed linesSoIndexedMarkerSetβ used to display a set of bitmap markers at 3D positionsSoIndexedNurbsCurveβ a node for representing smooth curvesSoIndexedNurbsSurfaceβ can be used to render NURBS surfacesSoIndexedPointSetβ used to display a set of 3D pointsSoIndexedShapeβ the superclass for all indexed vertex shapesSoIndexedTriangleStripSetβ keeps data for rendering and otherwise representing triangle stripsSoLineSetβ used to render and organize non-indexed polylinesSoMarkerSetβ displays a set of 2D bitmap markers in 3DSoNonIndexedShapeβ the superclass for all non-indexed vertex based shapesSoNurbsCurveβ a node for representing smooth curvesSoNurbsSurfaceβ used to render smooth surfacesSoPointSetβ used to display a set of 3D pointsSoQuadMeshβ used to render and optimize a quadrilateral meshSoShapeβ the superclass for geometry shapesSoSphereβ for rendering sphere shapesSoText2β a node type for visualizing 2D text aligned with the camera planeSoText3β renders extruded 3D textSoTriangleStripSetβ used to render and control non-indexed triangle stripsSoVertexShapeβ the superclass for all vertex based shapes
π¦ Macros π¦
okay bestie, these are the macro signatures, copied exactly, no edits, no cap:
#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)
π¦ Functions π¦
static SoType SoTexture::getClassTypeId (void)β common base class for texture nodes β¨
π Detailed Description π
so here's the tea π: 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 they 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. periodt.
For VRML97 nodes, see the VRML97 Classes page. π
The VRML1.0 specification lives at http://www.web3d.org/x3d/specifications/vrml/VRML1.0/index.html π
π§ Dynamic Loading of Extension Nodes π§
When Coin tries to get hold of a node type object (SoType) for a class based on the name string of the node type, it will β if no such node type has been initialized yet β scan the file system for a dynamically loadable extension node with that given name. This can be completely disabled by setting the environment variable COIN_NO_SOTYPE_DYNLOAD to a positive integer value, new from Coin v2.5.0. π«Ά
On UNIX, extensions nodes are regular .so files. On Win32, extension nodes are built as DLLs. On Mac OS X systems, extension nodes are built as .dylib files.
Note: the extension nodes have to be built using the flag-dynamiclib, not-bundle. π
Whether the dynamically loadable objects should be named with or without the "lib" prefix is optional. Both schemes will work. slay.
People don't usually program in a way so that they instantiate new nodes through the node class' SoType object, but that is the way nodes are created when model files are loaded. This means that for all Coin applications that load model files, the custom extension nodes will automatically be supported for the model files without you having to modify their source code and rebuild the applications. iconic behaviour honestly.
See ftp://ftp.coin3d.org/pub/coin/src/dynloadsample.tar.gz for an example using two dynamically loadable extension nodes. You only use an examiner viewer to view the two extension nodes in action. β¨
Only a limited set of C++ compilers are supported as of yet. This is because, to initialize the extension node, it is necessary to know something about how the C++ compiler mangles the initClass symbol. If we don't know that, there is no way to locate the initClass method in the library, which means the extension node can not make itself known to the type system. π
If your C++ compiler is not supported, the source file to add support for a new compiler in is src/misc/cppmangle.icc. It is fairly trivial to add support for new compilers, but if you don't understand how, just ask us about it. Patches with support for new compilers are of course very welcome. π
See also
SoType
Since
- Coin 2.0
πΈ 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 impementation of the declarations in SO_NODE_HEADER. It chould be placed in the implementation file for extension nodes. (yes, "impementation" and "chould" β we keep the originals, typos are part of the lore π)
See also
SO_NODE_HEADER
#define SO_NODE_ABSTRACT_SOURCE( classname)
This macro sets up the impementation of the declarations in SO_NODE_ABSTRACT_HEADER. It chould 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 fielddata 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. main character energy fr fr. π
#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. π
π Function Documentation π
SoType SoTexture::getClassTypeId (void ) [static]
Common base class for texture nodes. SoTexture SoTexture.h Inventor/nodes/SoTexture.h πΈ
Be aware that this class is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.
Since
- Coin 3.0
π Author π
Generated automatically by Doxygen for Coin from the source code. (not a human, just a lil robot doing its thing π€β¨)
and that's the whole page bestie, we ate and left no crumbs π
π this was nodes(3) from Coin Version 3.1.3, so if you ever need to cite it or summon it again, that's the version and the date tag it's riding with. ily, go build something iconic π¦π
π¦ 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