Post

Material

Overview

Material specifies surface rendering properties for associated geometry nodes. Material attributes are used by the X3D lighting equations during rendering.

The Material node belongs to the Shape component and requires at least level 1, its default container field is material. It is available since VRML 2.0 and from X3D version 3.0 or higher.

Hierarchy

1
2
3
4
5
+ X3DNode
  + X3DAppearanceChildNode
    + X3DMaterialNode
      + X3DOneSidedMaterialNode
        + Material

Fields

SFNode [in, out] metadata NULL [X3DMetadataObject]

Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node.

Hint

SFFloat [in, out] ambientIntensity 0.2 [0,1]

How much ambient omnidirectional light is reflected from all light sources. Interchange profile hint: this field may be ignored, applying the default value regardless.

SFString [in, out] ambientTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] ambientTexture NULL [X3DSingleTextureNode]

When applying ambientIntensity for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='ambientTexture'

SFColor [in, out] diffuseColor 0.8 0.8 0.8 [0,1]

How much direct, angle-dependent light is reflected from all light sources.

Hint

SFString [in, out] diffuseTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] diffuseTexture NULL [X3DSingleTextureNode]

When applying diffuseColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='diffuseTexture'

SFColor [in, out] specularColor 0 0 0 [0,1]

Specular highlights are brightness reflections (example: shiny spots on an apple). Interchange profile hint: this field may be ignored, applying the default value regardless.

SFString [in, out] specularTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] specularTexture NULL [X3DSingleTextureNode]

When applying specularColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='specularTexture'

SFColor [in, out] emissiveColor 0 0 0 [0,1]

How much glowing light is emitted from this object.

Hints

  • EmissiveColors glow even when all lights are off.
  • Reset diffuseColor from default (.8 .8 .8) to (0 0 0) to avoid washout.
  • Only emissiveColor affects IndexedLineSet, LineSet and PointSet.

Warning

  • Bright emissiveColor values can wash out other colors and some textures.

SFString [in, out] emissiveTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] emissiveTexture NULL [X3DSingleTextureNode]

When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='emissiveTexture'

SFFloat [in, out] shininess 0.2 [0,1]

Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights. Interchange profile hint: this field may be ignored, applying the default value regardless.

SFString [in, out] shininessTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] shininessTexture NULL [X3DSingleTextureNode]

When applying shininess for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='shininessTexture'

SFFloat [in, out] occlusionStrength 1 [0,1]

occlusionStrength indicates areas of indirect lighting, typically called ambient occlusion. Higher values indicate areas that should receive full indirect lighting and lower values indicate no indirect lighting.

Hints

  • Only the Red channel of the texture is used for occlusion computations, other channels are ignored.
  • Https://en.wikipedia.org/wiki/Ambient_occlusion

SFString [in, out] occlusionTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] occlusionTexture NULL [X3DSingleTextureNode]

When applying occlusionStrength for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel.

Hints

  • If texture node is NULL or unspecified, no effect is applied to material values.
  • Contained texture node must include containerField='occlusionTexture'

SFFloat [in, out] normalScale 1 [0,∞)

normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.

Hints

  • normalScale only affects computation of normalTexture modulations that affect lighting of characteristics of the parent Material and has no relation to normal vectors defined by corresponding geometry.
  • NormalTexture techniques apply Bump mapping

SFString [in, out] normalTextureMapping “”

The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material.

Hint

SFNode [in, out] normalTexture NULL [X3DSingleTextureNode]

When applying normalScale for this material node, the contained texture modulates the texture across the surface.

Hints

SFFloat [in, out] transparency 0 [0,1]

How “clear” an object is: 1.0 is completely transparent, 0.0 is completely opaque. Interchange profile hint: transparency < .5 opaque, transparency > .5 transparent.

Advice

Hints

Example

View Source in Playground

See Also

This post is licensed under CC BY 4.0 by the author.