---
name: "SoNormalBinding"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoNormalBinding/3iv"
---

# SoNormalBinding(3iv)

node that specifies how multiple surface normals are bound to shapes

## NAME

SoNormalBinding — node that specifies how multiple surface normals are bound to shapes

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoNormalBinding

## SYNOPSIS

**#include \<Inventor/nodes/SoNormalBinding.h\>**

**enum Binding {** **SoNormalBinding::OVERALL**	Whole object has same normal\
 **SoNormalBinding::PER\_PART**	One normal for each part of object\
 **SoNormalBinding::PER\_PART\_INDEXED**\
 	One normal for each part, indexed\
 **SoNormalBinding::PER\_FACE**	One normal for each face of object\
 **SoNormalBinding::PER\_FACE\_INDEXED**\
 	One normal for each face, indexed\
 **SoNormalBinding::PER\_VERTEX**	One normal for each vertex of object\
 **SoNormalBinding::PER\_VERTEX\_INDEXED**\
 	One normal for each vertex, indexed\
 **}**

Fields from class SoNormalBinding:

**SoSFEnum**	**value**

Methods from class SoNormalBinding:

	**SoNormalBinding()**\
 **static SoType**	**getClassTypeId()**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**This node specifies how the current normals are bound to shapes that follow in the scene graph. Each shape node may interpret bindings differently.**

**The bindings for faces and vertices are meaningful only** **for shapes that are made from faces and vertices. Similarly, the indexed bindings are only used by the shapes that allow indexing. For bindings that require multiple normals, be sure to have at least as** **many normals defined as are necessary; otherwise, errors will occur.**

## FIELDS

**SoSFEnum**	**value**\
 Specifies how to bind normals to shapes.

## METHODS

	**SoNormalBinding()**\
 Creates a normal binding node with default settings.

**static SoType**	**getClassTypeId()**\
 Returns type identifier for this class.

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoRayPickAction**\
 Sets the current normal binding type.

## FILE FORMAT/DEFAULTS

```
NormalBinding {
value	PER_VERTEX_INDEXED
}
```

## SEE ALSO

**SoMaterialBinding, SoNormal, SoTextureCoordinateBinding, SoVertexShape**
