[page:Material] →

# [name]

Un materiale standard a base fisica, che utilizza il flusso di lavoro Metallic-Roughness.
Physically based rendering (PBR) è recentemente diventato uno standard in molte applicazioni 3D, come [link:https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/ Unity], [link:https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/ Unreal] e [link:http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017 3D Studio Max].
Questo approccio differisce da quelli precedenti per il fatto che, invece di utilizzare le approssimazioni per il modo in cui la luce interagisce con una superficie, viene utilizzato un modello fisicamente corretto. L'idea è che, invece di modificare i materiali per ottenere un buon risultato con un'illuminazione specifica, è possibile creare un materiale che reagisca "correttamente" in tutti gli scenari di illuminazione.
In pratica questo fornisce un risultato dall'aspetto più accurato e realistico rispetto a [page:MeshLambertMaterial] o [page:MeshPhongMaterial], a costo di essere un po' più costoso dal punto di vista computazionale. [name] utilizza l'ombreggiatura per-fragment.
Si noti che per ottenere risultati migliori si deve sempre specificare una [page:.envMap mappa ambientale] quando si utilizza questo materiale.
Per un'introduzione non tecnica al concetto di PBR e come impostare il materiale PBR, consulta questi articoli delle persone di [link:https://www.marmoset.co marmoset]:

- [link:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/ Basic Theory of Physically Based Rendering]
- [link:https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/ Physically Based Rendering and You Can Too]

Dettagli tecnici dell'approccio utilizzato in three.js (e altri sistemi PBR) possono essere trovati in questo [link:https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf articolo di Disney] (pdf), di Brent Burley.

## Costruttore

### [name]( [param:Object parameters] )

[page:Object parameters] - (opzionale) un oggetto con una o più proprietà che definiscono l'aspetto del materiale. Qualsiasi proprietà del materiale (inclusa qualsiasi proprietà ereditata da [page:Material]) può essere passata qui.
L'eccezione è la proprietà [page:Hexadecimal colore], la quale può essere passata come stringa esadecimale e per impostazione predefinita è `0xffffff` (bianco). [page:Color.set]( color ) viene chiamato internamente.

## Proprietà

Vedi la classe base [page:Material] per le proprietà comuni.

### [property:Texture alphaMap]

La mappa alfa è una texture in scala di grigi che controlla l'opacità sulla superficie (nero: completamente trasparente; bianco: completamente opaco). Il valore predefinito è `null`.
Viene utilizzato solo il colore della texture, ignorando il canale alfa, se esiste. Per le texuture RGB e RGBA, il renderer [page:WebGLRenderer WebGL] utilizzarà il canale del verde durante il campionamento di questa texture a causa del bit extra di precisione fornito per il verde nei formati RGB 565 compressi e non compressi DXT. Anche le texture solo luminanza e luminanza/alfa continueranno a funzionare come previsto.

### [property:Texture aoMap]

Il canale rosso di questa texture viene utilizzato come la mappa di occlusione ambientale. Il valore predefinito è `null`. AoMap richiede un secondo set di UV.

### [property:Float aoMapIntensity]

L'intensità dell'effetto di occlusione ambientale. Il valore predefinito è `1`. Zero non è un effetto di occlusione.

### [property:Texture bumpMap]

La texture per creare una mappa di rilievo. I valori nero e bianco si associano alla profondità percepita in relazione alle luci. Bump in realtà non influisce sulla geometria dell'oggetto, solo sull'illuminazione. Se viene definita una mappa normale questa verrà ignorata.

### [property:Float bumpScale]

Quanto la mappa di rilievo influisce sul materiale. Gli intervalli tipici sono 0-1. Il valore predefinito è 1.

### [property:Color color]

[page:Color Colore] del materiale, il valore predefinito è impostato a bianco (0xffffff).

### [property:Object defines]

Un oggetto della forma: `{ 'STANDARD': '' };` Questo viene utilizzato dal [page:WebGLRenderer] per selezionare gli shader.

### [property:Texture displacementMap]

La mappa di spostamento influisce sulla posizione dei vertici della mesh. A differenza di altre mappe che influenzano solo la luce e l'ombra del materiale, i vertici spostati possono proiettare ombre, bloccare altri oggetti, e altrimenti agire come una vera geometria. La texture di spostamento è un'immagine in cui il valore di ciascun pixel (il bianco è il più alto) viene mappato e riposizionato rispetto ai vertici della mesh.

### [property:Float displacementScale]

Quando la mappa di spostamento influenza la mesh (dove il nero non è lo spostamento, e il bianco è lo spostamento massimo). Senza una mappa di spostamento impostata, questo valore non viene applicato. Il valore predefinito è 1.

### [property:Float displacementBias]

L'offset dei valori della mappa di spostamento sui vertici della mesh. Senza una mappa di spostamento impostata, questo valore non viene applicato. Il valore predefinito è 0.

### [property:Color emissive]

