MeshPhysicalNodeMaterial
As an extension of MeshStandardNodeMaterial, this is the most advanced Physically-Based Rendering (PBR) node material in Three.js. [2] It adds several advanced physical properties on top of the standard material, such as clearcoat, sheen, iridescence, anisotropy, and physically-accurate transmission, enabling the simulation of extremely complex and realistic surfaces. [2, 3] It is the node-based version of MeshPhysicalMaterial.
Core Advantages
Provides unparalleled realism and material expression, allowing for the precise simulation of complex effects like multi-layered materials, fabrics, glass, liquids, and brushed metals through a dedicated set of physical parameters. [2, 5] This enables developers to create a wide variety of photorealistic objects with very high fidelity within a single, unified material framework, without needing to write complex custom shaders. [6]
Common Uses
Simulating car paint, varnished wood, or carbon fiber (using `clearcoat`) [2, 4]
Creating glass, water, transparent plastics, or gemstones (using `transmission`, `ior`, `thickness`) [1, 12, 14]
Rendering soap bubbles, oil films, or insect wings with iridescent effects (using `iridescence`) [2, 3]
Representing fabric materials like velvet or satin (using `sheen`) [2]
Simulating brushed metal or surfaces with directional reflections (using `anisotropy`) [2, 19]
How to adjust
This material inherits all properties from `MeshStandardNodeMaterial` (like `color`, `metalness`, `roughness`). To use its advanced features, you can adjust: `clearcoat` to add a transparent coating; `transmission` and `ior` to create transparent refractive effects; `sheen` and `sheenRoughness` to simulate fabrics; `iridescence` and `iridescenceIOR` for thin-film iridescent effects; and `anisotropy` for brushed metals. All these properties also have corresponding node inputs (e.g., `transmissionNode`, `clearcoatNode`) for finer control via textures or procedural nodes.
Code Examples
1<mesh>
2 <sphereGeometry />
3 {/* An example of a glass material */}
4 <meshPhysicalNodeMaterial
5 roughness={0.1}
6 metalness={0.0}
7 transmission={1.0} // 1.0 for full transmission
8 thickness={0.5} // Simulates volume for refraction
9 ior={1.52} // Index of Refraction for glass
10 />
11</mesh>