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

# SoNormal(3iv)

node that defines surface normals for shapes

## NAME

SoNormal — node that defines surface normals for shapes

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoNormal

## SYNOPSIS

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

Fields from class SoNormal:

**SoMFVec3f**	**vector**

Methods from class SoNormal:

	**SoNormal()**\
 **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 defines a set of 3D surface normal vectors to be used by vertex-based shape nodes that follow it in the scene graph. This node does not produce a visible result during rendering; it simply replaces** **the current normals in the rendering state for subsequent nodes to use. This node contains one multiple-valued field that contains the normal vectors.**

**Surface normals are needed to compute lighting when** **the Phong lighting model is used. Most vertex-based shapes that use normals can compute default normals if none are specified, depending on the current normal binding.**

## FIELDS

**SoMFVec3f**	**vector**\
 Surface normal vectors.

## METHODS

	**SoNormal()**\
 Creates a surface normal node with default settings.

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

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction, SoRayPickAction**\
 Sets the current normals in the traversal state.

## FILE FORMAT/DEFAULTS

```
Normal {
vector	[  ]
}
```

## SEE ALSO

**SoCoordinate3, SoLightModel, SoNormalBinding, SoVertexShape**
