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
- Only emissiveColor affects IndexedLineSet, LineSet and PointSet.
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
- normalTexture techniques apply Bump mapping
- If texture node is NULL or unspecified, no effect is applied to material values.
- Contained texture node must include
containerField='normalTexture'
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
- Insert Shape and Appearance nodes before adding material.
- DEF/USE copies of a single node can provide a similar “look + feel” style for related shapes in a scene.
- X3D Scene Authoring Hints, Color
- X3D Example Archives, Basic, Universal Media Materials
- X3D Architecture 17.2.2 Lighting model
- Rendering
- 3D rendering
- Physically based rendering (PBR)