Post

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

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.

MFNode [in, out] extensions [ ] [X3DMaterialExtensionNode] non standard

Input/Output field extensions.

Advice

Hints

Example

See Also

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