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

# SoMaterial(3iv)

surface material definition node

## NAME

SoMaterial — surface material definition node

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoMaterial

## SYNOPSIS

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

Fields from class SoMaterial:

**SoMFColor**	**ambientColor**\
 **SoMFColor**	**diffuseColor**\
 **SoMFColor**	**specularColor**\
 **SoMFColor**	**emissiveColor**\
 **SoMFFloat**	**shininess**\
 **SoMFFloat**	**transparency**

Methods from class SoMaterial:

	**SoMaterial()**\
 **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 the current surface material properties for all subsequent shapes. SoMaterial** sets several components of the current material during traversal.

Multiple values can be specified for the **diffuseColor** and **transparency**. Different shapes interpret materials with multiple values differently. To bind materials to shapes, use an **SoMaterialBinding** node.

## FIELDS

**SoMFColor**	**ambientColor**\
 Ambient color of the surface.

**SoMFColor**	**diffuseColor**\
 Diffuse color(s) of the surface.

**SoMFColor**	**specularColor**\
 Specular color of the surface.

**SoMFColor**	**emissiveColor**\
 Emissive color of the surface.

**SoMFFloat**	**shininess**\
 Shininess coefficient of the surface. Values can range from 0.0 for no shininess (a diffuse surface) to 1.0 for maximum shininess (a highly polished surface).

**SoMFFloat**	**transparency**\
 Transparency value(s) of the surface. Values can range from 0.0 for opaque surfaces to 1.0 for completely transparent surfaces. If the transparency type is **SoGLRenderAction::SCREEN\_DOOR** then only the first transparency value will be used. With other transparency types, multiple transparencies will be used, if the **SoMaterial** node contains as many transparencies as diffuse colors. If there are not as many transparencies as diffuse colors, only the first transparency will be used.

## METHODS

	**SoMaterial()**\
 Creates a material node with default settings.

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

## ACTION BEHAVIOR

**SoGLRenderAction, SoCallbackAction**\
 Sets the ambient color, the diffuse color, the specular color, the emissive color, the shininess, and the transparency of the current material.

## FILE FORMAT/DEFAULTS

```
Material {
ambientColor	0.2 0.2 0.2
diffuseColor	0.8 0.8 0.8
specularColor	0 0 0
emissiveColor	0 0 0
shininess	0.2
transparency	0
}
```

## SEE ALSO

**SoBaseColor, SoLightModel, SoMaterialBinding, SoPackedColor**
