PhysicalMaterial
Overview
PhysicalMaterial specifies surface rendering properties for associated geometry nodes. Material attributes are used by the X3D lighting equations during rendering.
The PhysicalMaterial node belongs to the Shape component and requires at least level 2, its default container field is material. It is available from X3D version 4.0 or higher.
Hierarchy
1
2
3
4
5
+ X3DNode
+ X3DAppearanceChildNode
+ X3DMaterialNode
+ X3DOneSidedMaterialNode
+ PhysicalMaterial
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
SFColor [in, out] baseColor 1 1 1 [0,1]
Similar to diffuseColor, TODO define more precisely.
SFString [in, out] baseTextureMapping “”
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] baseTexture NULL [X3DSingleTextureNode]
When applying baseColor 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='baseTexture'
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] metallic 1 [0,1]
metallic is a PBR parameter (TODO elaborate)
SFFloat [in, out] roughness 1 [0,1]
roughness is a PBR parameter (TODO elaborate)
SFString [in, out] metallicRoughnessTextureMapping “”
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] metallicRoughnessTexture NULL [X3DSingleTextureNode]
When applying metallic 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='metallicRoughnessTexture'
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.
MFNode [in, out] extensions [ ] [X3DMaterialExtensionNode] non standard
Input/Output field extensions.
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)