Colore emissivo (chiaro) per il materiale, essenzialmente un colore solido non influenzato da altre luci. L'impostazione predefinita è nero.

### [property:Texture emissiveMap]

Imposta la mappa emissiva (bagliore). Il valore predefinito è `null`. Il colore della mappa emissiva è modulato dal colore emissivo e dall'intensità emissiva. Se si dispone di una mappa emissiva, assicurarsi di impostare il colore emissivo su qualcosa di diverso dal nero.

### [property:Float emissiveIntensity]

Intensità della luce emissiva. Modula il colore emissivo. Il valore predefinito è `1`.

### [property:Texture envMap]

La mappa ambientale. Per assicurare un rendering fisicamente corretto, è necessario aggiungere solo le mappe ambientali che sono state processate da [page:PMREMGenerator]. Il valore predefinito è `null`.

### [property:Float envMapIntensity]

Ridimensiona l'effetto della mappa ambientale moltiplicando il suo colore.

### [property:Boolean flatShading]

Definisce se il materiale viene renderizzato con un'ombreggiatura piatta. Il valore predefinito è `false`.

### [property:Boolean fog]

Indica se il materiale è influenzato dalla nebbia. Il valore predefinito è `true`.

### [property:Boolean isMeshStandardMaterial]

Flag di sola lettura per verificare se l'oggetto dato è di tipo [name].

### [property:Texture lightMap]

La mappa della luce. Il valore predefinito è `null`. La lightMap richiede un secondo set di UV.

### [property:Float lightMapIntensity]

Intensità della luce. Il valore predefinito è `1`.

### [property:Texture map]

La mappa colore. Può includere facoltativamente un canale alfa, in genere combinato con [page:Material.transparent .transparent] o [page:Material.alphaTest .alphaTest]. Il valore predefinito è `null`. Il colore della mappa della texture è modulato dal [page:.color] diffuso.

### [property:Float metalness]

Quanto un materiale è come un metallo. I materiali non metallici come il legno o la pietra utilizzano il valore 0.0, quelli metallici utilizzano il valore 1.0, senza (di solito) nulla nel mezzo. Il valore predefinito è 0.0. Un valore tra 0.0 e 1.0 potrebbe essere utilizzato per un aspetto di metallo arrugginito. Se viene fornito anche metalnessMap, entrambi i valori vengono moltiplicati.

### [property:Texture metalnessMap]

Il canale blu di questa texture viene utilizzato per alterare la metallizzazione del materiale.

### [property:Texture normalMap]

La texture per creare una mappa normale. I valori RGB influenzano la normale della superficie per ogni frammento di pixel e cambiano il modo in cui il colore è illuminato. Le mappe normali non modificano la figura effettiva della superficie, ma solo l'illuminazione. Nel caso in cui il materiale abbia una mappa normale creata utilizzando la convezione della mano sinistra, la componente y di normalScale deve essere negata per compensare la diversa mano.

### [property:Integer normalMapType]

Il tipo di mappa normale.
Le opzioni sono [page:constant THREE.TangentSpaceNormalMap] (impostazione predefinita), e [page:constant THREE.ObjectSpaceNormalMap].

### [property:Vector2 normalScale]

Quanto la mappa normale influenza il materiale. Gli intervalli tipi sono 0-1. Il valore predefinito è un [page:Vector2] impostato a (1,1).

### [property:Float roughness]

Quanto ruvido appare il materiale. 0.0 un riflesso speculare uniforme, 1.0 significa completamente diffuso. Il valore predefinito è 1.0. Se viene fornita anche roughnessMap, entrambi i valori vengono moltiplicati.

### [property:Texture roughnessMap]

Il canale verde di questa texture viene utilizzato per alterare la ruvidezza del materiale.

### [property:Boolean wireframe]

Rendering della geometria come wireframe. Il valore predefinito è `false` (cioè renderizzazione come poligoni piatti).

### [property:String wireframeLinecap]

Definisce l'aspetto delle estremità della linea. I valori possibili sono "butt", "round" e "square". Il valore predefinito è 'round'.
Questa corrisponde alla proprietà [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 2D Canvas lineCap] e viene ignorata dal renderer [page:WebGLRenderer WebGL].

### [property:String wireframeLinejoin]

Definisce l'aspetto dei punti di unione della linea. I valori possibili sono "round", "bevel" e "miter". Il valore predefinito è 'round'.
Questa corrisponde alla proprietà [link:https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineJoin 2D Canvas lineJoin] e viene ignorata dal renderer [page:WebGLRenderer WebGL].

### [property:Float wireframeLinewidth]

Controlla lo spessore del wireframe. Il valore predefinito è `1`.
A causa delle limitazioni del [link:https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf profilo OpenGL Core] con il renderer [page:WebGLRenderer WebGL] sulla maggior parte delle piattaforme, la larghezza di riga sarà sempre 1 indipendentemente dal valore impostato.

## Metodi

Vedi la classe base [page:Material] per i metodi comuni.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]