PBRAppearance {
SFColor baseColor 1 1 1 # any color
SFNode baseColorMap NULL # {ImageTexture, PROTO}
SFFloat transparency 0 # [0, 1]
SFFloat roughness 0 # [0, 1]
SFNode roughnessMap NULL # {ImageTexture, PROTO}
SFFloat metalness 1 # [0, 1]
SFNode metalnessMap NULL # {ImageTexture, PROTO}
SFFloat IBLStrength 1 # [0, inf)
SFNode normalMap NULL # {ImageTexture, PROTO}
SFFloat normalMapFactor 1 # [0, inf)
SFNode occlusionMap NULL # {ImageTexture, PROTO}
SFFloat occlusionMapStrength 1 # [0, inf)
SFColor emissiveColor 0 0 0 # any color
SFNode emissiveColorMap NULL # {ImageTexture, PROTO}
SFFloat emissiveIntensity 1 # [0, inf)
SFNode textureTransform NULL # {TextureTransform, PROTO}
SFString name "PBRAppearance" # any string
}
%figure "An Oxidised Copper Sphere made with the PBRAppearance node"
%end
The PBRAppearance node specifies a physically-based visual appearance of a node. The acronym "PBR" refers to "Physically-Based Rendering", a term used to designate a class of shading models based on the physical properties of an object, as opposed to more archaic models such as the Blinn-Phong BRDF, used in the Appearance node.
This modern technique enables highly realistic rendering for every kind of object, in any kind of lighting environment.
For a detailed guide on PBR and how to use it for content creation and model design, an excellent description of the concepts on this subject can be found on this blog post by Marmoset.
Our PBR shading model makes use of Lambertian Diffuse, Cook-Torrence Specular and Fresnel-Schlick GGX for direct illumination, and an advanced Image-Based Lighting (IBL) BRDF for ambient diffuse lighting and reflections.
PBRAppearance cannot be used in a Shape node containing an IndexedLineSet or PointSet node.
- The
baseColorfield specifies the base color or "albedo" of the material's surface, analogous to thediffuseColorfield of the Material node. - The
baseColorMapfield specifies an ImageTexture for the material's albedo which overridesbaseColor. - The
transparencyfield specifies the transparency of the object. Iftransparencyis non-zero, the object no longer casts shadows. - The
roughnessfield specifies the roughness of the material's surface, analogous to the inverse of theshininessfield of the Material node. A roughness of 0 gives a perfectly smooth material, while a roughness of 1 gives a highly rough material. - The
roughnessMapfield specifies an ImageTexture for the material's roughness which overridesroughness. - The
metalnessfield specifies how metallic the material's surface is. A metalness of 0 gives a completely dielectric material, while a metalness of 1 gives a completely metallic material. Note: it is encouraged to use either 1 or 0 for this value as no real-world materials are partly metallic. - The
metalnessMapfield specifies an ImageTexture for the material's metalness which overridesmetalness. - The
IBLStrengthfield specifies a scale factor to be applied to the light contribution from the Background. - The
normalMapfield specifies an ImageTexture which is used to peturb the normal vectors of each vertex to create the appearance of relief on flat surfaces, or to add extra detail to low-polycount meshes. - The
normalMapFactorfield is used to scale the effect of the normal map on the object. - The
occlusionMapfield specifies an ImageTexture which contains pre-baked information about how parts of the model occlude each other (ambient occlusion). This can be used for more realistic-looking lighting. - The
occlusionMapStrengthfield is used to scale the effect of the occlusion map on the object. - The
emissiveColorfield specifies the emissive color of the material's surface (as if the surface emits light), analogous to theemissiveColorfield of the Material node. - The
emissiveColorMapfield specifies an ImageTexture for the material's emissive color which overridesemissiveColor. - The
emissiveIntensityfield is used as an intensity multiplier on the emissive color, to express different emissive brightness levels. - The
textureTransformfield contains a TextureTransform node. IftextureTransformis NULL, thetextureTransformfield has no effect. Otherwise, the TextureTransform is applied to all textures in the PBRAppearance node when shading the object. - The
namefield is used to give a unique identifier to a PBRAppearance node such that if it is included in an MFNode field it can be retrieved by this name. This name is not required to be unique if the PBRAppearance node is inserted into an SFNode field.